name: mcp-release-prep description: Prepare an MCP server and plugin release by bumping versions across all files and updating changelog disable-model-invocation: true
MCP Server & Plugin Release Preparation
Prepare an MCP server and plugin release by updating version numbers across all required files and generating a changelog entry. The MCP server version advances independently of the qsv binary version.
Arguments
version(required): The new MCP server version number (e.g., "16.2.0")minimum_qsv_version(optional): New minimum qsv binary version, if changing
All paths below are relative to .claude/skills/.
Version Bump Checklist
Core (must always update)
package.json: find"version":field — source of truth;version.tsreads this at runtimemanifest.json: find"version":field near top — must match package.json.claude-plugin/plugin.json: find"version":field../../.claude-plugin/marketplace.json(repo root): find"version":in bothmetadataandplugins[0]— must match package.jsonagents/data-analyst.md:version:in YAML frontmatteragents/data-wrangler.md:version:in YAML frontmatteragents/policy-analyst.md:version:in YAML frontmatter
After bumping package.json, run npm install --package-lock-only to sync package-lock.json.
Conditional (only if minimum qsv binary version changes)
src/config.ts: findMINIMUM_QSV_VERSIONconstant — primary runtime enforcement pointmanifest.json: find"minimum_qsv_version":field — must match config.tsscripts/cowork-setup.cjs: findMINIMUM_QSV_VERSIONconstant — must match config.ts and manifest.json
Documentation (hardcoded versions to update)
README-MCP.md: search for**Version**: X.Y.Znear the bottomdocs/desktop/README-MCPB.md: search for download URLs and version badge (multiple occurrences)docs/guides/START_HERE.md: check for any hardcoded version references
Command count verification
Verify the skill-based command count matches actual files:
ls qsv/qsv-*.json | wc -l
Then check descriptions in these files for stale counts:
.claude-plugin/plugin.jsondescription../../.claude-plugin/marketplace.json— bothmetadata.descriptionandplugins[0].descriptioncowork-CLAUDE.md— Tool Discovery sectionskills/csv-wrangling/SKILL.md— Tool Discovery sectionmanifest.json—_meta.com.dathere.qsv.featuresarray
Changelog Entry
Add a new section at the top of CHANGELOG.md (in .claude/skills/) following this format:
## [X.Y.Z] - YYYY-MM-DD
### Added
- (new features)
### Changed
- (changes to existing features)
### Fixed
- (bug fixes)
Find the last qsv release tag and use it to populate the changelog:
# Find the most recent qsv release tag
LAST_TAG=$(git describe --tags --match '[0-9]*.[0-9]*.[0-9]*' --abbrev=0 2>/dev/null || echo "")
# List relevant commits since that tag (or all commits from repo root if no tag exists)
git log --oneline --no-merges --grep="(mcp)" "${LAST_TAG:-$(git rev-list --max-parents=0 HEAD)}"..HEAD
Only commits with (mcp) or (plugin) in the title are relevant to MCP server releases.
Verification Steps
After version bumps:
npm run build— TypeScript compilation succeedsnpm test— all tests passnpm run mcpb:package— generatesqsv-mcp-server-X.Y.Z.mcpbnpm run plugin:package— generatesqsv-data-wrangling-X.Y.Z.plugin
Cowork Plugin
The Cowork plugin (.plugin file) is a separate distribution artifact from the Desktop Extension (.mcpb). It provides the workflow layer (skills, agents, hooks) without the MCP server itself.
Plugin components (all relative to .claude/skills/)
.claude-plugin/plugin.json— plugin manifest (version already bumped in Core step 3)scripts/cowork-setup.cjs— SessionStart hook that deployscowork-CLAUDE.mdto the working directory and validates the qsv binarycowork-CLAUDE.md— workflow template deployed by the hookskills/— 15 SKILL.md files: 9 user-invocable (csv-query, data-clean, data-convert, data-describe, data-join, data-profile, data-validate, data-viz, infer-ontology) + 6 model-invoked (bls-query, csv-wrangling, data-quality, genai-disclaimer, qsv-performance, reproducible-analysis)agents/— subagents (data-analyst, data-wrangler, policy-analyst)
Plugin-specific review
When preparing a release, also review:
cowork-CLAUDE.md: check that tool names, workflow steps, and limits are still accuratescripts/cowork-setup.cjs: ifminimum_qsv_versionchanged, update theMINIMUM_QSV_VERSIONconstant (listed in Conditional step 10)skills/,agents/: check for any hardcoded version references or stale tool names
Important Notes
- MCP server version advances independently of qsv binary version
minimum_qsv_versiontracks binary compatibility, not server version — enforced in 3 places:src/config.ts,manifest.json, andscripts/cowork-setup.cjs(all must stay in sync)- Skill JSON files (
qsv/*.json) are auto-generated by the qsv binary (qsv --update-mcp-skills), not by this skill — only bump those via/release-prep version.tsreads version frompackage.jsonat runtime — no need to editversion.tsdirectly- The
.pluginpackage reads its version frompackage.json(same source of truth as the.mcpb)