Skip to content
Back to skills

Test Data Architect

ASecurity

Design the test-data strategy across all test layers — deterministic seed/fixture/factory design (personas, tenants, roles, stable ids), per-layer data sources (inline builders for unit, seeded DB for integration, API-created fixtures for E2E), parallel-run isolation (worker-scoped namespacing, no shared mutable records), PII-safe synthetic data (never production copies without an approved anonymization path), cleanup/TTL and traceability rules, and seed evolution coupled to schema changes. U...

  • 4 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 11, 2026
testinggotestingapidatabasesecurity

Works with

  • api

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned October 5, 2026

npx -y skills add ModernNomad-98/Project-Aegis --skill test-data-architect --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Test Data Architect?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Test Data Architect
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/modernnomad-98-test-data-architect/badge)](https://www.skillsdirectory.com/skills/modernnomad-98-test-data-architect)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: test-data-architect
description: Design the test-data strategy across all test layers — deterministic seed/fixture/factory design (personas, tenants, roles, stable ids), per-layer data sources (inline builders for unit, seeded DB for integration, API-created fixtures for E2E), parallel-run isolation (worker-scoped namespacing, no shared mutable records), PII-safe synthetic data (never production copies without an approved anonymization path), cleanup/TTL and traceability rules, and seed evolution coupled to schema changes. Use when asked to design fixtures/seeds/factories, fix tests fighting over shared data, decide how E2E/integration suites get their data, or replace production-data copies in tests. Produces the design; suite wiring goes to the engineer skills. Do NOT use to design the tenant data model (multi-tenant-data-architect), build cross-tenant SECURITY test suites (multi-tenant-security-tester), create accounts in an environment (test-tenant-provisioner), or design automation structure (qa-automation-architect).
---

# Test Data Architect

**Reading key:** PII is personally identifiable information; E2E is
end-to-end; DB is database; API is application programming interface; TTL is
time to live; CI is continuous integration.

## Purpose

Design the data foundation every test layer stands on: deterministic,
parallel-safe, PII-safe, and owned. The output is a data design — persona and
tenant catalog, factory/seed architecture per layer, isolation and cleanup
rules, and an evolution policy tied to schema changes — that engineer skills
wire into their suites. Bad test data is the quiet cause of half of "flaky"
suites and most cross-contaminated runs; this skill removes that class of
failure by design.

## Use When

- Use when: asked to design fixtures, factories, seeds, or test personas.
- Use when: tests fight over shared records, break in parallel, or depend on
  run order for data reasons.
- Use when: deciding how integration/E2E suites obtain data (seed scripts,
  API-created, snapshot).
- Use when: production data (or lightly-scrubbed copies) is being used in
  tests and must be replaced with synthetic data.
- Use when: seeds have rotted — schema moved, fixtures didn't, tests assert
  against fossil data.
- Do NOT use when: designing the PRODUCT's tenant-scoped data layer —
  `multi-tenant-data-architect`; this skill designs TEST data shaped like
  that design.
- Do NOT use when: specifying cross-tenant/authorization negative TESTS —
  `multi-tenant-security-tester` (its two-tenant A/B fixture recipe is
  authoritative for those suites; this skill keeps general fixtures
  compatible with it, not competing).
- Do NOT use when: creating, repairing or checking the catalog's test
  accounts in a real environment — `test-tenant-provisioner` *(manual-only)*,
  which consumes this skill's persona catalog.
- Do NOT use when: structuring the automation framework/CI —
  `qa-automation-architect` (it decides where fixtures LIVE; this skill
  decides what they ARE).

## Inputs to Inspect

1. The domain shape: entities, tenancy model, roles/personas that matter
   (tenant model + authorization matrix outputs where present).
2. Current test data reality: existing seeds/factories/fixtures, hardcoded
   ids, shared accounts, `.only`-style data workarounds, order dependence.
3. Layer needs: which suites exist/are planned (unit, integration, E2E,
   manual) and how each currently gets data.
4. Parallelism: worker counts per suite, CI vs local differences.
5. Data sensitivity: any production data in tests today, PII classes
   involved, retention/redaction obligations.

## Workflow

1. **Catalog personas and baseline entities.** Named personas (e.g., owner/
   admin/member per tenant, anonymous) with stable identifiers and
   documented properties; a minimal baseline world (tenants, one resource
   per interesting state) that suites can assume. Keep the catalog small —
   every baseline row is maintenance forever. Patterns in
   [references/test-data-patterns.md](references/test-data-patterns.md).
2. **Assign data sources per layer:** unit → in-memory builders (no DB);
   integration → factories writing through real migrations/constraints
   (per `integration-test-designer` boundaries); E2E → API-created
   per-run fixtures (per `playwright-e2e-engineer` determinism rules);
   manual → seeded accounts documented for `manual-test-case-creator`
   preconditions. One factory definition feeding all layers where feasible
   (single source of shape truth).
3. **Design determinism:** fixed seeds for generated values, no reliance on
   wall-clock "now" (injected clocks), stable sort-order assumptions made
   explicit, id strategies that don't collide across runs.
4. **Design parallel isolation:** worker-scoped namespacing (prefix/tenant
   per worker), no test mutates catalog baseline rows (baseline is
   read-only; mutation targets are per-test creations), resource pools for
   scarce externals.
5. **Enforce PII safety:** synthetic-only generation rules (realistic but
   fake names/emails/domains reserved for testing), NO production copies —
   if a production-shaped dataset is truly required, the anonymization path
   goes through `human-approval-boundary` with a named technique, never
   ad-hoc scrubbing.
6. **Define cleanup + traceability:** structural cleanup per layer
   (transaction rollback / teardown-by-namespace / TTL sweeps for orphaned
   E2E data), and traceability — every created record carries its run/test
   marker so orphans are attributable.
7. **Set the evolution policy:** seeds/factories change in the SAME change
   as schema migrations (the migration PR fails CI if factories lag);
   ownership named; fossil-fixture audits scheduled. Hand wiring to the
   engineer skills.

## Output Format

```
TEST DATA DESIGN — <scope>
Persona & baseline catalog: <personas + baseline world, all read-only>
Per-layer sources: <unit/integration/E2E/manual → source + creation path>
Factory architecture: <single shape-truth definitions, overrides, id strategy>
Determinism rules: <seeds, clock injection, explicit orderings>
Parallel isolation: <worker namespacing, read-only baseline, mutation scope>
PII safety: <synthetic generation rules; production-data stance;
            anonymization path if any (approved via human-approval-boundary)>
Cleanup & traceability: <per-layer mechanism + run/test markers + TTL>
Evolution policy: <schema-change coupling, ownership, fossil audits>
Compatibility: <two-tenant A/B security fixtures (multi-tenant-security-tester)
               satisfiable from this design>
Handoffs: <wiring → engineer skills; storage layout → qa-automation-architect>
```

## Validation Checklist

- [ ] Personas/baseline cataloged, minimal, and read-only in tests.
- [ ] Every layer has a named data source; no layer "borrows" another's.
- [ ] Determinism rules cover generated values, time, and ordering.
- [ ] Parallel isolation is structural (namespacing), not conventional
      ("please don't touch user1").
- [ ] No raw production data; synthetic rules stated. Any approved
      production-derived dataset meets the documented de-identification
      method and approval conditions.
- [ ] Cleanup is structural with traceable run markers; TTL for orphans.
- [ ] Seed evolution coupled to schema changes with a named owner.
- [ ] Security-fixture compatibility (A/B tenants) confirmed, not re-owned.

## Gotchas

- The "one big seed file" grows until every test implicitly depends on row
  47 — keep baseline minimal and make tests create what they mutate.
- Hardcoded ids collide the day suites parallelize; worker-scoped prefixes
  are cheaper installed early than retrofitted.
- "Scrubbed" production copies leak through free-text fields, JSON blobs,
  and encoded columns — synthetic generation is the only clean default.
- Factories that bypass validations/constraints (raw inserts) produce
  states the app can't create — impossible-state fixtures make tests pass
  against fiction; write through real code paths or real migrations.
- Faker-style randomness without a fixed seed makes failures
  irreproducible — determinism beats variety in fixtures.
- Fixture realism drift: seeds built for the v1 schema silently stop
  representing real usage — the evolution policy is what prevents fossil
  suites.

## Stop Conditions

- The tenancy/role model is undefined and personas would be invented →
  route to `tenant-modeler`/`authorization-matrix-designer` first; test
  personas mirror the real model.
- Production data use is requested (or discovered) → stop that path;
  synthetic replacement is the default, and any anonymization exception
  goes through `human-approval-boundary` with a named technique.
- Layers/suites don't exist yet and per-layer sources would be speculative
  → design for the layers the strategy names, mark the rest deferred.
- Asked to also implement seeds/factories in code → hand to the engineer
  skills with this design.

## Supporting Files

- [references/test-data-patterns.md](references/test-data-patterns.md) —
  persona catalog template, factory patterns (shape truth, overrides,
  build-vs-create), namespacing schemes, synthetic-data generation rules,
  TTL/traceability recipes.
- `evals/evals.json` — trigger + behavior cases.
- `evals/trigger-evals.json` — discrimination within the unit/build/flake/data
  cluster and against `multi-tenant-data-architect` /
  `multi-tenant-security-tester`.

Files in this skill

  • SKILL.md8.9 KB
  • evals/evals.json2.8 KB
  • evals/trigger-evals.json2.3 KB
  • references/test-data-patterns.md2.6 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.