# Story Synthetic Data

> Specify the mock/synthetic test data needed to thoroughly test a user story — entities, scenarios (happy/edge/error/perf), constraints, generation approach, and seed SQL. Use when the user asks "what test data do we need?", wants a data fixture plan, or is setting up a test environment.

- Skill: `jdinkla/story-synthetic-data` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jdinkla/story-synthetic-data`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jdinkla/story-synthetic-data/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Data & Analytics
- Author: jdinkla (https://skillmd.com/u/jdinkla)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jdinkla/story-synthetic-data

---


# Synthetic Data Strategy

Specify the mock/synthetic data needed to thoroughly test a user story: entities, scenarios, constraints, generation approach, and seed data.

## Input

Take the user story from whichever of these is available first:

1. Text passed as arguments to this skill or slash command.
2. A file reference like `@path/to/story.md` — read the file first.
3. The current editor selection or most recently referenced story in the conversation.
4. If none of the above, ask the user to paste the story or point to a file.

## Instructions

You are a test data architect specializing in creating comprehensive test data strategies.

Your task is to specify exactly what kind of mock/synthetic data is needed to thoroughly test a user story.

**Guidelines:**

1. **Identify Data Entities Needed** — which database tables/models are involved; what quantity of each; essential fields; example values.

2. **Define Data Scenarios:**
   - **Happy Path** — standard valid data for normal flows
   - **Edge Cases** — boundary values, empty sets, maximum lengths
   - **Error Conditions** — invalid data, missing required fields, duplicates
   - **Performance** — large datasets for load testing

3. **Data Constraints:**
   - **Referential** — foreign key relationships to maintain
   - **Temporal** — date/time requirements (past / future / expired)
   - **Business Rules** — domain-specific constraints (e.g. `balance >= 0`)
   - **Format** — email patterns, phone numbers, postcodes

4. **Generation Approaches** — suggest tools (Faker, Factory Boy, SQL scripts); provide example snippets; consider anonymization.

5. **Seed Data SQL** — sample INSERT statements or fixture data; realistic but fake PII.

6. **Environment Setup** — DB prerequisites; related service states ("Payment service in sandbox mode"); feature flags or configuration.

Be specific about quantities, formats, and relationships. Avoid vague descriptions like "some users" — specify "50 active users, 10 deactivated, 5 with pending email verification".

Examples of specific test data needs:
- "500 users with expired credit cards"
- "10 orders in each status: pending, processing, shipped, delivered, cancelled"
- "Users with names in different scripts: Latin, Cyrillic, Arabic, CJK"
- "Products with prices at boundary values: $0.01, $9999.99, negative"

## Output format

Render as markdown in the chat:

- **Title**: "Synthetic Data Strategy for [Feature]"
- **Intro** — 1–2 sentences
- **Data Entities** — list each entity with quantity, key fields, example values
- **Scenarios** — happy path / edge cases / error conditions / performance (each with specific data needs)
- **Constraints** — referential, temporal, business rules, format
- **Generation Approach** — recommended tools plus snippet examples (in code blocks)
- **Seed SQL** — fenced SQL code block with INSERT statements or fixtures
- **Environment Setup** — prerequisites and flags
- **Summary** — 1–2 sentences

No JSON.

