release-prep
GitHub用于准备qsv版本发布,自动更新多文件版本号并生成变更日志。
Trigger Scenarios
Install
npx skills add dathere/qsv --skill release-prep -g -y
SKILL.md
Frontmatter
{
"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
Cross-repo constraints — dathere/qsv-easy-windows-installer
The Windows MSI "Easy installer" is a separate repo that consumes qsv releases directly. Two of its assumptions are things this repo controls, so they are release-time checks:
Installer v1.1.2 (2026-08-09) fixed both of its fragile assumptions — it now reads
tag_name instead of the release title, and extracts qsv.exe instead of qsvp.exe.
Verified two different ways, which is worth keeping straight:
- 21.1.0 — the live path.
releases/latestreturnstag_name: 21.1.0today, the installer's constructed.../releases/download/21.1.0/qsv-21.1.0-x86_64-pc-windows-msvc.zipreturns 200, andqsv.exeis in the archive. This is what a v1.1.2 user gets right now. - 22.0.1 — the post-promotion target.
releases/latestdoes NOT return it (it is a prerelease), so this was checked by building the same URL from the tag directly: also 200, also containsqsv.exe. It is whatreleases/latestwill return once 22.0.1 is promoted.
What remains:
-
Users on Easy installer ≤ v1.1.1 break SILENTLY when the first stable release without
qsvp.exeships — and a release note is the ONLY available remedy. Those versions extractqsvp.exeby hardcoded name. They keep working today only becausereleases/latestEXCLUDES prereleases, so they still resolve to 21.1.0, which shipsqsvp.exe. Promoting 22.0.1 (or any later release) to stable gives them an archive with noqsvp.exe.The failure is not a visible error.
run_path_updatereturns()rather thanResult, and the frontend callsinvoke("run_path_update").finally(...)with no.catch()— so the "Successfully installed qsv" alert fires regardless. Affected users are told it worked while nothing was installed; they will report "qsv is not on my PATH" or "qsv didn't update", never a crash.There is no self-update or version-check path in that installer, so it cannot notify already-installed users. The release note is the entire remedy. Word it for the symptom, not an error message they will never see:
Windows users who installed via the Easy installer: upgrade to v1.1.2 or later before updating qsv, then confirm with
qsv --version. Older versions of the installer report success even when the install did not happen. -
Release TITLE == tag is no longer load-bearing for v1.1.2+, but ≤ v1.1.1 still interpolates
.nameinto the download URL as if it were the tag. Keeping titles as the bare version costs nothing and avoids 404ing those users on top of theqsvpfailure. -
Check that README's Easy-installer download badge points at the current installer release. The badge is a hardcoded versioned MSI URL (
README.md, searchqsv-easy-installer_), so it does not follow that repo's releases and goes stale silently. Pointing it at a version the guidance above tells users to upgrade away from is the failure worth avoiding. Current:v1.1.2.
Version History
- 2f6b659 Current 2026-08-20 16:15


