Manual Release
Overview
Use this skill when you want a draft-first release flow with explicit control over tag creation, workflow dispatch, publication, and the follow-up documentation PR.
This skill reuses the shared scripts from:
create-release-tagscreate-release-note-doc-pr
Workflow
prepare: create and push the release tag, dispatch theReleaseworkflow manually, wait for the workflow to finish, download the workflow artifacts, generate release notes locally, create or update the draft release, upload the assets, and verify that the draft release contains the expected assets.publish: publish the draft release with an explicit latest-release policy and then open the documentation PR for the same tag.
Quick Start
Replace <SKILL_DIR> with the path of this skill directory.
Prepare a draft release from release-1.35:
python3 <SKILL_DIR>/scripts/release.py prepare --branch release-1.35
Publish an existing draft release and open the docs PR:
python3 <SKILL_DIR>/scripts/release.py publish --tag v1.35.7
Preview either phase without changing state:
python3 <SKILL_DIR>/scripts/release.py prepare --branch release-1.35 --tag v1.35.7 --dry-run
python3 <SKILL_DIR>/scripts/release.py publish --tag v1.35.7 --dry-run
Commands
Prepare a draft release:
python3 <SKILL_DIR>/scripts/release.py prepare \
--branch <release-X.Y> [--tag <vX.Y.Z>] [--remote <name>] [--workflow release.yaml]
Publish a draft release:
python3 <SKILL_DIR>/scripts/release.py publish \
--tag <vX.Y.Z> [--latest auto|always|never] [--remote <name>] \
[--base-remote <name>] [--push-remote <name>] [--base-branch <name>]
Notes
.github/workflows/release.yamlnow builds artifacts only. It no longer generates release notes or creates/publishes release objects.preparepushes the tag, manually dispatches.github/workflows/release.yaml, waits for the build to finish, downloads the workflow artifacts, generates the release notes locally, creates or updates the draft release, uploads the assets, and verifies the draft contents.publishkeeps latest-release handling explicit.--latest automarks the release as latest only when itsmajor.minorseries is the highest stable series currently published.- The release description is generated locally by the same
hack/generate-release-note.shflow used by the docs workflow, so the skill is no longer coupled to the release GitHub Action for notes generation. - The publish phase calls the shared
create-release-note-doc-prscript after the GitHub release is published.
Error Handling
If the script or any command fails, do not make up new scripts to work around the error and do not fabricate or guess at content. Instead, report the failure and exact error message to the user and let them decide how to proceed.