Skip to content

Harness comparison

A single canonical skill produces correct output for every harness — proper frontmatter schema, proper activation, proper aggregation, proper size budgets. This page shows what gets written and why.

skill.yaml
id: pr-review
description: Apply before opening a PR. Tests, security, performance.
activation: agent
allowed-tools: [Read, Grep]
SKILL.md
## Tests
- [ ] Unit tests added
## Security
- [ ] No secrets in diff

.claude/skills/pr-review/SKILL.md

---
name: pr-review
description: Apply before opening a PR. Tests, security, performance.
allowed-tools: [Read, Grep]
---
## Tests
- [ ] Unit tests added
## Security
- [ ] No secrets in diff

Why correct: Claude Code’s progressive disclosure relies on name + description for activation; allowed-tools enforces the security boundary.

Canonical activation Claude Cursor OpenCode Codex Copilot
always description-only alwaysApply: true # id + desc + body aggregated body applyTo: "**"
globs: [...] desc + glob hint globs: + alwaysApply:false # id + desc + body aggregated body bucketed by globs
agent description-only description-only # id + desc + body aggregated body skipped (no agent mode)
manual disable-model-invocation:true desc + @id hint # id + desc + body aggregated body skipped

Skills can bundle scripts/, references/, assets/. Where supported:

  • Claude Code: full sidecar tree preserved.
  • OpenCode: full sidecar tree preserved.
  • Cursor: dropped (single-file); a warning is reported on sync.
  • Codex: dropped (aggregator file model); a warning is reported on sync.
  • Copilot: dropped (aggregator file model); a warning is reported on sync.

Everything above describes the five specialized renderers. 50+ more agents (Windsurf, Gemini CLI, Cline, Continue, Roo, Goose, Junie, …) render through generic per-skill adapters that write SKILL.md into that agent’s convention. Run adept harness list for the live registry, or add your own with a config-driven adapter.

Prior art treated multi-harness sync as a path-multiplexing problem (write one file into N paths). That breaks activation in Cursor and Copilot, produces nothing usable in Codex, and silently loses size budget. adept makes content fidelity to each harness’s actual loader the headline guarantee — and proves it with golden files any contributor can inspect.