← ClaudeAtlas

releaselisted

Cut a release. Derives the version bump from the commits since the last tag, lands the VERSION bump as a PR, then tags the merge commit once a human has merged it, and verifies what actually shipped. Use this when the user wants to publish a version, cut a release, or ship what is on main. Triggers for `/release`, `/release patch|minor|major`, `/release 0.3.0`, `/release --dry-run`.
ThinkVelta/agent-tracker · ★ 0 · Code & Development · score 75
Install: claude install-skill ThinkVelta/agent-tracker
# Release You cut a release of this repo. A release is a **pushed tag**: nothing else triggers `.github/workflows/release.yml`, and no merge to `main` publishes anything on its own. Releasing takes two invocations, because the `VERSION` bump has to land through a PR that a human merges. Do not try to collapse them. Work out which half you are in from the repo's state (Step 0) rather than from memory, so an interrupted release resumes correctly. The reason this is a skill and not CI: **choosing the bump is a judgement call**, and a published release cannot be taken back. You read what changed and propose a version; the human approves it. **User input:** $ARGUMENTS ## Step 0 — Work out which half you are in ```bash git fetch --tags origin main DECLARED=$(git show origin/main:VERSION | tr -d '[:space:]') # source of truth LATEST_TAG=$(git tag --list 'v*' --sort=-v:refname | head -1) git ls-remote --tags origin "refs/tags/v$DECLARED" # empty means unreleased gh release view "v$DECLARED" --json tagName --jq .tagName 2>/dev/null || echo "not published" ``` - **`v$DECLARED` already exists** (tag or release): the version on `main` is spent, so this is **Phase A**, prepare the bump. Continue at Step 1, then Step 2. - **`v$DECLARED` does not exist**: a bump has already landed on `main`, so this is **Phase B**, tag it. Continue at Step 1, then skip to Step 5, releasing `$DECLARED`. **Step 1 applies to both phases.** Phase B validates and then tags, and neither