bumpup-versions
Consistently bump and synchronize versions across all packages in the monorepo using pnpm. Use this to ensure the root and all workspace packages share the same version number.
SKILL.md
| Name | bumpup-versions |
| Description | Consistently bump and synchronize versions across all packages in the monorepo using pnpm. Use this to ensure the root and all workspace packages share the same version number. |
name: bumpup-versions description: Consistently bump and synchronize versions across all packages in the monorepo using pnpm. Use this to ensure the root and all workspace packages share the same version number.
Bumpup Versions Skill
This skill provides a standardized workflow to synchronize and increment version numbers across the entire monorepo (root and all packages) using native pnpm commands.
When to Use
- When preparing for a release that requires a unified version bump across all packages.
- When you notice version drift between the root
package.jsonand workspace packages. - When requested to "bump versions", "release a new version", or "sync package versions".
Instructions
1. Determine Target Version
Identify if you are performing a semantic bump (patch, minor, major) or setting an explicit version (e.g., 1.0.0).
2. Synchronize Workspace Packages
Run the version command recursively across all packages in the workspace using pnpm -r exec. The --no-git-tag-version flag prevents automatic git tagging and commits, and --allow-same-version ensures it doesn't fail if a package is already at the target version.
pnpm -r exec pnpm version <version_or_bump_type> --no-git-tag-version --allow-same-version
3. Update Root Version
Update the root package.json to match the workspace versions.
pnpm version <version_or_bump_type> --no-git-tag-version --allow-same-version
4. Update Lockfile and Internal References
Run pnpm install to ensure pnpm-lock.yaml is updated with the new versions and any internal workspace dependencies (using workspace:*) are correctly resolved.
pnpm install
5. Verify Changes
Check a sample of package.json files to ensure they all reflect the new version.
grep '"version":' package.json packages/*/package.json packages/plugins/*/package.json
Termination Criteria
- The
versionfield in the rootpackage.jsonmatches the target version. - The
versionfield in allpackages/**/package.jsonfiles matches the target version. pnpm-lock.yamlhas been updated and there are no linting/test regressions related to the version change.
Examples
Scenario: Performing a patch bump across the monorepo
- Agent: "I will bump the version to the next patch."
- Command:
pnpm -r exec pnpm version patch --no-git-tag-version --allow-same-version - Command:
pnpm version patch --no-git-tag-version --allow-same-version - Command:
pnpm install - Verification:
grep '"version":' package.json packages/*/package.json
Scenario: Setting an explicit version (e.g., 0.2.0)
- Agent: "Synchronizing all packages to version 0.2.0."
- Command:
pnpm -r exec pnpm version 0.2.0 --no-git-tag-version --allow-same-version - Command:
pnpm version 0.2.0 --no-git-tag-version --allow-same-version - Command:
pnpm install