Db Seed

Generuje skrypty SQL/Drizzle do ponownego uruchamiania, bazujące na schemacie, w kolejności kluczy obcych

Autor: jezweb · jezweb/claude-skills

Testowano · Działa ★ 8.8/10

Db Seed — Generuje skrypty SQL/Drizzle do ponownego uruchamiania, bazujące na schemacie, w kolejności kluczy obcych

Co robi ten skill

Odczytuje schemat Drizzle projektu, migracje SQL lub surowe DDL i zapisuje skrypt inicjujący, który wstawia odpowiednie dla domeny przykładowe dane w kolejności zależności kluczy obcych. Tworzy idempotentne pliki (usuwanie w odwrotnej kolejności lub upserty), grupuje wstawienia dla limitów Cloudflare D1 i przechowuje wartości logiczne jako INTEGER, znaczniki czasu jako ISO-8601 TEXT, a JSON jako serializowany TEXT. Uruchamia się na żądanie inicjalizacji bazy danych, dodania przykładowych/demonstracyjnych/testowych danych lub wypełnienia tabel deweloperskich.

Raport z testu

Zainstalowano w tymczasowym HOME (export HOME=$(mktemp -d)) z płytkiego klona; katalog umiejętności zawiera tylko SKILL.md (7522 bajty), frontmatter ma name+description, treść nie odwołuje się do zewnętrznych plików i nie znaleziono curl|sh, base64 ani tekstu iniekcji. Test wyjścia: Napisałem schemat SQLite/D1 z 5 tabelami (customers, categories, products z kolumną JSON-as-TEXT, orders z ograniczeniem CHECK, order_items) i wygenerowałem dwa skrypty inicjujące — seed-baseline.sql napisany moją domyślną metodą, seed-skill.sql ściśle według treści umiejętności — a następnie wykonałem oba dwukrotnie na prawdziwym sqlite3 3.43. Baseline załadował się raz, ale drugie uruchomienie zgłosiło pięć błędów ("UNIQUE constraint failed: customers.email", categories.slug, products.id, orders.id, order_items.id); wersja umiejętności uruchomiła się ponownie czysto oba razy i wydrukowała liczbę wierszy (customers 8, categories 4, products 10, orders 8, order_items 12). Zmierzona jakość danych: json_valid(attributes) ORAZ niepusty obiekt = 10/10 wierszy dla pliku umiejętności vs 0/4 dla baseline ('{}'), znaczniki czasu ISO-8601 z czasem+Z 8/8 vs 0/3, 10 różnych cen vs 4, prawdziwe nazwy produktów ("Baratza Encore Grinder") vs "Product 1", plus wiersze z apostrofami i CJK, które przetrwały wstawienie; plik umiejętności również podzielił 12 order_items na 10+2 na INSERT zgodnie z regułą batch D1. Ocenione frazy wyzwalające: LOAD — "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"; DON'T LOAD — "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 poprawnych, chociaż szerokie słowa kluczowe wyzwalające "sample data"/"test data" mogłyby skierować to do żądań generowania danych niezwiązanych z bazami danych. Dokumentacja traci punkt, ponieważ twierdzenia specyficzne dla D1 ("max ~10 rows per INSERT", "100 bound parameter limit") są podane bez źródła, a ja mogłem zweryfikować wygenerowany SQL tylko na lokalnym SQLite, a nie na prawdziwym D1.

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

Instalacja

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.

Komendy i przykładowe prompty

  • /db-seedGeneruje skrypty SQL/Drizzle do ponownego uruchamiania, bazujące na schemacie, w kolejności kluczy obcych

Skille uruchamiają się na zwykłe polecenia — bez komend do zapamiętania. Po instalacji aktywują go prompty takie jak te (po angielsku):

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