Thanks for contributing to plane-cli.
Bun is used for local development. Node.js 20+ is required for users installing the CLI — Bun is only needed if you are working on the source.
- Keep the CLI API-driven
- Avoid Plane-server-specific assumptions
- Prefer stable command verbs over ad hoc flags
- Keep human-readable output clean and add machine-readable output deliberately
bun install
bun run typecheck
bun run build
bun testTests are organized in tests/:
tests/
├── core/
│ ├── api-client.test.ts # HTTP client, retry logic, pagination (24 tests)
│ ├── config-store.test.ts # Config loading/saving, env vars (18 tests)
│ └── resolvers.test.ts # Issue ref parsing, name resolution (21 tests)
└── smoke/
└── cli-smoke.test.ts # Version, help, command presence (3 tests)
Run tests: npm test or bun test
Run with coverage: npm run test -- --coverage
- Commands live in
src/commands/ - Shared logic belongs in
src/core/ - Avoid coupling command handlers directly to HTTP details
- Keep auth/context behavior reusable across command groups