Step-by-step for cutting a new version. Assumes main is up to date
with everything the release should ship.
Follow the policy in claude/CONTRIBUTING.md. Summary:
- Patch: bug fix, doc, tightening an existing skill.
- Minor: new command / skill / agent / hook / MCP tool.
- Major: rename, remove, breaking contract change.
Edit:
.claude-plugin/plugin.json→"version": "…"claude/.claude-plugin/marketplace.json→plugins[name=pywry].versionclaude/desktop-extension/manifest.json→"version": "…"
All three must match. claude/scripts/build_distributions.py fails fast
on drift, and CI enforces it.
Edit CHANGELOG.md:
- Move everything from
## [Unreleased]into a new## [<version>] — <YYYY-MM-DD>section. - Put an empty
## [Unreleased]back at the top. - Keep sub-headers (
### Added,### Changed,### Fixed,### Removed,### Documentation).
git add claude/plugins/pywry/.claude-plugin/plugin.json \
claude/.claude-plugin/marketplace.json \
claude/desktop-extension/manifest.json \
claude/plugins/pywry/CHANGELOG.md
git commit -m "Release claude/plugins/pywry v<version>"Open a PR, get it merged to main. That's the last manual step.
Once the version-bump commit lands on main,
.github/workflows/release-claude-artifacts.yml
runs and:
- Reads the new version from
plugin.json. - Skips if
claude-pywry-v<version>already exists (idempotent). - Runs
claude/scripts/build_distributions.py(which re-verifies that all three manifests are in sync — fails the workflow if not). - Tags the merge commit
claude-pywry-v<version>. - Creates the GitHub release with the changelog section as notes
and
pywry-cowork.plugin+pywry.mcpbattached.
Tag prefix claude-pywry-v keeps these distinct from PyWry Python
package tags (v2.0.0 etc.), so releases in the two trees don't
collide.
To run the build locally before opening the PR:
python claude/scripts/build_distributions.pyTo re-run the release (e.g. after a transient failure), trigger
Release Claude artifacts via workflow_dispatch from the Actions
tab — the tag-existence check makes it safe to repeat.
Post the install command to the relevant channels:
/plugin marketplace add deeleeramone/PyWry --path claude/.claude-plugin/marketplace.json
/plugin install pywry@pywry --version claude-pywry-v<version>
In a fresh Claude Code session:
/mcplistspywryas connected./pywry:doctorreports green./mcp tools pywryshows ≥ 66 tools includingget_widget_app.