What pnpm check runs
pnpm check runs seven steps and stops at the first failure. pnpm test runs after it, in the git hook and in CI.
pnpm check ─> pins ─> migrations ─> env:check ─> biome ─> lint ─> typecheck ─> depspnpm test ─> node --test tests/ ─> turbo run test (each workspace package)| Step | Tool | Catches | Rules |
|---|---|---|---|
pins |
house-rules-pins bin |
a dependency that is not an exact version | Exact pins |
migrations |
house-rules-migrations bin |
SQL that reaches another module’s tables, a use-case that opens a transaction | house-rules-migrations |
env:check |
varlock | an environment variable that fails .env.schema |
none in the plugin |
biome |
Biome | formatting, export *, ! assertions, file names |
Biome rules |
lint |
ESLint | narrative comments, broken Markdown links, use-cases that are not capabilities, surfaces built by hand | ESLint rules |
typecheck |
TypeScript 7 with Effect diagnostics | type errors, floating Effects, global errors in the error channel | TypeScript rules |
deps |
Dependency Cruiser | import cycles, layer breaks, deep imports, utils folders |
Dependency Cruiser rules |
Turborepo runs typecheck and test in each workspace package, in dependency order, with caching off. A gate always runs.
What no tool checks
Section titled “What no tool checks”A green pnpm check says nothing about these. A reviewer reads for them. The full list is in the README’s prose rules.
- A comment gives a real reason. It does not restate the code.
- Errors are designed, not just typed. Delivery maps them in one place.
- A cast states its intent.
- Nobody loosens a compiler option or a preset rule in a thin config.
- A cartridge passes the pull-out test: delete its package and its one
Layer.provideline, and the rest still builds. - One module write method is one transaction. A use-case never opens one.
When a check fails
Section titled “When a check fails”The error names the rule. Open its page under all rules, fix the code, and run the check again. Never make a check pass by switching the rule off. AGENTS.md lists the config changes that need the owner’s yes.