Getting Started
1. Get started with pnpm-plugin-skills
If your project already uses pnpm, the easiest way to adopt skills-package-manager is to start from pnpm install and let skill installation happen automatically inside the existing dependency workflow.
Install the pnpm plugin
Add the plugin to your workspace configuration:
This tells pnpm to load pnpm-plugin-skills during installation.
Bootstrap the manifest
Run the same command for new projects and migrated projects:
If local skills already exist, install migrates them into skills.json as local:* entries. If no local skills exist yet, it writes an empty default manifest.
Add skills when needed
add updates skills.json, installs the selected skills, and links configured agent targets:
GitHub sources are written to skills.json using pinned github:owner/repo#<commit>&path:<path> specifiers.
Example skills.json:
This manifest defines:
installDir: where managed skills are materializedlinkTargets: which agent-specific directories receive linksselfSkill: whether to auto-install the bundledskills-package-manager-cliskill for help withskills.jsonandnpx skills-package-managercommands. Defaults tofalseskills: which skills should be installed
Run pnpm as usual
Now run the normal install command:
During this process, the plugin will:
- Read
skills.json - Resolve each skill source
- Materialize skills into
installDir - Link them into every directory listed in
linkTargets
That means your regular pnpm bootstrap flow now also restores agent skill context.
Add .agents/skills etc to .gitignore
Since the skill directories are generated artifacts, you should add them to .gitignore:
2. Add more skills when needed
When you want to introduce another skill, you can either edit skills.json directly or use the CLI to update the manifest:
3. Refresh remote skill versions
When remote git-based (URL or github:) or npm: skills should move forward, run:
Then run:
update writes newer pins back to skills.json; pnpm install then restores the linked directories from that manifest.
1. Quick Start
If you're not using pnpm, start every project with the same command. install creates skills.json for new projects and migrates existing local skills when they are present.
Bootstrap the project
If skills.json does not exist yet, install writes one. For migrated projects, it scans .agents/skills and .agent/skills, reuses matching skills-lock.json entries when present, and writes local:* entries. For new projects, it writes an empty manifest that is ready for add.
Add skills when needed
Select from a variety of sources (Git, NPM, Local).
add updates skills.json, installs the selected skills, and links them into configured agent folders.
Restore on another machine
This command will:
- Resolve each specifier from
skills.json. - Download/Copy files to
.agents/skills. - Symlink them to your agent folders (e.g.,
.claude/skills).
Remember to add .agents/skills and your agent link targets to your .gitignore to keep your repository lean!
2. Advanced Workflow
Update to latest versions
To move remote git skills to the latest main commit and npm skills to the registry latest version:
Link local developments
Use the link: protocol in skills.json for rapid local skill testing without publishing.
Use the local: protocol when a skill already lives in a user-owned directory such as .agents/skills/my-skill and should not be copied, replaced, or pruned by SPM.
Lifecycle Integration
For npm, yarn, or bun, you can seamlessly integrate SPM into your project's lifecycle using the prepare script. This ensures your agent skills are automatically synchronized every time you run a fresh install.
Install SPM as a dev dependency
Add skills-package-manager to your project's devDependencies.
Configure the prepare script
Update your package.json to include the prepare lifecycle hook:
Bootstrap and Add Skills
Run the same bootstrap command first for both new projects and migrated projects. Then add skills when needed:
The prepare script runs automatically after npm install (and equivalent commands in Yarn/Bun), guaranteeing that your .agents/skills directory and agent symlinks are always up to date.