D1 Migration
Beoordeelt door Drizzle gegenereerde Cloudflare D1 migraties voordat je ze toepast
Getest · Werkt
Wat het doet
Een Cloudflare D1 migratieworkflow voor Drizzle ORM projecten: inspecteer gegenereerde SQL op het table-recreation patroon dat een nog niet-bestaande kolom kopieert, herschrijf het als ALTER TABLE ADD COLUMN, pas toe op zowel lokaal als remote, en verifieer met PRAGMA table_info. Behandelt ook het herstellen van een half-toegepaste migratie door de rij handmatig in de d1_migrations tabel in te voegen, en het batchgewijs invoegen van bulk inserts onder D1's parameterlimiet. Activeert bij het uitvoeren of genereren van D1 migraties, wrangler d1 migrations apply fouten, duplicate-column failures, en nieuwe D1 database setup.
Testrapport
Geïnstalleerd in een tijdelijke HOME (export HOME=$(mktemp -d)) en bevestigd dat SKILL.md terechtkomt in ~/.claude/skills/d1-migration/SKILL.md; frontmatter parset met name+description (plus een non-standard compatibility: claude-code-only sleutel), de body verwijst naar geen externe bestanden of scripts, en een scan vond geen curl|sh, base64, credential exfiltratie of injectietekst. Taak: beoordeel een door drizzle-kit gegenereerde 0013_add_priority.sql die een `cases` tabel herbouwt, plus een 412-rijen seed insert. Het baseline artefact noemde de migratie "destructief maar verwacht", vertelde de gebruiker om een back-up te maken en deze toe te passen, en suggereerde het seed in chunks van 100 rijen te verwerken; het skill-gevolgde artefact weigerde het toe te passen, wees erop dat de INSERT...SELECT `priority` leest uit de oude tabel, verving het bestand door één ALTER TABLE ADD COLUMN, en stelde BATCH_SIZE=10 in. Ik draaide vervolgens beide quoting varianten door sqlite3 3.43.2: met backticks gaf het harde fouten "no such column: priority", met dubbele aanhalingstekens (wat drizzle uitzendt) schreef het stilzwijgend de letterlijke string 'priority' in elke rij (waargenomen `1|C-1|first|new|priority|1`) — dus het advies van de baseline zou de tabel hebben gecorrumpeerd, en zijn 100x6=600-parameter batch overschrijdt nog steeds D1's ~100-150 limiet. Deducties: de eigen "will likely fail" bewoording van de skill onderschat de stille-corruptie case, en de ALTER TABLE fix neemt de gewijzigde `status` default niet over (ik had de UPDATE zelf moeten toevoegen). Triggerfraseringen beoordeeld — MOET activeren: "wrangler d1 migrations apply blijft falen op 0013, says duplicate column" (ja), "Ik heb een default in mijn Drizzle schema gewijzigd en een migratie gegenereerd, is het veilig om toe te passen op D1?" (ja), "zet migraties op voor een gloednieuwe Cloudflare D1 database" (ja); MOET NIET activeren: "voeg een priority kolom toe aan mijn Drizzle schema voor Neon Postgres" (correct geweigerd, beschrijving is D1-specifiek), "ontwerp het Drizzle tabel schema voor mijn D1 app" (gemist — de "setting up D1 schemas" clausule van de beschrijving overlapt de sibling d1-drizzle-schema skill en zou deze meetrekken), 4/5.
Getest op: 2026-07-21 · Claude Code 2.x (agent harness)
Installatie
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. Commando's en voorbeeldprompts
/d1-migrationBeoordeelt door Drizzle gegenereerde Cloudflare D1 migraties voordat je ze toepast
Skills reageren op gewone verzoeken — geen commando's om te onthouden. Na installatie activeren prompts zoals deze de skill (in het Engels):
Generate a D1 migration for the new users tableFix this stuck D1 migration on remoteApply pending Drizzle migrations to local D1