Runtime required. This skill uses Canopy tree notation; canopy-runtime must be active.
Detect canopy-runtime — present if either:
canopy-runtime/SKILL.mdexists under.claude/skills/,.github/skills/, or.agents/skills/, OR- a canopy-runtime marker block exists in
CLAUDE.mdor.github/copilot-instructions.md.If neither is present — install canopy-runtime first (see the
compatibilityfield for the source and install options), then re-invoke this skill.Do not interpret the
## Treewithout canopy-runtime active.
Tree
- release
- Read
package.jsonto getcurrent_version - Run
git branch --show-currentto getcurrent_branch - Read
commands/release.shforGet Latest Release>> latest_release_version - Run
git status --porcelain>> status_output - IF << status_output is non-empty
- Report: Uncommitted changes detected. Commit or stash them first, then re-run
/release. - END
- Report: Uncommitted changes detected. Commit or stash them first, then re-run
- IF << current_version equals latest_release_version
- Report: Version
current_versionis already the latest GitHub release. Run/bump-versionto increment the version, then re-run/release. - END
- Report: Version
- IF << current_branch equals "master"
- SHOW_PLAN >> current_version | latest_release_version | action
- ASK << Push master to trigger release? | Yes | No
- Run
git push origin master - VERIFY_EXPECTED << verify/release-expected.md
- Report: Summary / Version / Next step: CI creates tag and publishes GitHub Release
- ELSE
- Read
commands/release.shforCheck Existing PR>> existing_pr - IF << existing_pr found
- Report: A PR already exists for branch
current_branch:<pr_url>. Push the branch to update it or merge the existing PR. - END
- Report: A PR already exists for branch
- SHOW_PLAN >> current_version | latest_release_version | current_branch | action
- ASK << Push branch and open PR to master? | Yes | No
- Run
git push origin <current_branch> - Read
commands/release.shforCreate PR>> pr_url - VERIFY_EXPECTED << verify/release-expected.md
- Report: Summary / Version / PR URL / Next step: merge the PR to trigger the release
- Read
- Read
Rules
- Always read
package.jsonbefore comparing versions — never assume the current version from context - Always run
gh release viewto get the live GitHub release — never assume the latest release version - Do not push or create PR if ASK returns "No"
- Do not create a PR if one already exists for the current branch targeting master
- Do not use
--follow-tagsin either path — no local tag exists; CI creates the tag on push to master - Always check for uncommitted changes before pushing — a dirty working tree means work would be excluded from the release