Release
npx claude-code-templates@latest --command git/release Content
Git Flow Release Branch
Create new release branch: $ARGUMENTS
Current Repository State
- Current branch: !
git branch --show-current - Git status: !
git status --porcelain - Latest tag: !
git describe --tags --abbrev=0 2>/dev/null || echo "No tags found" - Commits since last tag: !
git log $(git describe --tags --abbrev=0 2>/dev/null)..HEAD --oneline 2>/dev/null | wc -l | tr -d ' ' - Package.json version: !
cat package.json 2>/dev/null | grep '"version"' | head -1 || echo "No package.json found" - Recent commits: !
git log --oneline -10
Task
Create a Git Flow release branch following these steps:
1. Version Validation
Validate the version format and ensure it's newer than current:
Version Format Requirements:
- Must follow semantic versioning:
vMAJOR.MINOR.PATCH - Examples:
v1.0.0,v2.1.3,v0.5.0-beta.1 - Pattern:
v+NUMBER.NUMBER.NUMBER+ optional-prerelease.NUMBER
Version Increment Logic:
Analyze commits since last tag to suggest version:
- MAJOR (v2.0.0): Breaking changes (contains "BREAKING CHANGE:" in commits)
- MINOR (v1.3.0): New features (contains "feat:" commits)
- PATCH (v1.2.1): Bug fixes only (only "fix:" and "chore:" commits)
Current Version Analysis:
Latest tag: [from git describe]
Suggested version: [based on commit analysis]
Provided version: $ARGUMENTSIf version is invalid or not newer, show:
❌ Invalid version format: "$ARGUMENTS"
✅ Use semantic versioning: vMAJOR.MINOR.PATCH
Examples:
- v1.0.0 (initial release)
- v1.2.0 (new features)
- v1.2.1 (bug fixes)
- v2.0.0 (breaking changes)
- v1.0.0-beta.1 (pre-release)
💡 Suggested version based on commits: v1.3.02. Create Release Branch Workflow
# Switch to develop and update
git checkout develop
git pull origin develop
# Create release branch
git checkout -b release/$ARGUMENTS
# Update package.json version (if Node.js project)
npm version ${ARGUMENTS#v} --no-git-tag-version
# Generate CHANGELOG.md from commits
# (analyze git log since last tag)
# Commit version bump
git add package.json CHANGELOG.md
git commit -m "chore(release): bump version to ${ARGUMENTS#v}
- Updated package.json version
- Generated CHANGELOG.md from commits
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>"
# Push to remote with tracking
git push -u origin release/$ARGUMENTS3. CHANGELOG Generation
Generate changelog from commits since last tag, grouped by type:
# Changelog
## [$ARGUMENTS] - [Current Date]
### ✨ Features
- [List all feat: commits with PR links]
### 🐛 Bug Fixes
- [List all fix: commits with PR links]
### 📝 Documentation
- [List all docs: commits]
### ♻️ Refactoring
- [List all refactor: commits]
### ⚡️ Performance
- [List all perf: commits]
### 🔒️ Security
- [List all security-related commits]
### 💥 Breaking Changes
- [List all commits with BREAKING CHANGE]
### 🧪 Tests
- [List all test: commits]
### 🔧 Chore
- [List all chore: commits]4. Release Checklist
Display this checklist after creation:
🚀 Release Checklist for $ARGUMENTS
Pre-Release Tasks:
- [ ] All tests passing (run: npm test)
- [ ] Documentation updated
- [ ] CHANGELOG.md reviewed and accurate
- [ ] Version numbers consistent across files
- [ ] No breaking changes (or properly documented)
- [ ] Dependencies updated (run: npm audit)
Testing Tasks:
- [ ] Manual testing completed
- [ ] Regression tests passed
- [ ] Performance benchmarks acceptable
- [ ] Security scan clean (run: npm audit)
- [ ] Cross-browser testing (if applicable)
Deployment Preparation:
- [ ] Staging deployment successful
- [ ] Production deployment plan reviewed
- [ ] Rollback plan documented
- [ ] Monitoring and alerts configured
Final Steps:
- [ ] Create PR to main (run: gh pr create)
- [ ] Get required approvals (minimum 2 reviewers)
- [ ] Run /finish to merge and tag release
- [ ] Announce release to team
🎯 Next Commands:
- Review CHANGELOG: cat CHANGELOG.md
- Run tests: npm test
- Create PR: gh pr create --base main --head release/$ARGUMENTS
- When ready: /finish5. Success Response
✓ Switched to develop branch
✓ Pulled latest changes from origin/develop
✓ Created branch: release/$ARGUMENTS
✓ Updated package.json version to ${ARGUMENTS#v}
✓ Generated CHANGELOG.md (15 commits analyzed)
✓ Committed version bump changes
✓ Set up remote tracking: origin/release/$ARGUMENTS
✓ Pushed branch to remote
🚀 Release Branch Ready: $ARGUMENTS
Branch: release/$ARGUMENTS
Base: develop
Target: main (after review)
📊 Release Statistics:
- 5 new features
- 3 bug fixes
- 1 performance improvement
- 0 breaking changes
- 2 documentation updates
📝 CHANGELOG Summary:
- Created with 15 commits
- Grouped by commit type
- Includes PR references
- Ready for review
🎯 Next Steps:
1. Review CHANGELOG.md for accuracy
2. Run final tests: npm test
3. Test on staging environment
4. Create PR to main: gh pr create
5. Get team approvals
6. Run /finish to complete release
💡 Release Tips:
- No new features should be added to release branch
- Only bug fixes and documentation updates allowed
- Keep release branch short-lived (hours, not days)
- Tag will be created automatically when merged to main6. Error Handling
No Version Provided:
❌ Version is required
Usage: /release <version>
Examples:
/release v1.2.0
/release v2.0.0-beta.1
Current version: v1.1.0
Suggested version: v1.2.0 (based on commits)Invalid Version Format:
❌ Invalid version format: "1.0"
✅ Correct format: v1.0.0 (must start with 'v')
Examples:
✅ v1.0.0
✅ v2.1.3
✅ v1.0.0-beta.1
❌ 1.0.0 (missing 'v')
❌ v1.0 (incomplete)
❌ version-1.0.0 (wrong format)Version Not Incremented:
❌ Version $ARGUMENTS is not newer than current v1.2.0
💡 Valid version bumps from v1.2.0:
- v1.2.1 (patch - bug fixes only)
- v1.3.0 (minor - new features)
- v2.0.0 (major - breaking changes)
📊 Commit Analysis:
- 3 feat: commits → suggests MINOR bump (v1.3.0)
- 0 BREAKING CHANGE → no MAJOR bump needed
- 2 fix: commits → could use PATCH (v1.2.1)
Recommended: v1.3.0Uncommitted Changes:
⚠️ Uncommitted changes detected:
M src/feature.js
M README.md
Before creating release:
1. Commit your changes
2. Stash them: git stash
3. Or discard them: git checkout .
Please clean your working directory first.Develop Behind Remote:
⚠️ Local develop is behind origin/develop by 3 commits
✓ Pulling latest changes...
✓ Fetched 3 commits
✓ Develop is now up to date with remote
✓ Ready to create release branchCreating Pull Request
If gh CLI is available, offer to create PR:
gh pr create \
--title "Release $ARGUMENTS" \
--body "$(cat <<'EOF'
## Release Summary
Version: $ARGUMENTS
Base: develop
Target: main
## Changes Included
[Auto-generated from CHANGELOG.md]
## Release Checklist
- [ ] All tests passing
- [ ] Documentation updated
- [ ] CHANGELOG reviewed
- [ ] No breaking changes (or documented)
- [ ] Security audit clean
- [ ] Staging deployment successful
## Deployment Plan
1. Merge to main
2. Tag release: $ARGUMENTS
3. Deploy to production
4. Merge back to develop
5. Monitor for issues
---
🤖 Generated with Claude Code
EOF
)" \
--base main \
--head release/$ARGUMENTS \
--label "release" \
--assignee @meSemantic Versioning Guide
MAJOR version (X.0.0): Breaking changes
- API changes that break backward compatibility
- Removal of deprecated features
- Major architectural changes
MINOR version (1.X.0): New features
- New functionality added
- Backward compatible changes
- New APIs or methods
PATCH version (1.0.X): Bug fixes
- Bug fixes only
- No new features
- No breaking changes
Environment Variables
GIT_FLOW_DEVELOP_BRANCH: Develop branch name (default: "develop")GIT_FLOW_MAIN_BRANCH: Main branch name (default: "main")GIT_FLOW_PREFIX_RELEASE: Release prefix (default: "release/")
Related Commands
/finish- Complete release (merge to main and develop, create tag)/flow-status- Check current Git Flow status/feature <name>- Create feature branch/hotfix <name>- Create hotfix branch
Best Practices
DO:
- ✅ Analyze commits to determine correct version bump
- ✅ Generate comprehensive CHANGELOG
- ✅ Test thoroughly on release branch
- ✅ Keep release branch short-lived
- ✅ Only allow bug fixes on release branch
- ✅ Create PR for team review
DON'T:
- ❌ Add new features to release branch
- ❌ Skip testing phase
- ❌ Let release branch live for days
- ❌ Skip CHANGELOG generation
- ❌ Forget to merge back to develop
- ❌ Create releases without team approval