CodeVetter · Repo Unpack · Contributor handoff
keystonejs/keystone
Begin with the owning package and relevant example, then trace configuration, generated schemas, request context, and persistence together. Tests and CI were inspected, not executed; future validation must distinguish selected test commands from actual results and use disposable databases. Keep source edits small, preserve generated/public API boundaries, and treat this inventory as bounded rather than exhaustive.
- Use the pinned pnpm version and workspace catalog; read root scripts before invoking checks because postinstall runs Preconstruct setup and recursive package checks.
- For runtime changes, read schema.ts, getContext.ts, createContext.ts, and Express startup together: defaults, dual schemas, client construction, and request-session ownership reside in different modules.
- Change schema generators/configuration rather than generated GraphQL, Prisma, type, or Admin output; frozen builds compare generated schemas to files, and non-live UI generation removes prior output except .next.
- Keep internal(), sudo(), query, db, and Prisma semantics separate; schema omission and permission bypass are distinct switches, and direct Prisma operations do not inherit the example's Keystone access checks.
- For authorized validation, select existing scripts or focused suites first: document edits use test:vitest, access changes use test:node/API tests, and Admin UI behavior uses test:admin-ui. These commands and CI were inspected, not executed here.
- Use disposable database targets for tests: tests2 selects provider from DATABASE_URL, creates temporary project directories and isolated database locations, then generates artifacts/client and pushes Prisma schema.
- Editor work should follow the architecture guide's normalization and rendering conventions: avoid reactive Slate hooks in element/leaf renderers, derive toolbar state centrally, and assert editor structure with snapshots.
- Before using examples as implementation templates, reconcile magic-link password metadata with core's KDF API and review lifecycle compatibility: bulk mutation errors deliberately preserve input ordering for legacy test expectations.