← ClaudeAtlas

releaselisted

Cut a release for a shipmate-configured repo — classify the SemVer bump, author the curated changelog, run guards, and after one human checkpoint tag and publish. Use when releasing, cutting a version, shipping a release, or running shipmate release. Supports --no-pr, --dry-run, --bump, and security-review flags.
sofiane-git/shipmate · ★ 0 · Code & Development · score 72
Install: claude install-skill sofiane-git/shipmate
# shipmate:release — cut a release (state machine) Requires `.shipmate.json` (run `shipmate:init` first). Run states in order. Scripts are at `${CLAUDE_PLUGIN_ROOT}/scripts/`. Never perform an irreversible action (tag/push-tag/ release) before the CHECKPOINT go. ## State 1 — PRE-FLIGHT (all guards must pass; nothing written yet) Run, in order, aborting on the first failure: 1. `check-preconditions.sh <remote>` — clean tree, up to date, gh auth, remote reachable. 2. For each tagged contract: `render-tag.sh` then `check-tag-unpushed.sh <remote> <tag>`. 3. `verify-remote.sh <remote>`. 4. `version-sync-check.sh .shipmate.json`. ## State 2 — PLAN (no writes) - Determine the diff since the **primaryContract**'s last tag. **If no tag exists yet (a repo's first-ever release), fall back to the diff from the repository's initial commit** (`git rev-list --max-parents=0 HEAD`) — i.e. the whole history. The curated `[Unreleased]` section drives the notes either way. This is NOT the shipmate chicken/egg (§7 of the design): any consuming repo's first release works because shipmate is already installed; it just has no prior tag to diff from. - Classify the SemVer bump **per contract** using documented nuance (e.g. tightening an already-documented contract = PATCH, not MAJOR). Skip `bumpFrom: "manual"` contracts unless `--bump <name>` was passed. Present the proposed version(s) + reasoning. - Author/finalize the curated `CHANGELOG.md [Unreleased]` content (the *why*, not just