feat(marketplace): command consolidation + 8 new plugins (v8.1.0 → v9.0.0) [BREAKING]
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>
This commit is contained in:
70
plugins/data-seed/commands/seed-apply.md
Normal file
70
plugins/data-seed/commands/seed-apply.md
Normal file
@@ -0,0 +1,70 @@
|
||||
---
|
||||
name: seed apply
|
||||
---
|
||||
|
||||
# /seed apply - Apply Seed Data
|
||||
|
||||
## Skills to Load
|
||||
- skills/profile-management.md
|
||||
- skills/visual-header.md
|
||||
|
||||
## Visual Output
|
||||
|
||||
Display header: `DATA-SEED - Apply`
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/seed apply [--profile <name>] [--target <database|file>] [--clean] [--dry-run]
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Locate Seed Data
|
||||
- Look for generated seed files in configured output directory
|
||||
- If no seed data found, prompt user to run `/seed generate` first
|
||||
- Display available seed datasets with timestamps and profiles
|
||||
|
||||
### 2. Determine Target
|
||||
- `--target database`: Apply directly to connected database via SQL execution
|
||||
- `--target file` (default): Write fixture files for framework consumption
|
||||
- Auto-detect framework for file output:
|
||||
- Django: `fixtures/` directory as JSON fixtures compatible with `loaddata`
|
||||
- SQLAlchemy: Python factory files or SQL insert scripts
|
||||
- Prisma: `prisma/seed.ts` compatible format
|
||||
- Generic: SQL insert statements or CSV files
|
||||
|
||||
### 3. Pre-Apply Validation
|
||||
- If targeting database: verify connection, check table existence
|
||||
- If `--clean` specified: generate TRUNCATE/DELETE statements for affected tables (respecting FK order)
|
||||
- Display execution plan showing table order, row counts, and clean operations
|
||||
- If `--dry-run`: display plan and exit without applying
|
||||
|
||||
### 4. Apply Data
|
||||
- Execute in dependency order (parents before children)
|
||||
- If targeting database: wrap in transaction, rollback on error
|
||||
- If targeting files: write all files atomically
|
||||
- Track progress: display per-table status during application
|
||||
|
||||
### 5. Post-Apply Summary
|
||||
- Report rows inserted per table
|
||||
- Report any errors or skipped rows
|
||||
- Display total execution time
|
||||
- If database target: verify row counts match expectations
|
||||
|
||||
## Examples
|
||||
|
||||
```
|
||||
/seed apply # Write fixture files (default)
|
||||
/seed apply --target database # Insert directly into database
|
||||
/seed apply --profile small --clean # Clean + apply small dataset
|
||||
/seed apply --dry-run # Preview without applying
|
||||
/seed apply --target database --clean # Truncate then seed database
|
||||
```
|
||||
|
||||
## Safety
|
||||
|
||||
- Database operations always use transactions
|
||||
- `--clean` requires explicit confirmation before executing TRUNCATE
|
||||
- Never drops tables or modifies schema — seed data only
|
||||
- `--dry-run` is always safe and produces no side effects
|
||||
71
plugins/data-seed/commands/seed-generate.md
Normal file
71
plugins/data-seed/commands/seed-generate.md
Normal file
@@ -0,0 +1,71 @@
|
||||
---
|
||||
name: seed generate
|
||||
---
|
||||
|
||||
# /seed generate - Generate Seed Data
|
||||
|
||||
## Skills to Load
|
||||
- skills/schema-inference.md
|
||||
- skills/faker-patterns.md
|
||||
- skills/relationship-resolution.md
|
||||
- skills/visual-header.md
|
||||
|
||||
## Visual Output
|
||||
|
||||
Display header: `DATA-SEED - Generate`
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/seed generate [table_name] [--profile <name>] [--rows <count>] [--format <sql|json|csv>] [--locale <locale>]
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Parse Schema
|
||||
- Load schema from configured source (see `/seed setup`)
|
||||
- Extract tables, columns, types, constraints, and relationships
|
||||
- Use `skills/schema-inference.md` to normalize types across ORM dialects
|
||||
|
||||
### 2. Resolve Generation Order
|
||||
- Build dependency graph from foreign key relationships
|
||||
- Use `skills/relationship-resolution.md` to determine insertion order
|
||||
- Handle circular dependencies via deferred constraint resolution
|
||||
- If specific `table_name` provided, generate only that table plus its dependencies
|
||||
|
||||
### 3. Select Profile
|
||||
- Load profile from `seed-profiles.json` (default: `medium`)
|
||||
- Override row count if `--rows` specified
|
||||
- Apply profile-specific edge case ratios and custom value overrides
|
||||
|
||||
### 4. Generate Data
|
||||
- For each table in dependency order:
|
||||
- Map column types to faker providers using `skills/faker-patterns.md`
|
||||
- Respect NOT NULL constraints (never generate null for required fields)
|
||||
- Respect UNIQUE constraints (track generated values, retry on collision)
|
||||
- Generate foreign key values from previously generated parent rows
|
||||
- Apply locale-specific patterns for names, addresses, phone numbers
|
||||
- Handle enum/check constraints by selecting from valid values only
|
||||
- Include edge cases per profile settings (empty strings, boundary values, unicode)
|
||||
|
||||
### 5. Output Results
|
||||
- Write generated data in requested format to configured output directory
|
||||
- Display summary: tables generated, row counts, file paths
|
||||
- Report any constraint violations or generation warnings
|
||||
|
||||
## Examples
|
||||
|
||||
```
|
||||
/seed generate # All tables, medium profile
|
||||
/seed generate users # Only users table + dependencies
|
||||
/seed generate --profile large # All tables, 1000 rows each
|
||||
/seed generate orders --rows 50 # 50 order rows
|
||||
/seed generate --format json # Output as JSON fixtures
|
||||
/seed generate --locale pt_BR # Brazilian Portuguese data
|
||||
```
|
||||
|
||||
## Edge Cases
|
||||
|
||||
- Self-referential foreign keys (e.g., `manager_id` on `employees`): generate root rows first, then assign managers from existing rows
|
||||
- Many-to-many through tables: generate both sides first, then populate junction table
|
||||
- Nullable foreign keys: generate null values at the profile's configured null ratio
|
||||
86
plugins/data-seed/commands/seed-profile.md
Normal file
86
plugins/data-seed/commands/seed-profile.md
Normal file
@@ -0,0 +1,86 @@
|
||||
---
|
||||
name: seed profile
|
||||
---
|
||||
|
||||
# /seed profile - Manage Data Profiles
|
||||
|
||||
## Skills to Load
|
||||
- skills/profile-management.md
|
||||
- skills/visual-header.md
|
||||
|
||||
## Visual Output
|
||||
|
||||
Display header: `DATA-SEED - Profile Management`
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/seed profile list
|
||||
/seed profile show <name>
|
||||
/seed profile create <name>
|
||||
/seed profile edit <name>
|
||||
/seed profile delete <name>
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
### list — Show All Profiles
|
||||
- Read `seed-profiles.json` from configured output directory
|
||||
- Display table: name, row counts per table, edge case ratio, description
|
||||
- Highlight the default profile
|
||||
|
||||
### show — Profile Details
|
||||
- Display full profile definition including:
|
||||
- Per-table row counts
|
||||
- Edge case configuration (null ratio, boundary values, unicode strings)
|
||||
- Custom value overrides per column
|
||||
- Locale settings
|
||||
- Relationship density settings
|
||||
|
||||
### create — New Profile
|
||||
- Ask user for profile name and description
|
||||
- Ask for base row count (applies to all tables unless overridden)
|
||||
- Ask for per-table overrides (optional)
|
||||
- Ask for edge case ratio (0.0 = no edge cases, 1.0 = all edge cases)
|
||||
- Ask for custom column overrides (e.g., `users.role` always "admin")
|
||||
- Save to `seed-profiles.json`
|
||||
|
||||
### edit — Modify Profile
|
||||
- Load existing profile, display current values
|
||||
- Allow user to modify any field interactively
|
||||
- Save updated profile
|
||||
|
||||
### delete — Remove Profile
|
||||
- Confirm deletion with user
|
||||
- Cannot delete the last remaining profile
|
||||
- Remove from `seed-profiles.json`
|
||||
|
||||
## Profile Schema
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "medium",
|
||||
"description": "Realistic dataset for development and manual testing",
|
||||
"default_rows": 100,
|
||||
"table_overrides": {
|
||||
"users": 50,
|
||||
"orders": 200,
|
||||
"order_items": 500
|
||||
},
|
||||
"edge_case_ratio": 0.1,
|
||||
"null_ratio": 0.05,
|
||||
"locale": "en_US",
|
||||
"custom_values": {
|
||||
"users.status": ["active", "active", "active", "inactive"],
|
||||
"users.role": ["user", "user", "user", "admin"]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Built-in Profiles
|
||||
|
||||
| Profile | Rows | Edge Cases | Use Case |
|
||||
|---------|------|------------|----------|
|
||||
| `small` | 10 | 0% | Unit tests, quick validation |
|
||||
| `medium` | 100 | 10% | Development, manual testing |
|
||||
| `large` | 1000 | 5% | Performance testing, stress testing |
|
||||
59
plugins/data-seed/commands/seed-setup.md
Normal file
59
plugins/data-seed/commands/seed-setup.md
Normal file
@@ -0,0 +1,59 @@
|
||||
---
|
||||
name: seed setup
|
||||
---
|
||||
|
||||
# /seed setup - Data Seed Setup Wizard
|
||||
|
||||
## Skills to Load
|
||||
- skills/schema-inference.md
|
||||
- skills/visual-header.md
|
||||
|
||||
## Visual Output
|
||||
|
||||
Display header: `DATA-SEED - Setup Wizard`
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/seed setup
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
### Phase 1: Environment Detection
|
||||
- Detect project type: Python (SQLAlchemy, Django ORM), Node.js (Prisma, TypeORM), or raw SQL
|
||||
- Check for existing schema files: `schema.prisma`, `models.py`, `*.sql` DDL files
|
||||
- Identify package manager and installed ORM libraries
|
||||
|
||||
### Phase 2: Schema Source Configuration
|
||||
- Ask user to confirm detected schema source or specify manually
|
||||
- Supported sources:
|
||||
- SQLAlchemy models (`models.py`, `models/` directory)
|
||||
- Prisma schema (`prisma/schema.prisma`)
|
||||
- Django models (`models.py` with Django imports)
|
||||
- Raw SQL DDL files (`*.sql` with CREATE TABLE statements)
|
||||
- JSON Schema definitions (`*.schema.json`)
|
||||
- Store schema source path for future commands
|
||||
|
||||
### Phase 3: Output Configuration
|
||||
- Ask preferred output format: SQL inserts, JSON fixtures, CSV files, or ORM factory objects
|
||||
- Ask preferred output directory (default: `seeds/` or `fixtures/`)
|
||||
- Ask default locale for faker data (default: `en_US`)
|
||||
|
||||
### Phase 4: Profile Initialization
|
||||
- Create default profiles if none exist:
|
||||
- `small` — 10 rows per table, minimal relationships
|
||||
- `medium` — 100 rows per table, realistic relationships
|
||||
- `large` — 1000 rows per table, stress-test volume
|
||||
- Store profiles in `seed-profiles.json` in output directory
|
||||
|
||||
### Phase 5: Validation
|
||||
- Verify schema can be parsed from detected source
|
||||
- Display summary with detected tables, column counts, and relationship map
|
||||
- Inform user of available commands
|
||||
|
||||
## Important Notes
|
||||
|
||||
- Uses Bash, Read, Write, AskUserQuestion tools
|
||||
- Does not require database connection (schema-first approach)
|
||||
- Profile definitions are portable across environments
|
||||
98
plugins/data-seed/commands/seed-validate.md
Normal file
98
plugins/data-seed/commands/seed-validate.md
Normal file
@@ -0,0 +1,98 @@
|
||||
---
|
||||
name: seed validate
|
||||
---
|
||||
|
||||
# /seed validate - Validate Seed Data
|
||||
|
||||
## Skills to Load
|
||||
- skills/schema-inference.md
|
||||
- skills/relationship-resolution.md
|
||||
- skills/visual-header.md
|
||||
|
||||
## Visual Output
|
||||
|
||||
Display header: `DATA-SEED - Validate`
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
/seed validate [--profile <name>] [--strict]
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
### 1. Load Schema and Seed Data
|
||||
- Parse schema from configured source using `skills/schema-inference.md`
|
||||
- Load generated seed data from output directory
|
||||
- If no seed data found, report error and suggest running `/seed generate`
|
||||
|
||||
### 2. Type Constraint Validation
|
||||
- For each column in each table, verify generated values match declared type:
|
||||
- Integer columns contain only integers within range (INT, BIGINT, SMALLINT)
|
||||
- String columns respect max length constraints (VARCHAR(N))
|
||||
- Date/datetime columns contain parseable date values
|
||||
- Boolean columns contain only true/false/null
|
||||
- Decimal columns respect precision and scale
|
||||
- UUID columns contain valid UUID format
|
||||
- Enum columns contain only declared valid values
|
||||
|
||||
### 3. Referential Integrity Validation
|
||||
- Use `skills/relationship-resolution.md` to build FK dependency graph
|
||||
- For every foreign key value in child tables, verify parent row exists
|
||||
- For self-referential keys, verify referenced row exists in same table
|
||||
- For many-to-many through tables, verify both sides exist
|
||||
- Report orphaned references as FAIL
|
||||
|
||||
### 4. Constraint Compliance
|
||||
- NOT NULL: verify no null values in required columns
|
||||
- UNIQUE: verify no duplicate values in unique columns or unique-together groups
|
||||
- CHECK constraints: evaluate check expressions against generated data
|
||||
- Default values: verify defaults are applied where column value is omitted
|
||||
|
||||
### 5. Statistical Validation (--strict mode)
|
||||
- Verify null ratio matches profile configuration within tolerance
|
||||
- Verify edge case ratio matches profile configuration
|
||||
- Verify row counts match profile specification
|
||||
- Verify distribution of enum/category values is not unrealistically uniform
|
||||
- Verify date ranges are within reasonable bounds (not year 9999)
|
||||
|
||||
### 6. Report
|
||||
- Display validation results grouped by severity:
|
||||
- **FAIL**: Type mismatch, FK violation, NOT NULL violation, UNIQUE violation
|
||||
- **WARN**: Unrealistic distributions, unexpected null ratios, date range issues
|
||||
- **INFO**: Statistics summary, coverage metrics
|
||||
|
||||
```
|
||||
+----------------------------------------------------------------------+
|
||||
| DATA-SEED - Validate |
|
||||
| Profile: medium |
|
||||
+----------------------------------------------------------------------+
|
||||
|
||||
Tables Validated: 8
|
||||
Rows Checked: 1,450
|
||||
Constraints Verified: 42
|
||||
|
||||
FAIL (0)
|
||||
No blocking violations found.
|
||||
|
||||
WARN (2)
|
||||
1. [orders.created_at] Date range spans 200 years
|
||||
Suggestion: Constrain date generator to recent years
|
||||
|
||||
2. [users.email] 3 duplicate values detected
|
||||
Suggestion: Increase faker uniqueness retry count
|
||||
|
||||
INFO (1)
|
||||
1. [order_items] Null ratio 0.12 (profile target: 0.10)
|
||||
Within acceptable tolerance.
|
||||
|
||||
VERDICT: PASS (0 blocking issues)
|
||||
```
|
||||
|
||||
## Examples
|
||||
|
||||
```
|
||||
/seed validate # Standard validation
|
||||
/seed validate --profile large # Validate large profile data
|
||||
/seed validate --strict # Include statistical checks
|
||||
```
|
||||
17
plugins/data-seed/commands/seed.md
Normal file
17
plugins/data-seed/commands/seed.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
description: Test data generation — create realistic fake data from schema definitions
|
||||
---
|
||||
|
||||
# /seed
|
||||
|
||||
Test data generation and database seeding with reproducible profiles.
|
||||
|
||||
## Sub-commands
|
||||
|
||||
| Sub-command | Description |
|
||||
|-------------|-------------|
|
||||
| `/seed setup` | Setup wizard for data-seed configuration |
|
||||
| `/seed generate` | Generate seed data from schema or models |
|
||||
| `/seed apply` | Apply seed data to database or create fixture files |
|
||||
| `/seed profile` | Define reusable data profiles (small, medium, large) |
|
||||
| `/seed validate` | Validate seed data against schema constraints |
|
||||
Reference in New Issue
Block a user