Submit an issue View all issues Source
MIR-777

Consolidate release workflow into skill and remove hack/release.sh

Done public
phinze phinze Opened Mar 10, 2026 Updated Mar 11, 2026

Context

The current release process has two PRs and two CI waits:

  1. Changelog catchup PR (write entries to Unreleased section, wait for CI, merge)
  2. Release PR via hack/release.sh (stamps version + date on changelog, wait for CI, merge)

The release script does mechanical work (sed on changelog, branch, commit, push, gh pr create) that the release skill already understands how to do. Combining these into a single PR saves ~5 min of CI wait per release.

Proposal

Move the release script's logic into the release skill so it can do changelog content + version stamp as two commits on one branch/PR:

  1. Skill gathers PRs, drafts changelog, iterates with user (unchanged)
  2. Skill creates release/vX.Y.Z branch
  3. Commit 1: changelog entries in Unreleased section
  4. Commit 2: stamp version + date (what hack/release.sh does today)
  5. Push, create PR — one CI wait
  6. Merge, then tag with hack/release-tag.sh

Keep all the safety checks from hack/release.sh:

  • Version format validation (v<major>.<minor>.<patch>)
  • Must be on main, clean working tree, up to date with origin
  • Tag doesn't already exist
  • Changelog has Unreleased section
  • Add new check: Unreleased section has actual content (not just the header)

Remove hack/release.sh once the skill handles this flow.

Keep hack/release-tag.sh — tagging is a distinct step that triggers the GHA workflow.

Also update the skill for

  • Use --yes flag on hack/release-tag.sh (added in #626)
  • Correct docs domain: miren.md not miren.dev
  • Correct changelog anchor format: #v050 not #v0.5.0