claude-code-plugins/docs/harnesses.md at main · amoustakas/claude-code-plugins · GitHub
Skip to content

Latest commit

 

History

History
81 lines (66 loc) · 4.45 KB

harnesses.md

File metadata and controls

81 lines (66 loc) · 4.45 KB

Cross-harness capability matrix

claude-agents is a multi-harness plugin marketplace. Source-of-truth lives under plugins/ as Claude Code markdown. Per-harness artifacts are generated by adapters under tools/adapters/.

This file mirrors the capability matrix in tools/adapters/capabilities.py. Edit there; regenerate via make docs.

Supported harnesses

Harness Status Generated paths
Claude Code source-of-truth plugins/, .claude-plugin/marketplace.json
OpenAI Codex CLI supported .codex/skills/, .codex/agents/, AGENTS.md
Cursor (2.5+) supported .cursor-plugin/, .cursor/rules/ (curated)
OpenCode (sst/opencode) supported .opencode/agents/, .opencode/commands/, opencode.json
Gemini CLI supported skills/, agents/, commands/ (at extension root)

Capability matrix

Capability Claude Code Codex Cursor OpenCode Gemini
Skills (SKILL.md native) ✅ ✅ ✅ via .claude/ ✅ via .claude/ ✅ (auto-discovered)
Subagents (markdown native) ✅ TOML format ✅ via .claude/ ✅ (different frontmatter) ✅ (April 2026 spec)
Slash commands ✅ converted to skills ✅ ✅ TOML at commands/
Plugin marketplace ✅ — ✅ (2.5+) — — (direct URL install)
Parallel subagents ✅ ✅ ✅ ✅ ✅ (April 2026)
Per-agent tool allowlist ✅ (tools:) only sandbox_mode only readonly: ✅ (permission: block) ✅ (tools:)
TodoWrite tool ✅ — — ✅ —
Task/Agent spawn tool ✅ name in prose ✅ ✅ (task) @agent syntax
MCP servers ✅ ✅ ✅ ✅ ✅
Lifecycle hooks ✅ — — ✅ (TS plugins) —
Context file CLAUDE.md AGENTS.md (32 KiB cap) AGENTS.md AGENTS.md / ~/.claude/CLAUDE.md GEMINI.md
Context file recommended cap 150 lines / 500 tokens 150 lines / 500 tokens 150 lines / 500 tokens 150 lines / 500 tokens 150 lines / 500 tokens
Skill body hard cap none 8 KB none none none
Tool name case CamelCase (Read) action verbs (no tool vocab) lowercase lowercase (strict) lowercase (Gemini names)
Bare model aliases ✅ (opus/sonnet/haiku) mapped to GPT-5 family use inherit full provider/model-id mapped to gemini-2.5-*

Graceful degradation

Each adapter handles incompatibilities mechanically — authors don't need to know the per-harness rules to write portable content.

Source pattern Codex Cursor OpenCode Gemini
tools: Read, Grep (agent allowlist) dropped; sandbox_mode = "read-only" heuristic dropped (Cursor doesn't honor) converted to permission: deny block passed through
color: blue (agent) dropped dropped dropped dropped
model: opus (agent) mapped to gpt-5 rewritten to inherit rewritten to anthropic/claude-opus-4-7 mapped to gemini-2.5-pro
TodoWrite in body no equivalent — leave as-is no equivalent — leave as-is works as-is no equivalent
Skill body > 8 KB split into references/details.md passed through passed through passed through
Agent named worker namespaced to <plugin>__worker passed through passed through passed through
Slash command (commands/<x>.md) converted to skill passed through rewritten to .opencode/commands/ TOML at commands/<plugin>/<x>.toml

Output paths (all gitignored)

.claude-plugin/marketplace.json   # SOURCE OF TRUTH (committed)
plugins/                          # SOURCE OF TRUTH (committed)
GEMINI.md, AGENTS.md*             # context files (committed/generated)
.codex/skills/, .codex/agents/    # generated by Codex adapter
.cursor-plugin/, .cursor/rules/   # generated by Cursor adapter
.opencode/agents/, .opencode/commands/, opencode.json   # generated by OpenCode adapter
skills/, agents/, commands/       # generated by Gemini adapter (at extension root)

Regenerating

make generate HARNESS=codex
make generate HARNESS=cursor
make generate HARNESS=opencode
make generate HARNESS=gemini
# Or all at once:
make generate-all

See also