From the skill’s files
Taken from the skill’s own files (its description, section headings and stated usage). Not an AutoGineer summary, and not written by the author as one.
Node.js package manager with strict dependency resolution. Use when running pnpm specific commands, configuring workspaces via pnpm-workspace.yaml, or managing dependencies with catalogs, patches, overrides, config dependencies, or the global virtual store. pnpm is a fast, disk space efficient package manager. It uses a content-addressable store to deduplicate packages across all projects on a machine, and enforces strict dependency resolution by default, preventing phantom dependencies.
What it does
- Core
- Features
- Best Practices
When to use it
- Use when running pnpm specific commands, configuring workspaces via pnpm-workspace.yaml, or managing dependencies with catalogs, patches, overrides, config dependencies, or the global virtual store.
Advantages
The skill’s files do not state this.
Usage examples
The skill’s files do not state this.
Install
Download the skill as a ZIP:
https://mp-staging.autogineer.com/agent-skills/antfu/pnpm/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip pnpm.zip -d .agents/skills
Documentation by Anthony Fu
pnpm is a fast, disk space efficient package manager. It uses a content-addressable store to deduplicate packages across all projects on a machine, and enforces strict dependency resolution by default, preventing phantom dependencies.
pnpm v12 is a Rust rewrite of v11: stable, and keeps v11's commands, flags, settings, and lockfile format — so most guidance here applies to both. A handful of v12 behaviors differ (git deps resolve via HTTPS, project-aware global bins, other package managers, packageImportMethod: auto hardlinks first on Linux) — see best-practices-migration.
Configuration model (important): pnpm settings live in pnpm-workspace.yaml (and the global config.yaml) using camelCase keys. .npmrc is used only for authentication/registry credentials, and the pnpm field of package.json is no longer read. When working in a pnpm project, check pnpm-workspace.yaml for settings/workspace structure and .npmrc only for auth. Always use --frozen-lockfile (or pnpm ci) in CI.
The skill is based on pnpm 12.18, generated at 2026-11-05. It covers v11+v12 behavior (config split, config includes, isolated global packages,
allowBuilds,pmOnFail, global virtual store, native release management, workspace task orchestration, and experimental Python/Cargo support) where current docs describe them.
Core
| Topic | Description | Reference |
|---|---|---|
| CLI Commands | install/add/remove/update, run, dlx/pnx, workspace, runtime, publishing (version, view, sbom, stage) | core-cli |
| Configuration | pnpm-workspace.yaml settings (camelCase), global config.yaml, config includes, packageConfigs, auth (.npmrc, auth.ini) | core-config |
| Workspaces | Monorepo support: filtering, workspace protocol, shared lockfile, packageConfigs | core-workspaces |
| Store | Content-addressable store, virtual store, node linker modes (incl. loaded/store loader), frozen/read-only store | core-store |
Features
| Topic | Description | Reference |
|---|---|---|
| Catalogs | Centralized dependency versions; catalogMode, catalog: in overrides | features-catalogs |
| Overrides | Force versions (incl. transitive & peer deps); packageExtensions | features-overrides |
| Patches | Modify third-party packages; patchedDependencies in pnpm-workspace.yaml | features-patches |
| Aliases | Install under custom names (npm:) and registry aliases (namedRegistries) | features-aliases |
| Hooks | .pnpmfile.mjs hooks (readPackage, updateConfig, beforePacking), finders, resolvers/fetchers | features-hooks |
| Peer Dependencies | Auto-install, strict mode, rules, dedupePeers, peers check | features-peer-deps |
| Config Dependencies | Share hooks/settings/catalogs/patches across repos via configDependencies | features-config-dependencies |
| Global Virtual Store & Shims | Shared node_modules, git-worktree multi-agent setups, isolated global packages, project-aware bins, other package managers | features-global-virtual-store |
| Supply-Chain Security | Build approval (allowBuilds), permissions and agent skills, minimumReleaseAge, trustPolicy, lockfile integrity | features-supply-chain-security |
| Task Orchestration | Cross-project task graphs (tasks/dependsOn), concurrency groups, priority, pnpm pipeline | features-task-orchestration |
| Release Management | Native versioning: pnpm change/version -r/lane, lanes, epics, fixed groups | features-versioning |
| Multi-Ecosystem | Python (pypi:) and Cargo (crate:) dependencies alongside npm (experimental) | features-multi-ecosystem |
Best Practices
| Topic | Description | Reference |
|---|---|---|
| CI/CD Setup | GitHub Actions, GitLab, Docker, pnpm ci, store caching, frozen lockfiles | best-practices-ci |
| Migration | npm/Yarn → pnpm, phantom deps, and pnpm v10 → v11 → v12 upgrade notes | best-practices-migration |
| Performance | Install optimizations, allowBuilds, global virtual store, workspace parallelization | best-practices-performance |
Files
- ATTRIBUTION.mdAdded by AutoGineer889 B
- GENERATION.md134 B
- LICENSELicence file added by AutoGineer1.1 KiB
- SKILL.md5.1 KiB
- references/best-practices-ci.md9.7 KiB
- references/best-practices-migration.md9.9 KiB
- references/best-practices-performance.md6.0 KiB
- references/core-cli.md11.3 KiB
- references/core-config.md12.8 KiB
- references/core-store.md10.7 KiB
- references/core-workspaces.md6.6 KiB
- references/features-aliases.md4.4 KiB
- references/features-catalogs.md5.0 KiB
- references/features-config-dependencies.md4.2 KiB
- references/features-global-virtual-store.md10.0 KiB
- references/features-hooks.md8.9 KiB
- references/features-multi-ecosystem.md6.2 KiB
- references/features-overrides.md5.5 KiB
- references/features-patches.md5.0 KiB
- references/features-peer-deps.md5.9 KiB
- references/features-supply-chain-security.md7.7 KiB
- references/features-task-orchestration.md6.8 KiB
- references/features-versioning.md5.5 KiB
references/features-multi-ecosystem.md
name: pnpm-multi-ecosystem description: Install Python (pypi:) and Cargo (crate:) dependencies alongside npm packages in one pnpm install
Multi-Ecosystem: Python & Cargo (v12.4.0+, experimental)
pnpm v12 can resolve and install Python and Rust/Cargo dependencies in the same pnpm install as npm packages. Both graphs share pnpm's connection budget, artifact verification, and content-addressable store; each keeps its own lockfile and requirement semantics. Settings and on-disk layout may still change.
Python
Enable in pnpm-workspace.yaml:
python:
enabled: truepnpm reads pyproject.toml, writes pylock.toml, and builds a .venv per project (a symlink into python-envs in the store; swapped atomically). It never touches a hand-made .venv.
pnpm add pypi:httpx # -> httpx==<latest> in pyproject.toml
pnpm add pypi:[email protected] # exact pin
pnpm add pypi:'httpx>=0.28' # PEP 508 spec kept as written
pnpm add -D pypi:pytestpnpm outdated/pnpm updatealso cover Python deps (selectorspypi:<name>); requirements keep their operator and precision on update.Resolution reads each release's metadata from the index's PEP 658 metadata file, downloading the wheel only once selected. Indexes must support the Simple JSON API (HTML-only unsupported).
pnpm run/pnpm execput.venv/bin(.venv/Scriptson Windows) on PATH, so scripts callpytest/ruffwithout activation.--lockfile-only,--frozen-lockfile,--offlineapply.Local/workspace deps: declare in
[tool.uv.sources]({ workspace = true }or{ path, editable }); a project with[build-system]is installed editable.Build backends need approval under
allowBuildswith Package URL keys:'pkg:pypi/hatchling': true.Indexes (v12.5.0+): declare via
registrieswithecosystem: pypiand route package names withpackagespatterns;python.indexUrlis no longer supported. Credentials go in.npmrc, matched by origin.Multi-env locking:
supportedArchitectures+python.versions: ['3.12','3.13']locks wheels for each platform×interpreter.Interpreter: auto-selected to satisfy each
requires-python(prefers.python-version); downloads a python-build-standalone build if none fits (runtimeOnFailcontrols). Setpython.executableto force one.Key settings:
python.enabled,python.executable,python.extras,python.groups(default['dev']),python.versions,python.overrides,python.constraints. Per-project overrides in[tool.pnpm.python].shared-environment = trueunder[tool.uv.workspace]shares one.venvacross uv-workspace members.
Cargo
Enable in pnpm-workspace.yaml:
cargo:
enabled: truepnpm add crate:serde
pnpm add crate:serde@^1.0.200
pnpm add --save-build crate:cc # as a Cargo build dependencypnpm add crate:/rust@ fail with --recursive/--filter; run them in the project. pnpm outdated/update also cover crates (crate:<name> selectors).
pnpm reads the workspace
Cargo.toml, writes a deterministicCargo.lock, verifies each.crateagainst its checksum, unpacks into the store, and links a Cargo [directory source] under.pnpm/crates/crates-io. It writes the source replacement to.pnpm/crates/config.tomland adds an optional[[include]]of it to.cargo/config.tomlbetween# >>> pnpm-managed cargo sources >>>markers (your content outside is untouched; write your own includes as[[include]]tables; Cargo 1.95+ reads it). In a fresh clone without.pnpm, Cargo skips the include and fetches normally. Already-unpacked crates are linked without re-verifying;pnpm install --forceunpacks again.cargo buildthen compiles offline against vendored sources; pnpm compiles nothing.Crates are recorded only in
Cargo.lock, neverpnpm-lock.yaml.--lockfile-only/--frozen-lockfile/--offlineapply.Registry: declare a sparse index via
registrieswithecosystem: cargo(default crates.io); only one index per workspace.cargo.indexUrlis no longer supported. Auth reuses URL-scoped credentials plusCARGO_REGISTRY_TOKEN/$CARGO_HOME/credentials.toml.Git deps and
[patch]/[replace]overrides are honored and vendored for offline builds (git packages in.pnpm/crates/git). Such workspaces resolve via thecargoof the workspace's Rust toolchain and require the default crates.io index; otherwise commit aCargo.lockgenerated by Cargo. Onlyunstable.bindepsandresolver.incompatible-rust-versionsare read from the checkout's.cargo/config.toml.A dependency with its own
registry = "..."is rejected (one index per workspace). Withunstable.build-std, the toolchain needs therust-srccomponent.Reuse Cargo build state across runs/worktrees with
pnpm pipelineandtasks.<name>.cargoTargetDir.
Rust toolchain (v12.11.0+)
pnpm install installs the toolchain named by the nearest rust-toolchain.toml (or rust-toolchain), read like rustup. pnpm verifies it against Rust's signing key, stores it once per machine, and links it into .pnpm/rust; pnpm run/exec and pnpm's own cargo calls use it.
[toolchain]
channel = "1.95.0" # version, stable, beta, nightly, nightly-YYYY-MM-DD
components = ["rust-src"]
targets = ["wasm32-unknown-unknown"]pnpm add [email protected]writes the file;pnpm add -g rust@stableinstalls globally;pnpm shim add rustdelegates to rustup instead;pnx --package=rust@<channel> cargo ...runs one release.Moving channels (
stable) are checked daily; offline uses the newest cached one. Files withpath, nochannel, linked toolchains, or exotic profiles are left to rustup.runtimeOnFail: error|warn|ignoreturns it off;tools.rust.mirrorsets a mirror.
pnpr acceleration
With pnprServer set, the server resolves the Python/Cargo graph so pnpm needn't download wheels/index files to discover requirements; it falls back to local resolution when the server doesn't answer for that ecosystem.
<!-- Source references: - https://pnpm.io/python - https://pnpm.io/cargo - https://pnpm.io/registries - https://pnpm.io/cli/add - https://pnpm.io/cli/pnx -->
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Needs Node.js
Security
What our scanner noticed· Low risk
- Instructions that use the network
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Anthony Fu
- Publisher
- Anthony Fu (Community)
- Source
- antfu/skills · skills/pnpm · commit f63e9ec
- Licence
- MIT License (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE.md)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Anthony Fu.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download pnpm.zip