D1 Migration

Gjennomgår Drizzle-genererte Cloudflare D1-migreringer før du anvender dem

av jezweb · jezweb/claude-skills

Bestått ★ 8.4/10

D1 Migration — Gjennomgår Drizzle-genererte Cloudflare D1-migreringer før du anvender dem

Hva den gjør

En Cloudflare D1 migrasjonsarbeidsflyt for Drizzle ORM-prosjekter: inspiser generert SQL for tabell-rekonstruksjonsmønsteret som kopierer en ennå ikke-eksisterende kolonne, omskriv den som ALTER TABLE ADD COLUMN, anvend på både lokal og fjern, og verifiser med PRAGMA table_info. Dekker også gjenoppretting av en halv-anvendt migrasjon ved å sette inn raden i d1_migrations-tabellen manuelt, og batching av bulk-innsettinger under D1s parametergrense. Utløses ved kjøring eller generering av D1-migreringer, wrangler d1 migrations apply-feil, duplikat-kolonne-feil, og nytt D1-databaseoppsett.

Testrapport

Installert i en midlertidig HOME (export HOME=$(mktemp -d)) og bekreftet at SKILL.md lander på ~/.claude/skills/d1-migration/SKILL.md; frontmatter parset med name+description (pluss en ikke-standard compatibility: claude-code-only nøkkel), kroppen refererer ikke til eksterne filer eller skript, og en skanning fant ingen curl|sh, base64, legitimasjons-eksfiltrering eller injeksjonstekst. Oppgave: gjennomgå en drizzle-kit-generert 0013_add_priority.sql som gjenoppbygger en `cases`-tabell, pluss en 412-rads seed-innsetting. Baseline-artefakten kalte migrasjonen "destructive but expected", ba brukeren om å sikkerhetskopiere og anvende den, og foreslo å dele opp seeden i 100 rader; den ferdighets-følgende artefakten nektet å anvende den, påpekte at INSERT...SELECT leser `priority` fra den gamle tabellen, erstattet filen med én ALTER TABLE ADD COLUMN, og satte BATCH_SIZE=10. Jeg kjørte deretter begge siteringsvariantene gjennom sqlite3 3.43.2: med backticks ga det harde feil "no such column: priority", med doble anførselstegn (det drizzle sender ut) skrev det stille den bokstavelige strengen 'priority' inn i hver rad (observert `1|C-1|first|new|priority|1`) — så baselinens råd ville ha korrumpert tabellen, og dens 100x6=600-parameter batch overskrider fortsatt D1s ~100-150 grense. Konklusjoner: ferdighetens egen "will likely fail" ordlyd underdriver tilfellet med stille korrupsjon, og dens ALTER TABLE-fiks overfører ikke den endrede `status`-standardverdien (jeg måtte legge til UPDATE selv). Utløserfraser vurdert — SKAL utløses: "wrangler d1 migrations apply keeps failing on 0013, says duplicate column" (ja), "I changed a default in my Drizzle schema and generated a migration, is it safe to apply to D1?" (ja), "set up migrations for a brand new Cloudflare D1 database" (ja); SKAL IKKE utløses: "add a priority column to my Drizzle schema for Neon Postgres" (korrekt avvist, beskrivelsen er D1-spesifikk), "design the Drizzle table schema for my D1 app" (bommet — beskrivelsens "setting up D1 schemas" klausul overlapper søsken d1-drizzle-schema-ferdigheten og ville trukket denne inn), 4/5.

Testet på: 2026-07-21 · Claude Code 2.x (agent harness)

Installer

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.

Kommandoer og eksempelprompter

  • /d1-migrationGjennomgår Drizzle-genererte Cloudflare D1-migreringer før du anvender dem

Skills utløses av vanlige forespørsler — ingen kommandoer å huske. Etter installasjonen aktiverer prompter som disse skillen (på engelsk):

  • Generate a D1 migration for the new users table
  • Fix this stuck D1 migration on remote
  • Apply pending Drizzle migrations to local D1