Db Seed

Génère des scripts d'amorçage SQL/Drizzle réexécutables à partir de votre schéma, dans l'ordre des clés étrangères

par jezweb · jezweb/claude-skills

Testé · Fonctionne ★ 8.8/10

Db Seed — Génère des scripts d'amorçage SQL/Drizzle réexécutables à partir de votre schéma, dans l'ordre des clés étrangères

Ce que fait

Lit le schéma Drizzle d'un projet, les migrations SQL ou le DDL brut et écrit un script d'amorçage qui insère des données d'exemple appropriées au domaine dans l'ordre de dépendance des clés étrangères. Produit des fichiers idempotents (suppressions en ordre inverse ou upserts), regroupe les insertions pour les limites de Cloudflare D1, et stocke les booléens comme INTEGER, les horodatages comme ISO-8601 TEXT, et le JSON comme TEXT sérialisé. Se déclenche sur les requêtes pour amorcer une base de données, ajouter des données d'exemple/démo/test, ou peupler des tables de développement.

Rapport de test

Installé dans un HOME temporaire (export HOME=$(mktemp -d)) à partir d'un clone superficiel ; le répertoire de la compétence ne contient que SKILL.md (7522 octets), le frontmatter a name+description, le corps ne référence aucun fichier externe, et je n'ai trouvé aucun curl|sh, base64, ou texte d'injection. Test de sortie : j'ai écrit un schéma SQLite/D1 à 5 tables (customers, categories, products avec une colonne JSON-as-TEXT, orders avec une contrainte CHECK, order_items) et produit deux scripts d'amorçage — seed-baseline.sql écrit à ma manière par défaut, seed-skill.sql suivant strictement le corps de la compétence — puis exécuté les deux deux fois contre un vrai sqlite3 3.43. La version de référence a été chargée une fois mais la deuxième exécution a généré cinq erreurs ("UNIQUE constraint failed: customers.email", categories.slug, products.id, orders.id, order_items.id) ; la version de la compétence s'est réexécutée proprement les deux fois et a affiché ses nombres de lignes (customers 8, categories 4, products 10, orders 8, order_items 12). Qualité des données mesurée : json_valid(attributes) AND non-empty object = 10/10 lignes pour le fichier de compétence vs 0/4 pour la référence ('{}'), horodatages ISO-8601 avec time+Z 8/8 vs 0/3, 10 prix distincts vs 4, noms de produits réels ("Baratza Encore Grinder") vs "Product 1", plus des lignes avec apostrophe et CJK qui ont survécu à l'insertion ; le fichier de compétence a également divisé 12 order_items en 10+2 par INSERT selon sa règle de lot D1. Phrases de déclenchement jugées : CHARGEMENT — "Populate my local D1 database with realistic products and orders so the dashboard isn't empty", "Write a seed script for the Drizzle schema in src/db/schema.ts, about 20 rows per table", "I need demo data for the customers and invoices tables before tomorrow's client demo" ; PAS DE CHARGEMENT — "Add a migration that adds a phone column to the users table", "Export the production orders table to CSV so finance can review last month's revenue" — 5/5 correct, bien que les mots-clés de déclenchement larges "sample data"/"test data" puissent l'entraîner dans des requêtes de génération de données non liées aux bases de données. La documentation perd un point car les affirmations spécifiques à D1 ("max ~10 rows per INSERT", "100 bound parameter limit") sont avancées sans source et je n'ai pu vérifier le SQL généré qu'avec SQLite local, pas avec un vrai D1.

Testé le: 2026-07-21 · Claude Code 2.x (agent harness)

Installation

git clone --depth 1 https://github.com/jezweb/claude-skills.git /tmp/db-seed-src
mkdir -p ~/.claude/skills
cp -R /tmp/db-seed-src/plugins/cloudflare/skills/db-seed ~/.claude/skills/db-seed
# Self-contained: the skill is a single SKILL.md, no assets/ or references/ files.
# No external dependencies. Running the generated seed needs whatever your project already uses:
#   npx tsx scripts/seed.ts            (Drizzle/TypeScript output)
#   npx wrangler d1 execute DB --local --file=./scripts/seed.sql   (raw SQL output for D1)
# Alternative: the repo ships this as part of the "cloudflare" plugin
#   (plugins/cloudflare/.claude-plugin/plugin.json) if you prefer a plugin-marketplace install.
# The skill offers an optional POST /api/seed Worker endpoint pattern — it tells you to remove it
# before production; do that, or skip that section entirely.

Commandes et exemples de prompts

  • /db-seedGénère des scripts d'amorçage SQL/Drizzle réexécutables à partir de votre schéma, dans l'ordre des clés étrangères

Les skills se déclenchent sur des demandes en langage courant — aucune commande à retenir. Après installation, des prompts comme ceux-ci l'activent (en anglais) :

  • Seed the dev database with sample orders
  • Generate fixtures for the users and posts tables
  • Create demo data respecting foreign key order