Test Data Generation
SkillDev toolsUse this skill at Step 5 of the v2 SOP to generate stage-isolated synthetic test fixtures (mock data) for an OpenSpec change. Outputs fixtures into mock/阶段N-<名称>/, computes fingerprints, declares synthetic-only source, and runs the fingerprint match against the real-sample fingerprint library. Chinese trigger examples: "生成测试数据", "Mock 数据生成", "Step 5", "合成 fixture", "生成 mock", "测试数据 generation". Do NOT use to sample from production, do NOT use real PHI as seed even after redaction. Success = fixtures generated, fingerprints computed, fingerprint match against real-sample library returns zero collisions, source declaration marked synthetic-only.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the Test Data Generation skill
What this skill tells your AI
The instructions your AI receives, as published by charliehzm/medharness in .claude/skills/test-data-generation/SKILL.md and read by ahel’s review.
Generates fixtures the change can be tested against, with the strong invariant: never reversible to real patients.
Generation modes (pick one)
| Mode | When | Risk |
|---|---|---|
| Pure synthetic (faker-style) | Default | Low |
| Schema-driven random | When distribution matters less than shape | Low |
| Distribution-matched synthetic (DP) | When ML features depend on realistic distributions | Medium — guard against re-identification |
| Real → fully-decoupled (rare) | Only with Data Steward signoff + 18-id strip + outlier removal + k-anonymity ≥ 5 | High — extra audit |
Forbidden mode: "sample from production then mask names". Cannot prevent re-identification. Refuse.
Workflow
- Read schema from change specs (data model section in design.md).
- Choose generation mode; document choice in
source_declaration.md. - Generate per-stage directory:
mock/阶段N-<名称>/. - For each output file, compute fingerprints (sha256 of canonical-sorted rows).
- Compare fingerprints against the real-sample fingerprint library (held by Data Steward).
- If any collision/near-match: stop, escalate, do not write fixtures.
- Else: write fixtures + fingerprints.txt + source_declaration.md.
Source declaration template
# Source Declaration · 阶段N-<名称>
- 生成模式: <pure-synthetic / schema-driven / distribution-matched / real-decoupled>
- 生成时间: <ts>
- 生成器: <tool + version>
- 真实样本接触: 否(默认)/ 是(需 Data Steward 签字)
- 指纹核验: <PASS / FAIL>,对比库版本 <x.y>
- 合规等级承诺: 本数据集等同 L1,可在所有 allowlist 模型上使用
Common failure modes
- "Looks real" generators — Faker with locale 'zh_CN' produces plausible Chinese names but no link to real patients; this is fine. The trap is when devs seed with real values.
- Distribution-matched without DP — releasing means/variances can leak. Mitigation: differential privacy budget recorded in source declaration.
- Forgetting fingerprint match — fixtures written but never checked. Mitigation: this skill MUST run fingerprint compare before write.
- Cross-stage mixing — same fixture used across stages. Mitigation: per-stage directory; do not symlink.
Signals
- GitHub stars
- 86
- Forks
- 8
- Last commit
- Jun 2026
Others that do the same job
Advanced
- Item type
- skill
- Key
test-data-generation-charliehzm- Source
- github.com/charliehzm/medharness
github.com/charliehzm/medharness
Related picks
Skill · mattpocock
The pick for TypeScripttypescript-pro
Skill · jeffallan
The pick for TypeScriptobsidian-markdown
Skill · agricidaniel
The pick for Markdownmarkdown-formatter
Skill · nvidia
The pick for Markdownpandas-dataframe-analyzer
Skill · a5c-ai
The pick for Pandasxlsx
Skill · anthropics
The pick for Pandas