Release Skill
Handles version bumps and releases for the opencode-swarm-plugin monorepo.
Version Touchpoints
When bumping versions, ALL of these files must be updated:
opencode-swarm-plugin
- •
packages/opencode-swarm-plugin/package.json- npm package version - •
packages/opencode-swarm-plugin/claude-plugin/.claude-plugin/plugin.json- Claude plugin version
claude-code-swarm-plugin (thin wrapper)
- •
packages/claude-code-swarm-plugin/package.json- npm package version - •
packages/claude-code-swarm-plugin/.claude-plugin/plugin.json- Claude plugin version
Other packages (if applicable)
- •
packages/swarm-evals/package.json - •
packages/swarm-mail/package.json - •
packages/swarm-dashboard/package.json
Release Process
- •
Create changeset (for proper changelog generation):
bash# Interactive (won't work in CI/agent context) bun changeset # Manual - create file in .changeset/ echo '--- "opencode-swarm-plugin": minor "claude-code-swarm-plugin": minor --- feat: description of changes' > .changeset/my-change.md
- •
Version bump (applies changesets):
bashbun run ci:version
This runs
changeset versionand updates package.jsons - •
CRITICAL: Sync plugin.json versions manually:
bash# Get version from package.json VERSION=$(cat packages/opencode-swarm-plugin/package.json | jq -r '.version') # Update both plugin.json files jq ".version = \"$VERSION\"" packages/opencode-swarm-plugin/claude-plugin/.claude-plugin/plugin.json > /tmp/p1.json && mv /tmp/p1.json packages/opencode-swarm-plugin/claude-plugin/.claude-plugin/plugin.json VERSION=$(cat packages/claude-code-swarm-plugin/package.json | jq -r '.version') jq ".version = \"$VERSION\"" packages/claude-code-swarm-plugin/.claude-plugin/plugin.json > /tmp/p2.json && mv /tmp/p2.json packages/claude-code-swarm-plugin/.claude-plugin/plugin.json
- •
Build:
bashcd packages/opencode-swarm-plugin && bun run build
- •
Publish:
bashbun run ci:publish
- •
Commit and push:
bashgit add -A && git commit -m "release: bump versions" && git push
Quick Version Bump Script
Run this to bump all version touchpoints at once:
bash
#!/bin/bash NEW_VERSION=$1 if [ -z "$NEW_VERSION" ]; then echo "Usage: ./bump-version.sh 0.59.0" exit 1 fi # Main package jq ".version = \"$NEW_VERSION\"" packages/opencode-swarm-plugin/package.json > /tmp/pkg.json && mv /tmp/pkg.json packages/opencode-swarm-plugin/package.json jq ".version = \"$NEW_VERSION\"" packages/opencode-swarm-plugin/claude-plugin/.claude-plugin/plugin.json > /tmp/plug.json && mv /tmp/plug.json packages/opencode-swarm-plugin/claude-plugin/.claude-plugin/plugin.json # Thin wrapper (claude-code-swarm-plugin) jq ".version = \"$NEW_VERSION\"" packages/claude-code-swarm-plugin/package.json > /tmp/pkg.json && mv /tmp/pkg.json packages/claude-code-swarm-plugin/package.json jq ".version = \"$NEW_VERSION\"" packages/claude-code-swarm-plugin/.claude-plugin/plugin.json > /tmp/plug.json && mv /tmp/plug.json packages/claude-code-swarm-plugin/.claude-plugin/plugin.json echo "Bumped all packages to $NEW_VERSION" git diff --stat
Gotchas
- •plugin.json is NOT auto-bumped by changesets - must be done manually
- •Two separate plugins:
opencode-swarm-plugin(full) andclaude-code-swarm-plugin(thin wrapper) - •Claude Code marketplace installs from cache - users may need to uninstall/reinstall for updates
- •npm publish needs
--access publicfor scoped packages