Pre-operation Checks
Verify working tree is clean and current branch matches release/* per ${CLAUDE_PLUGIN_ROOT}/references/invariants.md .
Phase 1: Identify Version
Goal: Determine release version from current branch or argument.
Actions:
-
If $ARGUMENTS provided, use it as version (strip 'v' prefix if present)
-
Otherwise, extract from current branch: git branch --show-current (strip release/ prefix)
-
Store clean version without 'v' prefix (e.g., "1.0.0")
Phase 2: Pre-finish Checks
Goal: Run tests before finishing.
Actions:
-
Identify test commands (check package.json, Makefile, etc.)
-
Run tests if available; exit if tests fail
Phase 3: Update Changelog
Goal: Generate changelog from commits.
Actions:
-
Get previous tag: git tag --sort=-v:refname | head -1
-
Collect commits per ${CLAUDE_PLUGIN_ROOT}/references/changelog-generation.md
-
Update CHANGELOG.md per ${CLAUDE_PLUGIN_ROOT}/examples/changelog.md
-
Commit: chore: update changelog for v$VERSION with Co-Authored-By footer
Phase 4: Finish Release
Goal: Complete release using git-flow-next CLI.
Actions:
-
Run git flow release finish $VERSION --tagname "v$VERSION" -m "Release v$VERSION"
-
Verify current branch: git branch --show-current (should be on develop)
-
Push all: git push origin main develop --tags
Phase 5: GitHub Release
Goal: Create GitHub release from existing tag.
Actions:
-
Extract changelog for this version from CHANGELOG.md
-
Run gh release create "v$VERSION" --title "v$VERSION" --notes "<changelog>" --verify-tag
Phase 6: Finalize
Goal: Ensure working branch is develop.
Actions:
-
Switch to develop: git checkout develop
-
Pull latest: git pull origin develop
-
Verify: git branch --show-current (should output "develop")