release-candidate-prep
Installation
SKILL.md
Release Candidate Preparation
Use this skill only when the user explicitly invokes $release-candidate-prep and supplies a release version without a leading v, for example VERSION=0.20.1. This skill replaces the removed GitHub Actions release-PR creator with a reviewed local workflow.
Non-negotiable boundaries
- Treat explicit invocation as authorization to fetch
origin/main, create one dedicated detached release worktree, run branch-free release-readiness gates there, create or replace the localrelease/v<version>in that worktree only after those gates pass, update the three release-owned files, and create one local commit. If the branch already exists locally or remotely, the required final local state is still exact currentorigin/mainplus only the new release commit; an existing local branch may be replaced only when it is not checked out in another worktree. - Keep the user's source checkout on its existing clean
maincommit. Do not fast-forward it, switch its branch, or materialize release files there. Leave the dedicated release worktree in place for green handoff, blocked review, or recoverable failure. - Never push, open or edit a pull request, add labels or milestones, create a release, or otherwise mutate GitHub. Never run
gh. - Own exactly
pyproject.toml,uv.lock, andtests/fixtures/released_api_contract.json. Runtime, documentation, workflow, or other repository changes must land onmainbefore release preparation. - Do not stash, delete, overwrite or remove an existing worktree, or work around unrelated local changes. Fail before branch creation when the initial checkout is dirty or is not on
main, the dedicated worktree is not clean and detached at refreshedorigin/main, an existing local release branch is checked out in another worktree, the prospective packaged-contract gate fails after the allowed dependency-bootstrap recovery, the planning review blocks, ororigin/mainadvances after those gates run. - Treat
$final-release-reviewas the controlling release checker, not only as a report generator. Its planning gate must be green before branch creation, and its final-candidate gate must inspect the materialized worktree and be green before PR-ready handoff. Any candidate content, commit, or base change invalidates the previous green result. - Remove inherited
OPENAI_API_KEYfrom every child command. Release preparation does not require a live OpenAI API request. - Stop after the local commit, final release review, and copy-ready handoff. The user owns the push and pull-request creation.
1. Establish the release input
Require one semver-like version without a leading v. Do not infer a version from milestones, branch names, or local modifications. Announce that the skill will create and retain a dedicated release worktree with one local commit, keep the source checkout unchanged, and not write to GitHub.