bump-release
paulrberg/agent-skills
Automate release versioning, changelogs, commits, and tags for single and monorepo packages.
What is bump-release?
Bump Release automates the full release workflow: version bumping, changelog generation, git commits, and semantic version tagging. Use it to cut regular or beta releases, handle monorepo dependency cascades, and preview changes with dry-run mode.
- Bump semantic versions (patch, minor, major) or apply explicit versions
- Generate changelog entries from scoped diffs, excluding tests and dev tooling
- Create annotated git tags and commits following repo conventions
- Handle monorepo workspaces with automatic dependent package cascading
- Support beta prerelease workflows with `-beta.X` versioning
- Preview releases with `--dry-run` before making any changes
How to install bump-release
npx skills add https://github.com/paulrberg/agent-skills --skill bump-release- Git repository with clean working tree
- Root `package.json` with version field
- For monorepos: workspace configuration (pnpm, npm, or Bun style)
How to use bump-release
- 1.Run the planner script to discover packages, previous tags, and changed files
- 2.Review the planner output to confirm package selection and version strategy
- 3.Confirm inferred versions when prompted (or supply explicit `--version` for single package)
- 4.For monorepos, verify dependency cascade updates are correct
- 5.Run the release (or `--dry-run` to preview) to bump versions, update changelogs, commit, and tag
- 6.Verify formatting is applied via `justfile` recipe or repo formatter
Use cases
- Cut a production release across a monorepo, automatically updating dependent package ranges
- Generate a beta prerelease to test breaking changes before stable release
- Bump a single-package repo with changelog and tag in one command
- Preview a multi-package release plan to confirm versions before committing
- Advance a beta version from `-beta.1` to `-beta.2` without changelog updates
- Release engineers managing monorepo or single-package projects
- Developers automating CI/CD release pipelines
- Maintainers following semantic versioning and conventional commits
- Teams using pnpm, npm, or Bun workspaces
bump-release FAQ
Yes. In a monorepo, list package names or directories as arguments (e.g., `/bump-release evm evm-safe`). The tool automatically cascades dependent packages if their version ranges need updating.
Use `--dry-run` to print the release plan, version changes, changelog actions, and dependency updates without modifying files or creating commits.
Use `--beta` to create or advance a prerelease. From stable `1.2.3`, it becomes `1.2.4-beta.1`. From `1.2.3-beta.1`, it becomes `1.2.3-beta.2`. Beta releases skip changelog updates.
The tool stops and shows git status. Commit or stash unrelated changes first; the tool will not invoke the commit skill on dirty trees unless you explicitly ask.
The tool diffs scoped files against the previous tag, includes only production-impacting changes (excluding tests, CI, devDependencies), and groups them into categories: Changed, Added, Removed, Fixed.
Full instructions (SKILL.md)
Source of truth, from paulrberg/agent-skills.
argument-hint: '[packages...] [version] [--beta] [--dry-run]' disable-model-invocation: false effort: high model: opus name: bump-release user-invocable: true description: 'Use for release versioning: bump/cut/tag a release, bump version, create a release, changelog updates, or version tagging.'
Bump Release
Release one package or several packages with version bumps, changelog entries, commits, and tags. Supports single-package repos, workspace monorepos, regular releases, beta releases, and dry runs.
Arguments
packages: Optional monorepo package names or directories, such asevmorevm-safe. Omit in single-package repos.version: Optional explicit semver, such as2.0.0. Only valid for one target package.--beta: Create or advance a-beta.Xprerelease.--dry-run: Preview the release plan without modifying files, committing, or tagging.
Fast Planner
Run the bundled planner before manual inspection. It is read-only and gives one JSON fact base for package discovery, previous tags, scoped changed files, dependency edges, and dirty-tree status. In pnpm workspaces, it uses pnpm list -r --depth -1 --json when available and falls back to local workspace-glob discovery. Bun and npm-style package.json workspaces use the local glob discovery, including negative workspace patterns.
Resolve <skill-dir> from the loaded SKILL.md path:
node "<skill-dir>/scripts/plan-release.mjs" [--cwd <repo>] [--beta] [--dry-run] [--version <semver>] [--package <name-or-dir>]...
Map user arguments directly:
- Pass every package selector as
--package <selector>. - Pass an explicit version as
--version <semver>. - Pass
--betaand--dry-runwhen requested.
If the helper exits 2, stop: the cwd is not a git repo or has no root package.json. If it exits 64, read the JSON errors when present, report the invalid arguments, and stop.
Workflow
- Run the planner - Use the JSON output as the source of truth for
mode,packages,targets,previousTags,changedFiles,includedFiles,excludedFiles,dependencyEdges,needsSelection, andworkingTree. - Require a clean tree - If
workingTree.cleanis false, stop and show the short status. Do not invoke thecommitskill or commit unrelated work unless the user explicitly asks. - Resolve targets - If
needsSelectionis true, ask the user which workspace packages to release. If package selectors are unknown or ambiguous, stop and ask for exact package names or directories. - Reject invalid version scope - If an explicit
versionwas supplied for more than one target package, stop. Explicit versions are single-package only. - Plan versions - Determine a candidate version for each target package:
- Explicit
version: use it as-is for a regular release; with--beta, append-beta.1unless it already has a prerelease suffix. - Beta from stable
1.2.3: use1.2.4-beta.1. - Beta from beta
1.2.3-beta.1: use1.2.3-beta.2. - Regular from beta
1.2.3-beta.5: use1.2.3. - Regular from stable: inspect relevant net changes and choose patch, minor, or major by Semantic Versioning.
- Explicit
- Skip no-op releases - For regular releases, if a target has no
includedFilesand no dependency-range cascade, report that there are no relevant release changes and do not bump it. - Cascade dependents - Use
dependencyEdgesto find workspace packages whosedependenciesorpeerDependenciespoint at bumped packages. Check ranges with a structured semver parser or package manager API when available, not ad hoc string comparison. If the new version is outside the declared range, update the range and add the dependent to the release plan. Treat dependency range widening as patch by default; treat peer dependency major changes as major unless the user confirms otherwise. - Confirm inferred versions - For non-dry-run regular releases without explicit versions, ask the user to confirm inferred versions. For multi-package releases, include requested packages and cascaded dependents in the same release-plan confirmation when the agent UI allows it.
- Preview dry runs - For
--dry-run, print the package order, current versions, planned versions, changelog/tag/commit actions, dependency range updates, and skipped files. Stop before edits. - Write changelogs - For regular releases only, read
references/common-changelog.mdafter the final package set is known. Use each target'sincludedFilesto bound diff inspection against itspreviousTags[package].tag. Include only production-impacting changes; forpackage.json, includedependenciesandpeerDependencieschanges only, notdevDependencies. - Edit release files - Update each target package's
CHANGELOG.mdandpackage.json. For beta releases, skipCHANGELOG.md. Update any cascaded dependent ranges before committing the dependent release. - Format once - After all release edits, run formatting once. If a
justfileexists, inspectjust --listand prefer the narrowest relevant write recipe; use broad recipes such asjust full-writeonly when no narrower established recipe covers the touched files. Without a suitable recipe, use the repo's established formatter commands or leave formatting unchanged. - Commit and tag in dependency order - Process dependencies before dependents. Use one commit and one annotated tag per package:
- Single-package commit:
docs: release <version> - Monorepo commit:
docs: release <package> <version> - Single-package tag:
v<version>unless existing tags use bare semver. - Monorepo tag: follow existing tag patterns from
previousTags; default to<package-dir>@<version>.
- Single-package commit:
Changelog Rules
Regular releases must generate entries in CHANGELOG.md following references/common-changelog.md.
- Use categories in this order:
Changed,Added,Removed,Fixed. - Start every entry with a present-tense imperative verb.
- Reference PRs when available; fall back to commit links.
- Merge related commits into one user-facing entry.
- Exclude tests, CI/CD, dev tooling, style-only churn, and
devDependencies. - If
package.jsonhas afilesfield, include only changes under those package files/directories, plus production dependency changes inpackage.json.
Beta releases do not update changelogs.
Script Reference
| Script | Purpose |
|---|---|
scripts/plan-release.mjs | Read-only release discovery and scoped diff facts |
Planner output fields to use:
packagesandtargets: package identity, directory, name, version,files, dependency names, and peer dependency names.previousTags: per-package previous release tag and tag patterns used.changedFiles,includedFiles,excludedFiles: scoped file lists for changelog and no-op decisions.dependencyEdges: workspace dependency and peer dependency relationships.workingTree: dirty-tree status that must be clean before release edits.needsSelectionanderrors: package-selection or argument problems to resolve before proceeding.
Examples
# Regular release
/bump-release
# Preview without writes
/bump-release --dry-run
# Beta release
/bump-release --beta
# Monorepo package release
/bump-release evm
# Multi-package monorepo release
/bump-release evm evm-safe
# Explicit single-package version
/bump-release 2.0.0
# Explicit beta version
/bump-release 2.0.0-beta.1
Version Examples
| Current Version | Release Type | New Version |
|---|---|---|
1.2.3 | Regular | 1.2.4 (patch) |
1.2.3 | Beta | 1.2.4-beta.1 |
1.2.3-beta.1 | Beta | 1.2.3-beta.2 |
1.2.3-beta.5 | Regular | 1.2.3 |
1.2.3 | 2.0.0 | 2.0.0 |
1.2.3 | 2.0.0 + Beta | 2.0.0-beta.1 |
Resources
references/common-changelog.md- Read only for regular releases after the final stable release package set is known.
Related skills
More from paulrberg/agent-skills and the wider catalog.

cli-gh
Automate GitHub operations from the command line: PRs, issues, workflows, and repo management.

code-polish
Polish recently changed code with simplification and risk-profiled review that autonomously applies fixes.

code-review
Find high-impact defects in code reviews, PRs, and diffs with evidence-based severity ranking.

code-simplify
Simplify and refactor code while preserving behavior, clarity, and maintainability.

effect-ts
Expert guidance for functional programming with Effect-TS, covering services, layers, typed errors, and runtime patterns.

md-docs
Initialize and update README.md and AGENTS.md documentation for Claude Code workflows.