mcpField
L
ln-723-seed-data-generator

ln-723-seed-data-generator

github.com/levnikolaevichデータ・データベース584360 回インストール2 日前に更新
リポジトリ

ln-723-seed-data-generator について

ln-723-seed-data-generatorは、既存のORMスキーマまたは指定されたエンティティ定義からシードデータファイルを生成します。C#、TypeScript、Python、JSON、SQLに対応し、再現可能なfakerデータとリレーション検証を備えています。

主な機能

  1. 01記載された6種類のORMスキーマを解析
  2. 02エンティティ定義またはスターターテンプレートを利用
  3. 03C#、TypeScript、Python、JSON、SQLを生成
  4. 04固定シードのfakerデータによる再現性
  5. 05構文と外部キーの関係を検証

活用シーン

  1. 01ORMスキーマのあるプロジェクト向けテストデータ作成
  2. 02エンティティ一覧からサンプルデータを生成
  3. 03APIテストやデータベース取り込み用のシードデータ準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-723-seed-data-generator

インストール後、Claude Code で/ln-723-seed-data-generatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
data_generation.md
orm_patterns.md
relationship_mapping.md
type_mapping.md

詳細

パス: ファイルパス(references/、../ln-*)は、このスキルディレクトリを基準とします。

ln-723-seed-data-generator

タイプ: L3 Worker カテゴリ: 7XX Project Bootstrap

2 つのモードを備えた汎用シードデータジェネレーターです。MIGRATE(既存の ORM スキーマを解析)または GENERATE(エンティティ定義から作成)を選択できます。任意のターゲット形式(C#、TypeScript、Python、JSON、SQL)に出力します。


目的と範囲

項目説明
入力ORM スキーマファイル(MIGRATE)またはエンティティリスト(GENERATE)
出力ターゲット形式のシードデータファイル
モードMIGRATE:既存の ORM を解析 → シードデータ。GENERATE:エンティティ定義 → シードデータ

範囲の境界:

  • ORM スキーマ定義を解析するか、エンティティリストを受け取ります
  • 指定されたターゲット形式でシードデータを生成します
  • faker ライブラリを使用して現実的なサンプルデータを作成します
  • データベースのマイグレーション、EF Core の構成、ORM モデルは生成しません

モードの選択

モード使用する場合入力ソース
MIGRATETRANSFORM パイプライン — 既存の ORM スキーマが見つかった場合ORM スキーマファイルDrizzle、Prisma、TypeORM、EF Core、SQLAlchemy、Django ORM
GENERATECREATE パイプライン — 既存のスキーマがない場合ln-700 Phase 0 のエンティティリストユーザー提供またはスターターテンプレート(User、Role)

GENERATE モードでエンティティリストを受け取らなかった場合は、User(id、name、email、role、createdAt)と Role(id、name、description)からなるスターターテンプレートを生成します。


ターゲット形式

形式出力ファイルFaker ライブラリ用途
C# MockDataMockData.csBogus.NET プロジェクト
TypeScript fixturesseed.tsFaker.jsNode/React プロジェクト
Python factoriesfactories.pyFaker (Python)Django/Flask プロジェクト
JSONseed.json—API テスト、インポートスクリプト
SQLseed.sql—DB への直接シード投入

ワークフロー

フェーズ名前アクション出力
1解析/定義1A:ORM スキーマを解析(MIGRATE)または 1B:エンティティリストを受け取る(GENERATE)エンティティモデル
2型のマッピング汎用の型マッピングをターゲット形式に適用ターゲット型定義
3シードデータの生成faker ベースの現実的なデータを含むシードファイルを作成シードデータファイル
4検証リレーションシップを検証し、構文を確認有効なシードファイル

フェーズ 1:解析/定義

1A:MIGRATE モード — ORM スキーマの解析
手順アクション参照
1A.1スキーマファイルを特定する—
1A.2ORM の種類を自動検出するorm_patterns.md — ORM 自動検出テーブル
1A.3テーブル/モデル定義を抽出するorm_patterns.md — ORM ごとの解析セクション
1A.4型を含むカラム定義を抽出するorm_patterns.md
1A.5制約(PK、FK、nullable、unique)を特定するorm_patterns.md
1A.6enum 定義を抽出するorm_patterns.md
1B:GENERATE モード — エンティティ定義の受け取り
手順アクション参照
1B.1オーケストレーターからエンティティリストを受け取る(またはスターターテンプレートを使用する)—
1B.2エンティティ定義(名前、フィールド、型)を解析する—
1B.3フィールド名からリレーションシップを推定する(userId → User への FK)relationship_mapping.md
1B.4デフォルトの制約を適用する(id = PK、*Id = FK)—

出力: カラム、型、制約を含むエンティティモデル。


フェーズ 2:型のマッピング

エンティティの型をターゲット形式の型に変換します。

ステップ操作参照
2.1ターゲット形式を選択します(オーケストレーターのパラメーターから)—
2.2カラムの型をターゲット形式にマッピングしますtype_mapping.md — 汎用型マッピング表
2.3ターゲットごとに NULL 許容状態を決定しますtype_mapping.md
2.4外部キーとリレーションシップをマッピングしますrelationship_mapping.md
2.5名前をターゲットの規則に合わせて変換します以下の名前規則表を参照

ターゲット別の名前規則:

ターゲットクラス/モデルプロパティ/フィールドファイル
C#単数形の PascalCasePascalCasePascalCase.cs
TypeScript単数形の PascalCasecamelCasecamelCase.ts
Python単数形の PascalCasesnake_casesnake_case.py
JSONcamelCasecamelCasekebab-case.json
SQL複数形の snake_casesnake_casesnake_case.sql

フェーズ 3:シードデータの生成

faker ライブラリを使用して、現実的なデータを含むシードファイルを作成します。

ステップ操作参照
3.1生成順序を決定します(親 → 子)relationship_mapping.md
3.2すべてのエンティティの ID(GUID/UUID)を生成しますdata_generation.md
3.3faker を使用してフィールド値を生成しますdata_generation.md、type_mapping.md — Faker の統合
3.4FK リレーションシップが有効であることを確認します(子が既存の親 ID を参照)relationship_mapping.md
3.5ターゲット形式でシードファイルを書き込みます—

Faker の統合ルール: 生成するすべてのシードファイルでは、現実的なデータを生成するために、決定論的シード(再現性を確保する固定シード値)を使用する faker ライブラリを必ず使用してください。

ターゲットFaker の設定
C#var faker = new Bogus.Faker(); Randomizer.Seed = new Random(42);
TypeScriptimport { faker } from '@faker-js/faker'; faker.seed(42);
Pythonfrom faker import Faker; fake = Faker(); Faker.seed(42)

依存関係に基づく生成順序:

順序エンティティの種類生成するタイミング
1ルートエンティティ(FK なし)最初
2第 1 レベルの子親が存在した後
3第 2 レベルの子祖父母が存在した後
N最も深い階層の子すべての祖先が存在した後

フェーズ 4:検証

チェック方法期待される結果
構文が有効言語固有のチェック構文エラーがない
FK が有効相互参照すべての FK が既存の ID を指している
型が正しい型解析ターゲット形式に適した型
名前が規則に準拠パターンチェックターゲットごとの命名規則に準拠
Faker が決定論的同じシードで再実行出力が同一

対応 ORM の検出

ORM検出パターンエコシステム
DrizzlepgTable()、mysqlTable()、sqliteTable()Node.js
Prisma.prisma ファイル内の model X { 構文Node.js
TypeORM@Entity()、@Column() デコレーターNode.js
EF CoreDbContext、DbSet<>、[Table] 属性.NET
SQLAlchemyBase = declarative_base()、Column()Python
Django ORMmodels.Model、models.CharField()Python

エンティティ変換ルール

ソースターゲット変換
テーブル名(複数形、snake_case)クラス名(単数形、PascalCase)user_profiles → UserProfile
カラム名(snake_case)プロパティ名(ターゲットの規則に準拠)created_at → CreatedAt / createdAt / created_at
Enum 名Enum 型(PascalCase)status_enum → StatusEnum
FK カラムナビゲーションプロパティuser_id → UserId / userId

サンプルデータのガイドライン

フィールドの種類サンプル数分布
ルートエンティティ3~5 件ステータス/優先度に変化をつける
子エンティティ5~10 件親全体に分散させる
リーフエンティティ10~20 件現実的な多様性を持たせる

重要なルール

  • 単一責任: シードデータのみを生成し、ORM モデルやマイグレーションは生成しません
  • 冪等性: 同じシードで再実行すると、同一の出力を生成できます
  • 有効なリレーション: すべての FK は、存在する親 ID を参照する必要があります
  • Faker の使用必須: リアルなデータには Faker ライブラリを使用し、ランダムな文字列は使用しません
  • 決定論的なシーディング: 再実行時の再現性を確保するため、固定のシード値(42)を使用します
  • 生成順序: 常に子より先に親を生成します
  • モードの認識: MIGRATE はファイルを解析し、GENERATE は定義を受け付けます。両者を混在させないでください

完了の定義

  • モードを決定済み(MIGRATE または GENERATE)
  • すべてのフィールドと制約を含むエンティティモデルを抽出または定義済み
  • 出力形式を選択し、型マッピングを適用済み
  • Faker を使用したリアルな値を含むシードデータファイルを生成済み
  • 決定論的なシーディングを検証済み(再実行しても同一の出力が生成される)
  • 外部キーが有効な親 ID を参照している
  • 名前が出力形式の規則に従っている
  • サンプルデータにエンティティごとに 5〜10 件の項目が含まれている

リスクの軽減

リスク検出方法軽減策
不明な ORM 型自動検出に失敗する警告を記録し、オーケストレーターに ORM のヒントを求める
無効な型マッピング不明なカラム型フォールバックとして文字列を使用し、警告を記録する
FK の不整合FK が存在しない ID を参照する親を先に生成し、後から検証する
GENERATE にエンティティリストがない入力が空スターターテンプレート(User、Role)を使用する
名前の衝突クラス名またはテーブル名が重複する機能名をプレフィックスとして付ける
循環参照循環を伴う自己参照深さを制限し、グラフを検証する

参照ファイル

ファイル用途
references/orm_patterns.mdORM の自動検出とスキーマ解析のパターン(Drizzle、Prisma、TypeORM、EF Core、SQLAlchemy、Django)
references/type_mapping.md汎用的な型マッピング(ORM 非依存 → C#、TypeScript、Python)+ Faker の統合
references/data_generation.mdリアルなサンプルデータのパターンと生成ルール
references/relationship_mapping.mdFK の処理、生成順序、リレーションの推論

バージョン: 3.0.0 最終更新日: 2026-02-07

コメント