Create Release
When to Activate
- •User runs
/releasecommand - •User asks to create a new release
- •Changes are ready for versioning
Steps
- •Check UNRELEASED.md: Verify there are changes to release
- •Determine version: Analyze changes for version bump
- •Convert release notes: UNRELEASED.md → vX.Y.Z.md
- •Create new UNRELEASED.md: Reset for next cycle
- •Commit: Stage and commit release notes
- •Create tag: git tag vX.Y.Z
- •Push: Push commit and tag to origin
Execution
Step 1: Check UNRELEASED.md
Read docs/releasenotes/UNRELEASED.md and verify it has content beyond the template.
If empty (only template placeholders), abort with message: "No changes to release."
Step 2: Determine Version
Check existing tags:
bash
git tag -l 'v*' --sort=-v:refname | head -5
Analyze UNRELEASED.md content:
- •Breaking Changes section has content → MAJOR bump
- •Added section has content → MINOR bump
- •Only Fixed/Changed → PATCH bump
Ask user to confirm version number.
Step 3: Convert Release Notes
- •Read UNRELEASED.md content
- •Create
docs/releasenotes/vX.Y.Z.mdwith:- •Version header
- •Release date (today)
- •Content from UNRELEASED.md
Step 4: Reset UNRELEASED.md
Reset to empty template with sections:
- •Header:
# Unreleasedwith quote> Changes pending for the next release - •Sections: Added, Changed, Fixed, Removed, Security, Breaking Changes
- •Footer:
*Auto-updated by reviewer agent on PR creation.*
Step 4b: Convert Retrospective (if exists)
- •Read
docs/retrospectives/UNRETROSPECTIVE.md - •If has content beyond template:
- •Create
docs/retrospectives/retro-vX.Y.Z.md - •Reset UNRETROSPECTIVE.md to empty template
- •Create
Step 5-7: Commit, Tag, Push
bash
git add docs/releasenotes/ docs/retrospectives/ git commit -m "chore: release vX.Y.Z Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>" git tag vX.Y.Z git push origin main --tags
Notes
- •Always confirm version with user before creating tag
- •Tags trigger GitHub Actions (if configured)
- •After release, UNRELEASED.md is ready for next cycle