Purpose: Step-by-step workflow for creating a new release
# 1. Update version
echo "0.X.Y" > VERSION
jq '.version = "0.X.Y"' package.json > tmp && mv tmp package.json
# 2. Update CHANGELOG
# (Edit CHANGELOG.md manually)
# 3. Commit and tag
git add VERSION package.json CHANGELOG.md
git commit -m "chore: bump version to 0.X.Y"
git tag -a v0.X.Y -m "Release v0.X.Y"
# 4. Push
git push origin main
git push origin v0.X.Y
MAJOR.MINOR.PATCH
- MAJOR: Breaking changes
- MINOR: New features (backward compatible)
- PATCH: Bug fixes
0.5.0 → 0.5.1 (bug fix)0.5.0 → 0.6.0 (new feature)0.5.0 → 1.0.0 (breaking change)echo "0.X.Y" > VERSION
jq '.version = "0.X.Y"' package.json > tmp && mv tmp package.json
cat VERSION
cat package.json | jq '.version'
# Both should show same version
# Changelog
## [0.X.Y] - 2025-12-10
### Added
- New feature 1
- New feature 2
### Changed
- Updated feature 1
- Improved feature 2
### Fixed
- Bug fix 1
- Bug fix 2
### Removed
- Deprecated feature 1
## [Previous Version] - Date
...
✅ Group by type - Added, Changed, Fixed, Removed
✅ User-focused - Describe impact, not implementation
✅ Link PRs - Reference PR numbers
✅ Breaking changes - Clearly mark breaking changes
# Stage files
git add VERSION package.json CHANGELOG.md
# Commit
git commit -m "chore: bump version to 0.X.Y"
# Create annotated tag
git tag -a v0.X.Y -m "Release v0.X.Y"
# Verify tag
git tag -l "v0.X.Y"
git show v0.X.Y
# Push commit
git push origin main
# Push tag
git push origin v0.X.Y
v0.X.Yv0.X.Ygh release create v0.X.Y \
--title "v0.X.Y" \
--notes "$(cat CHANGELOG.md | sed -n '/## \[0.X.Y\]/,/## \[/p' | head -n -1)"
# Test install from GitHub
./install.sh --list
# Verify version
cat VERSION
# Releasing v0.6.0
# 1. Update version
echo "0.6.0" > VERSION
jq '.version = "0.6.0"' package.json > tmp && mv tmp package.json
# 2. Update CHANGELOG
cat >> CHANGELOG.md << 'EOF'
## [0.6.0] - 2025-12-10
### Added
- New API specialist agent
- GraphQL support in backend specialist
### Changed
- Improved eval framework performance
- Updated registry schema to 2.0.0
### Fixed
- Fixed path resolution for subagents
- Fixed registry validation edge cases
EOF
# 3. Commit
git add VERSION package.json CHANGELOG.md
git commit -m "chore: bump version to 0.6.0"
# 4. Tag
git tag -a v0.6.0 -m "Release v0.6.0"
# 5. Push
git push origin main
git push origin v0.6.0
# 6. Create GitHub release
gh release create v0.6.0 \
--title "v0.6.0" \
--notes "See CHANGELOG.md for details"
Before releasing:
Problem: VERSION and package.json don't match
Solution: Update both to same version
Problem: Tag already exists
Solution: Delete tag and recreate
git tag -d v0.X.Y
git push origin :refs/tags/v0.X.Y
Problem: Push rejected (not up to date)
Solution: Pull latest changes first
git pull origin main
git push origin main
git push origin v0.X.Y
scripts/versioning/bump-version.shCHANGELOG.mdVERSIONLast Updated: 2025-12-10
Version: 0.5.0