A skill is a write-once, always-on capability asset for Claude Code. This guide covers how skills get triggered, how to write one that works, and the 7 failure modes that make most skills sleep forever.
A skill is a directory with instructions, centered on a single SKILL.md file. How it differs from the three old ways:
| Approach | Problem | Skills solve it by |
|---|---|---|
| Typing instructions every time | Same request repeated dozens of times, drifting versions | Write once, effective forever |
| Putting rules in CLAUDE.md | All rules resident in context, interfering, burning tokens | Loading on demand |
| MCP tools | Adds capability, not method | A skill is the method: steps, standards, prohibitions |
One line: MCP gives Claude new hands; a skill teaches it a new brain.
my-skill/
└── SKILL.md
Two parts: frontmatter (machine-read) + body (read when Claude works).
---
name: code-review-checklist
description: Seven-dimension systematic review of code changes. MUST USE when the user asks to review code, review a PR, check a diff, or says "does this look right".
---
# Code Review Checklist
## Workflow
1. Read the full diff first; understand intent before finding faults
2. Check seven dimensions in order: correctness / security / performance / contracts / error handling / tests / maintainability
3. Every finding must carry file:line and a concrete fix
## Output
Grouped as Blockers / Should-fix / Nits, ending with a Verdict
## Anti-patterns
- Never rubber-stamp with "Looks good"
- Never let style nits occupy a Blocker slot
Claude does not load your skill body by default. It reads each skill's description to decide whether to use it right now. A weak description means your beautiful body text sleeps forever.
description: [what it does] + [MUST USE when trigger scenarios] + [the exact words users say]
| ❌ Sleeps forever | ✅ Fires |
|---|---|
Helps with code quality | Seven-dimension review of code changes. MUST USE when the user asks to review, check a PR, look at a diff, or asks "is this code okay" |
Git commit helper | Split logical commits with conventional messages. MUST USE when the user commits code, writes a commit, or says "commit this" |
| # | Mistake | Fix |
|---|---|---|
| 1 | Vague description ("improve coding") | Apply the §3 formula; include user phrasing |
| 2 | One skill does five jobs | Split it. Narrower trigger = higher hit rate |
| 3 | Body is a prompt dump, no steps | Convert to a numbered Workflow |
| 4 | No output format contract | Require ranking/tables/fields |
| 5 | No Anti-patterns section | Write at least 2-3 hard prohibitions |
| 6 | Keywords in one language only | Both languages (the same person says "review" and "审查") |
| 7 | Shipping untested | Next section: three test cases |
take a look at my changes, anything wrong?). Skill doesn't load → rewrite the description.# User-level (available in every project)
my-skill/SKILL.md → ~/.claude/skills/my-skill/SKILL.md
# Project-level (travels with the repo, shared with the team)
my-skill/SKILL.md → <repo>/.claude/skills/my-skill/SKILL.md
Project-level is the team-alignment play: the skill enters the repo, and every teammate's Claude syncs automatically.
These principles come from a 15-skill engineering pack — pr-reviewer / bug-hunter / test-forge / feature-spec / commit-craft are free under MIT and work as copyable templates:
Claude Skills Pro — 15 skills encoding staff-engineer workflows
Free samples on GitHub (MIT) Full catalog →