About pnpm
A pnpm skill for JavaScript project package management, covering commands, configuration, workspaces, and operational practices. It focuses on content-addressable storage, strict dependency resolution, and monorepo workflows.
Key features
- 01Installation and CLI command guidance
- 02Workspace and dependency filtering
- 03Content-addressable store and caching
- 04Configuration, patches, and overrides
- 05CI, Docker, and production deployment guidance
Use cases
- 01Managing dependencies and scripts in a monorepo
- 02Running frozen-lockfile installs in CI
- 03Diagnosing dependency resolution and installation errors
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ hairyf/ skills --skill pnpmAfter installing, type/pnpmin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
GENERATION.mdreferences/advanced-limitations.mdbest-practices-ci.mdbest-practices-docker.mdbest-practices-git.mdbest-practices-migration.mdbest-practices-only-allow-pnpm.mdbest-practices-performance.mdbest-practices-podman.mdbest-practices-production.mdbest-practices-typescript.mdcore-cli.mdcore-config.mdcore-errors.mdcore-installation.mdcore-limitations.mdcore-package-sources.mdcore-store.mdcore-typescript.mdcore-workspaces.mdfeatures-aliases.mdfeatures-cache.mdfeatures-catalogs.mdfeatures-changesets.mdfeatures-completion.mdfeatures-config-dependencies.mdfeatures-env.mdfeatures-filtering.mdfeatures-finders.mdfeatures-git-branch-lockfiles.mdDetails
From the project READMEpnpm is a fast, disk space efficient package manager. It uses a content-addressable store to deduplicate packages across all projects on a machine, saving significant disk space. pnpm enforces strict dependency resolution by default, preventing phantom dependencies. Configuration should preferably be placed in pnpm-workspace.yaml for pnpm-specific settings.
Important: When working with pnpm projects, agents should check for pnpm-workspace.yaml and .npmrc files to understand workspace structure and configuration. Always use --frozen-lockfile in CI environments.
The skill is based on pnpm 10.x, generated at 2026-02-01.
Core
| Topic | Description | Reference |
|---|---|---|
| Installation | Standalone script, Corepack, npm, system package managers | core-installation |
| CLI Commands | Install, add, remove, update, run, exec, dlx, and workspace commands | core-cli |
| Configuration | pnpm-workspace.yaml, .npmrc settings, and package.json fields | core-config |
| Workspaces | Monorepo support with filtering, workspace protocol, and shared lockfile | core-workspaces |
| Store | Content-addressable storage, hard links, and disk efficiency | core-store |
| Package Sources | npm, JSR, workspace, Git, tarball—trusted and exotic sources | core-package-sources |
| Errors | Common error codes and resolutions | core-errors |
Features
| Topic | Description | Reference |
|---|---|---|
| Filtering | Rich selector syntax for --filter (deps, dependents, changed, globs) | features-filtering |
| Catalogs | Centralized dependency version management for workspaces | features-catalogs |
| Overrides | Force specific versions of dependencies including transitive | features-overrides |
| Patches | Modify third-party packages with custom fixes | features-patches |
| Aliases | Install packages under custom names using npm: protocol | features-aliases |
| Hooks | Customize resolution with .pnpmfile.cjs hooks | features-hooks |
| Peer Dependencies | Auto-install, strict mode, and dependency rules | features-peer-deps |
| Config Dependencies | Share hooks, catalogs, patches across projects | features-config-dependencies |
| Git Branch Lockfiles | Branch-specific lockfiles to avoid merge conflicts | features-git-branch-lockfiles |
| Changesets | Monorepo versioning and publishing | features-changesets |
| Supply Chain Security | allowBuilds, blockExoticSubdeps, trustPolicy | features-supply-chain-security |
| Finders | Search dependency graph by package properties (v10.16+) | features-finders |
| Completion | Shell tab completion (Bash, Zsh, Fish) | features-completion |
| Scripts | Lifecycle scripts and pnpm:devPreinstall | features-scripts |
| Cache | Metadata cache commands (list, view, delete) | features-cache |
| Node.js Env | Manage Node.js versions (pnpm env use/add/remove) | features-env |
| Publish & Deploy | publish, pack, deploy, fetch for Docker and registry | features-publish-deploy |
Best Practices
| Topic | Description | Reference |
|---|---|---|
| CI/CD Setup | GitHub Actions, GitLab CI, Docker, and caching strategies | best-practices-ci |
| Docker | BuildKit cache, pnpm fetch, pnpm deploy for monorepos | best-practices-docker |
| Production | Lockfile deployment, offline install | best-practices-production |
| Only Allow pnpm | Enforce pnpm with preinstall (only-allow) | best-practices-only-allow-pnpm |
| TypeScript | preserveSymlinks, packageExtensions, @pnpm/plugin-types-fixer | best-practices-typescript |
| Podman | Btrfs reflinks, store and node_modules volume mounts | best-practices-podman |
| Git | Lockfile commit and merge conflict resolution | best-practices-git |
| Migration | Migrating from npm/Yarn, handling phantom deps, monorepo migration | best-practices-migration |
| Performance | Install optimizations, store caching, workspace parallelization | best-practices-performance |
Advanced
| Topic | Description | Reference |
|---|---|---|
| Limitations | npm lockfile ignored, binstubs are shell scripts | advanced-limitations |