SKILL

data-migration

Changes a schema or moves data in production without downtime or loss — column changes, backfills, table splits, and system-to-system moves. Use this whenever the user is writing a migration, altering a table, backfilling data, renaming a column, or moving data between systems. Treat it as required reading before any migration runs against a database with real data. For designing the schema, use data-modeling.

Target: Databases. Automatically collected · unverified.

Excerpt from the author’s documentation

Extracted from a fixed version of SKILL.md in its original language. This is the author’s documentation; installation, compatibility and runtime results have not been verified by this site.

Read the original English text

Topics in the source

  • Data migration
  • 1. Never combine schema change with data change
  • 2. Use expand-then-contract for anything breaking
  • 3. Know which operations take locks
  • 4. Backfill in batches, outside the migration
  • 5. Rehearse on real data volume
  • 6. Have the plan written before you run it
  • Moving between systems

Migrations are the most irreversible thing most engineers do routinely. Code can be rolled back; a dropped column cannot, and a botched backfill can corrupt data in ways no deploy fixes. Two properties make a migration safe, and both must hold: Backwards compatible: the currently deployed code works before and after it runs Reversible, or backed up: you can get back, or you have a copy you have tested restoring If a migration has neither, it needs a maintenance window and a rehearsal. Separate migrations, separate deploys: 1. Add the new structure 2. Backfill it 3. Switch the code to use it 4. Remove the old structure — later, as its own change Combining these makes rollback impossible: reverting the code leaves the data half-moved, and reverting the data loses whatever the new code wrote. Done when: each step is independently deployable and revertible. Renaming a column is not a rename in production. It is: 1. Expand — add newname, nullable 2. Dual-write — deploy code writing both; reads still use the old 3. Backfill — populate newname for existing rows, in batches 4. Switch reads — deploy code reading the new column 5. Stop writing the old 6. Contract — drop oldname, well after e

This is an excerpt. Refer to the complete source and its current requirements.

Source repository
OKHP3/skillz
Source file
docs/archive/skill-redundancy-2026-09-19/docs-data/originals/community/data-migration/SKILL.md
Fixed revision
7b187777d42ab7bc7bab1e5f2c940cd3139ecebf
Read the complete original documentation ↗

Sources and evidence

This record was collected automatically. Its documentation, suitability and runtime behavior have not been manually verified.

Author: OKHP3/skillz · original repository metadata. Documentation review: Not reviewed. Last source check: 2026-11-10T10:00:54.867Z.

Categories are inferred from names, descriptions and paths. They do not establish compatibility.

License and attribution

MIT. Third-party content and copyright remain with their authors. Refer to the original license and terms.

Original license ↗

Synchronization, copying and user-reported success do not mark a resource as runtime-tested.

Limitations and notes

  • Collecting metadata does not mean this site has installed, adapted, runtime-tested or security-reviewed the resource.