skills-npm is a CLI that distributes agent skills through npm, so a project's skills follow its dependencies instead of being cloned from git repositories one at a time. It addresses three problems with per-repository skill installs: skills drifting out of step with the tools they describe, every project repeating the same install steps, and teams having to commit copied files or redo setup on each machine.
It relies on two conventions. A package can ship its own skills in a skills/ directory, and skills-npm symlinks them into your coding agent's skills directory whenever dependencies are installed. A package can also list skills hosted elsewhere in a skills field of its manifest, and a package that contains only that field is a skills pack: installing it installs the whole list for everyone on the team.
Shipped skills become relative symlinks into the installed packages, so they can be committed and are restored on every fresh install. Remote entries are fetched through the Skills CLI, once per source and ref, and are removed again when no package requests them anymore. A committed lock file records which skills are installed and which package asked for each. When two sources provide the same skill name, a fixed priority order decides: explicit installs first, then existing content, shipped over remote, and direct over transitive dependencies, with ties skipped and a warning shown.
skills-npm detects which coding agents you use from their config directories and installed commands (such as Claude Code, Codex, Gemini, and Cursor) and installs to those, and it always links the shared directory read by agents that use the universal layout, including Cursor, Codex, OpenCode, and Amp. Run inside a coding agent, it targets that agent without prompting. Include and exclude filters, monorepo scanning, dry runs, and an offline mode are configurable.
Features
- Shipped skills: symlinks skills bundled in installed npm packages into each agent's skills directory
- Skills packs: a manifest skills field lists remote skills that install with the package
- Install hook: wires itself into the install lifecycle so skills re-sync on every dependency install
- Committable links: relative symlinks restore on any fresh clone after install
- Remote fetching: uses the Skills CLI for git-hosted entries, fetching each source and ref once
- Lock file: records which skills are installed and which package requested each
- Conflict rules: a fixed priority ladder resolves duplicate skill names
- Agent detection: finds installed coding agents from config directories and commands on the system path
- Filters: include or exclude packages and skills, with wildcard package patterns
- Automatic cleanup: removes skills no package requests anymore, leaving hand-installed skills untouched
- Offline mode: skips network entries while still resolving skills from npm packages

