Release Preparation Skill
Use this skill when preparing a new release.
Release Workflow Overview
- •Ensure all changes are committed and tests pass
- •Bump the version
- •Push and create PR
- •After merge, CI automatically creates tag and publishes
Step 1: Pre-release Checks
Run all quality checks before releasing:
bash
# Format check cargo +nightly fmt --all -- --check # Lint check cargo +nightly clippy --all-targets --all-features -- -D warnings -W missing-docs # Run tests cargo test
Step 2: Check Current State
bash
# Current version cargo version-info current # Latest published release cargo version-info latest # Check for uncommitted changes git status # Check if version already changed cargo version-info changed
Step 3: Bump Version
Choose the appropriate bump type:
- •patch: Bug fixes, minor improvements (0.0.8 -> 0.0.9)
- •minor: New features, backward compatible (0.0.9 -> 0.1.0)
- •major: Breaking changes (0.1.0 -> 1.0.0)
bash
cargo version-info bump --patch # or --minor / --major
Step 4: Verify the Bump
bash
# Check the commit git log -1 # Verify version in Cargo.toml cargo version-info current # Check what files changed git diff HEAD~1 --stat
Step 5: Push and Create PR
bash
# Push branch git push origin HEAD # Create PR (if on feature branch) gh pr create --title "chore(version): bump to X.Y.Z" --body "Release X.Y.Z"
Step 6: After Merge
Once the PR is merged to main:
- •CI runs tests (fmt, clippy, test on Linux/macOS/Windows)
- •CI detects version change (compares Cargo.toml with latest git tag)
- •CI creates git tag
vX.Y.Z - •CI generates changelog from conventional commits using Cocogitto
- •CI creates GitHub Release with changelog as release body
- •CI publishes to crates.io
- •CI builds and uploads binaries for all platforms
This is why all commits must follow Angular Conventional Commit style
(<type>(<scope>): <subject>) - Cocogitto parses these to generate
the changelog automatically.
Checking Release Status
bash
# Check latest release on GitHub cargo version-info latest # Check crates.io cargo search cargo-fmt-toml
Troubleshooting
Version already bumped
If cargo version-info changed returns true but you haven't released:
bash
# Check what the current version is cargo version-info current # Check what the latest release is cargo version-info latest
CI didn't create a release
Check that:
- •The version in Cargo.toml differs from the latest git tag
- •The merge was to the main branch
- •CI workflow completed successfully
Need to re-release same version
You cannot republish the same version to crates.io. Bump to a new patch version instead.