pnpm-workspace.yaml lists: apps/*, packages/<category>/<name>, services/*. The rules on this page apply to all of them. Kind-specific shape lives on Packages, Services and Apps.
Required files
A member with a build or tests also carries
vitest.config.ts (extends a @stackra/vitest-config preset) and tsdown.config.ts (when build is tsdown), each starting with the file contract. All source lives in src/.
The PII table
AGENTS.md always has a ## PII section with the columns Data, Where, Handling. A member that handles no personal data says so and names the change that would make it revisit the answer:
package.json
Key order:
name, version, private, description, license, files, type, main (Expo only), sideEffects, imports, exports, scripts, dependencies, devDependencies. Order is convention, not checked.
turbo.jsonc and tiers
The tag matches the directory:
The direction rule is a law: see Boundaries and ADR 0003.
Kinds
Scaffolding
pnpm new <kind> <name> [--category <c>] [--entries <list>|none] [--description "<text>"] [--title "<Title>"] [--port <n>] [--repo <path>] [--dry-run] copies a template from tools/scaffold/templates, replaces the tokens, copies the target repo’s LICENSE, and formats the result. Then run pnpm install and pnpm verify.
What enforces this
Run it directly with
node tools/scripts/validate-repository.mjs; it prints nothing when clean.