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
  • 0 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…