agentsclimarketplace

Integrate harness

Skill a5c-ai/babysitter/packages/adapters/skills/integrate-harness

Use when adding a new agent harness (CLI-based coding agent) adapter to adapters. Covers capability audit, adapter scaffold, session parsing, auth detection, hooks/plugins wiring, tests, and docs.From its SKILL.md

Install
npx -y skills add a5c-ai/babysitter --skill integrate-harness

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

3.3 KB, 768 tokens by cl100k_base, as published. Nobody here has run it

integrate-harness

Goal: produce a production-quality XAdapter extends BaseAgentAdapter with full test coverage and documentation, matching the level of the existing 11 adapters (claude, codex, cursor, gemini, opencode, openclaw, copilot, hermes, pi, omp, adapters-remote).

Checklist

  1. Capability audit — read the harness's CLI docs. Fill in every AgentCapabilities field. Unknown? Set conservatively (false) and note in PR.
  2. Create packages/adapters/src/<name>-adapter.ts extending BaseAgentAdapter. Required: agent, displayName, cliCommand, minVersion, hostEnvSignals, capabilities, models[], defaultModelId, configSchema, buildSpawnArgs, parseEvent, detectAuth, getAuthGuidance, sessionDir, parseSessionFile, listSessionFiles, readConfig, writeConfig.
  3. Session parsing — if the harness stores JSONL sessions, delegate to parseJsonlSessionFile; otherwise write a custom parser and unit-test each event shape.
  4. Hooks — if the harness supports native hooks, override writeNativeHook and mirror into HookConfigManager. If not, rely on the base class's virtual hooks.
  5. Plugins — if it supports MCP servers under mcpServers in its config JSON, flip supportsPlugins: true, add pluginFormats: ['mcp-server'], and delegate to mcp-plugins.ts (see cursor/gemini/opencode/openclaw for the pattern).
  6. Register — add to packages/adapters/src/index.ts exports and to the default registry in packages/core/src/client.ts (if applicable).
  7. Tests — in packages/adapters/tests/<name>-adapter.test.ts:
    • capability shape
    • buildSpawnArgs for a few representative RunOptions
    • parseEvent for each JSONL type the harness emits
    • detectAuth for authenticated + unauthenticated states
    • session file parsing from a real fixture (redacted)
    • If plugins: add the adapter to mcp-plugins-parity.test.ts.
  8. CLI audit test — ensure packages/cli/tests/commands-audit.test.ts passes (it exercises every adapter via the built CLI).
  9. File-size limit — each source file must stay under 400 effective lines (local/max-file-lines). Split helpers into sibling modules if you're close.
  10. Docs — add a row to the README capabilities matrix and a paragraph in docs/02-agents/<name>.md.
  11. Changesetnpm run changeset, pick minor (new adapter), summarize.

Verification

npm run typecheck
npm run lint
npm test
npx vitest run packages/adapters/tests/<name>-adapter.test.ts

All existing tests must continue to pass — no regressions in commands-audit.

Common pitfalls

  • Forgetting to add the adapter to the default registry → commands-audit.test.ts won't exercise it.
  • JSONL parsers that assume a single event per line — some harnesses emit arrays.
  • Auth detection that reads env vars synchronously at construction time instead of detectAuth() — breaks testability.
  • buildSpawnArgs returning the string "undefined" for missing options — always gate with if (options.X != null).
  • Hook writers that overwrite rather than merge — use appendJsonHook or appendYamlHook.

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 326,059. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.