If you use Claude Code, you've probably found yourself typing the same instructions repeatedly — "review this PR for security issues", "write a commit message in this format", "check for breaking changes before merging". Skills let you capture those instructions once and invoke them with a single command.
What is a skill?
A skill is a markdown file that lives in .claude/skills/. Each file defines a set of instructions for Claude to follow when that skill is invoked. You call a skill by typing /skill-name in the chat.
For example, a pr-review.md skill might look like this:
---
name: pr-review
description: Review the current PR for bugs, security issues, and breaking changes
---
Review the staged diff and open PR. Check for:
- Security vulnerabilities (injection, auth issues, exposed secrets)
- Breaking changes to public APIs or interfaces
- Missing tests for new behaviour
- Performance regressions
Report findings grouped by severity: critical, warning, suggestion.
Now instead of typing all of that out every time, you just type /pr-review.
Another example: commit messages
A commit-message.md skill can enforce a consistent format across your project:
---
name: commit-message
description: Generate a commit message for staged changes
---
Look at the staged diff and write a commit message following the conventional commits format:
<type>(scope): <short summary>
Types: feat, fix, refactor, docs, chore, test
Keep the summary under 72 characters.
Add a body paragraph if the change needs explanation.
Run /commit-message and Claude reads your diff and writes the message for you.
Why are they useful?
Consistency. Your whole team can use the same skill file, so PR reviews always check the same things and commit messages always follow the same format.
Speed. A task that used to require a detailed prompt becomes a single command.
Iteration. Because the instructions live in a file, you can improve them over time. If the PR review skill keeps missing something, add it to the file and it applies everywhere going forward.
Where to put them
Skills can live at two levels:
.claude/skills/in your project — available to everyone working in that repo~/.claude/skills/globally — available across all your projects
Project-level skills are great for things specific to your codebase or team workflow. Global skills are better for personal habits you want everywhere.
Getting started
Pick one task you find yourself prompting Claude for repeatedly, write a markdown file for it, and drop it in .claude/skills/. You'll know it's working when you stop remembering how you did it before.