D1 Migration
Przegląda migracje Cloudflare D1 wygenerowane przez Drizzle, zanim je zastosujesz
Testowano · Działa
Co robi ten skill
Przepływ pracy migracji Cloudflare D1 dla projektów Drizzle ORM: sprawdza wygenerowany SQL pod kątem wzorca ponownego tworzenia tabeli, który kopiuje jeszcze nieistniejącą kolumnę, przepisuje go jako ALTER TABLE ADD COLUMN, stosuje zarówno lokalnie, jak i zdalnie, i weryfikuje za pomocą PRAGMA table_info. Obejmuje również odzyskiwanie częściowo zastosowanej migracji poprzez ręczne wstawienie wiersza do tabeli d1_migrations oraz wsadowanie masowych wstawek poniżej limitu parametrów D1. Uruchamia się przy uruchamianiu lub generowaniu migracji D1, błędach wrangler d1 migrations apply, błędach duplikacji kolumn i nowej konfiguracji bazy danych D1.
Raport z testu
Zainstalowano w tymczasowym HOME (export HOME=$(mktemp -d)) i potwierdzono, że SKILL.md wylądował w ~/.claude/skills/d1-migration/SKILL.md; frontmatter parsowany z name+description (plus niestandardowy klucz compatibility: claude-code-only), treść nie odwołuje się do zewnętrznych plików ani skryptów, a skan nie znalazł curl|sh, base64, eksfiltracji poświadczeń ani tekstu iniekcji. Zadanie: przegląd drizzle-kit-generated 0013_add_priority.sql, który przebudowuje tabelę `cases`, plus wstawka seed z 412 wierszami. Artefakt bazowy nazwał migrację „destrukcyjną, ale oczekiwaną”, kazał użytkownikowi wykonać kopię zapasową i zastosować ją, oraz zasugerował podział seeda na 100 wierszy; artefakt zgodny z umiejętnością odmówił jej zastosowania, wskazał, że INSERT...SELECT odczytuje `priority` ze starej tabeli, zastąpił plik jednym ALTER TABLE ADD COLUMN i ustawił BATCH_SIZE=1. Następnie uruchomiłem oba warianty cytowania przez sqlite3 3.43.2: z backtickami twardo zgłasza błąd „no such column: priority”, z podwójnymi cudzysłowami (co emituje drizzle) cicho zapisuje literalny ciąg 'priority' do każdego wiersza (zaobserwowano `1|C-1|first|new|priority|1`) — więc porada bazowa zepsułaby tabelę, a jej partia 100x6=600 parametrów nadal przekracza limit ~100-150 D1. Wnioski: własne sformułowanie umiejętności „will likely fail” nie docenia przypadku cichego uszkodzenia, a jej poprawka ALTER TABLE nie przenosi zmienionej wartości domyślnej `status` (musiałem sam dodać UPDATE). Frazy wyzwalające oceniono — POWINNO uruchomić: „wrangler d1 migrations apply keeps failing on 0013, says duplicate column” (tak), „I changed a default in my Drizzle schema and generated a migration, is it safe to apply to D1?” (tak), „set up migrations for a brand new Cloudflare D1 database” (tak); NIE POWINNO uruchomić: „add a priority column to my Drizzle schema for Neon Postgres” (poprawnie odrzucone, opis jest specyficzny dla D1), „design the Drizzle table schema for my D1 app” (pominięte — klauzula „setting up D1 schemas” w opisie pokrywa się z siostrzaną umiejętnością d1-drizzle-schema i wciągnęłaby tę), 4/5.
Testowano: 2026-07-21 · Claude Code 2.x (agent harness)
Instalacja
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. Komendy i przykładowe prompty
/d1-migrationPrzegląda migracje Cloudflare D1 wygenerowane przez Drizzle, zanim je zastosujesz
Skille uruchamiają się na zwykłe polecenia — bez komend do zapamiętania. Po instalacji aktywują go prompty takie jak te (po angielsku):
Generate a D1 migration for the new users tableFix this stuck D1 migration on remoteApply pending Drizzle migrations to local D1