/rota-release
Cut a release: checklist, version bump, notes, tag, publish.
Manual only: you type it, other skills never start it.
When to use
Use on “release”, “cut a release”, “tag a release”, “ship X.Y.Z”.
Reach for another skill when
- you are landing one branch, not tagging a release:
/rota-ship - you only need the public docs brought up to date:
/rota-docs
Checklist (.rota/RELEASE.md): all items pass. Commits since v0.25.0: 1 feature, 4 fixes. Recommend minor.
Release notes drafted for v0.26.0. Notes look good? Yes pushes the tag and publishes the release. (manual gate)
- version file and
CHANGELOG.mdupdated in achore: releasecommit - an annotated git tag, pushed after your yes
- a published GitHub or GitLab release
Flags and modes
major | minor | patch | <semver>- set the bump level instead of being asked
--dry-run- run the flow without tagging or publishing; skips the close-upstream-issues gate
Details
Cuts a release end to end: walks the project’s release checklist (.rota/RELEASE.md by default; override with release.checklistPath) as a preflight gate, bumps the project version (major/minor/patch or explicit semver), generates categorized release notes from commits since the last tag, prepends a section to CHANGELOG.md (creating it if absent), creates an annotated git tag, pushes commit and tag, and publishes a release on GitHub or GitLab when origin is set. It detects the version source (plugin.json, package.json, pyproject.toml, Cargo.toml, plain VERSION) and honors a release.versionFile override.
The checklist file is per-project and tracked by default; see release checklist for the format. When absent, the skill offers to scaffold a starter (under autonomy.level: off) or skips the gate silently (under auto). Items ending in (manual) always interject even in unattended modes.
After publishing, an always-manual gate offers to close any upstream GitHub/GitLab issues that landed in the release but are still open. It covers the direct-push path where work skipped /rota-ship (or chose “leave open”) and the linked issues never closed. Candidates come from rota issues imported --open-only; the gate is silent when nothing is open. Skipped entirely in --dry-run mode.