drizzle-migration

Drizzle Kit Migration Workflow

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "drizzle-migration" with this command: npx skills add dexploarer/hyper-forge/dexploarer-hyper-forge-drizzle-migration

Drizzle Kit Migration Workflow

This skill guides you through the proper database migration workflow using Drizzle Kit for the asset-forge project.

When to Use This Skill

Use this skill when:

  • User asks to "create a migration" or "generate a migration"

  • Database schema files in server/db/schema/ have been modified

  • User asks to "update the database" or "apply migrations"

  • User asks about the migration workflow

Workflow Steps

  1. Generate Migration from Schema

After making changes to TypeScript schema files in packages/asset-forge/server/db/schema/ , generate a migration:

cd ${WORKSPACE_DIR}/packages/asset-forge bun run db:generate

What this does:

  • Reads all schema files from server/db/schema/

  • Compares with previous migration state

  • Generates SQL migration file in server/db/migrations/

  • Auto-generates migration name like 0001_clever_name.sql

Common errors:

  • TypeScript syntax errors in schema files → Fix with /check-types

  • Circular dependencies → Check foreign key references

  • Invalid column types → Verify Drizzle types

  1. Review Generated SQL

ALWAYS review the SQL before applying! Use the Read tool to check:

Find latest migration

cd ${WORKSPACE_DIR}/packages/asset-forge ls -t server/db/migrations/*.sql | head -1

Review checklist:

  • SQL statements match intended schema changes

  • No unintended DROP TABLE or DROP COLUMN statements

  • Foreign keys reference existing tables

  • Indexes are properly named

  • Data migrations (if any) are correct

  1. Apply Migration to Database

After reviewing, apply the migration:

cd ${WORKSPACE_DIR}/packages/asset-forge bun run db:migrate

What this does:

  • Connects to database using DATABASE_URL

  • Runs pending migrations in order

  • Updates migration journal table

  • Applies schema changes

Troubleshooting:

  • Migration fails → Check database connection in .env

  • "Relation already exists" → Schema already in DB, might need to reset or create fix migration

  • Permission errors → Check database file permissions (SQLite) or user permissions (PostgreSQL)

  1. Verify Changes

After successful migration, verify with Drizzle Studio:

cd ${WORKSPACE_DIR}/packages/asset-forge bun run db:studio

Opens web UI at http://test-db-studio:4983 to inspect:

  • Tables created/modified correctly

  • Data integrity maintained

  • Indexes created

  • Foreign keys working

Important Notes

Auto-Generated vs Manual SQL

  • ✅ ALWAYS use Drizzle Kit to generate migrations

  • ❌ NEVER write SQL files manually in migrations folder

  • Why: Drizzle tracks schema state and ensures consistency

Migration Files Must Be Committed

After generating and applying migrations:

  • Add both schema files AND migration SQL to git

  • Commit together to keep schema + migrations in sync

  • Never .gitignore the migrations folder

Development vs Production

  • Development: Can use bun run db:push to sync schema directly (skips migrations)

  • Production: ALWAYS use migrations (db:generate + db:migrate)

Rollback Strategy

Drizzle Kit doesn't have automatic rollback. To rollback:

  • Create a new "down" migration that reverses changes

  • Or restore database from backup

  • Or manually write DROP/ALTER statements

Environment Requirements

Required in .env :

DATABASE_URL="postgresql://user:pass@host:port/dbname"

or for SQLite:

DATABASE_URL="file:./local.db"

Related Commands

  • /migrate

  • Full migration workflow (generate → review → apply)

  • /migrate generate

  • Generate only

  • /migrate apply

  • Apply only

  • /db/studio

  • Launch Drizzle Studio

  • /check-types

  • Verify schema TypeScript

Example Workflow

// 1. User modifies schema // packages/asset-forge/server/db/schema/teams.schema.ts export const teams = pgTable('teams', { id: uuid('id').primaryKey().defaultRandom(), name: varchar('name', { length: 255 }).notNull(), // NEW: added description field description: text('description'), createdAt: timestamp('created_at').defaultNow().notNull(), });

// 2. Generate migration // bun run db:generate // → Creates: 0004_amazing_hulk.sql

// 3. Review SQL // ALTER TABLE "teams" ADD COLUMN "description" text;

// 4. Apply migration // bun run db:migrate // → Migration applied successfully

// 5. Commit changes // git add server/db/schema/teams.schema.ts // git add server/db/migrations/0004_amazing_hulk.sql // git commit -m "feat: add description field to teams table"

Key Takeaways

  • TypeScript → SQL: Schema changes in .ts files generate .sql migrations

  • Review First: Always read the SQL before applying

  • Commit Together: Schema files + migration files in same commit

  • Production-Safe: Migrations are the safe way to evolve schema

  • Drizzle Studio: Visual verification after applying migrations

Files to Know

  • packages/asset-forge/drizzle.config.ts

  • Drizzle Kit configuration

  • packages/asset-forge/server/db/schema/

  • All schema definitions

  • packages/asset-forge/server/db/migrations/

  • Generated SQL migrations

  • packages/asset-forge/server/db/migrations/meta/_journal.json

  • Migration tracking

Remember: Never skip the review step! Always inspect the generated SQL before running db:migrate.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

create-agent

No summary provided by upstream source.

Repository SourceNeeds Review
General

threejs-scene-builder

No summary provided by upstream source.

Repository SourceNeeds Review
General

api-documentation-generator

No summary provided by upstream source.

Repository SourceNeeds Review