haasonsaas

Agent Harness — Development skill for Claude Code

Development community

Unified harness for hot-swapping between OpenAI Agents SDK and Anthropic Claude Agent SDK with shared tool registry.

How to install Agent Harness

This entry records only its repository, not the path inside it, so there is no exact command to give. Open haasonsaas/agent-harness and copy the folder into ~/.claude/skills/, or the file into ~/.claude/agents/.

What Agent Harness does

Unified harness for hot-swapping between OpenAI Agents SDK and Anthropic Claude Agent SDK with shared tool registry.

Alternatives in Development

  • Claude API — Build apps with the Claude API or Anthropic SDK 94.1k ★
  • IPolloWork — Enterprise-grade, local-first Agent Workbench for people and agent teams 4.9k ★
  • Anthropic SDK Python — PyPI version 3.9k ★

README

Agent Harness

Agent Harness is a small Python adapter for running the same tool registry through OpenAI Agents SDK or Anthropic Claude Agent SDK provider implementations. The core package has no runtime SDK dependency; provider SDKs are imported lazily only when that provider is used.

[![CI](https://github.com/evalops/agent-harness/actions/workflows/ci.yml/badge.svg)](https://github.com/evalops/agent-harness/actions/workflows/ci.yml) [![Bazel RBE](https://github.com/evalops/agent-harness/actions/workflows/bazel-rbe.yml/badge.svg)](https://github.com/evalops/agent-harness/actions/workflows/bazel-rbe.yml) [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)

What It Provides

  • A thread-safe global tool registry via @register_tool.
  • JSON Schema generation from Python type hints, including Optional, T | None, list[T], dict, Literal, and multi-type unions.
  • A common HarnessConfig and AgentResponse shape across providers.
  • Lazy OpenAI and Claude provider adapters.
  • Provider comparison helpers for running the same prompt against multiple adapters.
  • A built-in optional You.com search tool adapter.

The registry and schema generation work without OpenAI or Anthropic packages installed. Actual model runs require the provider extras and API credentials.

Install

pip install -e .
pip install -e ".[openai]"
pip install -e ".[anthropic]"
pip install -e ".[all]"
pip install -e ".[dev]"

Provider credentials:

export OPENAI_API_KEY="sk-..."
export ANTHROPIC_API_KEY="sk-ant-..."

Quick Start

import asyncio

from agent_harness import AgentHarness, HarnessConfig, register_tool


@register_tool(description="Get weather for a city")
def get_weather(city: str) -> str:
    return f"Weather in {city}: sunny, 72F"


async def main() -> None:
    config = HarnessConfig(
        system_prompt="You are a helpful assistant.",
        tool_names=["get_weather"],
        ma