get your claude code tokens here
1# CRUSH.md
2
3Build/Lint/Test
4- Install: bun install
5- Typecheck: bun x tsc --noEmit
6- Run: bun run index.ts or bun index.ts
7- Test all: bun test
8- Test watch: bun test --watch
9- Test single: bun test path/to/file.test.ts -t "name"
10- Lint: bun x biome check --write || bun x eslint . (if configured)
11
12Conventions
13- Runtime: Bun (see CLAUDE.md). Prefer Bun APIs (Bun.serve, Bun.file, Bun.$) over Node shims. Bun auto-loads .env.
14- Modules: ESM only ("type": "module"). Use extensionless TS imports within project.
15- Formatting: Prettier/biome if present; otherwise 2-space indent, trailing commas where valid, semicolons optional but consistent.
16- Types: Strict TypeScript. Prefer explicit types on public APIs; infer locals via const. Use unknown over any. Narrow with guards.
17- Imports: Group std/bun, third-party, then local. Use named imports; avoid default exports for libs.
18- Naming: camelCase for vars/functions, PascalCase for types/classes, UPPER_SNAKE for env constants.
19- Errors: Throw Error (or subclasses) with actionable messages; never swallow. Use Result-like returns only if established.
20- Async: Prefer async/await. Always handle rejections. Avoid top-level await outside Bun entrypoints.
21- Logging: Use console.* sparingly; no secrets in logs. Prefer structured messages.
22- Env/config: Read via process.env or Bun.env at startup; validate and fail fast.
23- Files: Prefer Bun.file and Response over fs. Avoid sync IO.
24- Tests: bun:test (import { test, expect } from "bun:test"). Keep tests deterministic, no network without mocking.
25
26Repo Notes
27- No Cursor/Copilot rules detected.
28- Add ".crush" dir to .gitignore (keeps agent scratch files untracked).