database-migrations

Plan reversible database migrations across PostgreSQL, MySQL, and ORMs.

Updated Mar 16, 2026
One-click install
npx skills add https://github.com/thmspi/claude-setup --skill database-migrations-thmspi
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: database-migrations
Source: https://github.com/thmspi/claude-setup/tree/main/.claude/skills/database-migrations
Command: npx skills add https://github.com/thmspi/claude-setup --skill database-migrations-thmspi

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

Provides safe, reversible database migration patterns to minimize production risk when evolving schemas and migrating data across PostgreSQL, MySQL, and ORMs such as Prisma, Drizzle, Django, TypeORM, and golang-migrate.

Core Features & Use Cases

  • Schema-only changes with safety checks (UP/DOWN or explicit irreversible).
  • Separate, non-overlapping data migrations and schema migrations.
  • Zero-downtime deployment guidance, including expand-contract strategies and concurrent indexing.

Quick Start

Plan and execute a zero-downtime migration starting with adding a nullable column, backfilling data, and updating application code to use the new column.

Frequently Asked Questions about database-migrations

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I perform zero-downtime database migrations in PostgreSQL or MySQL?

Zero-downtime database migrations use expand-contract strategies and concurrent indexing to apply schema changes safely. This involves separating schema and data migrations, adding nullable columns first, backfilling data, and updating application code before dropping old structures.

What is the best way to add a column and backfill data without locking production tables?

The best way to add columns and backfill data without table locks is separating schema migrations from data migrations. You add a nullable column, backfill rows asynchronously, update application code to use the new column, and enforce reversible UP/DOWN migrations to ensure safe rollback.

Does this database migration approach work with ORMs like Prisma, Drizzle, or TypeORM?

Yes, these database migration patterns work across ORMs like Prisma, Drizzle, TypeORM, and Django. They enforce reversible UP/DOWN migrations, explicit irreversibility marks, and separation of schema and data migrations to minimize production risk across PostgreSQL and MySQL.

How do I rollback a failed schema migration in production?

To rollback a failed schema migration, you use explicit DOWN migrations or irreversibility marks applied during deployment. By enforcing UP/DOWN separation and separating schema changes from data backfills, you ensure database migrations remain reversible and minimize production downtime.

When should I mark a database migration as irreversible?

You should mark a database migration as irreversible when a safe rollback is impossible, such as after dropping columns or tables. Explicit irreversibility marks prevent accidental data loss during schema migrations and ensure zero-downtime deployment strategies remain intact.

Why separate schema migrations from data migrations in modern web apps?

Separating schema migrations from data migrations prevents locking and deployment failures in production databases. Keeping schema-only changes and data backfills as non-overlapping operations ensures safe, reversible patterns and enables zero-downtime database deployments across PostgreSQL and MySQL.