D1 Migration

Revisiona le migrazioni Cloudflare D1 generate da Drizzle prima di applicarle.

di jezweb · jezweb/claude-skills

Promosso ★ 8.4/10

D1 Migration — Revisiona le migrazioni Cloudflare D1 generate da Drizzle prima di applicarle.

Cosa fa

Un workflow di migrazione Cloudflare D1 per progetti Drizzle ORM: ispeziona il SQL generato per il pattern di ricreazione della tabella che copia una colonna non ancora esistente, lo riscrive come ALTER TABLE ADD COLUMN, lo applica sia in locale che in remoto, e verifica con PRAGMA table_info. Copre anche il recupero di una migrazione applicata a metà inserendo manualmente la riga nella tabella d1_migrations, e il batching di inserimenti bulk sotto il limite di parametri di D1. Si attiva sull'esecuzione o generazione di migrazioni D1, errori di wrangler d1 migrations apply, fallimenti di colonne duplicate e nuova configurazione del database D1.

Rapporto di test

Installato in una HOME temporanea (export HOME=$(mktemp -d)) e confermato che SKILL.md si trova in ~/.claude/skills/d1-migration/SKILL.md; il frontmatter analizza con name+description (più una chiave non standard compatibility: claude-code-only), il corpo non fa riferimento a file o script esterni, e una scansione non ha trovato curl|sh, base64, esfiltrazione di credenziali o testo di iniezione. Task: revisionare un 0013_add_priority.sql generato da drizzle-kit che ricostruisce una tabella `cases`, più un inserimento seed di 412 righe. L'artefatto baseline ha definito la migrazione "distruttiva ma attesa", ha detto all'utente di fare un backup e applicarla, e ha suggerito di suddividere il seed in blocchi di 100 righe; l'artefatto che ha seguito la skill si è rifiutato di applicarla, ha individuato che l'INSERT...SELECT legge `priority` dalla vecchia tabella, ha sostituito il file con un ALTER TABLE ADD COLUMN, e ha impostato BATCH_SIZE=10. Ho quindi eseguito entrambe le varianti di quotazione tramite sqlite3 3.43.2: con i backtick ha dato un errore grave "no such column: priority", con le doppie virgolette (ciò che emette drizzle) ha scritto silenziosamente la stringa letterale 'priority' in ogni riga (osservato `1|C-1|first|new|priority|1`) — quindi il consiglio della baseline avrebbe corrotto la tabella, e il suo batch di 100x6=600 parametri supera ancora il limite di ~100-150 di D1. Deduzioni: la formulazione "probabilmente fallirà" della skill sottovaluta il caso di corruzione silenziosa, e la sua correzione ALTER TABLE non riporta il default `status` modificato (ho dovuto aggiungere l'UPDATE io stesso). Frasi di attivazione giudicate — DOVREBBE attivarsi: "wrangler d1 migrations apply continua a fallire su 0013, dice colonna duplicata" (sì), "Ho cambiato un default nel mio schema Drizzle e generato una migrazione, è sicuro applicarla a D1?" (sì), "imposta le migrazioni per un database Cloudflare D1 nuovo di zecca" (sì); NON DOVREBBE attivarsi: "add a priority column to my Drizzle schema for Neon Postgres" (correttamente rifiutato, la descrizione è specifica per D1), "progetta lo schema di tabella Drizzle per la mia app D1" (mancato — la clausola "setting up D1 schemas" della descrizione si sovrappone alla skill d1-drizzle-schema e attirerebbe questa), 4/5.

Testato il: 2026-07-21 · Claude Code 2.x (agent harness)

Installazione

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.

Comandi e prompt di esempio

  • /d1-migrationRevisiona le migrazioni Cloudflare D1 generate da Drizzle prima di applicarle.

Gli skill si attivano con richieste in linguaggio naturale, senza comandi da ricordare. Dopo l'installazione, prompt come questi lo attivano (in inglese):

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