The SKILL.md Wild West: A Deep-Dive Comparison Across Nine Coding Agents
In October 2025, Claude Code shipped SKILL.md — a portable, Markdown-based instruction file that teaches any AI agent how to perform a named task on demand. Within two months, every major coding agent had adopted the format.
The standard is shared. The implementations are not. This is a deep-dive comparison analysis across nine agents — covering how each interprets activation mechanics, directory layout, frontmatter fields, script execution, tooling, and cross-agent portability. Use the differentiator cards below for a quick read, or scroll into the section tables for the full picture.
Reading guide The TL;DR Key Differentiators & Unique Capabilities section at the top gives you a per-agent summary card — start there for a quick read. The deep-dive comparison tables (§1–§8) that follow break down every dimension in detail.
- Origin author of the standard (Oct 2025)
- Deepest native progressive disclosure in any LLM agent
- Largest curated partner skill catalog (Atlassian, Figma, Stripe…)
- skill-creator meta-skill is the reference implementation
- No built-in skill installer; relies on community tools
- Only agent with first-class GUI skill management (panel + import wizard)
- Three-layer contextual system: Skills + Steering + Powers
- allowed-tools field unique to Kiro (experimental in spec)
- Org-level skills support: workspace vs global scopes
- Good spec compliance; compatibility field actively used
- Only agent with enterprise org-level skills scope (coming)
- Richest broader customization ecosystem (agents, prompts, hooks, instructions)
- Works across coding agent, CLI, IDE — single skill, three surfaces
- Explicit .claude/skills compatibility for shared repos
- awesome-copilot: largest community-curated collection
- Skills delivered via VS Code 1.108 (Dec 2025)
/skillspicker command in chat- Tight IDE integration (diff review, agent mode)
- Only reads
.github/skills/; no .agents/ compat
- Only agent with a built-in $skill-installer (install by name)
- Only agent with an official evals framework for skills
- openai.yaml extension: UI metadata, MCP tool deps, implicit invocation policy
- Auto-detects skill file changes (no restart needed)
- Symlink support; walks up directory tree
- ChatGPT Code Interpreter also has skills (/home/oai/skills)
- Tightest sandbox (avoids ~/.ssh, structured network approvals)
- Skills + Hooks integration = security/observability pipeline enforcement
- Subagent orchestration in same release (v2.4)
- Replaced .cursorrules with SKILL.md in v2.3.35+ (stable rollout)
- Nightly channel first (experimental), then stable channel
- Active community skill creators (LobeHub marketplace)
- Most flexible directory reading (scans .goose, .agents, .claude, ~/.config/agents all at once)
- Only open-source agent with a large internal marketplace (Block's 100+ skills)
- Model-agnostic: any LLM provider
- Skills + Recipes = complementary system (Recipes = explicit; Skills = contextual)
- Implementation discussion visible on GitHub (#5761)
- Early adopter (Dec 10 — before open standard was announced Dec 18)
- Focuses on context efficiency ("lazy-load only when relevant")
- Reads both .agents/skills and .claude/skills for compatibility
- Subagent thread parallelization unique capability
- No official catalog; relies on external skill repos
- Most portable directory strategy (reads .opencode, .claude, .agents all)
- Walks up to git worktree root when scanning (like Codex)
- Model-agnostic; LLM-provider neutral
- Skills exposed via a skill tool (not just system prompt injection)
- Minimal opinionated defaults; spec-compliant
| Dimension | Claude Code Anthropic |
Kiro AWS / Amazon |
GitHub Copilot Microsoft |
VS Code Copilot Microsoft |
OpenAI Codex CLI OpenAI |
Cursor Cursor Inc. |
Goose Block |
Amp Sourcegraph |
OpenCode sst.dev |
|---|---|---|---|---|---|---|---|---|---|
| Skills introduced | Oct 16, 2025 First to ship SKILL.md |
Early 2026 | Dec 18, 2025 | Dec 2025 VS Code 1.108 (Insiders) |
Dec 12, 2025 As experimental; formal: Dec 2025 |
Jan 23, 2026 Cursor 2.4 stable |
Dec 2025 | Dec 10, 2025 | Dec 2025 |
| Standard basis | Origin author Created the standard; donated to agentskills.io Dec 18, 2025 |
agentskills.io Full compliance + Kiro-only extensions |
agentskills.io | agentskills.io | Structurally identical Uses spec dir layout but adds openai.yaml extension; formally joined Dec 2025 |
agentskills.io | agentskills.io | agentskills.io Early adopter (Dec 10 announcement) |
agentskills.io |
| Open source? | CLI: Yes (GitHub) Model is closed |
Closed | Closed product Spec is open; awesome-copilot is open |
VS Code is open source Copilot extension is closed |
CLI: Yes (GitHub) 61.7k⭐ openai/codex |
Closed | Yes block/goose — 24.4k⭐ |
Closed | Yes sst-dev/opencode |
| Interface type | CLI | IDE | IDE CLI Cloud agent | IDE extension | CLI | IDE | CLI Desktop app | CLI IDE (VS Code, JetBrains) | CLI |
| Underlying model(s) | Claude (Sonnet, Opus, Haiku) | Claude (default); others TBD | GPT-4o, Claude, Gemini (plan-dependent) | GPT-4o, Claude, Gemini | GPT-5.2-Codex / GPT-4o | Claude, GPT-4o, Gemini (configurable) | Any LLM (model-agnostic) | Claude (primarily) | Any LLM (model-agnostic) |
| Dimension | Claude Code | Kiro | GitHub Copilot | VS Code Copilot | OpenAI Codex CLI | Cursor | Goose | Amp | OpenCode |
|---|---|---|---|---|---|---|---|---|---|
| Project-level skill dir | .claude/skills/ | .kiro/skills/ | .github/skills/ .claude/skills/ accepts both (compatibility) |
.github/skills/ | .agents/skills/ .codex/skills/ walks up to git root |
.cursor/skills/ | .goose/skills/ .agents/skills/ |
.agents/skills/ .claude/skills/ compatibility fallback |
.opencode/skills/ .claude/skills/ .agents/skills/ |
| User/global skill dir | ~/.claude/skills/ | ~/.kiro/skills/ | ~/.copilot/skills/ ~/.claude/skills/ |
~/.copilot/skills/ | ~/.codex/skills/ | ~/.cursor/skills/ | ~/.config/agents/skills/ ~/.config/goose/skills/ ~/.claude/skills/ |
~/.config/agents/skills/ ~/.claude/skills/ |
~/.config/opencode/skills/ ~/.claude/skills/ ~/.agents/skills/ |
| Org / Enterprise scope | Not yet | Not yet | Coming soon Org-level planned; Business/Enterprise plan |
Project + personal only | Not available | Not available | Not available | Not available | Not available |
| Built-in system skills | None Relies on anthropics/skills repo |
None bundled | None bundled awesome-copilot community |
None bundled | Yes $skill-creator & $plan in ~/.codex/skills/.system/ |
None | None Skills via extension |
None | None |
| Directory scan strategy | Flat scan of skills dir | Flat scan of .kiro/skills/ | Flat scan; picks up .claude/skills for compat | Flat scan | Walks up from CWD to git root scanning .agents/skills at each level | Flat scan | Scans multiple locations including .goose/, .agents/, ~/.config/agents/ | Flat scan of .agents/skills and compat dirs | Walks up to git worktree root; scans .opencode/, .claude/, .agents/ at each level |
| Symlink support | Not documented | Not documented | Not documented | Not documented | Yes Follows symlink targets when scanning |
Not documented | Not documented | Not documented | Not documented |
| Field | Claude Code | Kiro | GitHub Copilot | VS Code Copilot | OpenAI Codex CLI | Cursor | Goose | Amp | OpenCode |
|---|---|---|---|---|---|---|---|---|---|
| ⬛ Required Fields (agentskills.io spec) | |||||||||
name (required) |
✔ | ✔ Must match folder name |
✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
description (required) |
✔ Drives auto-activation |
✔ max 1024 chars |
✔ | ✔ | ✔ Critical — drives implicit trigger |
✔ | ✔ | ✔ | ✔ |
| ⬛ Optional Standard Fields (agentskills.io spec) | |||||||||
license |
✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported |
compatibility |
✔ Supported Rarely used in practice |
✔ Active use max 500 chars; recommended for Kiro installs |
✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported |
metadata |
✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported | ✔ Supported |
allowed-tools |
Ignored / not used | Experimental Kiro-only extension; e.g. Bash(git:*) |
Ignored | Ignored | Uses openai.yaml instead | Ignored | Ignored | Ignored | Ignored |
| ⬛ Agent-Specific Proprietary Extensions | |||||||||
agents/openai.yaml |
N/A | N/A | N/A | N/A | ✔ Codex-specific display_name, short_description, icon, brand_color, default_prompt, allow_implicit_invocation, tool dependencies (MCP) |
N/A | N/A | N/A | N/A |
Kiro allowed-tools field |
N/A | ✔ Kiro-specific Space-delimited tool whitelist; experimental per spec |
N/A | N/A | N/A | N/A | N/A | N/A | N/A |
| Cursor hooks in skills | N/A | N/A | N/A | N/A | N/A | ✔ Cursor-specific Skills can include hooks (scripts triggered at agent loop checkpoints) |
N/A | N/A | N/A |
| Unknown field handling | Ignored (passed to LLM) | Ignored per spec | Ignored | Ignored | Ignored (reads SKILL.md + openai.yaml) | Ignored | Ignored | Ignored | Ignored per docs |
| Dimension | Claude Code | Kiro | GitHub Copilot | VS Code Copilot | OpenAI Codex CLI | Cursor | Goose | Amp | OpenCode |
|---|---|---|---|---|---|---|---|---|---|
| Implicit (auto) activation | ✔ Agent matches description to task at startup |
✔ Discovery at startup; auto-activates on description match |
✔ SKILL.md injected when Copilot judges it relevant |
✔ | ✔ Implicit matching based on description; can be disabled via allow_implicit_invocation: false |
✔ | ✔ Platform extension checks description on each request |
✔ Lazy-load — activates only when relevant |
✔ |
| Explicit / manual invocation | ✔ Name skill in prompt |
✔/skill-name slash command in chat |
✔/skill-name slash command |
✔/skill-name slash command; /skills opens picker |
✔$skill-name in prompt (dollar-sign syntax) |
✔/skill-name slash command |
✔ Name skill in prompt |
✔ Name skill in prompt |
✔ Name in prompt; skill appears in tool description |
| Invocation syntax | Natural language | /skill-name |
/skill-name |
/skill-name or /skills picker |
$skill-name |
/skill-name |
Natural language | Natural language | Natural language / tool invocation |
| Progressive disclosure — Layer 1 (metadata) | name + description loaded at startup for all skills | name + description loaded at startup | name + description pre-loaded into context | name + description pre-loaded | name + description + file path + optional openai.yaml metadata | name + description loaded at startup | Frontmatter only loaded at start (tiny) | name + description loaded lazily | name + description listed in skill tool description |
| Progressive disclosure — Layer 2 (instructions) | Full SKILL.md body loaded on activation | Full SKILL.md loaded on activation | Full SKILL.md injected on activation | Full SKILL.md injected on activation | Full SKILL.md loaded when agent decides to use skill | Full SKILL.md loaded on activation | Full SKILL.md loaded on demand | Full SKILL.md loaded on demand | Full SKILL.md loaded on demand |
| Progressive disclosure — Layer 3 (resources) | ✔ referenced files loaded as needed | ✔ scripts/references/assets loaded as needed | ✔ relative path resources loaded on demand | ✔ resources on demand | ✔ scripts/references/assets on demand | ✔ resources on demand | ✔ supporting files loaded via Developer extension | ✔ resources on demand | ✔ resources on demand |
| Multi-skill simultaneous activation | ✔ multiple can activate per turn | ✔ | ✔ | ✔ | ✔ but don't merge same-named skills | ✔ | ✔ | ✔ | ✔ |
| Skill conflict resolution (same name) | Last-wins (project overrides global) | Project skill wins over global | Project over personal | Project over personal | Both appear in selector; no merging | Project over global | Not specified; likely last-wins | Not specified | Not specified |
| Dimension | Claude Code | Kiro | GitHub Copilot | VS Code Copilot | OpenAI Codex CLI | Cursor | Goose | Amp | OpenCode |
|---|---|---|---|---|---|---|---|---|---|
| Standard optional dirs | scripts/references/assets/ |
scripts/references/assets/ |
scripts/references/assets/ |
scripts/references/assets/ |
scripts/references/assets/agents/ (openai.yaml) |
scripts/references/assets/ |
scripts/references/assets/ |
scripts/references/assets/ |
scripts/references/assets/ |
| Script execution support | ✔ Bash, Python, JS via Bash tool | ✔ Deterministic tasks recommended as scripts |
✔ Referenced scripts in skill dir can be invoked |
✔ Scripts invoked via terminal tools |
✔ Python/Bash/JS; scripts must be tested before shipping |
✔ Scripts for security, secrets, observability integrations |
✔ Via Developer extension's file + shell tools |
✔ | ✔ |
| Script language support | Any (shell, Python, JS, etc.) | Any (Python, Bash, etc.) | Any | Any | Python, Bash, JS / any (execution sandbox applies) | Any; Bun/JS used in hooks examples | Any (via shell or extension) | Any | Any |
| Skill can reference MCP servers | Indirect Skill instructions can reference MCP tools; no formal dependency declaration |
Indirect | ✔ Skills can leverage GitHub MCP server tools (e.g. list_workflow_runs) |
✔ | ✔ openai.yaml dependencies.tools declares required MCP servers by URL + transport |
Indirect | ✔ Skills + MCP extensions designed to compose |
Indirect | Indirect |
| Non-standard dirs allowed? | Yes (agent reads all files in dir) | Yes but flagged as unexpected by linters | Yes | Yes | Yes | Yes | Yes | Yes | Yes |
| Dimension | Claude Code | Kiro | GitHub Copilot | VS Code Copilot | OpenAI Codex CLI | Cursor | Goose | Amp | OpenCode |
|---|---|---|---|---|---|---|---|---|---|
| Built-in skill creator | ✔ skill-creator skill in /mnt/skills/examples |
Via Kiro agent UI + import wizard | Via Copilot itself + awesome-copilot template | Copilot can scaffold skills | ✔ $skill-creator built-in system skill — interviews user and generates scaffold |
Community cursor-skill-creator skill | Community meta-skill | Manual only | Manual only |
| Skill installer / package manager | No official CLI Manual copy; community tools (skillport, skills.sh) |
✔ Kiro panel → Agent Steering & Skills → Import; supports GitHub URL or local folder |
No official installer Copy from awesome-copilot manually |
Manual copy | ✔ $skill-installer built-in skill; installs curated or experimental skills by name from openai/skills |
Manual copy | Manual copy | Manual copy | Manual copy |
| Official skills catalog | ✔ anthropics/skills on GitHub; also partner skills (Atlassian, Figma, Stripe, Canva, Notion, Zapier) |
No official catalog Uses agentskills.io shared skills |
✔ github/awesome-copilot community collection |
✔ Same as Copilot + microsoft/skills (Azure SDKs) |
✔ openai/skills on GitHub — curated + experimental folders |
No official catalog Compatible with any agentskills.io-compliant skill |
No official catalog Block internal 100+ skill marketplace (not public) |
No official catalog | No official catalog |
| Skill validation tool | skills-ref CLI (agentskills.io) | skills-ref CLI | skills-ref CLI | skills-ref CLI | ✔ codex exec --json for eval harness; plus skills-ref |
skills-ref CLI | skills-ref CLI | skills-ref CLI | skills-ref CLI |
| Eval / testing framework | Community evals via skill-creator skill | Not documented | Not documented | Not documented | ✔ Official evals guide: codex exec --json returns JSONL events for deterministic checks + LLM grading; should_trigger test cases |
Not documented | Not documented | Not documented | Not documented |
| Skill change detection | Restart required | Restart required | May need 5–10 min index time + IDE reload | IDE reload | Auto-detects Monitors for changes; restart only if update doesn't appear |
Restart required | Restart required | Restart required | Restart required |
| Skill disable / enable | No config | ✔ Agent Steering & Skills panel toggle |
No per-skill toggle | No per-skill toggle | ✔ ~/.codex/config.toml: [[skills.config]] enabled = false |
No toggle | ✔ Skills extension can be toggled on/off |
No toggle | No toggle |
| Dimension | Claude Code | Kiro | GitHub Copilot | VS Code Copilot | OpenAI Codex CLI | Cursor | Goose | Amp | OpenCode |
|---|---|---|---|---|---|---|---|---|---|
| Can consume Claude Code skills? | Source | ✔ Auto-discovers .claude/skills; same SKILL.md format |
✔ Explicitly reads .claude/skills for compat |
✔ | ✔ Same spec; install manually into .agents/skills or .codex/skills |
✔ | ✔ Reads ~/.claude/skills by default |
✔ Reads .claude/skills automatically |
✔ Reads .claude/skills automatically |
| Preferred canonical dir | .claude/skills/ | .kiro/skills/ | .github/skills/ | .github/skills/ | .agents/skills/ | .cursor/skills/ | .agents/skills/ | .agents/skills/ | .opencode/skills/ |
| Best single portable dir (works most places) | .agents/skills/ — supported by Amp, Goose, OpenCode, Codex CLI, and others; avoids tool-specific namespacing | ||||||||
| Portability score (of 9) | 9/9 (reads all) | 9/9 Extensions ignored by others gracefully |
9/9 Accepts .claude/skills compat |
7/9 Only reads .github/skills; doesn't compat .agents/ |
8/9 openai.yaml ignored by others; SKILL.md fully portable |
7/9 .cursor/ is agent-specific; manually import other-dir skills |
9/9 Reads .agents/, .goose/, .claude/ — most flexible |
9/9 Reads .agents/, .claude/ — cross-compatible |
9/9 Reads .opencode/, .claude/, .agents/ — most flexible |
| ChatGPT / Code Interpreter | N/A | N/A | N/A | N/A | ✔ ChatGPT Code Interpreter has /home/oai/skills with structurally identical SKILL.md format (discovered Dec 12, 2025) |
N/A | N/A | N/A | N/A |
| Dimension | Claude Code | Kiro | GitHub Copilot | VS Code Copilot | OpenAI Codex CLI | Cursor | Goose | Amp | OpenCode |
|---|---|---|---|---|---|---|---|---|---|
| Parallel / complementary context systems | CLAUDE.md (project memory) System prompts |
Steering (always-on context) Powers (MCP + guidance bundles) |
Custom instructions (.github/copilot-instructions.md) Custom agents (.github/agents/*.agent.md) Prompt files (.github/prompts/) Hooks |
Custom instructions Prompt files |
AGENTS.md Plans (structured doc management via $plan skill) config.toml |
Rules (always-on, replaces .cursorrules) Hooks Subagents (v2.4) |
.goosehints (general preferences) Recipes (explicit parameterized workflows) |
AGENTS.md Memory / thread sharing |
AGENTS.md Mode configs |
| Skills vs rules / instructions distinction | Skills = on-demand; CLAUDE.md = always-on | Skills = portable on-demand; Steering = project-specific always-on | Skills = on-demand procedural; Custom instructions = always-on declarative | Skills = on-demand; Instructions = always-on | Skills = on-demand (via description match or $invoke); AGENTS.md = always-on | Skills = dynamic on-demand; Rules = always-on static | Skills = on-demand contextual; .goosehints = always-on; Recipes = explicit invocation | Skills = on-demand; AGENTS.md = always-on | Skills = on-demand; AGENTS.md = always-on |
| Partner/enterprise skill integrations | Atlassian, Figma, Canva, Stripe, Notion, Zapier | None announced | GitHub MCP server, Azure, Microsoft 365 | Same as Copilot | OpenAI Developer Docs MCP, Linear | None announced | Block internal only | None announced | None announced |
| Security / prompt injection mitigations | General safe messaging; no skill-specific sandbox | Skills scoped to workspace/global; tool whitelist via allowed-tools | Standard Copilot safety; no skill-specific sandbox | Standard VSC safety | ✔ Sandbox filesystem; restricted read-only on Linux; avoids ~/.ssh; structured network approval |
✔ Hooks can enforce deny policies (PreToolUse), security tool integrations |
Extension permission model; recipes separate from skills | Standard safety | Standard safety |
| Subagents / orchestration | ✔ Claude Code subagents | Not documented | ✔ Custom agents + handoffs; coding agent as cloud subagent | Via Copilot agent mode | ✔ Background agents, app-server thread API | ✔ Subagents (v2.4) | ✔ MCP extension orchestration | ✔ Subagent parallelization (thread sharing) | Via CLI orchestration |