publish-npm-version
Cuts the next release of the unified Prisma CLI: bumps the root package.json version (on the Prisma 8 RC line: 8.0.0-rc.N → rc.N+1), propagates it to every lockstep workspace package, and opens a PR titled "chore(release): bump to <next-version>". When the maintainer merges the PR, the `Publish to npm` workflow ships @prisma/cli-engine and @prisma/cli under dist-tag `latest` (RC versions get a pre-release GitHub Release). Use when a maintainer asks to "cut the next RC", "cut the next release", "bump to the next version", "open a release PR", or "prepare a publish PR".
Publish next npm version
Audience
Maintainers of the unified Prisma CLI with permission to push branches and open PRs in prisma/prisma-cli. The skill runs locally, never as a GitHub Action — a locally opened PR triggers CI normally, which is the point of a reviewable release PR.
Background reading
Read docs/oss/versioning.md first. It
covers the source-of-truth model (root package.json version), the
lockstep guarantee (@prisma/compute excluded by ruling), the Prisma 8 RC
line, the dist-tag convention, and the release procedure this skill is
one step of. One note specific to this
repo: the lockstep excludes @prisma/compute by operator ruling.
Pre-flight
No requirement to be on main or have a clean tree — all work happens
in a fresh worktree off origin/main. Confirm git fetch origin main
succeeds; if not, stop and surface the issue.
Procedure
-
Fetch and determine the target version.
git fetch origin main CURRENT=$(git show origin/main:package.json | node -e 'process.stdout.write(JSON.parse(require("fs").readFileSync(0,"utf8")).version)') NEXT=$(node -e "import('./scripts/determine-version-utils.ts').then(m => process.stdout.write(m.computeNextReleaseVersion(process.argv[1])))" "$CURRENT") echo "$CURRENT → $NEXT"$NEXTnames the branch and PR; step 3 recomputes the authoritative value inside the fresh worktree and the two must agree. -
Create a fresh worktree off
origin/main.git worktree add -b "release/$NEXT" "../release-$NEXT" origin/main cd "../release-$NEXT" -
Bump.
pnpm install --frozen-lockfile --ignore-scriptsif the worktree has nonode_modules, thenpnpm bump-version. Confirm the version it wrote matches$NEXT; on mismatch the worktree's value is authoritative — remove worktree and branch, restart from step 1. -
Check the lockfile moved.
pnpm bump-versionrefreshespnpm-lock.yamlitself, because internal deps are pinnedworkspace:<version>and a stale lockfile fails every later frozen install withERR_PNPM_OUTDATED_LOCKFILE. If it is missing from the diff, stop — the bump did not finish. -
Sanity-check the diff. Only
package.jsonfiles andpnpm-lock.yaml; manifests change exactlyversion+workspace:<old> → workspace:<new>; the excludedpackages/compute/package.jsonis untouched. -
Commit everything in one commit:
chore(release): bump to <version> -
Push the branch to
origin. -
Open the PR with
gh pr create. Use the title:Bump to version <version>Body: previous → new version; link
docs/oss/versioning.md; note that merging this PR ships the release — the squashed push tomainchanges the root version with the release marker, thePublish to npmworkflow publishes@prisma/cli-enginethen@prisma/cliunderlatest, and a GitHub Release (pre-release on the RC line) is created with generated notes. This repo has no committed release-notes file gate; review the generated notes on the Release after merge. -
Stop and report the PR URL and the worktree path. Do not merge — the merge is the human gate that triggers the publish. The maintainer removes the worktree after merge (
git worktree remove ../release-<version>).
Idempotency
pnpm bump-version reads the root version from git show HEAD:package.json, so re-running in the same worktree cannot
double-bump. The skill as a whole is not idempotent: step 2 fails if
the branch/worktree already exist — remove them
(git worktree remove ../release-$NEXT; git branch -D release/$NEXT) or continue inside the existing worktree from step 3.
Do not stack bumps.
Out of scope
- Merging the PR (human gate; merging is the publish trigger).
- Patch releases. On the RC line a fix is just the next
rc.N. - Beta tags — hand-cut via
workflow_dispatchofPublish to npmwith thebetadist-tag; this skill always advances the release version. @prisma/compute— excluded from the lockstep by operator ruling (2026-08-10); it versions and publishes independently (publish-compute.yml) pending extraction to another repo.
prisma/prisma-cli · Apache-2.0 · Revision e93d6e7df430
Be the first to comment
Share what worked or leave a question for the creator.