ln-723-seed-data-generator by levnikolaevich/claude-code-skills
npx skills add https://github.com/levnikolaevich/claude-code-skills --skill ln-723-seed-data-generator路径说明: 文件路径(
shared/、references/、../ln-*)是相对于技能仓库根目录的。如果在当前工作目录中未找到,请定位此SKILL.md文件所在的目录,然后向上返回一级以找到仓库根目录。如果缺少shared/目录,请通过 WebFetch 从https://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}获取文件。
类型: L3 工作者 类别: 7XX 项目引导 父级: ln-720-结构迁移器
通用的种子数据生成器,具有两种模式:MIGRATE(解析现有 ORM 模式)或 GENERATE(根据实体定义创建)。输出到任何目标格式(C#、TypeScript、Python、JSON、SQL)。
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 方面 |
|---|
| 描述 |
|---|
| 输入 | ORM 模式文件(MIGRATE 模式)或实体列表(GENERATE 模式) |
| 输出 | 目标格式的种子数据文件 |
| 模式 | MIGRATE:解析现有 ORM → 种子数据。GENERATE:实体定义 → 种子数据 |
范围边界:
| 模式 | 适用时机 | 输入 | 来源 |
|---|---|---|---|
| MIGRATE | TRANSFORM 流水线 — 发现现有 ORM 模式 | ORM 模式文件 | Drizzle、Prisma、TypeORM、EF Core、SQLAlchemy、Django ORM |
| GENERATE | CREATE 流水线 — 没有现有模式 | 来自 ln-700 阶段 0 的实体列表 | 用户提供或起始模板(User、Role) |
如果 GENERATE 模式未收到实体列表,则生成包含 User(id、name、email、role、createdAt)和 Role(id、name、description)的起始模板。
| 格式 | 输出文件 | 伪造库 | 用例 |
|---|---|---|---|
| C# MockData | MockData.cs | Bogus | .NET 项目 |
| TypeScript 夹具 | seed.ts | Faker.js | Node/React 项目 |
| Python 工厂 | factories.py | Faker (Python) | Django/Flask 项目 |
| JSON | seed.json | — | API 测试、导入脚本 |
| SQL | seed.sql | — | 直接数据库播种 |
| 阶段 | 名称 | 操作 | 输出 |
|---|---|---|---|
| 1 | 解析/定义 | 1A:解析 ORM 模式(MIGRATE)或 1B:接受实体列表(GENERATE) | 实体模型 |
| 2 | 映射类型 | 应用通用类型映射到目标格式 | 目标类型定义 |
| 3 | 生成种子数据 | 使用基于伪造库的逼真数据创建种子文件 | 种子数据文件 |
| 4 | 验证 | 验证关系,检查语法 | 有效的种子文件 |
| 步骤 | 操作 | 参考 |
|---|---|---|
| 1A.1 | 定位模式文件 | — |
| 1A.2 | 自动检测 ORM 类型 | orm_patterns.md — ORM 自动检测表 |
| 1A.3 | 提取表/模型定义 | orm_patterns.md — 每个 ORM 的解析部分 |
| 1A.4 | 提取带有类型的列定义 | orm_patterns.md |
| 1A.5 | 识别约束(主键、外键、可空、唯一) | orm_patterns.md |
| 1A.6 | 提取枚举定义 | orm_patterns.md |
| 步骤 | 操作 | 参考 |
|---|---|---|
| 1B.1 | 从编排器接收实体列表(或使用起始模板) | — |
| 1B.2 | 解析实体定义(名称、字段、类型) | — |
| 1B.3 | 根据字段名推断关系(userId → 指向 User 的外键) | relationship_mapping.md |
| 1B.4 | 应用默认约束(id = 主键,*Id = 外键) | — |
输出: 包含列、类型和约束的实体模型。
将实体类型转换为目标格式类型。
| 步骤 | 操作 | 参考 |
|---|---|---|
| 2.1 | 选择目标格式(来自编排器参数) | — |
| 2.2 | 将列类型映射到目标格式 | type_mapping.md — 通用类型映射表 |
| 2.3 | 确定每个目标的可空状态 | type_mapping.md |
| 2.4 | 映射外键和关系 | relationship_mapping.md |
| 2.5 | 将名称转换为目标命名约定 | 参见下面的命名约定表 |
按目标划分的命名约定:
| 目标 | 类/模型 | 属性/字段 | 文件 |
|---|---|---|---|
| C# | PascalCase 单数 | PascalCase | PascalCase.cs |
| TypeScript | PascalCase 单数 | camelCase | camelCase.ts |
| Python | PascalCase 单数 | snake_case | snake_case.py |
| JSON | camelCase | camelCase | kebab-case.json |
| SQL | snake_case 复数 | snake_case | snake_case.sql |
使用伪造库创建包含逼真数据的种子文件。
| 步骤 | 操作 | 参考 |
|---|---|---|
| 3.1 | 确定生成顺序(父级 → 子级) | relationship_mapping.md |
| 3.2 | 为所有实体生成 ID(GUID/UUID) | data_generation.md |
| 3.3 | 使用伪造库生成字段值 | data_generation.md、type_mapping.md — 伪造库集成 |
| 3.4 | 确保外键关系有效(子级引用已存在的父级 ID) | relationship_mapping.md |
| 3.5 | 以目标格式写入种子文件 | — |
伪造库集成规则: 所有生成的种子文件必须使用伪造库来生成逼真数据,并采用确定性播种(固定的种子值以确保可重现性)。
| 目标 | 伪造库设置 |
|---|---|
| C# | var faker = new Bogus.Faker(); Randomizer.Seed = new Random(42); |
| TypeScript | import { faker } from '@faker-js/faker'; faker.seed(42); |
| Python | from faker import Faker; fake = Faker(); Faker.seed(42) |
按依赖关系排序的生成顺序:
| 顺序 | 实体类型 | 生成时机 |
|---|---|---|
| 1 | 根实体(无外键) | 首先 |
| 2 | 第一级子实体 | 父实体存在后 |
| 3 | 第二级子实体 | 祖父实体存在后 |
| N | 最深层的子实体 | 所有祖先实体存在后 |
| 检查项 | 方法 | 预期结果 |
|---|---|---|
| 语法有效 | 特定语言检查 | 无语法错误 |
| 外键有效 | 交叉引用 | 所有外键指向已存在的 ID |
| 类型正确 | 类型分析 | 目标格式的类型正确 |
| 名称遵循约定 | 模式检查 | 符合目标命名约定 |
| 伪造库确定性 | 使用相同种子重新运行 | 输出相同 |
| ORM | 检测模式 | 生态系统 |
|---|---|---|
| Drizzle | pgTable()、mysqlTable()、sqliteTable() | Node.js |
| Prisma | .prisma 文件中的 model X { 语法 | Node.js |
| TypeORM | @Entity()、@Column() 装饰器 | Node.js |
| EF Core | DbContext、DbSet<>、[Table] 属性 | .NET |
| SQLAlchemy | Base = declarative_base()、Column() | Python |
| Django ORM | models.Model、models.CharField() | Python |
| 源 | 目标 | 转换 |
|---|---|---|
| 表名(复数,snake_case) | 类名(单数,PascalCase) | user_profiles → UserProfile |
| 列名(snake_case) | 属性名(目标约定) | created_at → CreatedAt / createdAt / created_at |
| 枚举名 | 枚举类型(PascalCase) | status_enum → StatusEnum |
| 外键列 | 导航属性 | user_id → UserId / userId |
| 字段类型 | 示例数量 | 分布 |
|---|---|---|
| 根实体 | 3-5 项 | 不同的状态/优先级 |
| 子实体 | 5-10 项 | 分布在父实体之间 |
| 叶子实体 | 10-20 项 | 逼真的多样性 |
| 风险 | 检测 | 缓解措施 |
|---|---|---|
| 未知 ORM 类型 | 自动检测失败 | 记录警告,向编排器请求 ORM 提示 |
| 无效的类型映射 | 未知列类型 | 使用字符串作为后备,记录警告 |
| 外键不匹配 | 外键引用不存在的 ID | 先生成父级,之后验证 |
| GENERATE 模式无实体列表 | 输入为空 | 使用起始模板(User、Role) |
| 名称冲突 | 重复的类/表名 | 使用功能名称作为前缀 |
| 循环引用 | 带有循环的自引用 | 限制深度,验证图结构 |
| 文件 | 用途 |
|---|---|
references/orm_patterns.md | ORM 自动检测和模式解析模式(Drizzle、Prisma、TypeORM、EF Core、SQLAlchemy、Django) |
references/type_mapping.md | 通用类型映射(ORM 无关 → C#、TypeScript、Python)+ 伪造库集成 |
references/data_generation.md | 逼真示例数据模式和生成规则 |
references/relationship_mapping.md | 外键处理、生成顺序、关系推断 |
版本: 3.0.0 最后更新: 2026-02-07
每周安装量
137
仓库
GitHub 星标数
245
首次出现
2026年2月7日
安全审计
安装于
opencode128
codex127
gemini-cli127
cursor127
github-copilot126
claude-code126
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. Ifshared/is missing, fetch files via WebFetch fromhttps://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}.
Type: L3 Worker Category: 7XX Project Bootstrap Parent: ln-720-structure-migrator
Universal seed data generator with two modes: MIGRATE (parse existing ORM schemas) or GENERATE (create from entity definitions). Outputs to any target format (C#, TypeScript, Python, JSON, SQL).
| Aspect | Description |
|---|---|
| Input | ORM schema files (MIGRATE) or entity list (GENERATE) |
| Output | Seed data files in target format |
| Modes | MIGRATE: parse existing ORM → seed data. GENERATE: entity definitions → seed data |
Scope boundaries:
| Mode | When | Input | Source |
|---|---|---|---|
| MIGRATE | TRANSFORM pipeline — existing ORM schemas found | ORM schema files | Drizzle, Prisma, TypeORM, EF Core, SQLAlchemy, Django ORM |
| GENERATE | CREATE pipeline — no existing schemas | Entity list from ln-700 Phase 0 | User-provided or starter template (User, Role) |
If GENERATE mode receives no entity list, generate starter template with User (id, name, email, role, createdAt) and Role (id, name, description).
| Format | Output File | Faker Library | Use Case |
|---|---|---|---|
| C# MockData | MockData.cs | Bogus | .NET projects |
| TypeScript fixtures | seed.ts | Faker.js | Node/React projects |
| Python factories | factories.py | Faker (Python) | Django/Flask projects |
| JSON | seed.json | — | API testing, import scripts |
| SQL |
| Phase | Name | Actions | Output |
|---|---|---|---|
| 1 | Parse/Define | 1A: Parse ORM schema (MIGRATE) or 1B: Accept entity list (GENERATE) | Entity model |
| 2 | Map Types | Apply universal type mapping to target format | Target type definitions |
| 3 | Generate Seed Data | Create seed files with faker-based realistic data | Seed data files |
| 4 | Verify | Validate relationships, check syntax | Valid seed files |
| Step | Action | Reference |
|---|---|---|
| 1A.1 | Locate schema file(s) | — |
| 1A.2 | Auto-detect ORM type | orm_patterns.md — ORM Auto-Detection table |
| 1A.3 | Extract table/model definitions | orm_patterns.md — per-ORM parsing section |
| 1A.4 | Extract column definitions with types | orm_patterns.md |
| 1A.5 | Identify constraints (PK, FK, nullable, unique) | orm_patterns.md |
| 1A.6 |
| Step | Action | Reference |
|---|---|---|
| 1B.1 | Receive entity list from orchestrator (or use starter template) | — |
| 1B.2 | Parse entity definitions (name, fields, types) | — |
| 1B.3 | Infer relationships from field names (userId → FK to User) | relationship_mapping.md |
| 1B.4 | Apply default constraints (id = PK, *Id = FK) | — |
Output: Entity model with columns, types, and constraints.
Convert entity types to target format types.
| Step | Action | Reference |
|---|---|---|
| 2.1 | Select target format (from orchestrator params) | — |
| 2.2 | Map column types to target format | type_mapping.md — Universal Type Mapping table |
| 2.3 | Determine nullable status per target | type_mapping.md |
| 2.4 | Map foreign keys and relationships | relationship_mapping.md |
| 2.5 | Transform names to target convention | See Name Conventions table below |
Name Conventions by Target:
| Target | Class/Model | Property/Field | File |
|---|---|---|---|
| C# | PascalCase singular | PascalCase | PascalCase.cs |
| TypeScript | PascalCase singular | camelCase | camelCase.ts |
| Python | PascalCase singular | snake_case | snake_case.py |
| JSON | camelCase | camelCase | kebab-case.json |
| SQL | snake_case plural | snake_case | snake_case.sql |
Create seed files with realistic data using faker libraries.
| Step | Action | Reference |
|---|---|---|
| 3.1 | Determine generation order (parents → children) | relationship_mapping.md |
| 3.2 | Generate IDs (GUIDs/UUIDs) for all entities | data_generation.md |
| 3.3 | Generate field values using faker | data_generation.md, type_mapping.md — Faker Integration |
| 3.4 | Ensure FK relationships valid (child references existing parent ID) | relationship_mapping.md |
Faker integration rule: All generated seed files MUST use faker libraries for realistic data with deterministic seeding (fixed seed value for reproducibility).
| Target | Faker Setup |
|---|---|
| C# | var faker = new Bogus.Faker(); Randomizer.Seed = new Random(42); |
| TypeScript | import { faker } from '@faker-js/faker'; faker.seed(42); |
| Python | from faker import Faker; fake = Faker(); Faker.seed(42) |
Generation order by dependency:
| Order | Entity Type | Generate After |
|---|---|---|
| 1 | Root entities (no FK) | First |
| 2 | First-level children | Parents exist |
| 3 | Second-level children | Grandparents exist |
| N | Deepest children | All ancestors exist |
| Check | Method | Expected |
|---|---|---|
| Syntax valid | Language-specific check | No syntax errors |
| FKs valid | Cross-reference | All FKs point to existing IDs |
| Types correct | Type analysis | Proper types for target format |
| Names follow convention | Pattern check | Per-target naming convention |
| Faker deterministic | Re-run with same seed | Identical output |
| ORM | Detection Pattern | Ecosystem |
|---|---|---|
| Drizzle | pgTable(), mysqlTable(), sqliteTable() | Node.js |
| Prisma | model X { syntax in .prisma files | Node.js |
| TypeORM | @Entity(), @Column() decorators | Node.js |
| Source | Target | Transformation |
|---|---|---|
| Table name (plural, snake) | Class name (singular, Pascal) | user_profiles → UserProfile |
| Column name (snake) | Property name (target convention) | created_at → CreatedAt / createdAt / created_at |
| Enum name | Enum type (Pascal) | status_enum → |
| Field Type | Sample Count | Distribution |
|---|---|---|
| Root entities | 3-5 items | Varied status/priority |
| Child entities | 5-10 items | Distributed across parents |
| Leaf entities | 10-20 items | Realistic variety |
| Risk | Detection | Mitigation |
|---|---|---|
| Unknown ORM type | Auto-detection fails | Log warning, ask orchestrator for ORM hint |
| Invalid type mapping | Unknown column type | Use string as fallback, log warning |
| FK mismatch | FK references non-existent ID | Generate parents first, validate after |
| No entity list in GENERATE | Empty input | Use starter template (User, Role) |
| Name collision | Duplicate class/table names | Prefix with feature name |
| Circular references | Self-referencing with cycles | Limit depth, validate graph |
| File | Purpose |
|---|---|
references/orm_patterns.md | ORM auto-detection and schema parsing patterns (Drizzle, Prisma, TypeORM, EF Core, SQLAlchemy, Django) |
references/type_mapping.md | Universal type mapping (ORM-agnostic → C#, TypeScript, Python) + Faker integration |
references/data_generation.md | Realistic sample data patterns and generation rules |
references/relationship_mapping.md | FK handling, generation order, relationship inference |
Version: 3.0.0 Last Updated: 2026-02-07
Weekly Installs
137
Repository
GitHub Stars
245
First Seen
Feb 7, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykWarn
Installed on
opencode128
codex127
gemini-cli127
cursor127
github-copilot126
claude-code126
Skills CLI 使用指南:AI Agent 技能包管理器安装与管理教程
36,300 周安装
seed.sql |
| — |
| Direct DB seeding |
| Extract enum definitions |
orm_patterns.md |
| 3.5 |
| Write seed file in target format |
| — |
| EF Core | DbContext, DbSet<>, [Table] attributes | .NET |
| SQLAlchemy | Base = declarative_base(), Column() | Python |
| Django ORM | models.Model, models.CharField() | Python |
StatusEnum| FK column | Navigation property | user_id → UserId / userId |