--- name: "source-command-release" description: "Review and merge the release-plz release PR with explicit user confirmation" --- # source-command-release Use this skill when the user asks to run the migrated source command `release`. ## Command Template # Release Releases are driven by **release-plz** (`release-plz.toml` + `.github/workflows/release-plz.yml`). On every push to main it maintains a `chore: release vX.Y.Z` PR with the version bump and CHANGELOG update derived from conventional commits. **Merging that PR ships the release** — release-plz pushes the `vX.Y.Z` tag, which triggers `release.yml` (static binaries, GitHub release, crates.io, Docker) and `flakehub-publish-tagged.yml`. This command walks that flow safely. Never merge the release PR without explicit user confirmation — it is an outward-facing, hard-to-reverse action. ## Phase 1: Locate the release PR ```bash gh pr list --repo utensils/nxv --search "chore: release in:title" --state open ``` If none exists, check whether main has unreleased conventional commits since the last tag (`git log $(git describe --tags --abbrev=0)..origin/main --oneline`). If there are releasable commits but no PR, check the latest `Release-plz` workflow run for errors (`gh run list --workflow release-plz.yml`). ## Phase 2: Review what will ship 1. Show the PR's version bump (Cargo.toml diff) and CHANGELOG addition. 2. Verify the version follows the project convention: `feat:` commits bump the 0.x minor (`features_always_increment_minor = true`), fixes bump patch. 3. If the version or changelog is wrong, edit the release PR directly (it is a normal editable PR) — release-plz preserves manual edits unless new commits land on main. ## Phase 3: Pre-flight 1. All CI checks on the release PR must be green. If checks show "Expected / Waiting", the App token is misconfigured — see `release-plz.yml` comments. 2. Confirm no other PR is about to land that should be in this release. ## Phase 4: Confirm and merge Present a summary (version, commit list, changelog) and require the user to confirm with the explicit version number (AskUserQuestion). Then: ```bash gh pr merge --repo utensils/nxv --squash ``` ## Phase 5: Monitor 1. The `Release-plz` workflow on main pushes the tag. 2. The `Release` workflow builds binaries and publishes — monitor with `gh run list --workflow release.yml` / `gh run watch`. 3. Verify the GitHub release has all four binaries + SHA256SUMS.txt, crates.io has the new version, and ghcr.io has the version tag. ## Manual escape hatches - Tagging failed after the release PR merged: re-run the `Release-plz` workflow on main (it is idempotent — existing tags are the gate). - The old fully-manual flow (bump Cargo.toml, edit CHANGELOG, tag by hand) still works in emergencies but must match release-plz's expectations (tag `vX.Y.Z`, CHANGELOG section `## [X.Y.Z] - YYYY-MM-DD`).