| name | Release Manager |
| description | Create new releases with version bumps, changelog updates, git tags, and CI/CD verification. Use when user says "ready to release", "create release", mentions version numbers, or wants to publish a new version. |
Release Manager
Create a complete release with version bump, changelog update, git tag, and CI/CD verification.
Configuration
| Environment Variable | Default | Description |
|---|
TEST_CMD | make test | Command to run tests |
LINT_CMD | make lint | Command to run linting |
CHANGELOG_PATH | CHANGELOG.md | Path to changelog file |
VERSION_FILE | VERSION | Path to version file |
DESIGN_DOCS_DIR | design_docs | Root directory for design documents |
GITHUB_REPO | (from git remote) | GitHub repository (owner/repo) |
Quick Start
When to Use This Skill
Invoke this skill when:
- User says "ready to release", "create release", "publish release"
- User mentions a specific version number
- User asks about release process or workflow
- After completing a sprint and code is ready to ship
Available Scripts
scripts/pre_release_checks.sh
Run all pre-release verification checks.
What it checks:
- Test suite passes (
${TEST_CMD})
- Linting passes (
${LINT_CMD})
scripts/post_release_checks.sh <version>
Verify release was created successfully on GitHub.
What it checks:
- Git tag exists
- GitHub release exists
- Platform binaries present (if applicable)
- Latest CI run passed
scripts/check_implemented_docs.sh <version>
Verify all implemented design docs are documented in CHANGELOG.
scripts/collect_closable_issues.sh <version> [--close] [--json]
Find GitHub issues that can be closed with this release.
What it scans:
- Commits since last tag for issue references (Fixes #123, Closes #456, etc.)
- CHANGELOG entry for the version
- Design docs in
${DESIGN_DOCS_DIR}/implemented/
scripts/close_issues_with_references.sh <version> <issue> [section]
Close a GitHub issue with proper release references (URLs, commits, design docs).
Release Workflow
1. Pre-Release Verification (CRITICAL)
scripts/pre_release_checks.sh
If checks fail:
- Tests failing -> Fix tests first
- Linting failing -> Run
${FMT_CMD:-make fmt} or fix issues
- DO NOT proceed until all checks pass
2. Verify Implemented Design Docs
scripts/check_implemented_docs.sh X.X.X
3. Update Version in Documentation
Update these files:
- ${CHANGELOG_PATH}: Change
## [Unreleased] to ## [vX.X.X] - YYYY-MM-DD
- ${VERSION_FILE}: Update to
vX.X.X
- Any other version-dependent files in your project
4. Post-Update Verification
${TEST_CMD:-make test}
${LINT_CMD:-make lint}
5. Commit Changes
git add ${CHANGELOG_PATH} ${VERSION_FILE}
git commit -m "Release vX.X.X"
6. Create and Push Git Tag
git tag -a vX.X.X -m "Release vX.X.X"
git push origin $(git branch --show-current)
git push origin vX.X.X
7. Monitor CI/CD
gh run list --limit 3
gh run watch
8. Collect and Close Related Issues
scripts/collect_closable_issues.sh X.X.X
scripts/collect_closable_issues.sh X.X.X --close
9. Verify Release
scripts/post_release_checks.sh X.X.X
10. Handle CI Failures
If CI fails after push:
gh run list --limit 3
gh run view <run-id> --log-failed
Resources
Release Checklist
See resources/release_checklist.md for complete step-by-step checklist.
Issue Closure Guide
See resources/issue_closure_guide.md for how to properly close GitHub issues.
Prerequisites
- Working directory must be clean (no uncommitted changes)
- All tests must pass
- All linting must pass
Version Format
Semantic versioning: MAJOR.MINOR.PATCH
- Examples:
0.0.9, 0.1.0, 1.0.0
Common Issues
Tests Fail Before Release
Solution: Fix tests first, don't skip this step.
Linting Fails
Solution: Run ${FMT_CMD:-make fmt} to auto-format, or fix manually.
CI Fails After Push
Solution: Check logs with gh run view <run-id> --log-failed, fix, commit, push again.
Progressive Disclosure
- Always loaded: This SKILL.md file
- Execute as needed: Scripts in
scripts/
- Load on demand:
resources/release_checklist.md
Notes
- Always run pre-release checks BEFORE making changes
- Always run post-update checks AFTER documentation changes
- Scripts handle verification automatically