supaschema renders guarded DDL where PostgreSQL supports it and catalog-checked blocks where it does not. The goal is simple: a second apply should converge instead of failing on objects that already exist.
Use this when
- Deploy jobs can be retried after timeouts, locks, or crashes.
- Migration files are reviewed before a database has caught up.
- Existing migrations need static safety checks.
- CI should reject unguarded DDL or unsafe
CASCADE.
Do this
Generate migrations from the schema tree:Verify
When a disposable database is available, prove replay behavior:Related
Check command
See diagnostics and reporter flags.
Verify command
Apply pending migrations twice in a disposable database.
Destructive hints
Approve risky operations deliberately.
Migration pipeline
See how diff, check, and verify fit together.

