MCP Release Prep
DevOps & Securitymcp-release-prepMCP Release Prep is an Agent Skill for devops & security published in the dathere/qsv repository on GitHub: a SKILL.md instruction file an AI agent can load to do this task.
Prepare an MCP server and plugin release by bumping versions across all files and updating changelog
How to use this skill
Bring this guide into your coding agent with a prompt tailored to the tool you use.
- Open your project in Codex.
- Copy and paste the prompt below.
- Review files and risks before approving any action.
Inspect the Agent Skill at https://github.com/dathere/qsv/blob/HEAD/.claude/skills/mcp-release-prep/SKILL.md and all supporting files. Report provenance, permissions, scripts, dependencies, and security risks. Propose an exact installation into .agents/skills/mcp-release-prep, but wait for my approval before writing files or running scripts.
Copying this prompt does not install or run the skill. Review third-party files before use.
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)