## Definition A **skill** is a packaged, on-demand procedure consisting of at minimum a `SKILL.md` file with frontmatter describing when it should load. The harness indexes descriptions and offers the matching skill to the model when a relevant request arrives. As of 2026, slash commands and skills are unified in Claude Code. ## Anatomy ```markdown --- name: release-checklist description: | Walk a Claude session through our release process: version bump, changelog update, tag creation, GitHub release notes. Use when the user says "cut a release", "tag v*", or "publish a new version". --- # Release checklist Steps, in order: 1. Confirm the working tree is clean (`git status`). Abort if not. 2. Determine version bump. If unclear, ASK. 3. Update `package.json` and `package-lock.json`. 4. Update `CHANGELOG.md` from commits since the last tag. 5. Commit with message `chore(release): vX.Y.Z`. 6. Tag `vX.Y.Z` and push the tag. 7. STOP. The human creates the GitHub release. ``` ## Properties of a Good Skill - **Specific description** — names trigger phrases, not abstract purpose. - **Operational steps** — "do X. If Y, abort." The model executes; it doesn't invent. - **Explicit STOP** points — hand off to the human at the right moment. ## Storage - `.claude/skills/<name>/` — project, committed, team-shared. - `~/.claude/skills/<name>/` — user, personal. - Plugins distribute skills beyond a single repo. ## Skills vs `AGENTS.md` - `AGENTS.md` describes **standing rules** for every session. - A skill describes a **procedure** invoked *on demand*. If you find yourself writing "When the user asks to deploy, …" in `AGENTS.md`, promote it to a skill. ## Same Context, No Isolation Unlike sub-agents, a skill runs in the **same context window** as the current conversation. No spawning, no new process — just additional instructions becoming part of the session. ## Related - [[Extension Trifecta]] - [[AGENTS.md Convention File]] - [[Specialized Agent]]