D1 Migration
Revisa migraciones de Cloudflare D1 generadas por Drizzle antes de aplicarlas
Probado · Funciona
Qué hace
Un flujo de trabajo de migración de Cloudflare D1 para proyectos Drizzle ORM: inspeccionar el SQL generado en busca del patrón de recreación de tabla que copia una columna aún no existente, reescribirlo como ALTER TABLE ADD COLUMN, aplicar tanto a nivel local como remoto, y verificar con PRAGMA table_info. También cubre la recuperación de una migración aplicada a medias insertando manualmente la fila en la tabla d1_migrations, y el procesamiento por lotes de inserciones masivas por debajo del límite de parámetros de D1. Se activa al ejecutar o generar migraciones D1, errores de wrangler d1 migrations apply, fallos de columnas duplicadas y configuración de nuevas bases de datos D1.
Informe de la prueba
Instalado en un HOME temporal (export HOME=$(mktemp -d)) y confirmado que SKILL.md se ubica en ~/.claude/skills/d1-migration/SKILL.md; el frontmatter se analiza con name+description (además de una clave no estándar compatibility: claude-code-only), el cuerpo no referencia archivos o scripts externos, y un escaneo no encontró curl|sh, base64, exfiltración de credenciales o texto de inyección. Tarea: revisar un 0013_add_priority.sql generado por drizzle-kit que reconstruye una tabla `cases`, más una inserción de semilla de 412 filas. El artefacto de línea base llamó a la migración "destructiva pero esperada", le dijo al usuario que hiciera una copia de seguridad y la aplicara, y sugirió dividir la semilla en 100 filas; el artefacto siguiendo la habilidad se negó a aplicarla, señaló que el INSERT...SELECT lee `priority` de la tabla antigua, reemplazó el archivo con un ALTER TABLE ADD COLUMN, y estableció BATCH_SIZE=10. Luego ejecuté ambas variantes de comillas a través de sqlite3 3.43.2: con backticks da un error grave "no such column: priority", con comillas dobles (lo que emite drizzle) escribe silenciosamente la cadena literal 'priority' en cada fila (observado `1|C-1|first|new|priority|1`) — por lo que el consejo de la línea base habría corrompido la tabla, y su lote de 100x6=600 parámetros aún excede el límite de ~100-150 de D1. Deducciones: la propia redacción de la habilidad "will likely fail" subestima el caso de corrupción silenciosa, y su corrección ALTER TABLE no traslada el `status` default cambiado (tuve que añadir el UPDATE yo mismo). Frases de activación juzgadas — DEBERÍA activarse: "wrangler d1 migrations apply sigue fallando en 0013, dice columna duplicada" (sí), "Cambié un valor predeterminado en mi esquema Drizzle y generé una migración, ¿es seguro aplicarla a D1?" (sí), "configurar migraciones para una base de datos Cloudflare D1 completamente nueva" (sí); NO DEBERÍA activarse: "añadir una columna de prioridad a mi esquema Drizzle para Neon Postgres" (rechazado correctamente, la descripción es específica de D1), "diseñar el esquema de tabla Drizzle para mi aplicación D1" (omitido — la cláusula "setting up D1 schemas" de la descripción se superpone con la habilidad hermana d1-drizzle-schema y atraería esta), 4/5.
Probado el: 2026-07-21 · Claude Code 2.x (agent harness)
Instalación
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. Comandos y prompts de ejemplo
/d1-migrationRevisa migraciones de Cloudflare D1 generadas por Drizzle antes de aplicarlas
Los skills se activan con peticiones en lenguaje natural, sin comandos que memorizar. Tras instalarlo, prompts como estos lo activan (en inglés):
Generate a D1 migration for the new users tableFix this stuck D1 migration on remoteApply pending Drizzle migrations to local D1