Claude Code skills let you save a review checklist you keep pasting into chat. Each skill is its own directory containing a SKILL.md file. Claude can use it when your request matches its description, or you can start it yourself with a command such as /review-notes.
Use CLAUDE.md for project information Claude needs at the start of each conversation, such as test commands and coding conventions. Use a skill for a particular task with several steps, such as reviewing changes or preparing a deployment. The skill’s full instructions are read when that task needs them.
Custom commands have been merged into skills. A file at .claude/commands/deploy.md and a skill at .claude/skills/deploy/SKILL.md both create /deploy. Existing command files still work. New work should be a skill: it can carry supporting files, control whether you or Claude invokes it, and load on its own when relevant.
Where to put it
- Project:
.claude/skills/<name>/SKILL.md, committed so the team gets it - Personal:
~/.claude/skills/<name>/SKILL.md, every project on this machine, but not Cowork or cloud sessions - Nested:
<subdir>/.claude/skills/<name>/SKILL.md, for work that only applies there. A session started above that directory picks the skill up once Claude works on files there
In a project or personal skill, the directory name is the slash command you type, and the frontmatter name is the listing label; the sample keeps them identical on purpose. YAML frontmatter at the top tells Claude when to use it. Markdown under that is the procedure.
Start with a review-only skill
A first skill that only reports is easier to trust. It reads the differences between the current files and the last Git commit, then writes review notes. The four instructions in the sample tell the model to report only; they do not withdraw file-edit or git tools.
Save this example as .claude/skills/review-notes/SKILL.md:
---
name: review-notes
description: Write a short review of the current diff. Use when the user asks what changed, wants notes before a commit, or asks for a risk list. Report only; do not edit files or create a commit.
---
## Diff
!`git diff HEAD`
## Instructions
1. Summarize the change in three bullets or fewer.
2. List risks: missing tests, secrets, or behavior that looks accidental.
3. If the diff is empty, say so and stop.
4. Do not edit files. Do not run git write commands.
Start Claude in the repo and type /review-notes, or ask “what did I change?” if the description is enough for Claude to load it. Claude Code runs git diff HEAD and replaces that ! line with the command output before Claude sees the instructions. This example needs a Git project with an existing commit. The command compares files Git already tracks with that commit; new files not yet added to Git are not included. If the injected command is denied or fails, the skill aborts before Claude sees it.
Keep the instructions focused on the task. Once loaded, a skill remains part of the conversation and uses some of the model’s available context. To run it only when you explicitly ask, add disable-model-invocation: true next to description in the YAML frontmatter between the --- markers, then start it with /review-notes.