Development
Environment and setup
Use Node.js 24 (see .nvmrc) and npm:
nvm use
npm ciQuality checks
npm run build
npm run typecheck
npm run lint
npm test
npm audit --audit-level=high
npm run docs:buildnpm run package:smoke builds a tarball, installs it under a temporary prefix, and checks the installed executable, JSON output, MCP handshake, tool list, structured analysis, and path boundary. npm run benchmark creates a synthetic TypeScript fixture and reports duration, file/diagnostic counts, and process RSS measurements. On Node.js 24.21.0/macOS arm64, the initial 250-source-file run scanned 253 total files in 669.76 ms with 0 diagnostics and an observed RSS increase of 209.3 MiB. Subsequent runs scanned the same 253 files in 661.57–668.89 ms with 0 diagnostics and RSS increases of 208.4–208.7 MiB. The small single-run timing variation is not evidence of a meaningful speed improvement; the scanner change targets bounded traversal and directory-memory growth. Treat these single-machine measurements as indicative, not a performance guarantee.
CI
.github/workflows/ci.yml runs Node.js 24 validation on GitHub-hosted Ubuntu, Windows, and macOS for pushes to main, pull requests targeting main, and manual dispatch. Local checks here only verify the current host; review Actions results before claiming other OSes passed.
Design constraints
- Preserve the version 0.3.0 CLI and JSON result schema.
- Keep MCP stdio output free of logs and banners.
- Do not execute analyzed code or send project contents over the network.
- Respect ignore patterns, canonical roots, and compiler file-access restrictions.
- Add fixture-backed regression tests for behavior changes.