A CLI tool to manage a personal catalog of Claude Code skill installation commands. Build your collection once, install anywhere.
Claude Code skills are installed via npx/pnpx commands scattered across different repos and docs. You end up hunting through bookmarks, READMEs, and chat histories every time you start a new project. This tool gives you a single catalog you can carry across machines (via git) and run against any project.
# Clone and install globally
git clone https://github.com/david-lai-jpg/skill-installer.git
cd skill-installer
npm install -g .Requires Node.js >= 18.
# Initialize (first time only)
skill-installer init
# Add a skill to your catalog
skill-installer add
# Browse and install skills into your current project
skill-installer installFirst-time setup. Creates catalog.json if missing, verifies git remote for syncing, checks Node.js version.
Interactive prompts to add a new skill:
| Field | Required | Notes |
|---|---|---|
| name | yes | Must be unique |
| command | yes | The npx/pnpx install command |
| category | no | Freeform string for grouping |
| tags | no | Comma-separated, used for filtering |
| description | no | What the skill does |
If the command matches an existing entry, you'll get a duplicate warning.
Select a skill from the catalog, then choose which field to edit.
Multi-select skills to remove with confirmation.
Display all cataloged skills. Filter with flags:
skill-installer list # all skills
skill-installer list --category react # by category
skill-installer list --tag performance # by tagThe main event. Interactive flow:
- Optional filter — narrow by category or tag
- Checkbox selection — pick skills from a grouped list
- Confirm — review commands before running
- Execute — runs each command sequentially with
stdio: inherit(supports interactive installers) - Summary — final report of what succeeded/failed
On failure, you choose to continue or abort. Skipped skills are tracked in the summary.
Merge skills from a JSON file into your catalog. Handles name collisions per-entry (skip, overwrite, or rename).
skill-installer import ~/shared-skills.jsonDump your catalog to a JSON file for sharing or backup.
skill-installer export ~/my-skills.jsonThe catalog is a JSON array stored in catalog.json at the repo root:
[
{
"id": "a1b2c3d4-...",
"name": "vercel-react-best-practices",
"command": "npx skills add https://github.com/vercel-labs/agent-skills --skill vercel-react-best-practices",
"category": "react",
"tags": ["performance", "next.js"],
"description": "Vercel's React/Next.js optimization guidelines"
}
]Every catalog mutation (add, update, delete, import) triggers automatic git sync:
- Pull latest from remote (if configured)
- Stage
catalog.json - Commit with
"update skill catalog" - Push to remote
This keeps your catalog synced across machines. If push fails, the local commit is preserved — push manually when ready.
skill-installer/
├── bin/cli.js # Entry point, arg routing
├── src/
│ ├── catalog.js # CRUD operations
│ ├── installer.js # Select & run flow
│ ├── git.js # Git sync
│ └── utils.js # Paths, colors, helpers
├── catalog.json # Your skill catalog (committed)
└── package.json
| Package | Purpose |
|---|---|
@inquirer/prompts |
Interactive CLI prompts |
mri |
Minimal argument parsing |
picocolors |
Terminal colors |
MIT