A CLI that discovers agent skills shipped inside npm packages and creates symlinks for coding agents to consume.
[!IMPORTANT]
This project is a work in progress.
Current skill distribution approaches (e.g. @vercel-labs/skills) have friction:
This project proposes a convention: ship skills inside npm packages. When you npm install a tool, its skills come bundled. Run skills-npm to symlink them for your agent.
undefinedRead the full proposal: PROPOSAL.mdundefined
npm i -D skills-npm
Add a prepare script to your package.json so the skills are symlinked automatically for your agent whenever you install dependencies:
{
"private": true,
"scripts": {
"prepare": "skills-npm"
}
}
skills-npm will symbol links the skills from node_modules to skills/npm-<package-name>-<skill-name> for your agent. It’s recommend to add the following to your .gitignore:
skills/npm-*
You can create a skills-npm.config.ts file in your project root to configure the behavior:
// skills-npm.config.ts
import { defineConfig } from 'skills-npm'
export default defineConfig({
// Target specific agents (defaults to all detected agents)
agents: ['cursor', 'windsurf'],
// Scan recursively for monorepo packages (default: false)
recursive: false,
// Whether to update .gitignore (default: true)
gitignore: true,
// Skip confirmation prompts (default: false)
yes: false,
// Dry run mode (default: false)
dryRun: false,
// Include specific packages or skills
include: [
// Include all skills from a package
'@some/package',
// Include specific skills from a package
{ package: '@slidev/cli', skills: ['presenter-mode'] },
],
// Exclude specific packages or skills
exclude: [
// Exclude all skills from a package
'@some/package',
// Exclude specific skills from a package
{ package: '@slidev/cli', skills: ['presenter-mode'] },
],
})
| Option | Type | Default | Description |
|---|---|---|---|
cwd |
string |
Workspace root | Current working directory |
agents |
string | string[] |
All detected | Target agents to install to |
recursive |
boolean |
false |
Scan recursively for monorepo packages |
gitignore |
boolean |
true |
Whether to update .gitignore |
yes |
boolean |
false |
Skip confirmation prompts |
dryRun |
boolean |
false |
Show what would be done without making changes |
include |
(string | { package: string, skills: string[] })[] |
undefined |
Packages or skills to include (only these will be installed) |
exclude |
(string | { package: string, skills: string[] })[] |
[] |
Packages or skills to exclude from being installed |
The
cwddefaults to the workspace root, which is detected by searching up forpnpm-workspace.yaml,lerna.json, or apackage.jsonwithworkspacesfield. Falls back to the nearestpackage.json.
skills-npm [options]
Options:
--cwd <cwd> Current working directory
-a, --agents Comma-separated list of agents to install to
-r, --recursive Scan recursively for monorepo packages
--ignore-paths <paths> Ignore paths for searching package.json
--gitignore Whether to update .gitignore (default: true)
--yes Skip confirmation prompts
--dry-run Show what would be done without making changes
-h, --help Display help
-v, --version Display version
Include a skills/ directory in your package:
my-tool/
├── package.json
├── dist/
└── skills/
└── my-skill/
└── SKILL.md
See PROPOSAL.md for detailed instructions.
Packages that ships their built-in skills:
[!NOTE]
PR are welcome to add more packages that ships their built-in skills.
MIT License © Anthony Fu
We use cookies
We use cookies to analyze traffic and improve your experience. You can accept or reject analytics cookies.