D1 Migration
Gennemgår Drizzle-genererede Cloudflare D1-migrations, før du anvender dem
Testet · Virker
Hvad det gør
Et Cloudflare D1 migrations-workflow for Drizzle ORM-projekter: inspicer genereret SQL for table-recreation-mønsteret, der kopierer en endnu ikke-eksisterende kolonne, omskriv det som ALTER TABLE ADD COLUMN, anvend på både lokal og fjern, og verificer med PRAGMA table_info. Dækker også genopretning af en halvt anvendt migration ved manuelt at indsætte rækken i d1_migrations-tabellen og batching af bulk-inserts under D1's parametergrænse. Udløses ved kørsel eller generering af D1-migrations, wrangler d1 migrations apply-fejl, duplicate-column-fejl og ny D1-databaseopsætning.
Testrapport
Installeret i en throwaway HOME (export HOME=$(mktemp -d)) og bekræftet, at SKILL.md lander på ~/.claude/skills/d1-migration/SKILL.md; frontmatter parser med name+description (plus en ikke-standard compatibility: claude-code-only nøgle), body refererer ikke til eksterne filer eller scripts, og en scanning fandt ingen curl|sh, base64, credential exfiltration eller injektionstekst. Opgave: gennemgå en drizzle-kit-genereret 0013_add_priority.sql, der genopbygger en `cases`-tabel, plus en 412-rækkes seed-insert. Baseline-artefaktet kaldte migrationen "destructive but expected", fortalte brugeren at sikkerhedskopiere og anvende den, og foreslog at opdele seedet i chunks på 100 rækker; skill-følgende artefakt nægtede at anvende den, præciserede at INSERT...SELECT læser `priority` fra den gamle tabel, erstattede filen med en ALTER TABLE ADD COLUMN og satte BATCH_SIZE=10. Jeg kørte derefter begge citeringsvarianter gennem sqlite3 3.43.2: med backticks giver det en hård fejl "no such column: priority", med dobbelte anførselstegn (hvad drizzle udsender) skriver det lydløst den bogstavelige streng 'priority' ind i hver række (observeret `1|C-1|first|new|priority|1`) — så baselinens råd ville have korrumperet tabellen, og dens 100x6=600-parameter batch overstiger stadig D1's ~100-150 grænse. Konklusioner: skillens egen "will likely fail"-formulering underdriver den lydløse korruptionscase, og dens ALTER TABLE-fix overfører ikke den ændrede `status`-standard (jeg måtte selv tilføje UPDATE). Trigger-fraser bedømt — SKULLE udlø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); SKULLE IKKE udløses: "add a priority column to my Drizzle schema for Neon Postgres" (korrekt afvist, beskrivelsen er D1-specifik), "design the Drizzle table schema for my D1 app" (misset — beskrivelsens "setting up D1 schemas"-klausul overlapper den søster-d1-drizzle-schema skill og ville trække denne ind), 4/5.
Testet: 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. Kommandoer og eksempelprompter
/d1-migrationGennemgår Drizzle-genererede Cloudflare D1-migrations, før du anvender dem
Skills udløses af almindelige forespørgsler — ingen kommandoer at huske. Efter installationen aktiverer prompter som disse skillen (på engelsk):
Generate a D1 migration for the new users tableFix this stuck D1 migration on remoteApply pending Drizzle migrations to local D1