Cut a new semver release — bump all version strings via bump-version.ts, open a release PR, and after merge tag main and push. Use when cutting a release, tagging a version, shipping a build, or preparing a deployment. Trigger keywords - cut tag, release tag, new tag, cut release, tag version, ship it.
Bump all version strings, open a release PR, and after merge create annotated semver + latest tags on origin/main.
This skill delegates the version-bump work to scripts/bump-version.ts (invoked via npm run bump:version). That script updates package.json (root + plugin), blueprint.yaml, installer defaults, docs config, and versioned doc links — then runs the build and tests before opening a PR.
origin (NVIDIA/NemoClaw).Fetch all tags and find the latest semver tag:
git fetch origin --tags
git tag --sort=-v:refname | grep -E '^v[0-9]+\.[0-9]+\.[0-9]+$' | head -1
Parse the major, minor, and patch components from this tag.
Present the options with the patch bump as default:
vX.Y.(Z+1) — bug fixes, small changesvX.(Y+1).0 — new features, larger changesv(X+1).0.0 — breaking changesShow the concrete version strings. Example prompt:
Current tag:
v0.0.2Which version bump?
- Patch →
v0.0.3(default)- Minor →
v0.1.0- Major →
v1.0.0
Wait for the user to confirm before proceeding. If they just say "yes", "go", "do it", or similar, use the patch default.
Show the user the commit that will be tagged and the changelog since the last tag:
git log --oneline origin/main -1
git log --oneline <previous-tag>..origin/main
Ask for confirmation before proceeding.
First, preview the plan with --dry-run:
npm run bump:version -- <version-without-v-prefix> --dry-run
Show the dry-run output to the user. After confirmation, ask the user which mode they want:
npm run bump:version -- <version-without-v-prefix>
This will:
release/<version> branch and open a release PR against mainIn PR mode, tagging is deferred — proceed to Step 5 after the PR merges.
npm run bump:version -- <version-without-v-prefix> --no-create-pr --push
This will:
mainv<version> and latest tagsIn direct mode, tagging and pushing are handled by the script — skip to Step 6.
If the user wants to skip tests (e.g., they already ran them), add --skip-tests to either mode.
Skip this step if you used direct mode in Step 4 — the script already tagged and pushed.
Once the release PR is merged into main, create the annotated tag, move latest, and push:
git fetch origin main --tags
git tag -a <new-version> origin/main -m "<new-version>"
# Move the latest tag (delete old, create new)
git tag -d latest 2>/dev/null || true
git tag -a latest origin/main -m "latest"
# Push both tags (force-push latest since it moves)
git push origin <new-version>
git push origin latest --force
git ls-remote --tags origin | grep -E '(<new-version>|latest)'
Confirm both tags point to the same commit on the remote.
origin/main.-a), not lightweight tags.latest tag is a floating tag that always points to the most recent release — it requires --force to push.npm run bump:version should NOT have a v prefix (e.g., 0.0.3, not v0.0.3). The script adds the v prefix for tags internally.