Skip to content

Claude Code Skills Explained: What They Are and How to Set One Up

What Claude Code Skills are, the SKILL.md format, where they live, how Claude loads them on demand, and a worked example you can drop in and use today.

MGMCSA Guru Team December 21, 2025 6 min read
A SKILL.md file with YAML frontmatter inside a .claude/skills folder

If you keep pasting the same instructions into Claude Code — your team’s commit message format, the steps for cutting a release, the rules your code reviewer always enforces — a Skill turns that into something Claude reaches for on its own. A Skill is a small folder with a SKILL.md file inside. Claude reads the short description, and when your request matches, it pulls in the full instructions.

The point is repeatability without the token tax. Claude only loads the heavy instructions when they’re actually relevant, so you can keep a stack of skills around without bloating every prompt. This is the cleanest way to encode “how we do things here” so the agent stops guessing.

This guide covers what a Skill is, the exact SKILL.md format, where the files go, how Claude loads them, and a small working example you can copy.

What a Skill actually is

A Skill is a directory. The only required file is SKILL.md, which has YAML frontmatter at the top and Markdown instructions below it. The frontmatter carries two key fields:

SKILL.md frontmatter

name Short identifier for the skill
description One or two sentences telling Claude when to use it

The body is plain Markdown — the instructions Claude follows once the skill is active. That can be a checklist, a procedure, formatting rules, or pointers to other files in the same folder. A skill can also ship supporting files: a script, a template, a reference document Claude reads when needed.

The description does the heavy lifting. It’s the part Claude scans to decide whether the skill applies, so it has to name the trigger clearly. “Helps with code” is useless. “Reviews Python pull requests for security issues and style violations” tells Claude exactly when to reach for it.

Where Skills live

There are two locations, and the difference is scope.

Skill locations

.claude/skills/ Project skills — committed to the repo, shared with the team
~/.claude/skills/ User skills — personal, follow you across every project

On Windows the user path is C:\Users\YourName\.claude\skills\. Each skill gets its own subfolder, and the folder name is how you’ll refer to it:

.claude/
  skills/
    pr-review/
      SKILL.md
    release-notes/
      SKILL.md
      template.md

Project skills are the right call for anything team-specific — they live in version control, so everyone who clones the repo gets them. User skills are for your own habits that don’t belong to any single project, like a personal commit-message style.

How Claude loads them on demand

This is the part that makes Skills cheap to keep around. Claude doesn’t read every skill’s full instructions on startup. It reads only the name and description from each SKILL.md — a few lines — which costs very little context. The body stays on disk until it’s needed.

When your request matches a description, Claude loads that skill’s full instructions into the conversation. This staged loading is sometimes called progressive disclosure: the lightweight metadata is always available, the expensive detail arrives only when relevant. You can have a dozen skills installed and pay almost nothing for the ones you’re not using right now.

The practical consequence: the description isn’t documentation, it’s a trigger. If a skill never seems to activate, the description is usually too vague or doesn’t mention the words you actually use when asking.

Invoking a Skill

Most of the time you don’t invoke a skill at all — you describe the task, and if the description matches, Claude pulls the skill in. Ask it to “review this PR for security issues” and a well-described pr-review skill loads on its own.

You can also be explicit. Skills surfaced as commands are called with a slash, the same way other slash commands work:

/pr-review

Slash commands and skills overlap here, so it’s worth knowing the distinction. A custom slash command is a prompt you trigger by name, every time, on purpose. A skill is something Claude can choose to apply when it fits — and can also be invoked directly. If you want a procedure that only ever runs when you explicitly call it, a slash command is the simpler tool. If you want Claude to apply a process automatically whenever a task matches, a skill is the better fit. The full mechanics of /name commands are in the slash commands docs.

A worked example

Here’s a complete, minimal skill that standardizes commit messages. Create the folder and file:

.claude/skills/commit-style/SKILL.md
---
name: commit-style
description: Use when writing git commit messages. Enforces Conventional Commits format with a scope and an imperative subject line under 72 characters.
---

# Commit message style

When asked to write or suggest a commit message, follow these rules:

1. Use the Conventional Commits format: `type(scope): subject`.
2. Allowed types: feat, fix, docs, refactor, test, chore, ci.
3. The scope is the affected area in lowercase, e.g. `auth`, `api`, `docker`.
4. Write the subject in the imperative mood ("add", not "added").
5. Keep the subject line under 72 characters. No trailing period.
6. Add a body only when the change needs context — wrap it at 72 columns.

## Example

feat(auth): add token refresh on 401 responses

Retries the original request once after refreshing the access token, so users no longer get logged out on transient expiry.

Drop that in, then ask Claude to write a commit message for your staged changes. Because the description names the trigger — writing git commit messages — Claude loads the skill and follows the rules. No pasting, no reminding.

Set up your first skill

  • Create .claude/skills// in your project
  • Add SKILL.md with name and a trigger-focused description
  • Write the instructions as plain Markdown below the frontmatter
  • Ask Claude to do the matching task and confirm the skill loads
  • Commit project skills so the team shares them

Portable across Claude tools

Skills aren’t locked to the terminal. The Agent Skills format is shared, so the same SKILL.md folder works across Claude tools that support skills. You can author a skill once and reuse it — a pr-review skill you built for the CLI carries over rather than needing a rewrite. That portability is a reason to keep skills small and self-contained.

Where to go next

A Skill is the right tool when you have a repeatable process you keep explaining. Start with one — your commit style, your review checklist — confirm it triggers, then add more as you spot the patterns you repeat.

When you’re ready to build your own from scratch, see how to write a Claude Code Skill. To understand where skills fit next to other extension points, read Skills vs MCP vs Subagents. And for skills worth installing or copying, see the best Claude Code Skills for 2026.

Frequently asked questions

What is a Claude Code Skill?

A Skill is a folder containing a SKILL.md file that packages instructions Claude can pull in when a task matches. It teaches Claude a repeatable procedure — a code-review checklist, a release process, a house style — without you pasting the same prompt every time.

Where do Skills live on disk?

Project skills go in .claude/skills/ inside the repo. Personal skills that follow you across projects go in ~/.claude/skills/, which on Windows is C:\Users\YourName\.claude\skills\. Each skill is its own subfolder with a SKILL.md.

How does Claude decide when to use a Skill?

It reads the name and description from each skill's frontmatter at startup, which costs very few tokens. When your request matches a description, Claude loads the full SKILL.md body on demand. A vague description means the skill won't trigger.

How do I invoke a Skill manually?

If the skill is exposed as a command you can call it with /skill-name. Otherwise just describe the task — if the description matches, Claude pulls the skill in automatically. You don't have to remember to invoke it.

Are Skills portable across Claude tools?

Yes. The Agent Skills format is shared, so a SKILL.md folder works across Claude tools that support skills, not just the terminal. You can keep one set of skills and reuse them.

Sources & further reading

Official vendor documentation referenced while writing this guide.

MG

MCSA Guru Team

IT & Systems Administration

We are working IT pros and system administrators who spend our days in Windows Server, Microsoft 365, and the wider Microsoft stack. MCSA Guru is where we write down the fixes and walkthroughs we wish we had found the first time.

MCSA Guru provides independent, educational IT guidance. Microsoft, Windows, Windows Server, Microsoft 365, Exchange, and Microsoft Teams are trademarks of Microsoft Corporation; Docker is a trademark of Docker, Inc. MCSA Guru is not affiliated with or endorsed by Microsoft or Docker. Always test changes in a safe environment before applying them in production.

Related guides

Fixing something right now?

Jump straight into the guide library or search for the exact error or task you are dealing with.