Skip to content

Claude Code skills: what SKILL.md is and when Claude uses it

A skill is a folder with a SKILL.md that teaches Claude one job. Here is where skills live, what goes in the file, why the description decides whether it is used, and when a skill beats CLAUDE.md.

Short answer: a skill is a folder containing a SKILL.md file: a name, a one-line description, and instructions for one job, such as writing release notes or reviewing a migration. Put it in ~/.claude/skills/<name>/ for yourself or .claude/skills/<name>/ for a project. Claude reads only the descriptions up front and loads a skill's instructions when a request matches.

I started with everything in CLAUDE.md. It grew to 300 lines, most of which had nothing to do with what I was asking. Moving the job-specific parts into skills made both better.

What goes in a SKILL.md?

A block of front matter, then plain Markdown:

---
name: release-notes
description: Write release notes from the commits since the last tag. Use when the user asks for release notes, a changelog entry or "what changed".
---

# Release notes

1. Find the last tag with `git describe --tags --abbrev=0`.
2. List the commits since then and group them: added, changed, fixed.
3. Write each line for a user, not a developer: what they can now do.
4. Leave out refactors, test changes and dependency bumps.

The folder can hold more: a template, a script the instructions run, a reference file that is only read when needed. The instructions point to them by relative path.

Why does the description matter so much?

At the start of a session Claude sees each skill's name and description, not its body. It decides whether to open a skill by matching your request against that description. So the description has to say two things: what the skill does and when to use it, in the words people actually use.

"Release notes helper" will rarely fire. "Write release notes from the commits since the last tag. Use when the user asks for release notes, a changelog entry or what changed" will.

When a skill never seems to be used, the description is almost always the reason.

Where do skills live?

FolderWho has it
~/.claude/skills/<name>/SKILL.mdYou, in every project
.claude/skills/<name>/SKILL.mdEveryone who works in the project (commit it)

Plugins can bring skills too. You can also ask for one directly by name instead of waiting for Claude to pick it.

Skill or CLAUDE.md?

  • CLAUDE.md is read in full at the start of every session. Put there what is true for every task: how to run the tests, the conventions, what never to do.
  • A skill is loaded only when its job comes up. Put there anything long that only matters for one kind of task.

A useful test: if a paragraph in CLAUDE.md starts with "When you are asked to...", it probably wants to be a skill.

Where can you check this?

How long should a skill be?

As long as the job needs and no longer. Under 500 lines for the SKILL.md itself is a good ceiling; move long references into separate files in the folder, which are read only when the instructions point to them. More on keeping CLAUDE.md lean in What to put in CLAUDE.md.

Config Studio for Claude Code lists skills with CLAUDE.md, commands, agents and the rest of its 20 surfaces, shows every file each one can live in and which one wins, and writes the file beside the options you pick.

The tool

Do it in your browser.

Claude Code

Config Studio for Claude Code

Every file Claude Code reads, explained: what each setting does, where it lives, which file wins, and an editor that writes it for you.

Keep reading

More from the blog.

Every post

Contact