Operator
Four CI guards enforce rr conventions across the catalog. All run locally via npm run slices:check and gate every commit + push via .githooks/pre-commit and .githooks/pre-push.
# Full chain locally
npm run slices:check
# Individual guards
npm run audit:slices
npm run audit:templates
npm run audit:file-size
npm run audit:convex-features
npm run validate:manifests
npm run validate:contracts:check
# Hooks (auto on commit + push)
.githooks/pre-commit # typecheck + contracts + 3 audit gates (~15s)
.githooks/pre-push # 3 audit gates (~5s)scripts/validation/audit-slice.mjs
All violations are errors. CI blocks.
scripts/validation/audit-templates.mjs
Error in components/templates/* + cookbook/layouts/* + missing Pages CRUD on website-templates; warning in single-page block demos.
scripts/validation/audit-file-size.mjs
New violations are errors. Grandfathered files emit warnings.
scripts/validation/validate-manifests.mjs
Errors fail validation. Run with --check to fail CI on errors.
scripts/validation/audit-convex-features.mjs
BANNED files + missing _schema.ts are errors. Naming + missing tables export are warnings.
scripts/validation/<name>.mjs — keep main file ≤200 LOC (extract helpers to <name>-helpers.mjs).package.json scripts (audit:<name>) and the slices:check chain..githooks/pre-push (or pre-commit if fast enough).