change-package-manager
Skill0 starsChanged 3 months agoMITView on GitHub
Switch the project's package manager between npm, bun, and pnpm. Updates all config, scripts, documentation, CI workflows, and AI instructions. Use when initializing from template or switching package managers.
- Installs packages
1 other project uses a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- dannysmith/tauri-templateedited, first seen Oct 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- dannysmith/tauri-template★ 31299% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository12 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- ai-image-generationSkill
- change-package-managerSkill
- checkSkill
- cleanupSkill
- initSkill
- sync-designSkill
- checkSkill
- cleanupSkill
- initSkill
- sync-designSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
17 rules. About 0 are common, 6 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 11
If $ARGUMENTS is not exactly bun, pnpm, or npm, ask the user which package manager they want.
- Very specific: line 34
Read package.json. Replace the current PM's run command with the target PM's in all script values.
- Very specific: line 38
Read src-tauri/tauri.conf.json.
- Very specific: line 42
Read .github/workflows/release.yml and apply the appropriate pattern:
- Very specific: line 55
Add a step before Setup Node.js:
- Very specific: line 65
Ensure standard actions/setup-node@v4 with cache: 'npm'
- Very specific: line 66
Ensure npm ci for install step
- Distinctive: line 67
Remove any pnpm/bun setup steps
- Very specific: line 71
Delete the old lock file (whichever of package-lock.json, bun.lock, pnpm-lock.yaml exists)
- Distinctive: line 72
Run the target PM's install command to generate the new lock file
- Distinctive: line 76
Update these files, replacing PM commands contextually:
- Very specific: line 78
AGENTS.md: Update rule 0 (the "Use npm only" line) to reflect the new PM. - Very specific: line 82
.claude/settings.local.json: Update Bash(npm ...) permission patterns to use the new PM (e.g. - Distinctive: line 86
Use Grep to find all remaining references to the old PM across the codebase.
- Very specific: line 94
All files under docs/developer/
- Distinctive: line 99
Run a final search for any remaining references to the old PM:
- Distinctive: line 113
If the target PM is already in use, inform the user and stop
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Switch this project's package manager to $ARGUMENTS.
If $ARGUMENTS is not exactly bun, pnpm, or npm, ask the user which package manager they want.
Command Mapping Reference
Detect the current package manager from AGENTS.md or package.json scripts. Use this table for all replacements:
| Context | npm | bun | pnpm |
| Install deps | npm install | bun install | pnpm install |
| Run script | npm run X | bun run X | pnpm run X |
| CI frozen install | npm ci | bun install --frozen-lockfile | pnpm install --frozen-lockfile |
| Add dep | npm install pkg | bun add pkg | pnpm add pkg |
| Add dev dep | npm install -D pkg | bun add -D pkg | pnpm add -D pkg |
| Remove dep | npm uninstall pkg | bun remove pkg | pnpm remove pkg |
| Audit | npm audit | bun audit | pnpm audit |
| Global install | npm install -g pkg | bun install -g pkg | pnpm add -g pkg |
| Execute binary | npx | bunx | pnpm dlx |
| Lock file | package-lock.json | bun.lock | pnpm-lock.yaml |
Step 1: Functional Config
package.json scripts
Read package.json. Replace the current PM's run command with the target PM's in all script values. For example, npm run typecheck becomes bun run typecheck.
tauri.conf.json
Read src-tauri/tauri.conf.json. Update beforeDevCommand and beforeBuildCommand.
GitHub Actions CI
Read .github/workflows/release.yml and apply the appropriate pattern:
Target: bun
- Replace the
Setup Node.jsstep with:- name: Setup Bun uses: oven-sh/setup-bun@v2 - Replace
npm ciwithbun install --frozen-lockfile
Target: pnpm
- Add a step before
Setup Node.js:- name: Setup pnpm uses: pnpm/action-setup@v4 - Change
cache: 'npm'tocache: 'pnpm'in the setup-node step - Replace
npm ciwithpnpm install --frozen-lockfile
Target: npm
- Ensure standard
actions/setup-node@v4withcache: 'npm' - Ensure
npm cifor install step - Remove any pnpm/bun setup steps
Step 2: Lock File
- Delete the old lock file (whichever of
package-lock.json,bun.lock,pnpm-lock.yamlexists) - Run the target PM's install command to generate the new lock file
Step 3: AI Instructions & Claude Config
Update these files, replacing PM commands contextually:
AGENTS.md: Update rule 0 (the "Use npm only" line) to reflect the new PM. For example:0. **Use bun only**: This project uses \bun`, NOT `npm`. Always use `bun install`, `bun run`, etc.`.claude/skills/init/SKILL.md: Replace PM commands in verification/next-steps sections.claude/skills/check/SKILL.md: Replace PM commands.claude/agents/cleanup-analyzer.md: Replace PM commands.claude/settings.local.json: UpdateBash(npm ...)permission patterns to use the new PM (e.g.Bash(bun run format:*))
Step 4: Documentation
Use Grep to find all remaining references to the old PM across the codebase. Update every documentation file, making sentences read naturally — don't do blind find-replace on prose.
Key files to check:
README.mddocs/USING_THIS_TEMPLATE.mddocs/CONTRIBUTING.mddocs/SECURITY.md- All files under
docs/developer/ scripts/prepare-release.js(help text)
Step 5: Verify
Run a final search for any remaining references to the old PM:
grep -rn "OLD_PM_NAME" --include="*.md" --include="*.json" --include="*.yml" --include="*.js" --include="*.ts" . | grep -v node_modules | grep -v ".lock"Review any remaining hits — some are intentional (.gitignore entries, .cursorignore patterns listing all PM artifacts).
Important Rules
- Do NOT change
.gitignoreor.cursorignore— these intentionally list artifacts for all PMs - Do NOT change references to
node_modules/— all three PMs use this directory - Preserve natural prose in docs — make sentences read correctly, don't just swap words
- npx →
bunx(bun) orpnpm dlx(pnpm) - If the target PM is already in use, inform the user and stop
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

