Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
Claude Skills Maintainers avatar

Drizzle Orm D1

  • 196 repo stars
  • Updated July 25, 2026
  • secondsky/claude-skills

Build Cloudflare D1 schemas and type-safe SQL queries with Drizzle ORM, managing migrations via Drizzle Kit and using the D1 batch API.

About

A skill for using Drizzle ORM with Cloudflare D1 databases to build schemas and type-safe SQL queries. Developers use it to manage migrations with Drizzle Kit, define relations, and use the D1 batch API, while resolving D1_ERROR, transaction, and foreign-key constraint failures.

  • Drizzle ORM for Cloudflare D1
  • Type-safe SQL queries
  • Drizzle Kit migrations
  • D1 batch API & relations

Drizzle Orm D1 by the numbers

  • Data as of Jul 28, 2026 (Skillselion catalog sync)
/plugin marketplace add secondsky/claude-skills
/plugin install drizzle-orm-d1@claude-skills

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
repo stars196
Last updatedJuly 25, 2026
Repositorysecondsky/claude-skills

What it does

Build Cloudflare D1 schemas and type-safe SQL queries with Drizzle ORM, managing migrations via Drizzle Kit and using the D1 batch API.

README.md

Drizzle ORM for Cloudflare D1

Status: Production Ready ✅ Last Updated: 2025-10-24 Production Tested: Used across 2025 Cloudflare ecosystem, full D1 compatibility


Auto-Trigger Keywords

Claude Code automatically discovers this skill when you mention:

Primary Keywords

  • drizzle orm
  • drizzle d1
  • drizzle cloudflare
  • type-safe sql
  • drizzle schema
  • drizzle migrations
  • drizzle kit
  • orm cloudflare
  • d1 orm
  • database orm

Secondary Keywords

  • drizzle typescript
  • drizzle relations
  • drizzle transactions
  • drizzle query builder
  • schema definition
  • prepared statements drizzle
  • drizzle batch
  • drizzle workers
  • serverless orm
  • edge database orm
  • sqlite orm
  • migration management
  • schema migrations
  • database schema typescript
  • relational queries
  • drizzle joins
  • drizzle insert
  • drizzle select

Error-Based Keywords

  • "drizzle migration failed"
  • "schema not found" drizzle
  • "d1 binding error" drizzle
  • "transaction not supported" d1
  • "foreign key constraint" drizzle
  • "no such module wrangler" drizzle
  • "D1_ERROR" drizzle
  • "BEGIN TRANSACTION" d1
  • "drizzle push failed"
  • "migration apply error"
  • "drizzle type inference"
  • "PRAGMA foreign_keys"

What This Skill Does

Provides production-tested patterns for Drizzle ORM with Cloudflare D1 databases. Covers type-safe schema definition, migrations management, query building, relations, transactions using D1 batch API, and complete Cloudflare Workers integration.

Core Capabilities

Type-Safe Queries - Full TypeScript inference for all queries ✅ Schema Definition - Complete D1 column types, constraints, and relations ✅ Migrations Management - Generate and apply migrations with Drizzle Kit + Wrangler ✅ Relations & Joins - One-to-many, many-to-many with type-safe queries ✅ D1 Batch API - Transactions using D1's batch API (not SQL BEGIN/COMMIT) ✅ Prepared Statements - Performance optimization for repeated queries ✅ Workers Integration - Complete Hono + Drizzle + D1 setup ✅ Error Prevention - Prevents 12 documented issues with production-tested solutions ✅ 10 Templates - Ready-to-use patterns for every use case


Known Issues This Skill Prevents

Issue Why It Happens Source How Skill Fixes It
D1 Transaction Errors Drizzle tries to use SQL BEGIN TRANSACTION, D1 requires batch API drizzle-orm#4212 Use db.batch() instead
Foreign Key Failures PRAGMA foreign_keys = OFF in migrations causes issues drizzle-orm#4089 Proper migration order + cascading
Module Import Errors OpenNext bundler issues with Wrangler imports drizzle-orm#4257 Correct import paths documented
D1 Binding Not Found Missing or incorrect wrangler.jsonc configuration Common D1 issue Verify binding names match
Migration Apply Failures Syntax errors or conflicting migrations Community reports Test locally with --local first
Schema Inference Errors Complex circular references in relations TypeScript limitation Explicit type annotations
Prepared Statement Caching D1 doesn't cache like SQLite D1 limitation Use .all() method correctly
Transaction Rollback D1 batch API doesn't support traditional rollback D1 API design Manual error handling patterns
TypeScript Strict Mode Drizzle types can be loose Type safety issue Explicit return types
Config Not Found Wrong drizzle.config.ts location or name User error Must be in project root
Remote vs Local Confusion Applying to wrong database Development workflow Use --local consistently
TOML vs JSON Config Mixing config formats Wrangler versions Use wrangler.jsonc consistently

When to Use This Skill

✅ Use When:

  • Building type-safe D1 database schemas
  • Want better DX than raw SQL queries
  • Managing database migrations systematically
  • Need TypeScript inference for database operations
  • Working with complex relations and joins
  • Building production Cloudflare Workers with D1
  • Migrating from raw D1 queries to ORM
  • Encountering transaction or migration errors
  • Want IDE autocomplete for database queries

❌ Don't Use When:

  • Need traditional SQL transactions (use D1 batch API instead)
  • Simple key-value storage (use KV instead)
  • Document storage (use R2 instead)
  • Need full PostgreSQL features (use Hyperdrive + Postgres instead)
  • Want to connect to local SQLite directly (use better-sqlite3)

Quick Usage Example

# Install Drizzle
bun add drizzle-orm drizzle-kit  # preferred
# or: npm install drizzle-orm drizzle-kit

# Create drizzle.config.ts
cat > drizzle.config.ts << 'EOF'
import { defineConfig } from 'drizzle-kit';

export default defineConfig({
  schema: './src/db/schema.ts',
  out: './migrations',
  dialect: 'sqlite',
  driver: 'd1-http',
  dbCredentials: {
    accountId: process.env.CLOUDFLARE_ACCOUNT_ID!,
    databaseId: process.env.CLOUDFLARE_DATABASE_ID!,
    token: process.env.CLOUDFLARE_D1_TOKEN!,
  },
});
EOF

# Define schema
cat > src/db/schema.ts << 'EOF'
import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';

export const users = sqliteTable('users', {
  id: integer('id').primaryKey({ autoIncrement: true }),
  email: text('email').notNull().unique(),
  name: text('name').notNull(),
  createdAt: integer('created_at', { mode: 'timestamp' }).$defaultFn(() => new Date()),
});
EOF

# Generate migration
npx drizzle-kit generate

# Apply migration locally
npx wrangler d1 migrations apply my-database --local

# Apply migration to production
npx wrangler d1 migrations apply my-database --remote

# Use in Worker
cat > src/index.ts << 'EOF'
import { drizzle } from 'drizzle-orm/d1';
import { users } from './db/schema';

export default {
  async fetch(request, env) {
    const db = drizzle(env.DB);

    // Type-safe query with full TypeScript inference
    const allUsers = await db.select().from(users);

    return Response.json(allUsers);
  },
};
EOF

Result: Type-safe D1 queries with migrations, zero raw SQL

Full instructions: See SKILL.md


Package Versions (Verified 2025-10-24)

Package Version Status
drizzle-orm 0.44.7 ✅ Latest stable
drizzle-kit 0.31.5 ✅ Latest stable
@cloudflare/workers-types 4.20251014.0 ✅ Latest
wrangler 4.43.0+ ✅ Compatible
better-sqlite3 12.4.1 ✅ Optional (local dev)

Dependencies

Prerequisites:

  • cloudflare-d1 - D1 database setup and bindings
  • cloudflare-worker-base - Worker project structure

Integrates With:

  • hono-routing - API routes with type-safe database queries
  • clerk-auth - User authentication with user database models
  • tanstack-query - Client-side data fetching from Drizzle endpoints

File Structure

drizzle-orm-d1/
├── SKILL.md              # Complete documentation
├── README.md             # This file
├── scripts/              # Version checking
│   └── check-versions.sh
├── references/           # Deep-dive docs (6 files)
│   ├── wrangler-setup.md
│   ├── schema-patterns.md
│   ├── migration-workflow.md
│   ├── query-builder-api.md
│   ├── common-errors.md
│   └── links-to-official-docs.md
└── templates/            # 10 ready-to-use files
    ├── drizzle.config.ts
    ├── schema.ts
    ├── client.ts
    ├── basic-queries.ts
    ├── relations-queries.ts
    ├── migrations/
    │   └── 0001_example.sql
    ├── transactions.ts
    ├── prepared-statements.ts
    ├── cloudflare-worker-integration.ts
    └── package.json

Official Documentation


Related Skills

  • cloudflare-d1 - Raw D1 SQL queries and setup
  • cloudflare-worker-base - Worker project structure
  • hono-routing - API routing framework
  • clerk-auth - Authentication with user models
  • tanstack-query - Client-side data fetching

Contributing

Found an issue or have a suggestion?


License

MIT License - See main repo LICENSE file


Production Tested: Full D1 compatibility, used across 2025 Cloudflare ecosystem Token Savings: ~60% Error Prevention: 100% (all 12 known issues prevented) Ready to use! See SKILL.md for complete setup.

Related skills

Databasesdatabases

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.