D1 Migration
Revize Drizzle-generovaných Cloudflare D1 migrací před jejich aplikací
Otestováno · Funguje
Co umí
Pracovní postup migrace Cloudflare D1 pro projekty Drizzle ORM: kontrola generovaného SQL na vzor opětovného vytvoření tabulky, který kopíruje dosud neexistující sloupec, přepsání na ALTER TABLE ADD COLUMN, aplikace lokálně i vzdáleně a ověření pomocí PRAGMA table_info. Pokrývá také obnovu částečně aplikované migrace ručním vložením řádku do tabulky d1_migrations a dávkování hromadných vkládání pod limit parametrů D1. Spouští se při spouštění nebo generování migrací D1, chybách při aplikaci migrací wrangler d1, selháních duplicitních sloupců a nastavení nové databáze D1.
Testovací report
Nainstalováno do dočasného HOME (export HOME=$(mktemp -d)) a potvrzeno, že SKILL.md se umístil do ~/.claude/skills/d1-migration/SKILL.md; frontmatter se parsuje s name+description (plus nestandardní klíč compatibility: claude-code-only), tělo neodkazuje na žádné externí soubory ani skripty a sken nenašel žádné curl|sh, base64, exfiltraci pověření ani injekční text. Úkol: zkontrolovat drizzle-kit-generovaný 0013_add_priority.sql, který přestavuje tabulku `cases`, plus 412řádkový seed insert. Základní artefakt nazval migraci „destruktivní, ale očekávanou“, řekl uživateli, aby ji zálohoval a aplikoval, a navrhl rozdělení seedu na 100 řádků; artefakt podle dovednosti odmítl ji aplikovat, přesně určil, že INSERT...SELECT čte `priority` ze staré tabulky, nahradil soubor jedním ALTER TABLE ADD COLUMN a nastavil BATCH_SIZE=10. Poté jsem spustil obě varianty uvozovek přes sqlite3 3.43.2: s backticks to tvrdě chybovalo „no such column: priority“, s dvojitými uvozovkami (což drizzle emituje) tiše zapsalo literální řetězec 'priority' do každého řádku (pozorováno `1|C-1|first|new|priority|1`) — takže rada základního testu by poškodila tabulku a jeho dávka 100x6=600 parametrů stále překračuje limit D1 ~100-150. Dedukce: vlastní formulace dovednosti „pravděpodobně selže“ podceňuje případ tiché korupce a její oprava ALTER TABLE nepřenáší změněnou výchozí hodnotu `status` (UPDATE jsem musel přidat sám). Spouštěcí fráze posouzeny — MĚLO BY se spustit: „wrangler d1 migrations apply stále selhává na 0013, říká duplicitní sloupec“ (ano), „Změnil jsem výchozí hodnotu v mém Drizzle schématu a vygeneroval migraci, je bezpečné ji aplikovat na D1?“ (ano), „nastavte migrace pro zcela novou databázi Cloudflare D1“ (ano); NEMĚLO BY se spustit: „přidejte sloupec priority do mého Drizzle schématu pro Neon Postgres“ (správně odmítnuto, popis je specifický pro D1), „navrhněte Drizzle tabulkové schéma pro mou aplikaci D1“ (minuto — klauzule „nastavení D1 schémat“ v popisu se překrývá se sourozeneckou dovedností d1-drizzle-schema a přitáhla by tuto), 4/5.
Testováno: 2026-07-21 · Claude Code 2.x (agent harness)
Instalace
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. Příkazy a ukázkové prompty
/d1-migrationRevize Drizzle-generovaných Cloudflare D1 migrací před jejich aplikací
Skilly se spouštějí běžnými požadavky — žádné příkazy k zapamatování. Po instalaci ho aktivují prompty jako tyto (anglicky):
Generate a D1 migration for the new users tableFix this stuck D1 migration on remoteApply pending Drizzle migrations to local D1