This document defines the repeatable workflow for generating and validating EncoreOS schema documentation.Documentation Index
Fetch the complete documentation index at: https://docs.encoreos.io/llms.txt
Use this file to discover all available pages before exploring further.
Generated Outputs
The following files are generated by tooling and should not be hand-edited:docs/database/SCHEMA_CATALOG.mddocs/database/SCHEMA_RELATIONSHIPS.mddocs/database/SCHEMA_SECURITY_RLS.mddocs/database/SCHEMA_CATALOG.DEV.mddocs/database/SCHEMA_RELATIONSHIPS.DEV.mddocs/database/SCHEMA_SECURITY_RLS.DEV.mddocs/database/SCHEMA_CATALOG.PROD.mddocs/database/SCHEMA_RELATIONSHIPS.PROD.mddocs/database/SCHEMA_SECURITY_RLS.PROD.md
scripts/database/generate-schema-docs.tsscripts/database/generate-catalog-from-remote.ts
Data Sources
Primary source (preferred):reports/db/catalog-snapshot.jsonfromnpm run db:catalog:exportreports/db/catalog-snapshot.dev.jsonfromnpm run db:catalog:remote:devreports/db/catalog-snapshot.prod.jsonfromnpm run db:catalog:remote:prod
reports/audits/migration-inventory.jsonfromnpx tsx scripts/database/generate-migration-inventory.ts
unknown/n/a.
Use the remote catalog commands when accuracy against hosted environments matters. The remote catalog exporter is read-only and queries Postgres system catalogs (pg_class, pg_attribute, pg_index, pg_constraint, pg_policies, pg_proc, pg_trigger). It captures tables, columns, indexes, foreign keys, RLS status, policies, views, functions, and triggers.
Required environment variables:
- Dev:
SUPABASE_DEV_DB_URLorSUPABASE_DEV_DB_PASSWORD - Prod:
SUPABASE_PROD_DB_URLorSUPABASE_PROD_DB_PASSWORD - Shared fallback:
SUPABASE_DB_PASSWORD
- Dev:
<SUPABASE_PROJECT_ID_DEV> - Prod:
<SUPABASE_PROJECT_ID_PROD>
Commands
Generate docs
Check docs are up-to-date
Refresh from local catalog and regenerate
Refresh hosted dev and prod catalogs
Check hosted dev and prod docs are up-to-date
Recommended End-to-End Refresh
- Start/reset local Supabase if available:
npx supabase startnpx supabase db reset
- Export catalog:
npm run db:catalog:export
- Generate docs:
npm run db:docs:generate
- Run schema checks:
npm run db:schemas:lintnpm run db:check:toponpm run db:check:fk-indexesnpm run db:check:rls-initplan
- Validate docs and links:
npm run validate-docs
Hosted Environment Accuracy Refresh
Use this workflow when the goal is complete schema documentation accuracy for current hosted Supabase environments:- Ensure read-only database credentials are available:
SUPABASE_DEV_DB_URLorSUPABASE_DEV_DB_PASSWORDSUPABASE_PROD_DB_URLorSUPABASE_PROD_DB_PASSWORD
- Export both remote catalogs:
npm run db:catalog:remote:all
- Generate environment-specific docs:
npm run db:docs:generate:all
- Check generated docs are deterministic:
npm run db:docs:check:all
- Spot-check against Supabase MCP or SQL:
- table count
- RLS enabled/disabled count
- FK count
- policy count
- high-risk table samples
Guardrails
- Do not connect documentation generation to production databases by default.
- Do not manually patch generated schema tables in markdown.
- Keep architecture-level guidance in
docs/architecture/DATABASE_SCHEMA.mdand operational generation details here. - Preserve constitution requirements on tenant isolation and RLS when interpreting generated output.
- Remote catalog scripts must remain read-only; use
SELECTagainst system catalogs only. - Treat prod documentation refresh as observation only. Do not run migrations or DDL as part of schema docs refresh.