← Wiki

SKILL.md Standard

A reusable agent capability packaged as a markdown file with YAML frontmatter. Anthropic shipped the standard in December 2025; OpenAI Codex CLI adopted it shortly after. By May 2026, ~20+ agents consume the same SKILL.md format, and an open marketplace (skills.sh) lists 91K+ of them.

Important because it’s the first cross-platform primitive that survived adoption. Before SKILL.md, every agent had its own format (Cursor .cursorrules, Aider .aider.conf, Cline custom prompts, Claude Code Skills v0). After SKILL.md, the same file works in Claude Code, Cursor, Codex, GitHub Copilot, Windsurf, Gemini, Cline, AMP, Antigravity, ClawdBot, Droid, Goose, Kilo, Kiro CLI, Nous Research, OpenCode, Roo, Trae, VS Code.

What’s in a SKILL.md

---
name: bmad-dev-story
description: Execute story implementation following a context-filled story spec file. Use when the user says "dev this story [story file]" or "implement the next story in the sprint plan"
---

# Dev Story Workflow

**Goal:** Execute story implementation following a context-filled story spec file.

## On Activation

### Step 1: Load Config
Load config from `_bmad/bmm/config.yaml` and resolve...

### Step 2: ...

Two required frontmatter fields: name and description. Description is the routing signal — agents read it to decide whether to invoke the skill. Body is freeform markdown with whatever steps, conventions, and references the skill needs.

Optional siblings: customize.toml (per BMAD), references/, checklists/, steps/ — anything the skill body references with relative paths.

Model-Invoked vs Slash Commands

The critical distinction:

Model-invoked (skill) Slash command
Who triggers The agent itself, based on task context and description The user, by typing /skill-name
When to use Capability the agent should reach for autonomously Capability the user wants explicit control over
Description matters Yes — it’s the routing signal Less — user already chose it by name
Example frontend-design (agent uses when designing UI) /wiki-ingest (user explicitly invokes)

A single skill can be both — Claude Code, Codex CLI, Cursor all surface skills as both auto-callable and slash-callable. The description is what makes auto-routing work, so write it like a search query the model will match against (“Use when…”, concrete trigger phrases).

Install Paths (Claude Code)

Codex CLI and most other adopters use a similar ~/.{tool}/skills/ and project-local .{tool}/skills/ pattern.

skills.sh — The Marketplace

skills.sh is the npm of agent skills, built by Vercel and open-source. Snapshot (May 2026):

Top installs at the time of writing:

Rank Skill Owner Installs
1 find-skills vercel-labs/skills 1.5M
2 frontend-design anthropics/skills 403K
3 vercel-react-best-practices vercel-labs/agent-skills 394K
4 web-design-guidelines vercel-labs/agent-skills 315K
5 microsoft-foundry microsoft/azure-skills 312K

Notable that find-skills is the top — meta-skill that helps the agent find other skills. Skill discovery is a problem people actually have.

SkillsMP is a parallel community directory aggregating from GitHub (700K+ entries indexed, lower bar than skills.sh — minimum 2 stars, scans for quality). Independent project, not official.

Why the Standard Took

Three pragmatic choices made adoption easy:

  1. Markdown + YAML, nothing exotic. No DSL, no proprietary runtime, no framework dependency. Any tool that can read a markdown file can host a skill.
  2. Description does the routing. No registry, no schema validation, no capability tags — the model itself decides via natural-language description matching. Zero infrastructure cost to add a new skill.
  3. Filesystem layout is the contract. ~/.{tool}/skills/{name}/SKILL.md is the install location. Tools agree on the path; nothing else needs to be standardized.

Compare to MCP (which requires a server, schema, transport layer) or LangChain tools (require Python imports, type signatures). SKILL.md is closer to AGENTS.md or robots.txt — a convention, not a system.

Trade-offs

Pros

Cons

Where Skills Fit in Larger Systems

Most modern agent toolkits use SKILL.md as their primitive:

The pattern: skills are the cheapest way to extend an agent. MCPs are heavier (server, transport, eager-load context — see agent-patterns-stream2). Plugins bundle skills + agents + slash commands but still rest on SKILL.md inside.

Authoring Tips (Hard-Won)

From writing 30+ in project-solo-factory:

Related

Related