.claude/skills/mcp-release-prep/SKILL.md
Prepare an MCP server and plugin release by bumping versions across all files and updating changelog
npx skillsauth add dathere/qsv mcp-release-prepInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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.
version (required): The new MCP server version number (e.g., "16.2.0")minimum_qsv_version (optional): New minimum qsv binary version, if changingAll paths below are relative to .claude/skills/.
package.json: find "version": field — source of truth; version.ts reads 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 both metadata and plugins[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 frontmatterAfter bumping package.json, run npm install --package-lock-only to sync package-lock.json.
src/config.ts: find MINIMUM_QSV_VERSION constant — primary runtime enforcement pointmanifest.json: find "minimum_qsv_version": field — must match config.tsscripts/cowork-setup.cjs: find MINIMUM_QSV_VERSION constant — must match config.ts and manifest.jsonREADME-MCP.md: search for **Version**: X.Y.Z near 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 referencesVerify 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.json description../../.claude-plugin/marketplace.json — both metadata.description and plugins[0].descriptioncowork-CLAUDE.md — Tool Discovery sectionskills/csv-wrangling/SKILL.md — Tool Discovery sectionmanifest.json — _meta.com.dathere.qsv.features arrayAdd 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.
After version bumps:
npm run build — TypeScript compilation succeedsnpm test — all tests passnpm run mcpb:package — generates qsv-mcp-server-X.Y.Z.mcpbnpm run plugin:package — generates qsv-data-wrangling-X.Y.Z.pluginThe 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.
.claude/skills/).claude-plugin/plugin.json — plugin manifest (version already bumped in Core step 3)scripts/cowork-setup.cjs — SessionStart hook that deploys cowork-CLAUDE.md to 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)When preparing a release, also review:
cowork-CLAUDE.md: check that tool names, workflow steps, and limits are still accuratescripts/cowork-setup.cjs: if minimum_qsv_version changed, update the MINIMUM_QSV_VERSION constant (listed in Conditional step 10)skills/, agents/: check for any hardcoded version references or stale tool namesminimum_qsv_version tracks binary compatibility, not server version — enforced in 3 places: src/config.ts, manifest.json, and scripts/cowork-setup.cjs (all must stay in sync)qsv/*.json) are auto-generated by the qsv binary (qsv --update-mcp-skills), not by this skill — only bump those via /release-prepversion.ts reads version from package.json at runtime — no need to edit version.ts directly.plugin package reads its version from package.json (same source of truth as the .mcpb)development
Machine-readable journal format for reproducible data analysis operations
documentation
Performance guide covering index files, stats cache, and frequency cache accelerators for qsv
data-ai
Infer a semantic ontology from all files in the working directory - entities, attributes, relationships, domain taxonomy, and cross-file join paths. Outputs ONTOLOGY.md.
development
Create publication-quality visualizations from CSV/TSV/Excel data using Python