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
Ten harnesses are supported. The first three take every component type the CLI syncs; the other seven take skills, instructions and files only.
| Harness | Component types |
|---|---|
claude-code (Claude Code) | skills, mcps, agents, commands, playbooks, instructions, files |
codex (Codex) | skills, mcps, commands, playbooks, instructions, files |
kafka (Kafka) | skills, mcps, agents, commands, playbooks, instructions, files |
qwen-code (Qwen Code) | skills, instructions, files |
opencode (OpenCode) | skills, instructions, files |
openclaw (OpenClaw) | skills, instructions, files |
cursor (Cursor) | skills, instructions, files |
factory (Factory Droid) | skills (inlined into AGENTS.md), instructions, files |
qoder (Qoder) | skills, instructions, files |
pi (Pi) | skills, instructions, files |
For the seven newer harnesses the CLI writes no MCP config, commands, sub-agents or playbooks; a component of those types is skipped when it is installed into one of them.
Where each component lands
| Component | Claude Code | Codex | Kafka |
|---|---|---|---|
| Skill | .claude/skills/<slug>/ | ~/.codex/skills/<slug>/ or .agents/skills/<slug>/ | .kafka/skills/<slug>/ |
| MCP server | .mcp.json (project) / ~/.claude.json → mcpServers (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 |
| Instruction | Block in CLAUDE.md | Block in AGENTS.md | Block in KAFKA.md |
| File | Arbitrary copy to a target path | Same | Same |
The newer harnesses, project scope first and global scope second. Each global root can be moved with the environment variable in the last column.
| Harness | Skill | Instructions | Global root |
|---|---|---|---|
qwen-code | .qwen/skills/<slug>/ · ~/.qwen/skills/<slug>/ | Block in QWEN.md · ~/.qwen/QWEN.md | QWEN_HOME |
opencode | .opencode/skills/<slug>/ · ~/.opencode/skills/<slug>/ | Block in AGENTS.md · ~/.opencode/AGENTS.md | OPENCODE_HOME |
openclaw | skills/<slug>/ at the folder root · ~/.openclaw/skills/<slug>/ | Block in AGENTS.md · ~/.openclaw/AGENTS.md | OPENCLAW_HOME |
cursor | .cursor/rules/<slug>.mdc · ~/.cursor/rules/<slug>.mdc | Block in AGENTS.md · ~/.cursor/AGENTS.md | CURSOR_HOME |
factory | Inlined as a block in the instructions file | Block in AGENTS.md · ~/.factory/AGENTS.md | FACTORY_HOME |
qoder | .qoder/skills/<slug>/ · ~/.qoder/skills/<slug>/ | Block in AGENTS.md · ~/.qoder/AGENTS.md | QODER_HOME |
pi | .pi/skills/<slug>/ · ~/.pi/agent/skills/<slug>/ | Block in AGENTS.md · ~/.pi/agent/AGENTS.md | PI_CODING_AGENT_DIR |
<!-- 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>. Conversation tracking is available for claude-code and codex only.