mcpField
H
headless-adapters

headless-adapters

github.com/youdotcom-ossAgent workflows9744 installsUpdated today
Repository

About headless-adapters

headless-adapters is a schema-driven skill for wrapping headless CLI agents without writing adapter code. It includes tested schemas for Claude Code and Gemini CLI, with stream and iterative session modes.

Key features

  1. 01JSON schema-based CLI adapters
  2. 02Stream and iterative session modes
  3. 03Tested Claude Code and Gemini CLI schemas
  4. 04JSONPath-based output mapping

Use cases

  1. 01Wrap a headless CLI agent for evaluation
  2. 02Adapt a stateless CLI using iterative sessions
  3. 03Connect a resumable CLI using stream sessions

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/youdotcom-oss/agent-skills --skill headless-adapters

After installing, type/headless-adaptersin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
schema-creation-guide.md
troubleshooting-guide.md
schemas/
claude-headless.json
gemini-headless.json

Details

From the project README

Headless Adapters

Purpose

Schema-driven adapter for headless CLI agents. No code required - just define a JSON schema describing how to interact with the CLI.

Use CaseTool
Wrap headless CLI agentheadless command
Create new schemasSchema Creation Guide

Quick Start

  1. Check if a schema exists in schemas/
  2. Run the adapter:
    ANTHROPIC_API_KEY=... bunx @plaited/agent-eval-harness headless --schema .claude/skills/headless-adapters/schemas/claude-headless.json
    

CLI Commands

headless

Schema-driven adapter for ANY headless CLI agent.

bunx @plaited/agent-eval-harness headless --schema <path>

Options:

FlagDescriptionRequired
-s, --schemaPath to adapter schema (JSON)Yes

Schema Format:

{
  "version": 1,
  "name": "my-agent",
  "command": ["my-agent-cli"],
  "sessionMode": "stream",
  "prompt": { "flag": "-p" },
  "output": { "flag": "--output-format", "value": "stream-json" },
  "autoApprove": ["--allow-all"],
  "outputEvents": [
    {
      "match": { "path": "$.type", "value": "message" },
      "emitAs": "message",
      "extract": { "content": "$.text" }
    }
  ],
  "result": {
    "matchPath": "$.type",
    "matchValue": "result",
    "contentPath": "$.content"
  }
}

Session Modes:

ModeDescriptionUse When
streamKeep process alive, multi-turn via stdinCLI supports session resume
iterativeNew process per turn, accumulate historyCLI is stateless

Pre-built Schemas

Tested schemas are available in schemas/:

SchemaAgentModeAuth Env VarStatus
claude-headless.jsonClaude CodestreamANTHROPIC_API_KEYTested
gemini-headless.jsonGemini CLIiterativeGEMINI_API_KEYTested

Usage:

# Claude Code
ANTHROPIC_API_KEY=... bunx @plaited/agent-eval-harness headless --schema .claude/skills/headless-adapters/schemas/claude-headless.json

# Gemini CLI
GEMINI_API_KEY=... bunx @plaited/agent-eval-harness headless --schema .claude/skills/headless-adapters/schemas/gemini-headless.json

Creating a Schema

  1. Explore the CLI's --help to identify prompt, output, and auto-approve flags
  2. Capture sample JSON output from the CLI
  3. Map JSONPath patterns to output events
  4. Create schema file based on an existing template
  5. Test with headless command

See Schema Creation Guide for the complete workflow.

Troubleshooting

Common Issues
IssueLikely CauseSolution
Tool calls not capturedJSONPath not iterating arraysUse [*] wildcard syntax - see guide
"unexpected argument" errorStdin mode misconfiguredUse stdin: true - see guide
401 Authentication errorsAPI key not properly configuredSet the correct API key environment variable (see Pre-built Schemas table)
Timeout on promptJSONPath not matchingCapture raw CLI output, verify paths - see guide
Empty responsesContent extraction failingCheck extract paths - see guide

Complete troubleshooting documentation: Troubleshooting Guide

External Resources

Related

Comments

Markdown supported