Harnesses
Core Concepts

Harnesses

A harness is the coding agent the CLI installs into. Each component type lands in the place that harness already reads from at runtime — the CLI never imposes its own layout. The CLI auto-detects the harness in the current folder; override it with --harness <id>.

Supported harnesses

HarnessComponent types
claude-codeskills, mcps, agents, commands, playbooks, instructions, files
codexskills, mcps, commands, playbooks, instructions, files
kafkaskills, mcps, agents, commands, playbooks, instructions, files

Where each component lands

ComponentClaude CodeCodexKafka
Skill.claude/skills/<slug>/~/.codex/skills/<slug>/ or .agents/skills/<slug>/.kafka/skills/<slug>/
MCP server.mcp.json (project) / ~/.claude.jsonmcpServers (global)~/.codex/config.toml [mcp_servers.<slug>].kafka/kafka.json
Command.claude/commands/<slug>.md~/.codex/prompts/<slug>.md.kafka/commands/<slug>.md
Sub-agent.claude/agents/<slug>.md.kafka/agents/<slug>.md
Playbook.claude/playbooks/<slug>.md + table in CLAUDE.md.codex/playbooks/<slug>.md + table in AGENTS.md.kafka/playbooks/<slug>.md + table in KAFKA.md
InstructionBlock in CLAUDE.mdBlock in AGENTS.mdBlock in KAFKA.md
FileArbitrary copy to a target pathSameSame
Marker-based instruction blocks
Instruction and playbook blocks are bracketed by <!-- brainbase:start … --> / :end markers in the harness's instructions file, and the playbook table is regenerated on every pull — so removed playbooks drop out automatically and your hand-written prose is never clobbered.

Force a harness or install scope for onboard / sync with --harness <id> and --scope <global|project>.