seed について
seedは、スキーマ、ORMモデル、またはマイグレーションから決定的なサンプルINSERT文を生成する読み取り専用スキルです。開発者がローカル開発、テスト、CI向けの再現可能なフィクスチャを用意するためのもので、本番データには使いません。
主な機能
- 01スキーマからINSERT文を生成
- 02外部キーに沿った挿入順
- 03決定的なサンプル値
- 04SQLまたはJSON形式で出力
- 05解析の信頼度と除外テーブルを報告
活用シーン
- 01再現可能なローカル開発用フィクスチャ作成
- 02自動テスト用のシードデータ準備
- 03依存順に並んだINSERT文の生成
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ hainrixz/ claude-db --skill seedインストール後、Claude Code で/seedを入力して読み込まれたか確認します。
詳細
/claude-db:seed
スキーマから、外部キーを考慮した決定論的なサンプル/シード用の INSERT 文を生成します。読み取り専用です。データベースへの接続や書き込みは行いません。出力は開発/テストデータ専用です。行インデックスから導出される予測可能な値(乱数なし)を使用するため、フィクスチャ、ローカル開発、CI に適しています。本番環境では決して使用しないでください。
$ARGUMENTS = <path-to-schema> [flags]。対象はスキーマ/DDL、ORM モデル、またはマイグレーションファイルです。パスが指定されていない場合は、作業ディレクトリ内で検出します(*.sql、schema.prisma、models.py、マイグレーションディレクトリを検索)。何も見つからない場合は、その旨を明確に伝え、ファイルを指定するか、/claude-db:design を実行して作成するよう提案してください。
実行内容
- スキーマのパスを解決します(
$ARGUMENTSから取得するか、上記の方法で検出)。 - 生成スクリプトを実行します。
node scripts/gen-seed.mjs --file <schema> --rows N [--format sql|json]--rows Nのデフォルトは 5 です(1~1000 の範囲に制限)。--formatのデフォルトはsqlです。jsonを指定すると、ステートメントが配列とメタデータで返されます。- スクリプトは、各テーブルの外部キー参照先が先に挿入されるよう、テーブルをトポロジカルソートします。外部キー列には有効な親 ID を設定し、自動採番/ID 列の主キーはスキップします。
- 結果を提示します。
- 挿入順序(依存関係順、親 → 子)と、テーブルごとの行数。
- テーブルごとに順序立ててまとめた、生成された
INSERTステートメント。 - パーサーの信頼度と、スキップされたテーブルや無視された循環参照。
- ファイルへの保存を提案します(例:
seed.sqlやfixtures.json)。ユーザーがパスを確認した場合にのみ書き込みます。確認がなければ、結果をそのまま表示します。
注意事項
- 設計上、決定論的です。同じ
--rowsで再実行するとバイト単位で同一の出力が得られるため、シードの差分確認や再現が容易です。 - 値は例示用のプレースホルダーです(
[email protected]のようなメールアドレス、固定のタイムスタンプ、連番の ID など)。本番環境で使える現実的なデータではなく、プライバシーにも配慮されていません。 - 循環する外部キーは順序付けの対象外です。遅延制約や自己参照のケースでは、生成後に手動で調整が必要になる場合があります。
開発/テスト用フィクスチャ専用です。生成したシードを本番データベースに対して実行しないでください。ユーザーの言語(EN/ES)で応答してください。
コメント
Markdown 対応