safe-migrations SKILL.md skillA
safe-migrations from prabhdeepsingh/claude-plugins is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.
mdr add prabhdeepsingh/claude-plugins/safe-migrations@git:20260825.06c64c5Pins git:20260825.06c64c5 in mdr.lock. Pin the fingerprint instead.
- Audit grade
- A, 17 of 17 checks passed
- Kind
- SKILL.md skill
- Repository
- prabhdeepsingh/claude-plugins
- Path
sonu/skills/safe-migrations/SKILL.md- Versions recorded
- 4
- Latest version
- git:20260825.06c64c5, committed Aug 25, 2026
- First version recorded
- Jul 3, 2026
- Size
- 10,253 bytes
- Repository stars
- 4
- License
- MIT
Zero-downtime schema and data migration discipline — expand → migrate → contract, never destructive in the release that ships the code, backfills as jobs, every step reversible. INVOKE PROACTIVELY when creating or editing a migration in any framework, writing ALTER TABLE / index / enum / constraint changes, planning a backfill, or shipping code and schema together. Not for greenfield schema design ([[code-standards]]) or diagnosing a broken migration ([[debugging]]).
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# Safe migrations — the schema change and the safe path to it are different artifacts The single most expensive junior mistake in backend work: writing the migration for the **final state** instead of the **safe path** to it. `ALTER TABLE users RENAME COLUMN email TO email_address` looks correct — and it is correct, for a world where the deploy is instantaneous. Real deploys are rolling: for minutes (or hours, or days if the deploy fails), **old code and new schema run against each other**. The rename ships, old pods still SELECT `email`, and production is down before the deploy finishes. Every rule below exists because the database outlives and overlaps every version of the code that touches it. ## How to apply this Before writing any migration, answer one question: **"will the *previous* release's code still work against the schema this migration produces?"** If no, the migration must be split into stages. Then walk the change through the expand → migrate → contract sequence, and run the self-check before shipping. --- ## 1. The core law: every migration is compatible one release in each direction …
Read the whole file at its exact version.
How to install
mdr add prabhdeepsingh/claude-plugins/safe-migrations@sha256:8f8759eea3cc2715The line at the top of this page pins the label git:20260825.06c64c5, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
[](https://markdownregistry.com/a/art_f5jegoh6rndi2mai)
4 badge image fetches in 30 days. What the badge shows.
Versions
The registry has recorded 4 versions of this file, between Jul 3, 2026 and Aug 25, 2026, about one every 17 days.
| version | committed | commit | size | audit | |
|---|---|---|---|---|---|
| git:20260825.06c64c5 latest | 2026-08-25 | 06c64c5 | 10,253 B | A | view · diff |
| git:20260729.94bdcd7 | 2026-07-29 | 94bdcd7 | 9,649 B | A | view · diff |
| git:20260705.279241d | 2026-07-05 | 279241d | 9,824 B | A | view · diff |
| git:20260703.b05b13b | 2026-07-03 | b05b13b | 9,859 B | A | view |
Audit of the latest version
- pass: Frontmatter block present
- pass: Frontmatter declares a name
- pass: Frontmatter declares a description
- pass: Size between 200 bytes and 200 KB (10253 bytes)
- pass: No zero-width or bidi control characters
- pass: No instruction hidden inside an HTML comment
- pass: No link to an exfiltration or paste host
- pass: No credential-shaped string
- pass: No instruction to send local credentials anywhere
- pass: No text hidden with inline styles
- pass: No prompt-injection phrasing
- pass: No curl or wget piped into a shell
- pass: No recursive delete of root, home or parent
- pass: No instruction to read or print local credentials
- pass: No base64 blob over 200 characters
- pass: No link to a raw IP address
- pass: No script tag
Source
prabhdeepsingh/claude-plugins · 4 stars · license MIT · pushed 2026-10-27 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_f5jegoh6rndi2mai GET https://markdownregistry.com/api/v1/resolve?ref=prabhdeepsingh/claude-plugins/safe-migrations GET https://markdownregistry.com/api/v1/blob/8f8759eea3cc27153c635e5d258e25cd6ae9e7c0f2e1f4c641fae95deaf04740
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
Guides: the SKILL.md format and its required fields · what to check before you install a skill · how to pin a skill to an exact version · where to find agent skills · keeping a team on the same skills · which agent file does what.
More from prabhdeepsingh/claude-plugins
Every file in prabhdeepsingh/claude-plugins