How to Install Claude Code Skills: The Step-by-Step Guide (2026)

How to install Claude Code skills the right way: where SKILL.md files live, how to add one, verify it loaded, invoke it, and fix the common failures — 2026.

By Shen Huang··6 min read·
claude codeclaude code skillstutorialai codingdeveloper tools

A Claude Code skill is a folder with a SKILL.md file in it. That's the whole format — no build step, no registry, no runtime. You drop the folder in the right place, Claude reads the frontmatter, and the skill becomes available: either as a /command you type, or as something Claude loads on its own when your request matches the skill's description.

I maintain lich-skills and build openseek, so I install and break skills constantly. This is the exact path I'd walk an intermediate dev down: where skills live, how to add one, how to confirm it loaded, how to invoke it, and what to check when it silently doesn't. Want ready-made ones to practice on? You can find skills to install in the OrangeBot directory.

Step 1: Know Where Skills Live

Claude Code discovers skills from a small set of locations. The two you'll use most:

~/.claude/skills/<skill-name>/SKILL.md    # Personal — available in every project
.claude/skills/<skill-name>/SKILL.md      # Project — travels with this repo only

Personal skills follow you across every project. Project skills live inside a repo's .claude/skills/ — the right choice for anything the whole team should share, since committing them ships the skill with the code. There's also an enterprise level and a plugin level, but for hand-installing a single skill, personal vs. project is the decision you make.

Precedence, when names collide: enterprise beats personal beats project, and any of them overrides a bundled skill of the same name. Plugin skills sidestep collisions because they're namespaced as plugin-name:skill-name.

Step 2: Add the Skill

The mechanic is the same whichever level you pick — create the directory, drop SKILL.md inside it. For a personal skill:

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

Then write ~/.claude/skills/summarize-changes/SKILL.md. Every skill file is two parts: YAML frontmatter between --- markers that tells Claude when to use the skill, and the markdown body with the actual instructions.

---
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.
---

## Instructions

Summarize the uncommitted changes in two or three bullet points, then
list any risks you notice: missing error handling, hardcoded values,
or tests that need updating.

Only description is really worth setting — Claude matches your request against that text to decide when to auto-load the skill, so put the key use case first. The directory name (summarize-changes) becomes the command (/summarize-changes). Everything else is optional.

Installing someone else's skill is usually a git clone or a copied folder: drop the whole directory (its SKILL.md plus any supporting scripts/ or templates/) into ~/.claude/skills/ or the project's .claude/skills/. A folder can also be symlinked from elsewhere on disk — Claude Code follows the symlink and reads SKILL.md from the target.

Step 3: Verify It Loaded

This is the step people skip, then wonder why nothing happens. Claude Code watches your skill directories and picks up new or edited SKILL.md files within the current session — no restart needed for files added under an already-watched directory. The one exception: if you had to create the top-level ~/.claude/skills/ directory for the first time, restart Claude Code so it can start watching it.

To confirm the skill is registered, open the skills menu:

/skills

Your new skill should appear in the list with its description. If you'd rather sanity-check the whole environment, run:

/doctor

And type / — a correctly installed skill autocompletes as /summarize-changes. If it shows up in the menu, Claude has parsed the frontmatter successfully. If it doesn't, jump to Step 5.

Step 4: Invoke It

Two ways, by design:

Let Claude decide. Ask something that matches the description and Claude loads the skill automatically:

What did I change?

Invoke it directly by typing the command:

/summarize-changes

Direct invocation is reliable when you want a specific workflow run right now. Auto-invocation makes skills feel ambient — Claude reaches for the right one from your description without you naming it. Skills with side effects (deploy, commit, send-message) usually set disable-model-invocation: true so only you can trigger them, never the model on a hunch.

Installing a Whole Plugin (Bundles of Skills)

For a set of skills — plus optional subagents, hooks, and MCP servers — the packaged form is a plugin, installed from a marketplace. The commands, based on the current documented flow:

/plugin                                       # open the interactive manager
/plugin marketplace add <owner>/<repo>        # add a third-party marketplace
/plugin install <plugin-name>@<marketplace>   # install a specific plugin

The official Anthropic marketplace (claude-plugins-official) is available the moment you start Claude Code — you don't add it. For anything else, /plugin marketplace add points at a git repo containing a marketplace.json, then /plugin install name@marketplace pulls it in. After installing or changing a plugin, /reload-plugins activates it. Plugin skills land under the plugin's own skills/ directory, namespaced, so they never clobber your personal ones. Prefer plugins for a curated set from one source; prefer the drop-a-folder approach in Step 2 for hand-picking individual skills.

Step 5: Common Problems

The failure modes are boringly consistent. Work down this list:

  1. The skill doesn't appear in /skills. Almost always malformed frontmatter — a YAML parse error makes the skill vanish silently rather than erroring loudly. Check that both --- delimiter lines are present, that description: is valid YAML (quote the value if it contains a colon), and that there's no stray indentation. Fix the YAML and it reappears without a restart.

  2. Right folder, still nothing. Confirm the path is exactly <skill-name>/SKILL.md — the file must be named SKILL.md (uppercase) and sit one level inside a named directory, not loose in ~/.claude/skills/.

  3. A brand-new skills/ directory isn't watched. If you just created the top-level skills folder this session, restart Claude Code once so it begins watching it. Edits to files inside an already-watched directory don't need this.

  4. The wrong version runs. Remember precedence — a project .claude/skills/deploy/ overrides the bundled /deploy, and personal overrides project. If a skill behaves unexpectedly, check whether a same-named skill exists at another level.

  5. Claude never auto-loads it. The description is how Claude decides. If it's vague ("helps with code"), Claude can't match it to a request. Rewrite it to name the trigger conditions explicitly — see how to write a Claude Code skill for the description patterns that actually fire.

  6. A plugin skill won't activate after install. Run /reload-plugins. Plugin hooks and MCP config in particular need it; a plain SKILL.md edit does not.

Where to Go From Here

Installing is the easy part — the leverage is in installing the right ones. A few next steps:

Skills are the cheapest, highest-leverage way to make Claude Code behave like your engineer instead of a generic one. Install a couple this week, watch which ones fire, and delete the rest.

Want the signal without the sifting? Our weekly digest rounds up the skills, tools, and releases builders actually shipped — no hype, just what changed.

NEWSLETTER · FREE · WEEKLY

OrangeBot Weekly

The best new AI tools + Claude Code skills, every week — with my verdict on what’s actually worth your time. No hype.

Free · One-click unsubscribe · No spam

READ OTHER ARTICLES