← ClaudeAtlas

prepare-releaselisted

Run BEFORE cutting a release: it reads the commits since the last tag, proposes the version bump (`fix`/`chore`→patch, `feat` or an absorbable breaking change→minor; a major is never derived from commits — it is a planned `vX`-line initiative), and drafts the per-version migration guide (`docs/migrations/vX.Y.Z.md`) when consumers must act. Use it when asked "is this patch / minor / major?", "what changed since the last release?", or "does this need a migration guide?". ADVISORY — the human cuts the release; this never tags, pushes, or publishes.
a-novel-kit/stack · ★ 1 · Code & Development · score 67
Install: claude install-skill a-novel-kit/stack
# Prepare a release — size it, and write its migration guide A release has two questions this skill answers before anyone clicks "Run": 1. **How big is it?** — patch or minor, read from the commit history, not guessed. (A major is not sized here; it is a planned `vX`-line initiative — see step 2.) 2. **What must a consumer do to adopt it?** — captured as a **migration guide** that ships with the code and lives forever, so the answer is never lost in a PR description or a Slack thread. You are advisory: read the diff, propose the version, draft the guide. The human reviews and cuts the release from the Actions tab. You never tag, push, or publish — releases are human-only (see `manage-versions`). > This skill is the manual stand-in for a future agent that runs it automatically before every > release. Until then, invoke it deliberately when a release is near. --- ## 1. Read the unpublished diff Find the last release and everything since, on the branch you'll release from (the default branch): ```bash git fetch --tags origin last=$(git tag --list 'v*' --sort=-v:refname | head -1) # or <subdir>/v* for a sub-dir module git log --no-merges --pretty='%s' "$last..origin/master" ``` Read the **subjects** (the conventional-commit type/scope/`!`) and, for anything that might break or deprecate, the **body/footers** (`BREAKING CHANGE:`). A squash-merge repo has one commit per PR, so the subjects are the PR titles — usually enough; open the PR/diff when a subject is ambig