.claude/skills/release/SKILL.md
Handles version bumps and npm releases for the swarm-tools monorepo (opencode-swarm-plugin, claude-code-swarm-plugin, swarm-mail, swarm-queue). Use when: creating changesets, bumping versions, preparing releases, checking release status, debugging publish failures, verifying npm packages, or merging release PRs. Triggers: "release", "publish", "changeset", "bump version", "ship it", "new version", "create a release", "check npm", "verify publish", "/release"
npx skillsauth add joelhooks/swarm-tools releaseInstall 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.
All releases go through changesets → CI → npm. Never publish manually unless CI is broken.
cat > .changeset/<descriptive-name>.md << 'EOF'
---
"opencode-swarm-plugin": patch
---
fix: description of what changed and why
EOF
Bump levels: patch (bug fixes), minor (features), major (breaking changes).
Which packages to include — only packages with actual changes:
opencode-swarm-plugin — main plugin (CLI, MCP server, swarm orchestration)claude-code-swarm-plugin — thin Claude Code wrapper (commands, agents, hooks, skills)swarm-mail — agent messaging, memory, reservationsswarm-queue — task queueUse pdf-brain for commit quotes:
pdf-brain search "<relevant topic>" --limit 1 --expand 500
git add .changeset/<name>.md <changed-files>
git commit -m "feat: description"
git push origin main
CI (publish.yml) runs on push to main:
changeset version + bun updateplugin.json versions (lifecycle hook at .changeset/config.json)changeset-release/main branchvercel/ai-actiongh pr merge <number> --squash --delete-branch
CI then:
scripts/ci-publish.sh — packs with bun pm pack (resolves workspace:*), publishes via npm publishnpm view opencode-swarm-plugin@latest dependencies
npm view claude-code-swarm-plugin@latest version
Critical check: Verify no workspace:* in published deps. If found, the publish script's safety net failed — see Troubleshooting.
CI handles all of these via changesets. For manual bumps, ALL must be updated:
| Package | Files |
|---------|-------|
| opencode-swarm-plugin | packages/opencode-swarm-plugin/package.json, claude-plugin/.claude-plugin/plugin.json |
| claude-code-swarm-plugin | packages/claude-code-swarm-plugin/package.json, .claude-plugin/plugin.json |
| swarm-mail | packages/swarm-mail/package.json |
| swarm-queue | packages/swarm-queue/package.json |
Manual bump script: ./scripts/bump-version.sh <version>
workspace:* in published npm packageThe scripts/ci-publish.sh uses bun pm pack (resolves workspace protocol) + a python3 safety net that rewrites any remaining workspace:* to actual versions. If this still fails:
packageManager in root package.json must be >= 1.3.5Already-published version. Normal when re-running publish — || true catches it. Only a problem if the VERSION wasn't bumped (changeset not applied).
CI lifecycle hook should sync these. If not, manually:
VERSION=$(jq -r .version packages/opencode-swarm-plugin/package.json)
jq ".version = \"$VERSION\"" packages/opencode-swarm-plugin/claude-plugin/.claude-plugin/plugin.json > /tmp/p.json
mv /tmp/p.json packages/opencode-swarm-plugin/claude-plugin/.claude-plugin/plugin.json
Changesets action only runs when .changeset/*.md files exist (excluding README.md). If no changesets, it skips version PR creation and goes straight to publish (for any packages with unpublished versions).
opencode-swarm-plugin (full, bundles MCP server + CLI) and claude-code-swarm-plugin (thin wrapper, shells out to swarm CLI). Both register as plugin name "swarm".scripts/ci-publish.sh): Iterates all packages/*, skips private, packs, resolves workspace deps, publishes tarball..changeset/config.json): Public access, GitHub changelog, ignores @swarmtools/web.development
Patterns for testing code effectively. Use when breaking dependencies for testability, adding tests to existing code, understanding unfamiliar code through characterization tests, or deciding how to structure tests. Covers seams, dependency injection, test doubles, and safe refactoring techniques from Michael Feathers.
tools
Principles for building reusable coding systems. Use when designing modules, APIs, CLIs, or any code meant to be used by others. Based on "A Philosophy of Software Design" by John Ousterhout. Covers deep modules, complexity management, and design red flags.
development
Multi-agent coordination patterns for OpenCode swarm workflows. Use when working on complex tasks that benefit from parallelization, when coordinating multiple agents, or when managing task decomposition. Do NOT use for simple single-agent tasks.
development
Meta-skill for generating new skills with proper format and structure. Use when creating new skills for the swarm system or when agents need to generate skill scaffolds. Ensures skills follow conventions (frontmatter format, directory structure, bundled resources).