The Capabilities page is a viewer/editor of the real files each executor reads on disk — not a uniform abstraction. So the sections it shows mirror each tool's native model and differ per executor. There is no universal "agent" standard; each tool realizes overlapping concepts differently.
✓ = a native file/dir Covenant can list and edit for that tool.
| Section | Claude | opencode | Codex | Copilot | Pi | Hermes |
|---|---|---|---|---|---|---|
| Skills | ✓ .claude/skills | — | — | — | ✓ ~/.pi/skills | — |
| Agents | ✓ .claude/agents | ✓ .opencode/agent | —¹ | —¹ | —² | — |
| Commands | ✓ .claude/commands | — | ✓ ~/.codex/prompts | — | ✓ ~/.pi/prompts | — |
| Hooks | ✓ settings.json | — | — | — | — | — |
| MCPs | ✓ | ✓ opencode.json | ✓ config.toml | ✓ | — | — |
| Memory | ✓ CLAUDE.md | ✓ AGENTS.md | ✓ AGENTS.md | ✓ copilot-instructions.md | — | ✓ .hermes.md |
Project scope mirrors the same paths under the repo root (e.g. <repo>/.claude/agents, <repo>/CLAUDE.md).
Only Claude Code supports all six — it is the richest native model. Every other executor supports a subset.
The Agents section means a multi-agent directory (one .md per subagent). That exists
natively only for Claude (.claude/agents) and opencode (.opencode/agent).
AGENTS.md / copilot-instructions.md — so it surfaces under Memory, not Agents.~/.pi/skills).Because the same concept maps onto a different native shape per tool, you author once in
.covenant/cdlc/ and project to every executor. One authored agent becomes a file in
.claude/agents and .opencode/agent, a managed block in AGENTS.md for
codex/copilot, and a skill in ~/.pi/skills.
AGENT_DIRS = .claude/agents, .opencode/agent
SKILL_DIRS = .claude/skills, ~/.pi/skills
memory = AGENTS.md (codex/opencode/hermes),
copilot-instructions.md (copilot),
.hermes.md (hermes, only if it already exists)
The Covenant tool in the Capabilities page exposes this via Project to executors, which runs the same export engine.
docs/executor-capabilities.md in the desktop repo,
and the projection map in crates/cdlc/src/project.rs.