cut-releaselisted
Install: claude install-skill svyatov/agent-toolkit
# Cut Release
Branch and status: !`git status --short --branch`
Last tags: !`git tag --sort=-v:refname | head -5`
Release workflows: !`ls .github/workflows 2>/dev/null || true`
A release bot in those workflows (release-please, changesets) owns the bump, the changelog, the tag,
and the release. Its open PR is the release: list PRs with
`gh pr list --json number,title,headRefName,url` and take the one whose head starts
`release-please--` or `changeset-release/`. Run only Steps 5.2, 5.3, 6.3, and 7 on it. The invocation is
the go-ahead to merge. With no open bot PR, nothing is releasable yet: say so and stop.
Take everything under the Unreleased heading (`## Unreleased` or `## [Unreleased]`) in
CHANGELOG.md to a tagged release. Version override: $ARGUMENTS.
## Step 1: Preconditions
Stop and say which one fails:
- The working tree is clean and you are on the default branch, up to date with its upstream
(`git pull` first).
- The Unreleased section in CHANGELOG.md has at least one entry.
- The last tag matches the version the project's version file carries. A mismatch means someone
released by hand; ask before continuing.
## Step 2: Pick the version
Empty argument: derive it from the Unreleased entries with the `oss-changelog` skill's rules. A
breaking change or a `Removed` entry on a public API means major; a new feature means minor;
fixes only means patch. Pre-1.0 projects: breaking goes to minor, everything else to patch. State
the bump and the reason in one line bef