Phase 1b: Rename all ~94 commands across 12 plugins to /<noun> <action> sub-command pattern. Git-flow consolidated from 8→5 commands (commit variants absorbed into --push/--merge/--sync flags). Dispatch files, name: frontmatter, and cross-reference updates for all plugins. Phase 2: Design documents for 8 new plugins in docs/designs/. Phase 3: Scaffold 8 new plugins — saas-api-platform, saas-db-migrate, saas-react-platform, saas-test-pilot, data-seed, ops-release-manager, ops-deploy-pipeline, debug-mcp. Each with plugin.json, commands, agents, skills, README, and claude-md-integration. Marketplace grows from 12→20. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
3.7 KiB
3.7 KiB
name, description
| name | description |
|---|---|
| profile-management | Seed profile definitions with row counts, edge case ratios, and custom value overrides |
Profile Management
Purpose
Define and manage reusable seed data profiles that control how much data is generated, what edge cases are included, and what custom overrides apply. Profiles enable reproducible, consistent test data across environments.
Profile Storage
Profiles are stored in seed-profiles.json in the configured output directory (default: seeds/ or fixtures/).
Profile Schema
{
"profiles": [
{
"name": "profile-name",
"description": "Human-readable description",
"default_rows": 100,
"table_overrides": {
"table_name": 200
},
"edge_case_ratio": 0.1,
"null_ratio": 0.05,
"locale": "en_US",
"seed_value": 42,
"custom_values": {
"table.column": ["value1", "value2", "value3"]
},
"relationship_density": {
"many_to_many": 0.3,
"self_ref_max_depth": 3
}
}
],
"default_profile": "medium"
}
Field Definitions
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | Unique profile identifier (lowercase, hyphens allowed) |
description |
string | No | What this profile is for |
default_rows |
integer | Yes | Row count for tables without explicit override |
table_overrides |
object | No | Per-table row count overrides |
edge_case_ratio |
float | No | Fraction of rows with edge case values (0.0 to 1.0, default 0.1) |
null_ratio |
float | No | Fraction of nullable columns set to null (0.0 to 1.0, default 0.05) |
locale |
string | No | Faker locale for name/address generation (default "en_US") |
seed_value |
integer | No | Random seed for reproducibility (default: hash of profile name) |
custom_values |
object | No | Column-specific value pools (table.column -> array of values) |
relationship_density |
object | No | Controls many-to-many fill ratio and self-referential depth |
Built-in Profiles
small
default_rows: 10edge_case_ratio: 0.0null_ratio: 0.0- Use case: unit tests, schema validation, quick smoke tests
- Characteristics: minimal data, no edge cases, all required fields populated
medium
default_rows: 100edge_case_ratio: 0.1null_ratio: 0.05- Use case: development, manual testing, demo environments
- Characteristics: realistic volume, occasional edge cases, some nulls
large
default_rows: 1000edge_case_ratio: 0.05null_ratio: 0.03- Use case: performance testing, pagination testing, stress testing
- Characteristics: high volume, lower edge case ratio to avoid noise
Custom Value Overrides
Override the faker generator for specific columns with a weighted value pool:
{
"custom_values": {
"users.role": ["user", "user", "user", "admin"],
"orders.status": ["completed", "completed", "pending", "cancelled", "refunded"],
"products.currency": ["USD"]
}
}
Values are selected randomly with replacement. Duplicate entries in the array increase that value's probability (e.g., "user" appears 3x = 75% probability).
Profile Operations
Resolution Order
When determining row count for a table:
- Command-line
--rowsflag (highest priority) - Profile
table_overridesfor that specific table - Profile
default_rows - Built-in default: 100
Validation Rules
- Profile name must be unique within
seed-profiles.json default_rowsmust be >= 1edge_case_ratiomust be between 0.0 and 1.0null_ratiomust be between 0.0 and 1.0- Custom value arrays must not be empty
- Cannot delete the last remaining profile