What problem does it solve? Drizzle ORM has non-obvious behaviors—silent missing relations, misleading nullability, destructive column renames, and db:push drift—that cause data loss and production incidents in T3 Turbo + PostgreSQL (Neon) monorepos. This Skill encodes the correct patterns so agents avoid these traps. ## Core Features & Use Cases - Schema Design Rules: Primary key strategy (serial vs uuid vs cuid2), branded column types with .$type<>(), and correct pairing of foreign keys with relations(). - Query Patterns: findFirst undefined semantics, explicit with: eager loading, N+1 tradeoffs, .prepare() for hot paths, and raw SQL escape hatches. - Migration Safety: Enforces migration-file-only workflows (never db:push), multi-deploy safe column renames, zero-downtime column additions, and --custom data migrations. - Use Case: When asked to rename a column in packages/db/src/schemas/, the agent generates a multi-step migration (add nullable column, backfill, switch code, drop old column) instead of a destructive single-step rename. ## Quick Start Review my Drizzle schema changes in packages/db and generate a safe migration plan for renaming the user email column.