Skip to content
Apothem
Reference

Harness registry

Technical registry reference for built-in Apothem harness adapters.

The harness registry is the source-of-truth adapter inventory used by the CLI, documentation, fixture tests, and convention-pin validation. The runtime source is src/apothem/lib/harness_registry.py; every row below is traceable to that registry, the per-adapter capabilities.yml, and each adapter's STANDARD-CONVENTION-PIN.md.

Registry matrix

HarnessInstall nameScopeFormatTargetsMCPConvention pin
Antigravityantigravityusermarkdown~/.gemini/GEMINI.md; ~/.gemini/antigravity-cli/plugins/apothem/discovery-pendingsrc/apothem/harnesses/antigravity/STANDARD-CONVENTION-PIN.md
Claude Codeclaude-codeuserjson~/.claude/settings.json; ~/.claude/CLAUDE.md; native agents, rules, skills, statuslines, output-styles; ~/.claude/.apothem/support/discovery-pendingsrc/apothem/harnesses/claude_code/STANDARD-CONVENTION-PIN.md
CodeBuddycodebuddyprojectmarkdown<project>/.codebuddy/rules/apothem-rules.md; <project>/.codebuddy/agents/; <project>/.codebuddy/settings.local.json; <project>/.apothem/support/hooks/; ~/.codebuddy/skills/; ~/.config/apothem/{rules,templates}/discovery-pendingsrc/apothem/harnesses/codebuddy/STANDARD-CONVENTION-PIN.md
Codexcodexusermarkdown~/.codex/AGENTS.md; hooks.json; hooks/; agents/*.toml; ~/.agents/skills/; ~/.config/apothem/discovery-pendingsrc/apothem/harnesses/codex/STANDARD-CONVENTION-PIN.md
Cursorcursorprojectmdc<project>/.cursor/rules/apothem-rules.mdc; <project>/.cursor/agents/; <project>/.cursor/hooks.json; <project>/.apothem/support/cursor/hooks/; ~/.agents/skills/; ~/.config/apothem/{rules,templates}/discovery-pendingsrc/apothem/harnesses/cursor/STANDARD-CONVENTION-PIN.md
Gemini CLIgemini-cliprojectmarkdown<project>/GEMINI.md; <project>/.gemini/{commands,skills,agents}/; <project>/.gemini/.apothem/support/discovery-pendingsrc/apothem/harnesses/gemini_cli/STANDARD-CONVENTION-PIN.md
GitHub Copilotgithub-copilotprojectmarkdown<project>/.github/copilot-instructions.md; <project>/.github/agents/; <project>/.github/hooks/apothem.json; <project>/.apothem/support/github-copilot/hooks/; ~/.agents/skills/; ~/.config/apothem/{rules,templates}/unsupportedsrc/apothem/harnesses/github_copilot/STANDARD-CONVENTION-PIN.md
GLM (Z.ai)glmprojecttoml<project>/.apothem/providers/glm.tomlunsupportedsrc/apothem/harnesses/glm/STANDARD-CONVENTION-PIN.md
Hermeshermesuseryaml~/.hermes/config.yaml; ~/.hermes/.apothem/support/nativesrc/apothem/harnesses/hermes/STANDARD-CONVENTION-PIN.md
Kimi Codekimi-codeprojectmarkdown<project>/AGENTS.md; <project>/.kimi-code/skills/; <project>/.kimi-code/agents/; <project>/.kimi-code/.apothem/support/discovery-pendingsrc/apothem/harnesses/kimi_code/STANDARD-CONVENTION-PIN.md
Kirokiroprojectmarkdown<project>/.kiro/steering/apothem-rules.md; <project>/.kiro/agents/; <project>/.kiro/hooks/apothem.json; <project>/.apothem/support/kiro/hooks/; ~/.kiro/skills/; ~/.config/apothem/{rules,templates}/discovery-pendingsrc/apothem/harnesses/kiro/STANDARD-CONVENTION-PIN.md
Open-Clawopen-clawuserjson~/.openclaw/openclaw.json; ~/.openclaw/.apothem/support/unsupportedsrc/apothem/harnesses/open_claw/STANDARD-CONVENTION-PIN.md
OpenCodeopencodeuserjson~/.config/opencode/opencode.json; native commands, skills, agents; ~/.config/opencode/.apothem/support/nativesrc/apothem/harnesses/opencode/STANDARD-CONVENTION-PIN.md
Qwen Codeqwen-codeuserjson~/.qwen/settings.json; ~/.qwen/QWEN.md; native commands, skills, agents; ~/.qwen/.apothem/support/nativesrc/apothem/harnesses/qwen_code/STANDARD-CONVENTION-PIN.md
Traetraeprojectmarkdown<project>/.trae/rules/apothem-rules.md; <project>/.trae/agents/; ~/.trae/skills/; ~/.config/apothem/{rules,templates}/discovery-pendingsrc/apothem/harnesses/trae/STANDARD-CONVENTION-PIN.md
Windsurfwindsurfprojectmarkdown<project>/.devin/rules/apothem-rules.md; <project>/.devin/agents/; <project>/.devin/config.local.json; <project>/.apothem/support/windsurf/hooks/; ~/.agents/skills/; ~/.config/apothem/{rules,templates}/discovery-pendingsrc/apothem/harnesses/windsurf/STANDARD-CONVENTION-PIN.md
Zedzedprojectmarkdown<project>/.rules; ~/.agents/skills/; ~/.config/apothem/{rules,templates}/discovery-pendingsrc/apothem/harnesses/zed/STANDARD-CONVENTION-PIN.md

Payload cohort support

Status values are native, converted, support-tree, profile-projected, unsupported, not-applicable, and discovery-pending.

A converted cohort is rewritten into the harness's own format, and some source fields have no place in it. For each converted commands, agents, or rules cohort, the adapter's capabilities.yml carries a conversion_losses map that says what happens to every source frontmatter field:

ValueMeaning
native:<field>The harness reads it under that field.
sidecar:<path>It is written to a separate file next to the converted one, such as Codex's agents/openai.yaml.
filenameThe file or folder name carries it.
inlinedIt moves into the prompt or body text.
ignoredIt stays in the file, but the harness does not read it.
droppedIt is left out.

A test renders every converted file and checks the maps against the output.

HarnessNative or converted payloadsSupport-tree payloadsUnsupported or pending warnings
Antigravityconverted commands, agents, and rules; native skills, sub-agent dispatch, system prompt templateshooks, templatesstatuslines, output styles; MCP and memory discovery pending
Claude Codeconverted commands; native skills, hooks, agents, rules, statuslines, output styles, sub-agent dispatchtemplatesCLAUDE.md stays operator-owned apart from the one Apothem block; no adapter-written system prompt template; MCP discovery pending
CodeBuddyconverted commands and agents; native skills, hooks, rules, sub-agent dispatch, system prompt templatestemplatesstatuslines, output styles; MCP discovery pending
Codexconverted commands and agents; native skills, hooks, sub-agent dispatch, system prompt templatesrules, templatesstatuslines, output styles; MCP discovery pending because Apothem does not overwrite config.toml
Cursorconverted commands and agents; native skills, hooks, rules, sub-agent dispatch, system prompt templatestemplatesstatuslines, output styles, memory; MCP discovery pending
Gemini CLIconverted commands and agents; native skills, sub-agent dispatch, system prompt templates, memoryhooks, rules, templatesstatuslines, output styles; MCP discovery pending
GitHub Copilotconverted commands and agents; native skills, hooks, rules, sub-agent dispatch, system prompt templatestemplatesstatuslines, output styles, MCP, memory
GLM (Z.ai)nonenonecommands, skills, hooks, agents, rules, templates, statuslines, output styles, MCP, sub-agent dispatch, tool restrictions, system prompt templates, memory — GLM is a model backend with no native config surface
Hermesconverted commands; native system prompt templates, MCP, sub-agent dispatchskills, hooks, agents, rules, templatesstatuslines, output styles
Kimi Codeconverted commands and agents; native skills, sub-agent dispatch, system prompt templates, memoryhooks, rules, templatesstatuslines, output styles; MCP and tool restrictions discovery pending
Kiroconverted commands and agents; native skills, hooks, rules, sub-agent dispatch, system prompt templatestemplatesstatuslines, output styles; MCP discovery pending
Open-Clawconverted commands; native system prompt templates, sub-agent dispatchskills, hooks, agents, rules, templatesstatuslines, output styles, MCP
OpenCodeconverted commands and agents; native skills, MCP, sub-agent dispatch, system prompt templateshooks, rules, templatesstatuslines, output styles
Qwen Codeconverted commands and agents; native skills, hooks, MCP, sub-agent dispatch, system prompt templatesrules, templatesstatuslines, output styles
Traeconverted commands and agents; native skills, rules, sub-agent dispatch, system prompt templatestemplateshooks, statuslines, output styles, memory; MCP discovery pending
Windsurfconverted commands and agents; native skills, hooks, rules, sub-agent dispatch, system prompt templatestemplatesstatuslines, output styles, memory; MCP discovery pending
Zedconverted commands; native skills, rules, system prompt templatestemplateshooks, agents, statuslines, output styles, sub-agent dispatch, memory; MCP discovery pending

The table leaves out the cells the registry marks not-applicable: tool restrictions on every harness except Kimi Code (discovery-pending) and GLM (Z.ai) (unsupported), and memory on Claude Code, CodeBuddy, Codex, Hermes, Kiro, Open-Claw, OpenCode, and Qwen Code.

Shared roots

Some install targets are loaded by harnesses other than the one that writes them. The registry records each such path in SHARED_ROOTS with one registered owner (the adapter the vendor documents the path for), the co-installers that write the same files to it, and the readers whose vendor docs load it by default, plus the vendor pages that show it and the date they were retrieved.

A path with co-installers is a user-level folder in the home directory that several installs write with the same bytes. A machine with only Cursor installed has no Codex to write ~/.agents/skills/, so each install that names the folder writes it, and the install ledger counts the installs that use it. The owner of record is the registered owner while it uses the folder, and otherwise the oldest install that does; nothing moves when the registered owner is uninstalled. An uninstall removes the folder only when no other install still uses it (see uninstall). Installing a reader puts no files in the folder; installing the owner or a co-installer puts Apothem content in front of every reader.

PathOwnerCo-installersReaders
~/.agents/skills/CodexCursor, GitHub Copilot, Windsurf, ZedGemini CLI, Kimi Code, Open-Claw, OpenCode, Qwen Code
~/.config/apothem/rules/CodexCodeBuddy, Cursor, GitHub Copilot, Kiro, Trae, Windsurf, Zednone
~/.config/apothem/templates/CodexCodeBuddy, Cursor, GitHub Copilot, Kiro, Trae, Windsurf, Zednone
~/.claude/skills/Claude CodenoneCursor, OpenCode
~/.claude/agents/Claude CodenoneCursor
~/.codex/agents/CodexnoneCursor
~/.claude/CLAUDE.mdClaude CodenoneOpenCode
<project>/AGENTS.mdKimi CodenoneAntigravity, CodeBuddy, Codex, Cursor, GitHub Copilot, Hermes, Kiro, OpenCode, Windsurf, Zed
<project>/GEMINI.mdGemini CLInoneAntigravity, GitHub Copilot, Zed
~/.gemini/GEMINI.mdAntigravitynoneGemini CLI
<project>/.github/copilot-instructions.mdGitHub CopilotnoneZed

~/.config/apothem/rules/ and ~/.config/apothem/templates/ hold the files Apothem's own skills and instruction files cite. No other tool loads them, so they have no readers and no vendor pages. CodeBuddy, Kiro, and Trae also write a skills folder of their own (~/.codebuddy/skills/, ~/.kiro/skills/, and ~/.trae/skills/); only that tool loads it, so it is not a shared root.

A reader is listed only where its vendor docs show a default load of that exact path. One reader carries a condition, and the install note repeats it: Open-Claw indexes ~/.agents/skills/ only under its default state directory (it skips the folder when OPENCLAW_STATE_DIR points elsewhere). The Cursor docs list ~/.codex/agents/ as a Codex compatibility folder but do not say which file formats Cursor parses there, and a Codex install writes TOML files, so whether Cursor reads those helpers is not confirmed. The Cursor install also writes its own <project>/.cursor/agents/ copy of the helpers, which the vendor's precedence ranks above the folders it imports, so in an installed project the native copy supersedes the one from ~/.claude/agents/.

Some tools are deliberately not readers of ~/.agents/skills/: the Antigravity, CodeBuddy, Kiro, and Trae docs do not say they load it by default (Trae loads the project .agents/skills/ folder only after a setting is switched on), which is why CodeBuddy, Kiro, and Trae get a skills folder of their own. The Hermes docs name it only as an example value for skills.external_dirs. GitHub Copilot is not a reader of ~/.claude/agents/: the VS Code docs list that folder for the Anthropic Claude agent, not for the agent GitHub Copilot runs.

The Apothem block an owner writes into a shared instruction file names no single tool as its reader. tests/unit/test_shared_roots.py fails when the adapters that write a registry target are not exactly its owner and its co-installers, and when a registry target named like a cross-tool instruction file (AGENTS.md, CLAUDE.md, GEMINI.md, copilot-instructions.md) has no declared owner. The one exception is ~/.codex/AGENTS.md, which no other registered harness documents loading.

Validation hooks

The registry stays synchronized through these checks:

CheckPurpose
python scripts/dev/validate_harness_convention_pins.py --today YYYY-MM-DDConfirms each adapter has a convention pin that is at most 90 days old, cites at least one vendor URL, and has no overdue discovery target. CI runs it on every pull request, weekly, and before a release.
python scripts/dev/check_vendor_urls.pyFetches every vendor URL the pins and harness templates cite and fails on a moved or dead page, including a host name that no longer resolves or a certificate that fails verification; a timeout, a refused or reset connection, or a 5xx server error is reported as unreachable and does not fail it. A host name that resolves only to a placeholder address no server can hold, which a vendor's name servers can return for the region the check runs from, gets no request: it is reported as unroutable, does not fail the check, and its pages need a check by hand. The weekly convention monitor runs it, warns about each such host on every run, and lists its pages in the issue it files.
python -m apothem.conformity.gate --all .Runs the documentation and implementation conformity checks.
python -m pytestExercises registry fixture tests and adapter contract tests.

Generated Harness Adapter Reference

HarnessScopeFormatTarget paths
Antigravity (antigravity)usermarkdown~/.gemini/GEMINI.md
~/.gemini/antigravity-cli/plugins/apothem/
Claude Code (claude-code)userjson~/.claude/.apothem/support/{templates,hooks,conformity,schemas}/
~/.claude/CLAUDE.md
~/.claude/settings.json
~/.claude/{agents,rules,skills,statuslines,output-styles}/
CodeBuddy (codebuddy)projectmarkdown<project>/.apothem/support/hooks/
<project>/.codebuddy/agents/
<project>/.codebuddy/rules/apothem-rules.md
<project>/.codebuddy/settings.local.json
~/.codebuddy/skills/
~/.config/apothem/{rules,templates}/
Codex (codex)usermarkdown~/.agents/skills/
~/.codex/AGENTS.md
~/.codex/agents/*.toml
~/.codex/hooks.json
~/.codex/hooks/
~/.config/apothem/{rules,templates}/
Cursor (cursor)projectmdc<project>/.apothem/support/cursor/hooks/
<project>/.cursor/agents/
<project>/.cursor/hooks.json
<project>/.cursor/rules/apothem-rules.mdc
~/.agents/skills/
~/.config/apothem/{rules,templates}/
Gemini CLI (gemini-cli)projectmarkdown<project>/.gemini/.apothem/support/
<project>/.gemini/{commands,skills,agents}/
<project>/GEMINI.md
GitHub Copilot (github-copilot)projectmarkdown<project>/.apothem/support/github-copilot/hooks/
<project>/.github/agents/
<project>/.github/copilot-instructions.md
<project>/.github/hooks/apothem.json
~/.agents/skills/
~/.config/apothem/{rules,templates}/
GLM (Z.ai) (glm)projecttoml<project>/.apothem/providers/glm.toml
Hermes (hermes)useryaml~/.hermes/.apothem/support/
~/.hermes/config.yaml
Kimi Code (kimi-code)projectmarkdown<project>/.kimi-code/.apothem/support/
<project>/.kimi-code/agents/
<project>/.kimi-code/skills/
<project>/AGENTS.md
Kiro (kiro)projectmarkdown<project>/.apothem/support/kiro/hooks/
<project>/.kiro/agents/
<project>/.kiro/hooks/apothem.json
<project>/.kiro/steering/apothem-rules.md
~/.config/apothem/{rules,templates}/
~/.kiro/skills/
Open-Claw (open-claw)userjson~/.openclaw/.apothem/support/
~/.openclaw/openclaw.json
OpenCode (opencode)userjson~/.config/opencode/.apothem/support/
~/.config/opencode/opencode.json
~/.config/opencode/{commands,skills,agents}/
Qwen Code (qwen-code)userjson~/.qwen/.apothem/support/
~/.qwen/QWEN.md
~/.qwen/settings.json
~/.qwen/{commands,skills,agents}/
Trae (trae)projectmarkdown<project>/.trae/agents/
<project>/.trae/rules/apothem-rules.md
~/.config/apothem/{rules,templates}/
~/.trae/skills/
Windsurf (windsurf)projectmarkdown<project>/.apothem/support/windsurf/hooks/
<project>/.devin/agents/
<project>/.devin/config.local.json
<project>/.devin/rules/apothem-rules.md
~/.agents/skills/
~/.config/apothem/{rules,templates}/
Zed (zed)projectmarkdown<project>/.rules
~/.agents/skills/
~/.config/apothem/{rules,templates}/

On this page