How to install skills in Claude Code
Updated
Run npx skills add with a skill's source and -a claude-code from your project folder, and the open-source skills CLI installs the skill into .claude/skills/, where Claude Code finds it. Add -g to install into ~/.claude/skills/ for every project instead, or skip the CLI and copy the skill's folder there by hand. Claude then loads the skill when a request matches its description, and you can run it yourself with /skill-name.
Install a skill with npx skills add
The CLI is vercel-labs/skills. It runs through npx and needs no account. Run it from the root of the project that should get the skill: -a claude-code installs for Claude Code only, and without it the CLI detects which coding agents you have installed.
Pick from the seoskills.sh catalog
npx skills add https://seoskills.sh -a claude-code
The CLI lists every skill our index serves and asks which ones to install. Adding --skill '*' installs all of them, but read the part about skill descriptions further down before you do.
Install one skill from seoskills.sh or GitHub
Each skill page on seoskills.sh shows the exact command, and its agent picker adds -a claude-code for you. Our own skills install from our index, picked by slug with --skill, and the CLI fetches the whole folder, scripts and reference files included:
npx skills add https://seoskills.sh --skill content-decay-predictor -a claude-code
Keep the https://. Without it the CLI reads seoskills.sh/... as a GitHub repository, and the install fails.
A skill by another author installs straight from that author's GitHub repository, with --skill naming the skill. This is the command skills.sh shows too, so the install counts toward the author:
npx skills add https://github.com/coreyhaines31/marketingskills --skill ai-seo -a claude-code
The same form works for any GitHub repository that holds skills, listed on seoskills.sh or not. You can write owner/repo in place of the full URL, and --list shows what a repository contains without installing anything.
Install globally with -g
By default the skill lands in .claude/skills/ inside the project, so you can commit it and everyone who clones the repository gets it. Add -g to put it in ~/.claude/skills/, where all your projects on this machine can use it:
npx skills add https://seoskills.sh --skill content-decay-predictor -g -a claude-code
With one agent, as here, the CLI copies the skill's folder into .claude/skills/. When you install for several agents at once, its default is one shared copy with a symlink from each agent's folder (--copy makes separate copies instead). Claude Code reads a symlinked skill folder like any other.
Install a skill manually, without the CLI
A skill is a folder with a SKILL.md file plus any supporting files it needs, so copying that folder into place is a complete install. That suits a skill you wrote yourself, or one you want to read in full before Claude Code can load it.
- Get the skill's whole folder from its repository. Take the folder, not only
SKILL.md, because the instructions may point to scripts or reference files that sit next to it. - Create the skills folder:
.claude/skillsin the project, or~/.claude/skillsfor every project. - Copy the skill's folder in, so the file ends up at
.claude/skills/<skill-name>/SKILL.md. - In Claude Code, run
/skillsor ask "What skills are available?" and check that it is listed.
mkdir -p .claude/skills
cp -r seo-audit .claude/skills/
The folder name becomes the command you type, /seo-audit here. A name field in the frontmatter can set a different command, and the folder name keeps working as well.
If the skill runs when you type its name but Claude never picks it up on its own, look at the frontmatter. Claude Code only reads it when the opening --- is the first line of the file. When the YAML between the markers doesn't parse, the skill still loads, but with no fields set, so /seo-audit works while Claude can't match requests against its description. On Claude Code v2.1.233 or later, claude plugin validate .claude/skills finds the SKILL.md files whose frontmatter doesn't parse.
Where Claude Code keeps skills
| Location | Path | Available in |
|---|---|---|
| Personal | ~/.claude/skills/<skill-name>/SKILL.md | All your projects on this machine |
| Project | .claude/skills/<skill-name>/SKILL.md | Sessions in this repository; commit it and your team gets it |
| Nested | <subdir>/.claude/skills/<skill-name>/SKILL.md | Sessions started in or below <subdir>, or once Claude works on files there |
Claude Code also reads .claude/skills/ in every parent directory up to the repository root, so a session started in packages/frontend/ still picks up the skills at the root. When a personal skill and a project skill share a name, the personal one runs. Plugins can carry skills too, and those run as /plugin-name:skill-name. On Windows, ~/.claude means %USERPROFILE%\.claude. The Claude Code skills docs cover the remaining locations, such as skills your organization deploys.
You don't need to restart after installing. Claude Code watches these folders and picks up a skill you add, edit or delete during a session. The exception is a skills folder that didn't exist when the session started: run /reload-skills to load what you put there, and again after each later change to it.
Cowork and cloud sessions don't read ~/.claude/skills/ on your machine. They load the skills enabled for your claude.ai account, and cloud sessions also load skills committed to the repository's .claude/skills/.
How Claude Code decides to use a skill
At the start of a session, Claude sees each skill's name and description, not its full instructions. It matches your request against those descriptions, and when one fits, it loads that skill's SKILL.md into the conversation. The SEO Audit skill's description, for example, lists phrases such as "my traffic dropped" for Claude to match against. Vague or overlapping descriptions are where this goes wrong: Claude may load the wrong skill or miss one that would help.
Installing everything has a cost. The skill listing gets a character budget of 1% of the model's context window, and when it overflows, Claude Code drops descriptions, starting with the skills you invoke least. A skill without its description loses the keywords Claude matches on. Install the skills you will use, and on Claude Code v2.1.252 or later, run /skill-doctor to see which ones never get invoked.
A skill can also pre-approve tools. Its allowed-tools field lets Claude use the listed tools without a permission prompt during the turn that invokes the skill, so read that field in any skill you didn't write. Skill pages on seoskills.sh flag skills that pre-approve shell commands or web fetching with "Runs shell commands" or "Fetches web pages".
Run a skill yourself
Type / and the skill's name, as in /seo-audit. Text after the name reaches the skill as arguments, so /seo-audit start with the blog works even when the skill has no placeholder for them: Claude Code appends what you typed. A skill with disable-model-invocation: true in its frontmatter only runs this way, because Claude never loads it on its own.
When a skill never triggers, check that it appears in /skills, phrase the request closer to its description, or call it by name.
Update or remove a skill
npx skills update
npx skills remove seo-audit -a claude-code
npx skills update updates the skills the CLI installed, and a skill's folder name after it limits the update to that skill. npx skills list shows what is installed and where. remove with -a claude-code takes a skill out of Claude Code only. For a skill you copied in yourself, delete its folder, .claude/skills/<skill-name>/ or ~/.claude/skills/<skill-name>/, and Claude Code drops it from /skills in the same session. Scopes and the rest of the flags are in the skills CLI guide.
Two SEO skills to try first
SEO Audit, by coreyhaines31
SEO Audit audits, reviews and diagnoses SEO issues on a site. It starts by asking about the site, its current state and the scope you want, then works in a fixed priority order: crawlability and indexation, technical foundations, on-page, content quality, and authority and links.
npx skills add https://github.com/coreyhaines31/marketingskills --skill seo-audit -a claude-code
Striking Distance Opportunity Finder, by seoskills.sh
Striking Distance Opportunity Finder is one of ours. It looks for keywords in Search Console positions 11 to 20 that have real demand, ranks them by projected click gain, and maps each one to the page that ranks. It works from Search Console data, so run it on a site whose property you can access.
npx skills add https://seoskills.sh --skill striking-distance-finder -a claude-code
More picks, with install steps, are on SEO skills for Claude Code.
Next
- The skills CLI: every command and flag, including update and remove
- SEO with Claude Code: the next step once your skills are in place
- Skill safety: what to check before you install