Getting Started

pnpm
common

1. 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:

pnpm add pnpm-plugin-skills --config

This tells pnpm to load pnpm-plugin-skills during installation.

Declare the skills your project needs

Create a skills.json file at the workspace root. You can create it manually or use the CLI to initialize:

# Interactive — prompt for installDir and linkTargets
npx skills-package-manager init

# Non-interactive — write the default manifest immediately
npx skills-package-manager init --yes
# Interactive — clone repo, discover skills, select via multiselect prompt
npx skills-package-manager add vercel-labs/skills
npx skills-package-manager add https://github.com/rstackjs/agent-skills

# Non-interactive — add a specific skill by name
npx skills-package-manager add vercel-labs/skills --skill find-skills

Example skills.json:

{
  "installDir": ".agents/skills",
  "linkTargets": [".claude/skills"],
  "skills": {
    "find-skills": "https://github.com/vercel-labs/skills.git#path:/skills/find-skills"
  }
}

This manifest defines:

  • installDir: where managed skills are materialized
  • linkTargets: which agent-specific directories receive links
  • skills: which skills should be installed

Run pnpm as usual

Now run the normal install command:

pnpm install

During this process, the plugin will:

  1. Read skills.json
  2. Resolve each skill source
  3. Generate or update skills-lock.yaml
  4. Materialize skills into installDir
  5. 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:

.gitignore
.agents/skills
.claude/skills

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:

npx skills-package-manager add vercel-labs/skills --skill find-skills
npx skills-package-manager add https://github.com/rstackjs/agent-skills --skill rspress-custom-theme

3. Refresh remote skill versions

When remote git-based skills should move forward to newer commits, run:

npx skills-package-manager update

Then run:

pnpm install

This keeps the resolved lockfile state and linked directories aligned with the latest declared versions.

1. Initialize your project

If you're not using pnpm or prefer a standalone workflow, you can use the CLI directly to manage skills.

Install the CLI

You don't need to install the CLI globally — just use npx to run it on demand:

npx skills-package-manager --help

Create a skills.json manifest

Initialize a new project with the init command:

# Interactive — prompt for installDir and linkTargets
npx skills-package-manager init

# Non-interactive — write the default manifest immediately
npx skills-package-manager init --yes

The default skills.json created by init --yes:

{
  "installDir": ".agents/skills",
  "linkTargets": [],
  "skills": {}
}

This manifest defines:

  • installDir: where managed skills are materialized
  • linkTargets: which agent-specific directories receive links
  • skills: which skills should be installed (empty initially)

Install your first skills

Add skills to your project using the add command:

# Interactive — clone repo, discover skills, select via multiselect prompt
npx skills-package-manager add vercel-labs/skills
npx skills-package-manager add https://github.com/rstackjs/agent-skills

# Non-interactive — add a specific skill by name
npx skills-package-manager add vercel-labs/skills --skill find-skills

After add, the skill is immediately resolved, materialized into installDir, and linked to each configured linkTarget.

Run install to materialize skills

If you edited skills.json manually or want to ensure everything is synced:

npx skills-package-manager install

This reads skills.json, resolves each skill specifier, generates or updates skills-lock.yaml, materializes skills into installDir, and links them into every directory listed in linkTargets.

Add .agents/skills to .gitignore

Since the skill directories are generated artifacts, you should add them to .gitignore:

.gitignore
.agents/skills
.claude/skills

2. Add more skills when needed

When you want to introduce another skill, you can either edit skills.json directly or use the CLI:

npx skills-package-manager add vercel-labs/skills --skill find-skills
npx skills-package-manager add https://github.com/rstackjs/agent-skills --skill rspress-custom-theme

3. Refresh remote skill versions

When remote git-based skills should move forward to newer commits, run:

npx skills-package-manager update

Or update specific skills only:

npx skills-package-manager update find-skills rspress-custom-theme

This keeps the resolved lockfile state and linked directories aligned with the latest declared versions.