D1 Migration
Granskar Drizzle-genererade Cloudflare D1-migreringar innan du tillämpar dem
Testad · Fungerar
Vad den gör
Ett Cloudflare D1-migreringsarbetsflöde för Drizzle ORM-projekt: inspektera genererad SQL för tabell-återskapande-mönstret som kopierar en ännu-inte-existerande kolumn, skriv om den som ALTER TABLE ADD COLUMN, tillämpa på både lokalt och fjärr, och verifiera med PRAGMA table_info. Täcker även återställning av en halvt tillämpad migrering genom att manuellt infoga raden i d1_migrations-tabellen, och batcha bulk-insättningar under D1:s parametergräns. Utlöses vid körning eller generering av D1-migreringar, wrangler d1 migrations apply-fel, duplicate-column-fel, och ny D1-databasinställning.
Testrapport
Installeras i en temporär HOME (export HOME=$(mktemp -d)) och bekräftade att SKILL.md hamnar på ~/.claude/skills/d1-migration/SKILL.md; frontmatter parsas med name+description (plus en icke-standardiserad compatibility: claude-code-only-nyckel), kroppen refererar inga externa filer eller skript, och en skanning hittade ingen curl|sh, base64, credential exfiltration eller injektionstext. Uppgift: granska en drizzle-kit-genererad 0013_add_priority.sql som bygger om en `cases`-tabell, plus en 412-raders seed-insättning. Baslinjeartefakten kallade migreringen "destruktiv men förväntad", bad användaren att säkerhetskopiera och tillämpa den, och föreslog att dela upp seeden i 100 rader; den färdighetsföljda artefakten vägrade att tillämpa den, pekade ut att INSERT...SELECT läser `priority` från den gamla tabellen, ersatte filen med en ALTER TABLE ADD COLUMN, och satte BATCH_SIZE=10. Jag körde sedan båda citeringsvarianterna genom sqlite3 3.43.2: med backticks gav det hårt fel "no such column: priority", med dubbla citattecken (vad drizzle genererar) skrev det tyst den bokstavliga strängen 'priority' in i varje rad (observerade `1|C-1|first|new|priority|1`) — så baslinjens råd skulle ha korrumperat tabellen, och dess 100x6=600-parameterbatch överskrider fortfarande D1:s ~100-150-gräns. Slutsatser: färdighetens egen formulering "kommer sannolikt att misslyckas" underskattar fallet med tyst korruption, och dess ALTER TABLE-fix överför inte den ändrade `status`-standardvärdet (jag var tvungen att lägga till UPDATE själv). Utlösningsfraser bedömda — SKULLE utlösas: "wrangler d1 migrations apply fortsätter att misslyckas på 0013, säger duplicate column" (ja), "Jag ändrade ett standardvärde i mitt Drizzle-schema och genererade en migrering, är det säkert att tillämpa på D1?" (ja), "sätt upp migreringar för en helt ny Cloudflare D1-databas" (ja); SKULLE INTE utlösas: "lägg till en priority-kolumn i mitt Drizzle-schema för Neon Postgres" (korrekt avböjt, beskrivningen är D1-specifik), "designa Drizzle-tabellschemat för min D1-app" (missades — beskrivningens "setting up D1 schemas"-klausul överlappar den syskon-d1-drizzle-schema-färdigheten och skulle dra in denna), 4/5.
Testad: 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. Kommandon och exempelprompter
/d1-migrationGranskar Drizzle-genererade Cloudflare D1-migreringar innan du tillämpar dem
Skills triggas av vanliga förfrågningar — inga kommandon att memorera. Efter installationen aktiverar prompter som dessa skillen (på engelska):
Generate a D1 migration for the new users tableFix this stuck D1 migration on remoteApply pending Drizzle migrations to local D1