Qsv mcp-release-prep
Prepare an MCP server and plugin release by bumping versions across all files and updating changelog
install
source · Clone the upstream repo
git clone https://github.com/dathere/qsv
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/dathere/qsv "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/mcp-release-prep" ~/.claude/skills/dathere-qsv-mcp-release-prep && rm -rf "$T"
manifest:
.claude/skills/mcp-release-prep/SKILL.mdsource content
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
(required): The new MCP server version number (e.g., "16.2.0")version
(optional): New minimum qsv binary version, if changingminimum_qsv_version
All paths below are relative to
.claude/skills/.
Version Bump Checklist
Core (must always update)
: findpackage.json
field — source of truth;"version":
reads this at runtimeversion.ts
: findmanifest.json
field near top — must match package.json"version":
: find.claude-plugin/plugin.json
field"version":
(repo root): find../../.claude-plugin/marketplace.json
in both"version":
andmetadata
— must match package.jsonplugins[0]
:agents/data-analyst.md
in YAML frontmatterversion:
:agents/data-wrangler.md
in YAML frontmatterversion:
:agents/policy-analyst.md
in YAML frontmatterversion:
After bumping
package.json, run npm install --package-lock-only to sync package-lock.json.
Conditional (only if minimum qsv binary version changes)
: findsrc/config.ts
constant — primary runtime enforcement pointMINIMUM_QSV_VERSION
: findmanifest.json
field — must match config.ts"minimum_qsv_version":
: findscripts/cowork-setup.cjs
constant — must match config.ts and manifest.jsonMINIMUM_QSV_VERSION
Documentation (hardcoded versions to update)
: search forREADME-MCP.md
near the bottom**Version**: X.Y.Z
: search for download URLs and version badge (multiple occurrences)docs/desktop/README-MCPB.md
: check for any hardcoded version referencesdocs/guides/START_HERE.md
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:
description.claude-plugin/plugin.json
— both../../.claude-plugin/marketplace.json
andmetadata.descriptionplugins[0].description
— Tool Discovery sectioncowork-CLAUDE.md
— Tool Discovery sectionskills/csv-wrangling/SKILL.md
—manifest.json
array_meta.com.dathere.qsv.features
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:
— TypeScript compilation succeedsnpm run build
— all tests passnpm test
— generatesnpm run mcpb:packageqsv-mcp-server-X.Y.Z.mcpb
— generatesnpm run plugin:packageqsv-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/skills/
— plugin manifest (version already bumped in Core step 3).claude-plugin/plugin.json
— SessionStart hook that deploysscripts/cowork-setup.cjs
to the working directory and validates the qsv binarycowork-CLAUDE.md
— workflow template deployed by the hookcowork-CLAUDE.md
— 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)skills/
— subagents (data-analyst, data-wrangler, policy-analyst)agents/
Plugin-specific review
When preparing a release, also review:
: check that tool names, workflow steps, and limits are still accuratecowork-CLAUDE.md
: ifscripts/cowork-setup.cjs
changed, update theminimum_qsv_version
constant (listed in Conditional step 10)MINIMUM_QSV_VERSION
,skills/
: check for any hardcoded version references or stale tool namesagents/
Important Notes
- MCP server version advances independently of qsv binary version
tracks binary compatibility, not server version — enforced in 3 places:minimum_qsv_version
,src/config.ts
, andmanifest.json
(all must stay in sync)scripts/cowork-setup.cjs- Skill JSON files (
) are auto-generated by the qsv binary (qsv/*.json
), not by this skill — only bump those viaqsv --update-mcp-skills/release-prep
reads version fromversion.ts
at runtime — no need to editpackage.json
directlyversion.ts- The
package reads its version from.plugin
(same source of truth as thepackage.json
).mcpb