Skip to content

/wbRelease — Exhaustive Simulation () ​

/wbRelease is the release engineer. Its job is monorepo-wide version coordination — bumping versions across packages that depend on each other, generating changelogs, creating git tags, and producing the release commit. It does not publish to npm (that's /wbPublish), does not deploy apps (that's /wbDeploy). It coordinates the version state of the repository.

Read this if you want to know how the four flags compose, why --restore exists, and where release coordination ends and the actual ship operations begin.


1. Role & target ​

AspectBehavior
RoleThe Release Engineer — version coordination across packages.
TargetThe whole monorepo (default), or a specific package via free-text/path.
Cell scopeNone directly.
Side effects allowedEditing package.json files (version bumps); generating CHANGELOG.md entries; creating git tags (via /wbGit -A chaining or direct git invocation under explicit user gate); producing release notes.
Side effects forbiddenPublishing to npm; deploying apps; modifying source code beyond version fields; running tests (that's /wbTest).

The "doesn't publish, doesn't deploy" rule is what keeps the seam clean. The full release flow is: /wbRelease (versions + tags) → /wbPublish (npm) → /wbDeploy (apps). Three commands, three concerns, three checkpoints. Compressing them into one command is tempting but loses the per-step rollback story.


2. Argument resolution matrix ​

FormExampleWhat /wbRelease does
No argumentCommand: /wbReleaseCoordinates a release across all packages with changes since the last release.
Specific packageCommand: /wbRelease core2/packages/wb-coreReleases just one package. Cascades version bumps to dependents.
--restoreCommand: /wbRelease --restoreReverts the most recent in-progress release if it was halted partway (uncommitted version bumps, half-tagged state).

3. Flag matrix ​

FlagShortcutPurpose
--dry-run-dPlans the release; doesn't write. Reports what versions would bump, what changelog entries would be added, what tags would be created.
--prerelease-pReleases as 1.2.3-beta.0 (or -rc, -alpha) instead of 1.2.3. Useful for pre-release stabilization.
--restore-rRecover from a halted in-progress release. Reverts version bumps and any partial tags.
--tag="<name>"-tCustom tag name override (default: v<version>). Rare; for projects with non-standard tag conventions.

How the four flags compose ​

CombinationResult
--dry-run aloneFull report, no writes.
--prerelease alonePre-release version bump committed + tagged.
--prerelease --dry-runPre-release planned, no writes.
--restore aloneRecovery; not a normal release shape.
--tag="custom"Override tag name only; everything else normal.

--restore is incompatible with the others. If --restore is present, the agent ignores -d/-p/-t and runs recovery mode.


4. Pipelines (the agent-native scenarios) ​

📋/wbRelease Exhaustive Simulation
The dry-run first (always)/wbRelease --dry-run
> /wbRelease --dry-run
[SYSTEM] Dry run — no writes will occur.
[SCAN] Reading package.json files across core2/packages/...
[SCAN] Reading git log since last tag (v1.2.0)...
[ANALYSIS] Changes since v1.2.0:
- core2/packages/wb-core: 12 commits (3 feat, 5 fix, 4 chore).
Recommended bump: minor. v1.2.0 → v1.3.0.
- core2/packages/wb-dataviewer: 3 commits (1 fix, 2 chore).
Recommended bump: patch. v1.2.0 → v1.2.1.
- core2/packages/wbc-ui2-cdn: 0 commits since v1.2.0.
No release needed.
- core2/packages/wbc-ui2: 1 commit (1 chore).
Recommended bump: none (chore-only changes don't trigger release).
[CASCADE] wb-core version bump propagates to:
- wb-dataviewer (depends on wb-core via @wbc-ui2/wb-core ^1.2.0)
No additional bump needed; semver-compatible.
[CHANGELOG PREVIEW]
## v1.3.0 (wb-core)
### Features
- Add JWT handshake with alg denylist (commit a1b2c3d)
- Add escape pass for renderString (commit b2c3d4e)
- <feat 3>
### Fixes
- <5 fixes>
## v1.2.1 (wb-dataviewer)
### Fixes
- <1 fix>
[TAG PREVIEW] Would create tags: wb-core@v1.3.0, wb-dataviewer@v1.2.1
[NO WRITES] Dry-run complete. Run without --dry-run to actually release.

💠 Pipeline The dry-run first (always) ​

💠 Pipeline The actual release ​

💠 Pipeline The pre-release ​

💠 Pipeline The --restore recovery ​

A /wbRelease run was interrupted (Ctrl-C, network error, terminal closed) after some package.json edits but before tagging. The state is messy. --restore undoes it:


5. Edge cases & refusals ​

TriggerWhat /wbRelease does
Working tree dirtyHalt. Releases require a clean tree.
Not on main branchHalt.
--restore with no in-progress stateHonest "nothing to restore." Exit 0.
Conflict between --restore and other flags--restore wins; others ignored with notice.
No commits since last tagHalt — nothing to release.
All commits are chore-onlyHalt — chore-only commits don't trigger release. Suggests --prerelease if explicitly desired.
Cross-package dependency cycle (rare)Halt. The version cascade can't resolve cycles deterministically.
--tag="<name>" that already existsHalt — won't overwrite tags.
/wbRelease while another release is in progress (mid-run elsewhere)Halt — single-release-at-a-time.

The pattern: /wbRelease is version coordination, not shipping. It refuses dirty trees, refuses to push tags or publish, treats --restore as a recovery primitive, and stays narrow on its responsibility (versions + tags + changelog). The full ship flow is /wbRelease → /wbPublish → /wbDeploy — each command its own gate, each its own concern.