D1 Migration
Überprüft Drizzle-generierte Cloudflare D1-Migrationen, bevor Sie sie anwenden
Getestet · Funktioniert
Was es kann
Ein Cloudflare D1-Migrations-Workflow für Drizzle ORM-Projekte: Überprüft generiertes SQL auf das Tabellen-Neuerstellungs-Muster, das eine noch nicht existierende Spalte kopiert, schreibt es als ALTER TABLE ADD COLUMN um, wendet es lokal und remote an und verifiziert es mit PRAGMA table_info. Behandelt auch die Wiederherstellung einer halb angewendeten Migration durch manuelles Einfügen der Zeile in die d1_migrations-Tabelle und das Batching von Bulk-Inserts unter D1s Parameterlimit. Wird ausgelöst beim Ausführen oder Generieren von D1-Migrationen, wrangler d1 migrations apply-Fehlern, Duplicate-Column-Fehlern und der Einrichtung einer neuen D1-Datenbank.
Testbericht
Installiert in einem temporären HOME (export HOME=$(mktemp -d)) und bestätigt, dass SKILL.md unter ~/.claude/skills/d1-migration/SKILL.md landet; Frontmatter wird mit name+description geparst (plus einem nicht-standardmäßigen compatibility: claude-code-only-Schlüssel), der Body referenziert keine externen Dateien oder Skripte, und ein Scan fand keine curl|sh, base64, Anmeldeinformations-Exfiltration oder Injection-Text. Aufgabe: Überprüfung einer von drizzle-kit generierten 0013_add_priority.sql, die eine `cases`-Tabelle neu erstellt, plus eines 412-Zeilen-Seed-Inserts. Das Baseline-Artefakt nannte die Migration „destruktiv, aber erwartet“, wies den Benutzer an, ein Backup zu erstellen und sie anzuwenden, und schlug vor, den Seed in 100-Zeilen-Blöcke zu zerlegen; das Skill-konforme Artefakt weigerte sich, sie anzuwenden, stellte fest, dass das INSERT...SELECT `priority` aus der alten Tabelle liest, ersetzte die Datei durch eine ALTER TABLE ADD COLUMN und setzte BATCH_SIZE=10. Ich führte dann beide Quoting-Varianten durch sqlite3 3.43.2 aus: mit Backticks gab es einen harten Fehler „no such column: priority“, mit doppelten Anführungszeichen (was Drizzle ausgibt) schrieb es stillschweigend den Literal-String 'priority' in jede Zeile (beobachtet `1|C-1|first|new|priority|1`) – so hätte der Rat der Baseline die Tabelle korrumpiert, und ihr 100x6=600-Parameter-Batch überschreitet immer noch D1s ~100-150-Limit. Schlussfolgerungen: Die eigene Formulierung der Skill „wird wahrscheinlich fehlschlagen“ unterschätzt den Fall der stillen Korruption, und ihre ALTER TABLE-Korrektur übernimmt den geänderten `status`-Standard nicht (ich musste das UPDATE selbst hinzufügen). Trigger-Phrasierungen bewertet – SOLLTE auslösen: „wrangler d1 migrations apply schlägt immer wieder bei 0013 fehl, sagt doppelte Spalte“ (ja), „Ich habe einen Standardwert in meinem Drizzle-Schema geändert und eine Migration generiert, ist es sicher, sie auf D1 anzuwenden?“ (ja), „Migrationen für eine brandneue Cloudflare D1-Datenbank einrichten“ (ja); SOLLTE NICHT auslösen: „Füge eine Prioritätsspalte zu meinem Drizzle-Schema für Neon Postgres“ (korrekt abgelehnt, Beschreibung ist D1-spezifisch), „Entwerfe das Drizzle-Tabellenschema für meine D1-App“ (verpasst – die Klausel „setting up D1 schemas“ der Beschreibung überschneidet sich mit der Geschwister-Skill d1-drizzle-schema und würde diese hier einbeziehen), 4/5.
Getestet am: 2026-07-21 · Claude Code 2.x (agent harness)
Installation
git clone --depth 1 https://github.com/jezweb/claude-skills.git /tmp/d1-migration-src
mkdir -p ~/.claude/skills
cp -R /tmp/d1-migration-src/plugins/cloudflare/skills/d1-migration ~/.claude/skills/d1-migration
# Single self-contained SKILL.md, no scripts/assets/references, no dependencies to install.
# Actually running the workflow needs a Drizzle + Cloudflare D1 project and wrangler
# (npx wrangler) authenticated to a Cloudflare account; the review/rewrite half works
# on the SQL file alone with no account.
# Alternative: the repo ships this as part of a plugin marketplace ("cloudflare" plugin,
# 8 skills incl. d1-drizzle-schema and db-seed) if you prefer installing the whole plugin. Befehle & Beispiel-Prompts
/d1-migrationÜberprüft Drizzle-generierte Cloudflare D1-Migrationen, bevor Sie sie anwenden
Skills reagieren auf normale Anfragen — keine Slash-Befehle nötig. Nach der Installation aktivieren Prompts wie diese den Skill (auf Englisch):
Generate a D1 migration for the new users tableFix this stuck D1 migration on remoteApply pending Drizzle migrations to local D1