A Claude Code skill is a folder with a SKILL.md file that Claude loads on its own when it's relevant, or that you trigger with /name. How to build one, how to install one, and how it differs from CLAUDE.md, slash commands, and MCP.
Claude Code Skills: a terminal and a folder of reusable skills

A Claude Code skill is a folder containing a SKILL.md file with reusable instructions that Claude loads on its own when your task matches, or that you trigger manually with /skill-name. Claude Code Skills follow the open Agent Skills standard, so the same format works across several AI tools. Unlike a CLAUDE.md file, which is always held in memory, a skill's body only loads when it's actually needed: your reference documentation costs almost nothing until you use it. In practice, a skill saves you from pasting the same instructions into the chat every session. Here's what a skill is, how to install one, how to build your own, and above all when to use a skill instead of a CLAUDE.md, a slash command, or an MCP.

What is a Claude Code skill?

A Claude Code skill is a capability you add to Claude in the form of a text file. You write a SKILL.md, Claude adds it to its toolkit, and it uses it when it's relevant. That's it. No plugin to compile, no dependency to install: a folder, a markdown file, and it's live.

The file has two parts. First, a YAML frontmatter block between two --- markers, which at minimum contains a description: that's what tells Claude when to use the skill. Then the markdown body, which holds the instructions Claude follows when the skill fires. The official documentation recommends keeping that body under 500 lines and moving long references into companion files, loaded only on demand.

The real question isn't "what is a skill," it's "why does it exist." The answer: because you repeat yourself. You paste the same deployment checklist, the same commit format, the same API conventions into the chat, session after session. A skill captures that procedure once. And where a CLAUDE.md keeps those instructions permanently in context (so it pays their token cost on every turn), a skill only loads its content while it runs. That's the structural difference to remember: CLAUDE.md is permanent memory, a skill is an on-demand capability.

One detail that matters for anyone coming from the older version of Claude Code: custom commands have merged into skills. A .claude/commands/deploy.md file and a .claude/skills/deploy/SKILL.md skill both create the /deploy command and work the same way. Your old commands still work. Skills just add more options: a folder for companion files, frontmatter to control who triggers what, and the ability for Claude to load the skill automatically.

Anatomy of a SKILL.md file: YAML frontmatter and markdown body

How to install and activate a skill

Installing a Claude Code skill means two very different things depending on where it comes from: either you drop it into the right folder yourself, or you install it from a plugin marketplace.

The simplest case: a skill is a folder, you put it in the right place, and it activates. The location decides who can use it.

Location Path Applies to
Personal ~/.claude/skills/<name>/SKILL.md All your projects
Project .claude/skills/<name>/SKILL.md This project only
Plugin <plugin>/skills/<name>/SKILL.md Wherever the plugin is enabled
Enterprise Via managed settings The whole organization

A personal skill follows you everywhere. A project skill, committed to .claude/skills/, is shared with your whole team through git. When the same name exists at several levels, enterprise wins over personal, which wins over project. Claude Code watches skill folders live: adding or editing a SKILL.md under ~/.claude/skills/ takes effect in the current session, no restart needed.

The second case: installing from a marketplace. Claude Code has an official plugin system. For example, to install the skill-creator plugin, which helps you build and test your own skills, you type:

/plugin install skill-creator@claude-plugins-official

Once the skill is in place, there are two ways to activate it. You trigger it manually by typing /skill-name, or you let Claude load it on its own when your request matches its description. This is where the quality of the description makes all the difference: if it contains the words you'd say naturally, Claude finds the skill. If not, it misses it. To check that a skill is properly recognized, just ask Claude "which skills are available?"

Personal skill vs project skill: location, scope, and priority order

Building your own skill, step by step

This is where most French-language tutorials stop at the theory. Let's get concrete. Let's build a skill that summarizes your repo's uncommitted changes and flags anything risky. Three steps.

1. Create the folder. We'll put it in personal skills, so it's available across all your projects:

mkdir -p ~/.claude/skills/summarize-changes

2. Write the SKILL.md. The folder name becomes the command you type. Save this to ~/.claude/skills/summarize-changes/SKILL.md:

---
description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or wants a review of their diff.
---

## Current changes

!`git diff HEAD`

## Instructions

Summarize the changes above in two or three bullets, then list the risks: missing error handling, hardcoded values, tests to update. If the diff is empty, say there's nothing uncommitted.

The !`git diff HEAD` line is the real trick. It's dynamic context injection: Claude Code runs the command and replaces the line with its output before Claude even reads the skill. The result: the instructions arrive with your real diff already inserted. The skill doesn't reason about what Claude imagines your code looks like, it reasons about your actual working tree. This !`command` syntax works for any shell command.

3. Test it. Open a git project, edit a file, run claude. Ask "what did I change?" (Claude fires the skill on its own) or type /summarize-changes (manual trigger). Either way, you get a summary of your edit and a list of risks.

Want to go further? Add companion files to the folder: a reference.md with detailed docs, a scripts/ folder with a Python script that Claude runs. The SKILL.md stays short and points to those files, which only load when they're needed. That's the principle: the skill stays light, the heavy knowledge waits in the wings.

Building your own skill in three steps: folder, SKILL.md, test

CLAUDE.md vs Skills vs Slash Commands vs MCP: which one for what

Here's the question everyone asks on the forums and no one settles cleanly in French. Four mechanisms, we mix them up, and we use the wrong one. Let's lay them out flat.

Mechanism When it's loaded What it's for How you trigger it
CLAUDE.md Always, permanently Facts, conventions, stable project context Automatic, never invoked
Skill Only when used A procedure or knowledge on demand /name or auto by Claude
Slash command On use, on your command An action you want to control /name only
MCP Server connected continuously Connecting Claude to external tools and data Claude calls the tool

The logic boils down to one sentence per row.

CLAUDE.md is memory. Facts Claude should always have in front of it: the stack, naming conventions, the architecture. Always loaded, so keep it short. If a section of your CLAUDE.md has become a multi-step procedure rather than a fact, that's the signal: it should become a skill.

A skill is a capability. A procedure Claude pulls off the shelf when it's needed, then puts back. Since the merge, a slash command is just a skill you trigger by hand: put disable-model-invocation: true in the frontmatter and Claude will never launch it on its own (handy for a /deploy you really don't want firing off just because "the code looks ready"). Conversely, user-invocable: false hides the skill from the menu so only Claude can use it, useful for background knowledge that isn't an action.

An MCP is a socket. The Model Context Protocol doesn't load instructions, it plugs Claude into an external tool or data source: your GitHub, a database, a browser. This is the most common confusion, so let's be clear: a skill tells Claude how to do something, an MCP gives it access to something. Want Claude to follow your review process? Skill. Want it to read your GitHub issues live? MCP. The two complement each other, they don't replace each other.

CLAUDE.md vs Skills vs Slash Commands vs MCP: when loaded, use, trigger

The most useful skills for a founder

If you're building solo or in a small team, you don't have time to reinvent workflows. Good news: Claude Code ships with skills out of the box, ready to type. The ones that pay off most when you're shipping an MVP:

  • /code-review: a review of your changes before you merge. The safety net you don't have when you're the only dev.
  • /run and /verify: launch your app and confirm a change actually works, instead of trusting the tests. For a non-technical founder who's never sure "it runs," that's valuable.
  • /debug: diagnostic help when something breaks and you don't know where to start.
  • /doctor: a check-up of your Claude Code setup.
  • /claude-api: the up-to-date reference on Claude models and the API, useful the moment you wire Claude into your product.

But the real leverage isn't the built-in skills. It's writing your own, because they encode how you work. Three obvious candidates for a founder:

  1. A commit skill that applies your message format and scans the diff before committing (like the example above, in an extended version).
  2. A product conventions skill: your design system, your API rules, your copy tone. Claude applies them without you pasting them in.
  3. A deployment skill with disable-model-invocation: true, to keep control of the timing.

And if you want to industrialize this, the skill-creator plugin goes further: it generates test cases, runs each skill in an isolated subagent, and compares the result with and without the skill. You don't guess whether your skill works, you measure it. That's exactly the discipline we apply internally at swanbase when we tool up the founders we support: a workflow you don't measure is a workflow you assume is effective.

One last reflex. A skill is only useful if Claude finds it. The number one cause of a skill that "won't trigger" isn't a bug, it's a description that's too vague. Write it with the words you'd actually say, not with jargon. The description is the only bridge between your need and your skill.

Built-in skills vs the skills you write yourself

Going further

FAQ

What is a skill in Claude Code?

A skill is a folder containing a SKILL.md file (YAML frontmatter plus markdown instructions) that extends what Claude knows how to do. Claude loads it automatically when the task matches its description, or you trigger it by hand with /skill-name. Skills follow the open Agent Skills standard, so the same file works across several AI tools.

How do I install a skill in Claude Code?

Two ways. Either you place the skill's folder in the right spot: ~/.claude/skills/<name>/ for use across all your projects, or .claude/skills/<name>/ for a single project. Or you install it from a plugin marketplace, for example /plugin install skill-creator@claude-plugins-official. Claude Code detects new skills live, no restart needed.

What's the difference between a skill and an MCP?

A skill gives Claude instructions on how to do something (a procedure, some conventions). An MCP (Model Context Protocol) plugs Claude into an external tool or data source, like GitHub or a database. In short: a skill says how to do it, an MCP gives access to what to do. The two combine.

CLAUDE.md or skill: which should I choose?

Use CLAUDE.md for stable facts Claude should always keep in mind (stack, conventions, architecture): it's always loaded. Use a skill for a procedure Claude only pulls out when it's useful: its body only loads on use, so it doesn't cost tokens permanently. Simple rule: if a section of your CLAUDE.md has become a step-by-step procedure, turn it into a skill.

Which skills are most useful to get started?

The built-in skills help right away: /code-review to review your changes, /run and /verify to confirm a change works, /debug to diagnose a failure, /doctor to check your config. After that, the biggest payoff is writing your own skills (commit, product conventions, deployment) because they encode the way you work.