Skip to main content
The rules below are the single source for the scaffold (pnpm new) and the validator (pnpm validate). Each row names the ADR, or the settlement item, it comes from.

Package categories

A package lives at packages/<category>/<name>. Tooling presets live at packages/tooling/<name> and carry tier:config.

Package entries

Core . is always present. Other entries are added only with real code (ADR 0126).

Kind folders

Code of a module sits in these folders under src/. A file’s suffix names its kind; the test column is the tier its file needs. Root module: src/<name>.module.ts, test <name>.module.int.test.ts, ADR 0090. React hooks: use-<name>.ts beside their component, test use-<name>.test.ts (unit), ADR 0129. Extension hooks are the only hooks/ files. Static files: assets/<kind>/ beside the root module (public, lang, templates, stubs, data), ADR 0234. static files shipped with a module; the word resource is reserved for @Resource.

Banned folders

Test tiers

Every test file sits directly in a __tests__/ folder beside its subject (ADR 0022). .spec.* is not used.

Documented exceptions

Forbidden files