On this page
Claude Code Skills: What They Are, How to Install Them and How to Check One (Nov 2026)

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:

  1. Front matter between --- lines. It tells Claude when to use the skill. Every field is optional; the docs say "Only description is recommended."
  2. 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.md and a skill at .claude/skills/deploy/SKILL.md both 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-tools or hooks) 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.

  1. 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.
  2. The body loads when the skill is used. Either Claude decides your request matches the description, or you type /skill-name. Then "the rendered SKILL.md content enters the conversation as a single message and stays there across later turns."
  3. Extra files load only when needed. Reference files are read if SKILL.md tells Claude to read them. Scripts are run, not read, so their code doesn't cost context.
  4. !`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 /plugin or 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:

  1. Anthropic's official marketplace (claude-plugins-official). Browse it with /plugin or on Claude Marketplace, which shows install counts and marks some plugins "Anthropic verified". Most of it comes from partners and other authors, not Anthropic.
  2. 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.
  3. Anthropic's topic marketplaces, such as anthropics/skills, added with /plugin marketplace add <owner>/<repo>.
  4. Third-party marketplaces and GitHub repos. Any repo with a .claude-plugin/marketplace.json is a marketplace. The docs say plainly: "Anthropic doesn't review third-party marketplaces."
  5. 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

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 any hooks: 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 the PATH of 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.