Db Seed
Generuje skrypty SQL/Drizzle do ponownego uruchamiania, bazujące na schemacie, w kolejności kluczy obcych
Testowano · Działa
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 ordersGenerate fixtures for the users and posts tablesCreate demo data respecting foreign key order