Managing Skills with local-skills CLI
local-skills is a CLI tool for extracting and managing Claude Code skills from plugin marketplaces. It installs skills into .claude/skills/ with version tracking, modification detection, and update management.
Prerequisites
The tool must be installed from npm before use:
npm install -g local-skills
Or you can install per-project:
npm install --save-dev local-skills
Verify installation:
local-skills --help
Commands
Add a skill
local-skills add <specifier>
The specifier format is <plugin>@<marketplace>/<skill>[:<version>]:
| Part | Description |
|---|---|
plugin | Plugin name in the marketplace |
marketplace | GitHub owner/repo or full git URL |
skill | Skill name (or * for all) |
version | Optional git ref (tag, branch) |
Examples:
# Add a single skill from a GitHub marketplace local-skills add superpowers@anthropics/claude-code/tdd # Pinned to a specific tag local-skills add superpowers@anthropics/claude-code/tdd:v2.0 # All skills from a plugin local-skills add superpowers@anthropics/claude-code/* # From a full git URL local-skills add my-plugin@https://gitlab.com/team/repo.git/my-skill
List skills
local-skills ls [source]
Options:
- •
--long, -l— Show descriptions - •
--installed— Only installed skills - •
--not-installed— Only non-installed skills
Examples:
# List all installed skills local-skills ls --installed # List skills from a remote marketplace with descriptions local-skills ls anthropics/claude-code --long # List skills not yet installed from a marketplace local-skills ls anthropics/claude-code --not-installed
Show skill details
local-skills info <skill>
Displays source, version, and content information for an installed skill.
Update a skill
local-skills update <skill-name>
Options:
- •
--force, -f— Overwrite locally modified files
Update behavior:
- •Skills pinned to a specific commit SHA (40-char hex) are skipped automatically
- •If skill files were modified locally, update is refused unless
--forceis passed - •If the state file is missing, modification check is skipped
Remove a skill
local-skills remove <skill-name>
Removes the skill directory from .claude/skills/ and cleans up tracking files.
Tracked Files
Both files should be committed to version control:
- •
.claude/local-skills.json— Manifest declaring what skills are installed and from where (source, ref, SHA) - •
.claude/local-skills-state.json— Content hashes for installed skill files, used to detect local modifications
How It Works
- •Parses the specifier to identify the plugin, marketplace, skill, and optional version
- •Shallow-clones the marketplace git repo
- •Reads
.claude-plugin/marketplace.jsonto find the plugin - •Copies the skill directory to
.claude/skills/<skill-name>/ - •Records the source, ref, and commit SHA in the manifest
- •Computes a content hash and stores it in the state file
Workflow Guidance
When a user asks to add skills from a marketplace:
- •Check if
local-skillsis installed:local-skills --help - •If not installed, install it:
npm install -g local-skills - •If the user knows the marketplace, use
local-skills ls <marketplace> --longto show available skills - •Use
local-skills addwith the appropriate specifier - •Verify installation with
local-skills ls --installed
When a user asks to update skills:
- •Check current state:
local-skills ls --installed - •Run
local-skills update <skill-name>for each skill - •If update fails due to local modifications, inform the user and suggest
--forceonly if they confirm
When a user asks about available skills:
- •Use
local-skills ls <marketplace> --longto browse a marketplace - •Use
local-skills info <skill>for details on an installed skill