Contributing
Development workflow, release checks, and open source project conventions
Local Setup
Requirements:
- Node.js 18 or newer
- pnpm 10 or newer
- tmux 3.0 or newer for manual session smoke tests
Install dependencies from the repo root:
pnpm install --frozen-lockfileMain Commands
Run these from the repository root:
pnpm test
pnpm docs:build
pnpm pack:check
pnpm checkWhat they do:
pnpm testruns the Node CLI test suitepnpm docs:buildvalidates the docs site production buildpnpm pack:checkverifies the published npm package can be packed cleanlypnpm checkruns the full default pre-push and pre-release check path
npm publish is guarded by prepublishOnly, so publishing runs pnpm check automatically before npm actually publishes the package.
Integration and Manual Smoke Tests
If tmux is available locally, also run:
pnpm test:integrationRecommended manual smoke test:
node bin/cli.js init
node bin/cli.js inspect --json
node bin/cli.jsThen in a second shell:
node bin/cli.js status --json
node bin/cli.js stop --jsonCI
GitHub Actions validates:
- the CLI test suite on Node 18, 20, and 22
- the docs production build
- package packing with
npm pack --dry-run
That keeps the release path close to the local pnpm check workflow while still exercising multiple Node versions in CI.
Release Workflow
Before publishing a release:
- Update
CHANGELOG.mdunderUnreleased. - Confirm the version in
package.json. - Run
pnpm check. - Run
pnpm test:integrationif tmux is available. - Do the manual smoke test if the release includes CLI behavior changes.
- Move
Unreleasednotes into the final version entry. - Tag and publish the release.
The repository root also includes:
CONTRIBUTING.mdfor contributor setupRELEASE.mdfor the release checklistCHANGELOG.mdfor release notesSECURITY.mdfor vulnerability reporting
Pull Request Expectations
- Keep CLI behavior changes covered by tests.
- Update docs when command behavior or output changes.
- Prefer focused pull requests over mixed refactors.
- Run
pnpm checkbefore opening or updating a pull request.