How a crewrota release is put together
A crewrota release carries one version number in two files: package.json for the npm package and plugin/.claude-plugin/plugin.json for the Claude Code plugin.
A test fails when the two differ.
The npm package ships the built CLI, the templates and the widget; the plugin is installed from the GitHub repo.
The version
Section titled “The version”| File | Field | At 1.0.4 |
|---|---|---|
package.json |
version |
1.0.4 |
plugin/.claude-plugin/plugin.json |
version |
1.0.4 |
src/test/plugin.test.ts reads both and fails when they are not equal, so npm test catches a release that bumps only one.
crew --version prints the version from package.json, and a backup’s manifest.json records it.
What the npm package ships
Section titled “What the npm package ships”From files in package.json:
| Path | What it is |
|---|---|
dist/ without dist/test/ |
The built CLI |
templates/ |
What crew init writes |
widget/ |
The quota widget and the SwiftBar and xbar plugin |
NOTICE |
Notices |
npm adds package.json, README.md and LICENSE on its own.
prepack runs npm run build, so npm pack and npm publish always pack a fresh dist/.
The bin names crewrota, crw and crew all point at dist/cli.js; engines asks for Node 22.19 or newer.
Check what would ship before a release:
npm pack --dry-runThe plugin
Section titled “The plugin”The repo is a Claude Code plugin marketplace: .claude-plugin/marketplace.json lists one plugin, crewrota, from ./plugin.
Users install it from GitHub, so a plugin change reaches them from the repo, not from npm:
claude plugin marketplace add pasindu-premachandra/crewrotaclaude plugin install crewrota@crewrotaChecks the repo gives you
Section titled “Checks the repo gives you”npm run typecheckandnpm test, which include the version check above.- CI on Windows, macOS and Ubuntu for every push to
mainand every pull request. npm run check:private, which should printclean.npm pack --dry-run, for the file list.
The repo has no CHANGELOG file and no release checklist.