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 is the manual fallback for the GitHub Actions release workflow. Ordinary bot releases use .github/workflows/release-candidate.yml; do not invoke this local worktree procedure inside Actions.
For normal Release Please releases, use $final-release-review <release PR URL> instead.
Do not create a manual candidate to review or finish the bot PR.
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 five 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,.release-please-manifest.json,src/agents/version.py, 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.