About npx-skills
A skill that documents how to install and maintain agent skills with the `npx skills` CLI. It focuses on project-level installation into Claude Code and lockfile-based detection of missing skills.
Key features
- 01Install skills with `npx skills add`
- 02Record project skills in `skills-lock.json`
- 03Detect missing skills from the lockfile
- 04Support project and global install scopes
- 05Use copy-based installs for updates
Use cases
- 01Set up skills for a project using Claude Code
- 02Check which lockfile-listed skills are missing
- 03Refresh installed skill files
- 04Choose between project and global installation
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ petr-korobeinikov/ skills --skill npx-skillsAfter installing, type/npx-skillsin Claude Code to confirm it loaded.
Details
From the project READMEnpx-skills
The npx skills CLI
(https://github.com/vercel-labs/skills)
installs agent skills from a GitHub source
into the host project's .claude/skills/ directory,
and writes a project-level skills-lock.json recording what was
installed.
Lock files
| File | Scope | Checked in | Per-skill fields |
|---|---|---|---|
skills-lock.json (repo root) | project | yes | source, sourceType, skillPath, computedHash |
~/.agents/.skill-lock.json | global | no | written when -g is used |
The project lockfile is the source of truth for which skills the repo expects to be present.
Startup detection
On the first interaction in a project that has skills-lock.json
at the repo root but no .claude/skills/ directory
(or the directory exists yet skills listed in the lockfile are
missing):
-
Read
skills-lock.json, list the skill names underskills.*that are not present in.claude/skills/. -
Collect the unique
sourcevalues from those entries. -
Report the missing skills to the user, and propose one install command per unique source:
npx skills add <source> --skill '*' --copy -a claude-code -y -
Wait for the user's confirmation before running anything.
Use -g instead of the project-local default
only when the user explicitly wants the install under
~/.claude/skills/.
Install — all skills from a source
npx skills add <owner/repo> --skill '*' --copy -a claude-code -y
--skill '*'— every skill in the source. Replace with--skill <name>for a single skill.--copy— write plain file copies, not symlinks. Symlinks couple the host repo to the source checkout and clutter the consumer'sgit status.-a claude-code— target Claude Code's.claude/skills/layout.-y— non-interactive (skip the per-skill confirmation prompt).
Install — a single skill
npx skills add <owner/repo> --skill <skill-name> -a claude-code
Drop -y when adding a single skill —
the interactive prompt is quick
and confirms the resolved source.
Update — re-run add --copy -y
Re-running the install with --copy -y overwrites existing files in
.claude/skills/ in place,
so install and update share one command:
npx skills add <owner/repo> --skill '*' --copy -a claude-code -y
Avoid npx skills update
update stages the package under .agents/ in the host repo,
which clutters git status in the consumer project.
The --copy flag does not change this —
update accepts it but silently ignores it.
Use add --copy -y instead.
Scope: project vs global
| Mode | Flag | Install path |
|---|---|---|
| Project | (default) | .claude/skills/ |
| Global | -g | ~/.claude/skills/ |
Project is the default and the recommended scope.
Verifying against upstream
The npx skills doc site is shallow.
When the exact behavior of a flag or command is unclear,
read the source at
https://github.com/vercel-labs/skills
(src/add.ts, src/update.ts, src/skill-lock.ts)
rather than guessing.