skillpm no longer treats every adapter as equally verified. This page records the discovery contract that skillpm inject targets for each agent and whether that contract is backed by official public documentation.
| Agent | Config Key | Status | skillpm Global Target | skillpm Project Target | Discovery Mechanism | Format / Validation |
|---|---|---|---|---|---|---|
| Claude Code | claude |
Verified | ~/.claude/skills/{name}/ |
<project>/.claude/skills/{name}/ |
Claude loads personal, project, plugin, and nested .claude/skills/ directories below the files you work on. |
SKILL.md required. description recommended. name optional. |
| Codex | codex |
Verified | ~/.agents/skills/{name}/ |
<project>/.agents/skills/{name}/ |
Codex scans .agents/skills from the current working directory up to the repository root, plus user/admin/system locations. |
SKILL.md required. Missing name or description triggers inject warnings because discoverability depends on them. |
| Gemini CLI | gemini |
Verified | ~/.gemini/skills/{name}/ |
<project>/.gemini/skills/{name}/ |
Gemini discovers workspace and user skills from .gemini/skills or the .agents/skills alias. Within the same tier, .agents/skills wins. |
SKILL.md with name and description. Optional scripts/, references/, and assets/. |
| GitHub Copilot CLI | copilot |
Verified | ~/.copilot/skills/{name}/ |
<project>/.github/skills/{name}/ |
Copilot supports project skills in .github/skills or .claude/skills, and personal skills in ~/.copilot/skills or ~/.claude/skills. |
SKILL.md with name and description. name must be lowercase with hyphens. |
| OpenCode | opencode |
Verified | ~/.config/opencode/skills/{name}/ |
<project>/.opencode/skills/{name}/ |
OpenCode also loads .claude/skills and .agents/skills, walking upward from the current working directory to the git worktree root. |
SKILL.md with required name and description. Directory name must match name. |
| Kiro | kiro |
Verified | ~/.kiro/skills/{name}/ |
<project>/.kiro/skills/{name}/ |
Kiro loads workspace skills from .kiro/skills/ and global skills from ~/.kiro/skills/, with workspace taking precedence. |
SKILL.md with required name and description. Directory name must match name and use lowercase letters, numbers, and hyphens. |
| OpenClaw | openclaw |
Verified | ~/.openclaw/workspace/skills/{name}/ |
<project>/skills/{name}/ |
OpenClaw loads workspace skills/, shared ~/.openclaw/skills, and bundled skills. Workspace wins over shared, and shared wins over bundled. |
SKILL.md with required name and description. |
| Antigravity | antigravity |
Best-effort alias | ~/.gemini/skills/{name}/ |
<project>/.gemini/skills/{name}/ |
Inferred from Gemini CLI IDE integration, which lists Antigravity as a supported IDE. No separate Antigravity skills contract is publicly documented. | Uses the Gemini CLI layout. Not independently validated. |
| Cursor | cursor |
Best-effort | ~/.cursor/skills/{name}/ |
<project>/.cursor/skills/{name}/ |
No current public Cursor discovery contract was validated in official docs during this audit. | skillpm only verifies SKILL.md presence. Treat as experimental. |
| TRAE | trae |
Best-effort | ~/.trae/skills/{name}/ |
<project>/.trae/skills/{name}/ |
No current public TRAE discovery contract was validated in official docs during this audit. | skillpm only verifies SKILL.md presence. Treat as experimental. |
| Agent | Config Key | Contract |
|---|---|---|
| VS Code (Copilot) | vscode |
Uses the same skill contract as Copilot. Global inject target is ~/.copilot/skills/{name}/; project inject target is <project>/.github/skills/{name}/. |
skillpm injectnow validates the requested skill before writing adapter state.- For verified agents that require
nameordescription,skillpm injectsynthesizes missing frontmatter into the copiedSKILL.mdand then validates the adapted result. - Verified adapters fail fast when a copied skill cannot satisfy the documented discovery contract for that agent.
- Best-effort adapters remain available, but
skillpmno longer claims end-to-end verification for them. - OpenClaw project scope now targets the workspace root
skills/directory, not<project>/.openclaw/skills/. - Copilot and VS Code project scope now target
.github/skills/, matching GitHub’s documented repository skill locations. - Codex now injects to
.agents/skills/, matching Codex’s repository and user discovery rules.
- VS Code and GitHub Copilot CLI share the same global user path:
~/.copilot/skills/. - Antigravity and Gemini CLI share the same
~/.gemini/skills/and<project>/.gemini/skills/targets inside skillpm. - OpenCode also discovers compatible skills from
.claude/skills/and.agents/skills/, even though skillpm writes to.opencode/skills/by default.
To distinguish internal state for shared paths, skillpm keeps separate adapter state directories:
- Copilot CLI:
~/.copilot/skillpm/ - VS Code:
~/.copilot/skillpm-vscode/ - Gemini CLI:
~/.gemini/skillpm/ - Antigravity:
~/.gemini/skillpm-antigravity/
skillpm doctor auto-detects available agents by checking whether their root directory exists on disk. The logic (DetectAvailable() in internal/adapter/detect.go):
- For each known agent, check if its root directory exists.
- OpenClaw uses
OPENCLAW_STATE_DIRwhen set, falling back to~/.openclaw/state/. - Detected agents are auto-enabled in the config on first run or when doctor runs.
- Detection is deduplicated so each agent name appears at most once.
Detection answers "is this client installed?" It does not imply the adapter is fully verified. Use the matrix above for verification status.
Adapters can be enabled manually in config.toml or auto-enabled by skillpm doctor:
[[adapters]]
name = "claude"
enabled = true
scope = "global"See Config Reference for the full adapter schema.