Introduction to Claude Skills
Skills package instructions, checklists, and multi-step procedures into reusable commands. Write once, invoke with /skill-name or let Claude load them when your request matches.
What are Claude Skills?
A skill is a SKILL.md file that gives Claude a procedure, checklist, or set of instructions. Claude loads it when relevant, or you invoke it directly with /skill-name.
Skills work across Claude.ai, Claude Code, and the API. They follow the open Agent Skills standard, so the same format is portable across tools.
CLAUDE.md, a skill's full content loads only when the skill runs. Large reference docs or step-by-step procedures cost almost nothing in context until you need them.When should you create a skill?
Create a skill when you notice any of these patterns:
- You paste the same checklist or instructions into every new session.
- A section of
CLAUDE.mdhas grown into a full step-by-step workflow rather than a simple fact. - A workflow always runs the same sequence — review, commit, deploy — and you want that bundled.
- You want your whole team to get the same output from recurring tasks like PR reviews or standups.
Skills vs CLAUDE.md
| Topic | CLAUDE.md | Skill (SKILL.md) |
|---|---|---|
| Content type | Facts, conventions, project rules | Procedures, checklists, workflows |
| When it loads | Every session from the start | Only when the skill is invoked |
| Context cost | Always uses tokens | Zero until invoked |
| Invocation | Automatic — always active | Auto (by description) or manual (/name) |
| Best for | Code style, branch naming, test runner | Deployments, PR reviews, commit workflows |
| Scope | Project or personal | Enterprise, personal, project, or plugin |
Anatomy of a SKILL.md file
Every skill is a directory named after the command you type. Inside, SKILL.md is the only required file. It has two parts:
- YAML frontmatter — between
---markers. Thedescriptionfield is the most important; Claude uses it to decide when to auto-invoke the skill. - Markdown content — instructions, checklists, templates, and shell commands that inject live data.
--- name: summarize-changes description: Summarises uncommitted git changes and flags anything risky. --- ## Current changes !`git diff HEAD` ## Instructions Summarise the changes above in 2–3 bullet points, then list any risks such as missing tests or hardcoded values.
The !`git diff HEAD` line is dynamic context injection: Claude Code runs the command before sending the skill to Claude, so it always sees live data — not a static placeholder.
How to invoke a skill
| Mode | How it works | Example |
|---|---|---|
| Automatic | Claude reads each skill's description and loads it when your request matches. | What did I change? |
| Direct | Type /skill-name to invoke it yourself. | /summarize-changes |
Where skills live
Where you store a skill determines who can use it. When skills share the same name, enterprise overrides personal, and personal overrides project. Plugin skills use a plugin-name:skill-name namespace.
| Scope | Path | Available to |
|---|---|---|
| Enterprise | Managed settings | All users across your organisation |
| Personal | ~/.claude/skills/<name>/SKILL.md | All of your projects on this machine |
| Project | .claude/skills/<name>/SKILL.md | This project only — commit to Git for the team |
| Plugin | <plugin>/skills/<name>/SKILL.md | Wherever the plugin is enabled |
Bundled skills in Claude Code
Claude Code ships with ready-to-use bundled skills. Unlike fixed commands, these are prompt-based — they give Claude detailed instructions and let it orchestrate the work.
| Command | What it does |
|---|---|
| /simplify | Simplifies complex code or explanations to be more readable |
| /debug | Systematically debugs an issue using logs, errors, and code |
| /batch | Applies the same transformation across multiple files |
| /loop | Repeats a task until a condition is met or you stop |
| /claude-api | Helps you call the Claude API directly from code |
Create your first skill in 3 steps
A personal commit helper that stages all changes and writes a commit message.
Create the skill directory
mkdir -p ~/.claude/skills/commit
Write SKILL.md
--- name: commit description: Stage all changes and write a descriptive commit message. disable-model-invocation: true allowed-tools: Bash(git add *) Bash(git commit *) --- Stage all changes and write a commit message that follows this format: <type>(<scope>): <summary> Types: feat, fix, chore, docs, refactor, test Keep the summary under 72 characters. Write a short body if the change needs context.
disable-model-invocation: true prevents Claude from triggering /commit on its own — this is a workflow you always run yourself.Test the skill
Ways to build a skill
| Approach | When to use it |
|---|---|
| Write SKILL.md by hand | Full control over every line. Best for simple, focused skills. |
| Ask Claude in chat | Describe what you want; paste the generated SKILL.md into your skills folder. |
| /skill-creator plugin | Guided Q&A writes and tests the full skill — includes Eval, Improve, and Benchmark modes. |
Before you continue
- Personal path:
~/.claude/skills/<name>/SKILL.md; project path:.claude/skills/<name>/SKILL.md. - Invoke manually with
/skill-name; auto-trigger uses thedescriptionfield. - Use
disable-model-invocation: truefor skills you want to trigger yourself. - Dynamic data injection:
!`shell-command`in SKILL.md runs before the skill loads. - Next: activating skills in your Claude.ai account.
What's Next
Next: activating skills in your Claude account and seeing how they appear in real conversations.