Commands

/skills

Lists the skills you can use; press t to sort by token count.

A skill is a folder with a SKILL.md file in it. Claude can load it automatically when your request matches its description, or you can call it directly with /skill-name. The /skills command lists the skills available to you.

From actually using it

I used the deep-research skill for market research on this site. The skill split the research topic into four directions and ran subagents in parallel, and at the end a report-writing agent merged the notes into a Markdown report. It showed that a skill, once loaded, can hold a whole procedure for handing work out to several agents.

What a skill is

A skill is a way to save a procedure you ask for repeatedly, or reference knowledge, as a document. The SKILL.md in the folder is required, and you can add reference documents and scripts alongside it.

The full content of a skill is loaded only when it is invoked, so adding long reference material costs little until you use it. The name and description, though, are always in context.

my-skill/
  SKILL.md        (required: frontmatter + instructions)
  reference.md    (optional: loaded when needed)
  scripts/        (optional: for running)

Writing SKILL.md

The YAML frontmatter must be wrapped in --- starting on the first line of the file, followed by the Markdown instructions. Every field is optional, but description is recommended, because Claude reads it to decide when to load the skill.

  • name: the command name. If omitted, it is the folder name.
  • description: what it does and when to use it. Combined with when_to_use, it has a 1,536-character limit.
  • disable-model-invocation: true means only you can invoke it. Use it for tasks with side effects, like deploys.
  • user-invocable: false means only Claude can invoke it, and it is hidden from the / menu. Use it for background knowledge.
  • allowed-tools: tools this skill can use without approval while it runs.
  • $ARGUMENTS receives the arguments you type after the command.
---
name: deploy
description: Deploy to production
disable-model-invocation: true
allowed-tools: Bash(git status *)
---

Deploy $ARGUMENTS to production.
1. Run the tests
2. Build
3. Push to the deploy target

Where to put it

  • Personal: ~/.claude/skills/<name>/SKILL.md. Used in all projects on this computer.
  • Project: .claude/skills/<name>/SKILL.md. Commit it to share with your team.
  • Plugin: the plugin's skills/ folder. Called as /plugin-name:skill-name.
  • If names collide, enterprise wins over personal, and personal wins over project. Plugin skills get a prefix on the name, so they do not collide.

How it relates to slash commands and hooks

The old custom commands (.claude/commands/deploy.md) have been merged into skills. A command file and a skill folder both create /deploy, and existing command files keep working. The official docs' position is to use a skill if you are creating something new. Skills can hold supporting files and can be invoked automatically.

Rules that must always be followed belong in a hook or CLAUDE.md, not a skill. Claude decides whether to load a skill by reading its description, so it is not guaranteed to run every time.

Real examples

You are tired of explaining your blog post review checklist every time

In .claude/skills/post-check/SKILL.md, set name: post-check and description: Check a post before publishing, and write the checklist in the body.
Later in a conversation: /post-check src/posts/new.md

Typing /post-check loads the instructions in SKILL.md, and Claude reviews that file against the checklist. Since the description says to check "before publishing," Claude may also load it on its own when you make a similar request.

A task like deploying that would cause trouble if it ran by accident

Add disable-model-invocation: true to the SKILL.md frontmatter, and use it only when you type /deploy staging

Claude will not invoke this skill on its own. It runs only when you type /deploy yourself. The description is also kept out of context.

Common mistakes and when not to use it

  • If the description is vague, Claude will either not load the skill when needed or load it at the wrong time. Be specific about when to use it.
  • If a skill does not show up in the list right after you create the file, run /reload-skills (per this site's command list).
  • If you leave disable-model-invocation off a skill with side effects, Claude can run it on its own.
  • Too many skills on means their descriptions take up context on every turn. Delete the ones you do not use.
  • If a skill has the same name as an old .claude/commands file, the skill takes precedence.

FAQ

How is a skill different from CLAUDE.md?

CLAUDE.md is project description and rules that are always read. A skill is a procedure and reference material loaded only when needed. For content that is long and only needed occasionally, a skill is the better fit.

How does it relate to plugins?

A plugin is a distribution unit that bundles skills, agents, hooks, and MCP servers, and a skill is one of its components. If you only need a skill, you can put it in a folder without a plugin.

Do skills work with claude -p?

Yes. If you put /skill-name in the prompt, it is expanded before the run. Note that --bare turns off automatic skill discovery.

Checked against the official docs on 2026-10-30. Sources: Claude Code docs: Skills, Claude Code docs: Plugins overview, Claude Code docs: Run Claude Code programmatically. How we write

Usage

/skills

When to use it

When you want to see which skills are available.

Related

/skill-doctorShows the context cost and usage frequency of each skill.Claude CodeCommandsNew 2026-09Skills (.claude/skills/name/SKILL.md)A bundle of instructions and materials that is invoked automatically when needed or with /name.Claude CodeFeaturesNew 2026-01/reload-skillsRe-reads the skills folders without a restart.Claude CodeCommandsNew 2026-05

More Claude Code commands

/helpShows help and the commands you can use.Commands/clearStarts a new conversation with an empty context; if you give it a name, the previous conversation gets that label.Commands/compactSummarizes the conversation to free up context.Commands/contextShows context usage as a colored grid and suggests ways to optimize it.Commands/autocompactSets when automatic compaction kicks in.Commands/configOpens the settings screen, or sets a value directly with key=value.Commands
All Claude Code