Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Build type-safe database queries with Drizzle ORM patterns.
Build type-safe database queries with Drizzle ORM patterns.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Export every table from schema file β queries fail silently if table isn't exported Use $inferSelect for query return types, $inferInsert for insert input β they differ (select has defaults filled, insert has optionals) Define relations() in a separate call, not inline with table β Drizzle separates schema from relations
Conditions use functions, not objects: where: eq(users.id, 5) not where: { id: 5 } β Prisma syntax doesn't work Combine conditions with and() / or(): where: and(eq(users.active, true), gt(users.age, 18)) db.query.users.findMany() for relational queries with with:, db.select().from(users) for SQL-like β mixing them causes type errors
drizzle-kit push is dev-only (destructive) β production needs drizzle-kit generate then drizzle-kit migrate Schema changes require regenerating migrations β editing generated SQL breaks the migration hash Set strict: true in drizzle.config.ts to catch schema drift before it hits production
PostgreSQL: use pgTable, imports from drizzle-orm/pg-core MySQL: use mysqlTable, imports from drizzle-orm/mysql-core SQLite: use sqliteTable, imports from drizzle-orm/sqlite-core Mixing imports across drivers compiles but fails at runtime with cryptic errors
Wrap multi-query operations in db.transaction(async (tx) => {}) β Drizzle doesn't auto-batch Use .prepare() for queries executed repeatedly β skips query building overhead Add .limit() to every findMany() / select() β no default limit means full table scans
Forgetting await on queries returns a Promise, not results β TypeScript doesn't catch this if you ignore the return returning() is required to get inserted/updated rows back β without it you get { rowCount } only JSON columns: PostgreSQL uses jsonb(), MySQL uses json() β wrong function = wrong serialization
Agent frameworks, memory systems, reasoning layers, and model-native orchestration.
Largest current source with strong distribution and engagement signals.