Introduction to Claude Skills
Skills let you package instructions, checklists, and multi-step procedures into reusable commands that Claude applies automatically — without copy-pasting the same prompt every session.
What are Claude Skills?
A skill is a SKILL.md file that gives Claude a set of instructions, a checklist, or a multi-step procedure. Claude loads the skill when it's relevant, or you invoke it directly by typing /skill-name.
Skills work across Claude.ai, Claude Code, and the API — write once, use everywhere. They follow the open Agent Skills standard, so they're portable across AI tools.
When should you create a skill?
Create a skill when you notice any of these patterns:
Skills vs CLAUDE.md
| CLAUDE.md | Skill (SKILL.md) | |
|---|---|---|
| Content type | Facts, conventions, project rules | Procedures, checklists, workflows |
| When it loads | Every single 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 want to type. Inside that directory, SKILL.md is the only required file. It has two parts:
Example: a skill that summarises uncommitted git changes and flags risks
The !`git diff HEAD` line is called dynamic context injection: Claude Code runs the command before sending the skill to Claude, so Claude always sees real, live data — not a static placeholder.
How to invoke a skill
There are two ways to run a skill:
Where skills live
Where you store a skill determines who can use it:
plugin-name:skill-name namespace, so they never conflict.Bundled skills — available immediately
Claude Code ships with a set of ready-to-use bundled skills. Unlike fixed commands, these are prompt-based — they give Claude detailed instructions and let it orchestrate the work. You invoke them the same way as custom skills.
Create your first skill in 3 steps
Here's the simplest possible skill — a personal commit helper that stages all changes and writes a commit message.
mkdir -p ~/.claude/skills/commit
--- 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 is set here because you don't want Claude deciding to commit autonomously — this is a workflow you'll always trigger yourself with /commit.Ways to build a skill
Quick Reference
| Concept | Value |
|---|---|
| Personal skill path | ~/.claude/skills/<name>/SKILL.md |
| Project skill path | .claude/skills/<name>/SKILL.md |
| Required file | SKILL.md — everything else is optional |
| Invoke manually | /skill-name |
| Auto-trigger signal | description field in frontmatter |
| Block auto-trigger | disable-model-invocation: true |
| Hide from / menu | user-invocable: false |
| Run in subagent | context: fork |
| Dynamic data injection | !`shell-command` in SKILL.md |
| Check available skills | Ask: 'What skills are available?' |
What's Next
Next: activating skills in your Claude account and seeing how they appear in real conversations.