On this page
A Claude Code skill is a folder with a SKILL.md file in it: instructions,
plus optional scripts, that Claude follows when your request matches the
skill's description, or when you type /skill-name. To install one, put
the folder in ~/.claude/skills/ (just you) or .claude/skills/ (this
project), or install a plugin that ships it.
Skills are easy to add and easy to trust too quickly. A skill can run shell commands, carry scripts and give itself tool access. This guide covers what a skill is, how to install and manage skills, where to find them, and the seven checks to run before you install someone else's.
Everything about how Claude Code behaves here comes from the Claude Code skills docs and the plugin docs, checked on 8 November 2026.
What is a Claude Code skill?
The docs put it in one line: "Skills extend what Claude can do. Create a
SKILL.md file with instructions, and Claude adds it to its toolkit. Claude
uses skills when relevant, or you can invoke one directly with /skill-name."
A skill is a folder. The only file it needs is SKILL.md, which has two
parts:
- Front matter between
---lines. It tells Claude when to use the skill. Every field is optional; the docs say "Onlydescriptionis recommended." - Markdown instructions that Claude follows once the skill runs.
A small example:
---
name: summarize-changes
description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.
---
## Current changes
!`git diff HEAD`
## Instructions
Summarize the changes above in two or three bullet points, then list any risks you notice.
The folder can hold more files: reference notes, examples, and scripts in any language. A typical layout:
my-skill/
├── SKILL.md (required)
├── reference.md (loaded only if SKILL.md points Claude to it)
└── scripts/
└── helper.py (run, not read into context)
The front matter fields worth knowing, because they change what a skill can do:
| Field | What it does |
|---|---|
description |
What the skill does and when to use it. Claude matches your request against this. |
name |
The / command name. Defaults to the folder name. |
disable-model-invocation |
true stops Claude loading the skill on its own. You must type /name. |
user-invocable |
false hides it from the / menu, so only Claude can use it. |
allowed-tools |
"Tools Claude can use without asking permission during the turn that invokes this skill." |
disallowed-tools |
Tools taken away while the skill is active. |
hooks |
Hooks that switch on when the skill runs and stay for the session. |
context: fork |
Runs the skill in a separate subagent. |
paths |
Only activate automatically for matching files. |
Two more facts that clear up a lot of confusion:
- Skills and slash commands are now the same thing. "Custom commands have
been merged into skills." A file at
.claude/commands/deploy.mdand a skill at.claude/skills/deploy/SKILL.mdboth create/deploy. If both exist, the skill wins. - Skills aren't Claude Code only. "Claude Code skills follow the
Agent Skills open standard, which works across
multiple AI tools." Some front matter fields (like
allowed-toolsorhooks) are Claude Code features, so a skill may behave differently elsewhere.
When does a skill load?
This is the part that makes skills cheap to keep around, and it's also where the risk sits.
- The description is always loaded. By default the docs say: "Description always in context, full skill loads when invoked." Every installed skill adds its name and description to each turn.
- The body loads when the skill is used. Either Claude decides your
request matches the description, or you type
/skill-name. Then "the renderedSKILL.mdcontent enters the conversation as a single message and stays there across later turns." - Extra files load only when needed. Reference files are read if
SKILL.mdtells Claude to read them. Scripts are run, not read, so their code doesn't cost context. !`command`lines run first. "The!`<command>`syntax runs shell commands before the skill content is sent to Claude." Claude only sees the output, not the command.
So a skill you never use costs only its description. The docs say the
combined description and when_to_use text "is truncated at 1,536
characters in the skill listing," and the whole listing gets about 1% of the
model's context window. With many skills installed, Claude Code drops the
descriptions of the ones you use least, and those then stop triggering. Run
/doctor or /skill-doctor to see what your skills cost.
Edits apply right away: Claude Code "watches skill directories for file
changes" and picks up a new or changed SKILL.md "within the current
session, without a restart." If you create a brand-new top-level skills
folder, run /reload-skills.
Where Claude Code skills live
Where you put the folder decides who gets the skill.
| Location | Path | Who gets it |
|---|---|---|
| Personal | ~/.claude/skills/<name>/SKILL.md |
You, in every project on this machine |
| Project | .claude/skills/<name>/SKILL.md |
Everyone in this repo, once you commit it |
| Nested | <subdir>/.claude/skills/<name>/SKILL.md |
Sessions started in or below that folder |
| Plugin | <plugin>/skills/<name>/SKILL.md |
Wherever the plugin is on, as /plugin-name:skill-name |
| Enterprise | .claude/skills/ in the managed settings folder |
Everyone your organization deploys it to |
| claude.ai account | Skills turned on for your account, synced to ~/.claude/skills/synced/ |
Signed-in terminal, Cowork and cloud sessions |
One warning from that table: project skills arrive with the repo. Clone a
repo, start Claude Code in it, and its .claude/skills/ folder loads. More on
that in the checks below.
How to install Claude Code skills
There are three ways in.
1. Copy the folder in (personal or project)
Put the skill's folder, with its SKILL.md at the top, in one of these:
# just you, every project
~/.claude/skills/<skill-name>/
# everyone on this repo (commit it)
.claude/skills/<skill-name>/
That's the whole install. Claude Code notices the new folder in the current
session. If the skills folder itself is new, run /reload-skills once. Check it worked by typing / and looking for the name, or by asking
"What skills are available?"
2. Install a plugin that ships skills
Plugins bundle skills with other things (agents, hooks, MCP servers). Anthropic's official
marketplace, claude-plugins-official, is added for you the first time you
start an interactive session. In a session:
/plugin install <plugin-name>@claude-plugins-official
This doesn't install right away. It opens the plugin's details so you can see
what it adds and pick a scope: just you, everyone on this repo, or just you in
this repo. To browse instead, run /plugin and use the Discover tab. From
your shell:
claude plugin install <plugin-name>@claude-plugins-official
For a plugin from another marketplace, add that marketplace first:
/plugin marketplace add <owner>/<repo>
/plugin install <plugin-name>@<marketplace-name>
Plugin skills show up as /<plugin>:<skill>.
3. Turn a skill on in your claude.ai account
Skills you turn on for your claude.ai account sync into Claude Code when you
sign in with that account. They land in ~/.claude/skills/synced/, and
/skills lists them under claude.ai sync.
Manage skills: list, limit and remove
See what you have. Type / to see the menu, run /skills, or ask "What
skills are available?" /skill-doctor reports each skill's context cost and
use, and flags the ones you never use.
Stop Claude using a skill on its own. Add disable-model-invocation: true
to its front matter. You can still run it with /name. If you don't want to
edit the file, use skillOverrides in settings:
| Value | Claude sees it | In the / menu |
|---|---|---|
"on" |
Name and description | Yes |
"name-only" |
Name only | Yes |
"user-invocable-only" |
Hidden | Yes |
"off" |
Hidden | Hidden |
In /skills, highlight a skill and press Space to cycle these states, then
Esc to save.
Allow or deny skills in permissions. Permission rules take Skill(name)
for one skill, or Skill(name *) for that skill with any arguments. The same
allow, ask and deny model applies as for MCP tools; see
limit MCP tools for how deny rules work.
Remove a skill.
- Personal or project skill: delete its folder,
~/.claude/skills/<skill-name>/or.claude/skills/<skill-name>/. - Plugin skill: disable or uninstall the plugin, from
/pluginor with/plugin uninstall <plugin-name>@<marketplace-name>. - Synced skill: turn it off on claude.ai. If you only delete the folder, the next sync brings it back.
Where to find Claude Code skills: marketplaces, registries and libraries
There's no single skills registry. To find skills, these are the main places, from most to least vetted:
- Anthropic's official marketplace (
claude-plugins-official). Browse it with/pluginor on Claude Marketplace, which shows install counts and marks some plugins "Anthropic verified". Most of it comes from partners and other authors, not Anthropic. - Anthropic's community marketplace (
claude-community). Third-party plugins their authors submitted to Anthropic. Add it with/plugin marketplace add anthropics/claude-plugins-community. It pins nearly every entry to a commit, and Claude Code refuses to install a different commit. - Anthropic's topic marketplaces, such as
anthropics/skills, added with/plugin marketplace add <owner>/<repo>. - Third-party marketplaces and GitHub repos. Any repo with a
.claude-plugin/marketplace.jsonis a marketplace. The docs say plainly: "Anthropic doesn't review third-party marketplaces." - Skills libraries and registry sites on other sites. They list thousands of skills scraped from GitHub, and you can often search them by topic, such as SEO or frontend design. A listing there is not a review.
A marketplace name tells you who runs the catalog, not whether a given skill
is safe. The docs: "A marketplace's name tells you who publishes the catalog,
not what each plugin in it does, so review a plugin before you install it
whichever marketplace it comes from." Claude Code does block one trick: it
only accepts the official and community names for marketplaces hosted under
github.com/anthropics/, so a third party can't pose as Anthropic.
TrustedMCP grades MCP servers, not skills, for now. Until we do, use the checks below.
How to check a skill before you install it
0 of 7 done
Each check is a few minutes of reading. You don't need to run anything, and you shouldn't: read the files first. Tick each one off as you go.
1. Know where it comes from
Who wrote it, and where does it live? Prefer a skill from the tool's own
vendor or from Anthropic's marketplaces over a copy in a random repo. Run
claude plugin marketplace list to see the source each of your marketplaces
was added from. Stars and install counts show popularity, not safety. A repo
with one commit, no issues and a brand-new account is a reason to slow down.
2. Read the whole SKILL.md for hidden instructions
The body is text Claude will follow as if you wrote it. In the plugin docs'
words, skills "enter Claude's context as instructions, so they influence what
Claude does with the tools it already has." Read all of it, including HTML
comments (<!-- -->), long blank stretches and anything at the very bottom.
Red flags:
- Telling Claude to keep something from you, or not to mention it.
- Telling Claude to ignore your instructions, CLAUDE.md or permission prompts.
- Sending files, keys or code anywhere, or "uploading for analysis".
- A description much broader than the skill's job (so it triggers on everything).
This is the same problem as prompt injection through MCP, except the instructions come pre-installed.
3. Check allowed-tools
allowed-tools lets the skill skip permission prompts while it runs. The docs
warn: "A skill can grant itself broad tool access, so review the
allowed-tools of skills checked into a repository before you run Claude Code
there." And: "Workspace trust doesn't gate this field." A narrow rule like
Bash(python3 *) for one script is normal. A bare Bash, Write or a
wildcard on anything that touches the network is not, for a skill that only
formats text.
4. Check every !command line
Lines written as !`command` run in your shell before Claude sees the
skill. The docs: "Injected commands never prompt for permission while the
skill renders." Claude Code does check them against your permission rules
first, and a deny rule stops the skill. Read each one. git diff HEAD is
fine; curl ... | sh is not. If you or your team never want this, set
"disableSkillShellExecution": true in settings (bundled and managed skills
aren't affected).
5. Read the scripts, and look for network calls
Open every file in scripts/ (or anywhere else in the folder). A quick search
helps you find the lines to read closely:
grep -rnE "curl|wget|https?://|fetch\(|requests\.|socket|base64|eval|exec|\.ssh|\.env|token|pip install|npm install|npx " path/to/skill/
Hits aren't proof of anything; they show you where to look. Ask: does it send data out, read secrets or your home folder, download and run more code, or install packages on its own? A skill that formats changelogs has no reason to open a socket.
6. For plugins, check hooks, MCP servers and bin/
A plugin is more than its skills. The docs say a plugin "can execute arbitrary code on your machine with your user privileges," and that hooks, monitors and MCP servers run "outside the sandbox." Before you install, read:
hooks/hooks.json: the command each hook runs (also anyhooks:in a skill's front matter)..mcp.json: each MCP server's command or URL. Treat those like any other MCP server you add.bin/: every file. It goes on thePATHof Claude's shell.
claude --plugin-dir <plugin directory> plugin details <plugin name> lists
what the plugin contains without starting a session.
7. Decide how it updates
Plugins from Anthropic's official marketplace auto-update by default; most
other marketplaces don't. The docs note that with auto-update on, "the files
you reviewed can change on disk." For a skill you copied in, nothing changes
unless you change it. For a third-party marketplace, pin a tag with
#ref (for example /plugin marketplace add your-org/plugins#v1.2.0) and
re-read the diff before you move to a new one.
A safe first run: try a new skill in a throwaway project with
disable-model-invocation: true, so it only runs when you type its name.
Claude Code skills vs MCP servers
They solve different problems and work well together.
| Skill | MCP server | |
|---|---|---|
| What it is | A folder of instructions (and maybe scripts) | A separate program that offers tools and data |
| What it adds | Know-how: how to do a task | Reach: access to an app, API or data source |
| Where it runs | Inside Claude Code, using the tools Claude already has | As its own process or a remote service |
| Context cost | Description every turn, body only when used | Tool definitions every turn, unless tool search defers them |
| Works in | Claude Code and other Agent Skills tools | Any app that speaks MCP |
| Main risk | Hidden instructions, scripts, broad allowed-tools |
Wide tokens, risky tools, prompt injection from data |
A common pattern: an MCP server gives Claude access to, say, your issue tracker, and a skill tells Claude how your team writes and triages issues. Plugins often ship both.
If you're new to MCP, start with what an MCP server is. To add one to Claude Code, see Claude Code MCP setup. To keep the tool list small, see MCP tools and context cost.
Build your own skill
The quickest start is a folder and a SKILL.md with a clear description,
like the example above. Keep it short; the docs say "Keep SKILL.md under 500
lines" and move long reference material into separate files.
Anthropic's skill-creator plugin helps you write, test and tune a skill
inside Claude Code:
/plugin install skill-creator@claude-plugins-official
Before you share a skill, run the seven checks above on your own work. Other people will read it the same way.
Need a skill or an MCP server built for your team, and checked the way this page describes? Tell us what you need.
Frequently asked questions
What are Claude Code skills?
Folders with a SKILL.md file of instructions, plus optional scripts and
reference files. Claude loads one when your request matches its description,
or when you type /skill-name. They follow the open Agent Skills standard.
Where are Claude Code skills stored?
Personal skills live in ~/.claude/skills/<name>/, project skills in
.claude/skills/<name>/ inside the repo, and plugin skills inside the
plugin's skills/ folder. Skills synced from claude.ai go to
~/.claude/skills/synced/.
How do I install a skill in Claude Code?
Copy the skill's folder into ~/.claude/skills/ or .claude/skills/, or
install a plugin that includes it with
/plugin install <plugin>@<marketplace>. Claude Code picks up new skill
folders without a restart. Read the files before you do either.
How do I see which skills are installed?
Type / and look at the menu, run /skills, or ask Claude "What skills are
available?" /skill-doctor also shows each skill's context cost and how often
you use it.
Are Claude Code skills safe?
As safe as the files in them. A skill can run shell commands before Claude
sees it, carry scripts, give itself tool access with allowed-tools, and
contain instructions Claude follows. Use skills from sources you trust, and
read SKILL.md, the scripts and any plugin hooks first.
Where can I find Claude Code skills?
Start with Anthropic's official marketplace (/plugin, then the Discover
tab), then the community marketplace and anthropics/skills. Skills libraries
on other sites list far more, but a listing is not a review. Run the seven
checks before you install anything from them.
Is there an official Claude Code skills registry or library?
There is no single registry. Anthropic runs the official and community
marketplaces and publishes anthropics/skills; third-party marketplaces and
skills libraries are not reviewed by Anthropic.
Are there Claude skills for SEO or frontend design?
Skills libraries and marketplaces list skills on topics like SEO and frontend
UI. Any of them is just a folder with a SKILL.md, so check its source,
allowed-tools and scripts the same way as any other skill.
What's the difference between a skill and a slash command?
There isn't much of one now. Custom commands were merged into skills: a
.claude/commands/deploy.md file and a .claude/skills/deploy/SKILL.md skill
both create /deploy. Skills add a folder for extra files, control over who
can invoke them, and automatic loading.
Do skills use up tokens?
A little, all the time, and more when used. Each skill's name and description sit in context every turn; the full body loads only when the skill runs. Scripts don't load at all, they only run. With lots of skills, Claude Code drops descriptions for the ones you use least.
Can I stop Claude from using a skill automatically?
Yes. Add disable-model-invocation: true to the skill's front matter, or set
it to "user-invocable-only" in skillOverrides. You can still run it with
/name.
What's the difference between a skill and an MCP server?
A skill teaches Claude how to do something with the tools it already has. An MCP server is a separate program that gives Claude new tools and data. Many setups use both. See Claude Code skills vs MCP servers.