pnpm installRequires Node.js 24 and pnpm 10.
Run the checks before opening a pull request:
pnpm check
pnpm typecheck
pnpm buildUseful focused commands:
pnpm format:check
pnpm lint
pnpm release:checkUse pnpm format and pnpm lint:fix for mechanical fixes.
- Prefer pure
it()tests for logic with no service dependencies. - Use
it.layer(ConfigPlatformLayer)for config/auth tests that need filesystem, path, and crypto only — not fullNodeServices.layer. - Colocate tests as
{module}.test.tsnext to{module}.ts; shared fixtures use{module}.test-utils.tsin the same directory. - Keep feature code grouped under its module (e.g.
config/credential/cipher.ts,config/url/error.ts) with sibling-onlyindex.tsbarrels — no standaloneerror/directories, but each feature owns anerror.tswhen needed. - Top-level module files use the module name (e.g.
config/config.tsforT3Config,config/error.tsfor shared config errors). - Use
it.layer(ConfigPlatformLayer)for config/auth tests that need filesystem, path, and crypto only — not fullNodeServices.layer. - Use
CliRuntime.layerTest()for cwd fixtures andconfig/env/env.test-utils.tsforHOME. - Split tests by module/concern; keep integration files under ~120 lines when possible.
- Reserve full app-layer smoke tests for CLI routing and end-to-end wiring only.
Keep changes scoped and small. Include user-facing README updates when command behavior changes.
Use short, lowercase commit and pull request titles.