## 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]]