name: release-prep description: Prepare a qsv release by bumping versions across all files and updating changelog disable-model-invocation: true
Release Preparation
Prepare a qsv release by updating version numbers across all required files and generating a changelog entry.
Arguments
version(required): The new version number (e.g., "16.2.0")msrv(optional): New minimum supported Rust version, if changing
Version Bump Checklist
Update the version string in ALL of these files:
Cargo.toml(line 3):version = "X.Y.Z"CLAUDE.md:**Current Version**: X.Y.Zin Project Overview.claude/skills/manifest.json:"version"field (MCP server version -- may differ from binary version).claude/skills/package.json:"version"field (must match manifest.json)CHANGELOG.md: Add new version section at top
If MSRV is changing, also update:
6. Cargo.toml (line 15): rust-version = "X.Y"
7. CLAUDE.md: **MSRV**: Rust X.Y in Project Overview
Changelog Entry
Add a new section at the top of CHANGELOG.md following this format:
## [X.Y.Z] - YYYY-MM-DD
### Added
- (new features)
### Changed
- (changes to existing features)
### Fixed
- (bug fixes)
### Removed
- (removed features)
Use git log from the last release tag to populate the changelog sections.
Exclude commits with (mcp) or (plugin) in the title — those belong in the MCP/Plugin changelog (.claude/skills/CHANGELOG.md) and are handled by /mcp-release-prep.
Add links to relevant PRs and issues for each changelog entry when possible.
Post-Version-Bump Steps
After version bumps, remind the user to:
- Run
cargo build --locked --bin qsv -F all_featuresto verify the build (omit--lockedif deps changed) - Run
cargo test -F all_featuresto verify tests pass - Run
qsv --update-mcp-skillsto regenerate skill JSONs with new version - Run
bash contrib/completions/generate_examples.bashto regenerate completions - Run
cargo +nightly fmtto format any changed Rust files - Commit all changes together
Important Notes
- The MCP server version in
manifest.json/package.jsoncan advance independently of the qsv binary version - The
minimum_qsv_versionfield inmanifest.jsontracks the minimum qsv binary needed, NOT the MCP server version - After bumping
Cargo.tomlversion, omit--lockedfrom cargo commands untilCargo.lockis regenerated