synthetic-data
Skill150 starsChanged 10 days agoMITView on GitHub
Generate structurally realistic synthetic datasets for pipeline prototyping, test coverage, or prospective power analysis. Use when code or design must be exercised before real data are available or accessible. Never substitute synthetic records for governed raw data.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- thistleknot/skillstheir own version, first seen Nov 8, 2026
- microsoft/physical-ai-toolchaintheir own version, first seen Oct 29, 2026
- longtermrisk/claude-skillstheir own version, first seen Oct 13, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- microsoft/physical-ai-toolchain★ 138same name
- longtermrisk/claude-skills★ 1same name
- thistleknot/skills★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository89 other files it gives its agents.
- AGENTS.mdAGENTS.md
- docs/agents.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- beamer-deckSkill
- bib-coverageSkill
- bib-filterSkill
- bib-parseSkill
- brief-compliance-checkSkill
- camera-readySkill
- causal-designSkill
- checkpointSkill
- code-archaeologySkill
- compile-knowledgeSkill
- computational-experimentsSkill
- cross-language-checkSkill
- data-analysisSkill
- devils-advocateSkill
- docs-consistencySkill
- docxSkill
- experiment-designSkill
- grill-meSkill
- handoffSkill
- ideasSkill
- init-project-courseSkill
- init-project-lightSkill
- init-project-orchestrationSkill
- init-projectSkill
- insights-deckSkill
- interview-meSkill
- knowledge-lintSkill
- latex-diffSkill
- latex-health-checkSkill
- latex-polishSkill
- latex-postersSkill
- latex-scaffoldSkill
- latexSkill
- latex-templateSkill
- lean-checkSkill
- math-proofSkill
- mcp-builderSkill
- method-auditSkill
- multi-perspectiveSkill
- numerical-checkSkill
- pdfSkill
- pipeline-manifestSkill
- playwright-cliSkill
- postmortemSkill
- pre-commit-auditSkill
- pre-submission-reportSkill
- project-deckSkill
- project-safetySkill
- proof-readabilitySkill
- proofreadSkill
- python-envSkill
- quarto-deckSkill
- reorgSkill
- replication-auditSkill
- replication-packageSkill
- retarget-journalSkill
- review-clusterSkill
- The first 60 shown.
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 6 are distinctive, and 5 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 20
Default: From schema. If an experiment design document exists in docs/, auto-select From design.
- Very specific: line 74
Read references/dgp-recipes.md for code patterns matching the requested design.
- Very specific: line 76
Read shared/multi-language-conventions.md for language-specific code style.
- Distinctive: line 92
Run the script and verify:
- Distinctive: line 98
No degenerate columns (all zeros, all missing, zero variance)
- Very specific: line 112
Create data/synthetic/ if it does not exist.
- Distinctive: line 147
Always set random seeds: Document the seed in the script header and the data dictionary.
- Distinctive: line 151
Match variable types to realistic distributions: Not everything is normal:
- Distinctive: line 161
If the real data will have missingness, simulate it:
- Distinctive: line 165
Document the missingness mechanism in the data dictionary.
- Very specific: line 168
Read references/calibration-targets.md for the full procedure.
“Common” is measured: kept by at least 6 in 10 of the 3 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Synthetic Data Generation
Generate structurally realistic synthetic datasets for pilot testing, power analysis, and method development.
Modes
| Mode | What it produces | Entry point |
| From design | Synthetic data matching an existing experiment design document | "Generate test data for my experiment" |
| From schema | Synthetic data from a user-described structure | "Create a dataset with these variables" |
| Calibrated | Synthetic data calibrated to published summary statistics | "Make fake data matching these descriptives" |
Default: From schema. If an experiment design document exists in docs/, auto-select From design. If user provides published statistics, auto-select Calibrated.
When to Use
- Testing analysis code before real data collection
- Power analysis via simulation (complements
experiment-designPower mode) - Method development and debugging estimation pipelines
- Generating pilot data for grant proposals or ethics applications
- Teaching demonstrations with realistic-looking data
When NOT to Use
- Designing the experiment itself -->
experiment-design - Running analysis on real data -->
data-analysis - Auditing identification strategy -->
causal-design
Workflow
Step 1: Detect Mode
Detect from context or ask:
| Signal | Mode |
docs/experiment-design.md exists | From design |
| User describes variables, types, relationships | From schema |
| User provides means, SDs, correlations from a paper | Calibrated |
| Ambiguous | Ask |
Step 2: Interview for Data Structure
Gather the following (adapt questions to mode):
| Parameter | Question | Default |
| Variables | What variables do you need? | — |
| Types | Continuous, binary, ordinal, categorical? | Infer from name |
| Sample size | How many observations? | 500 |
| Treatment | Is there a treatment variable? How many arms? | — |
| Effect size | Expected treatment effect (Cohen's d, OR, etc.)? | 0.3 (small-medium) |
| Correlations | Which variables should be correlated? How strongly? | — |
| Clustering | Are observations nested (e.g., students in classrooms)? | No |
| Panel structure | Multiple time periods? How many? | Cross-section |
| Missing data | Should the data include realistic missingness? | No |
| Language | R or Python? | Detect from project or ask |
For From design mode, extract most parameters from the design document automatically and confirm with the user.
For Calibrated mode, require the user to provide published summary statistics. Read references/calibration-targets.md for the calibration procedure.
Step 3: Generate Script
Read references/dgp-recipes.md for code patterns matching the requested design.
Read shared/multi-language-conventions.md for language-specific code style.
Generate a self-contained script that:
- Sets a random seed (document the seed value)
- Defines the data generating process with clear comments
- Generates the dataset
- Adds realistic noise and distributional features
- Introduces missing data patterns if requested
- Saves the dataset as CSV (and optionally
.rds/.parquet) - Prints a summary of the generated data
Step 4: Execute
For large Monte Carlo sweeps (10k+ simulations, multi-condition grids, or long-running bootstrap): run on [HPC cluster] instead of locally. Drop the generation script into hpc/ with submit.sbatch (compute partition) or sweep.sbatch (array over seeds/conditions) — templates at Task Management templates/slurm/, guide at docs/guides/hpc.md. All SLURM templates log git-sha.txt to OUT_DIR so synthetic datasets remain traceable to the DGP code version.
Run the script and verify:
- Dataset has the expected dimensions
- Variable types are correct
- Treatment/control groups are balanced (if applicable)
- Summary statistics are plausible
- No degenerate columns (all zeros, all missing, zero variance)
Step 5: Save Output
Output routing:
| File | Location |
| Generated dataset | data/synthetic/{name}.csv |
| Generation script | code/generate_synthetic_{name}.R (or .py) |
| Data dictionary | data/synthetic/{name}_dictionary.md |
NEVER write to data/raw/. The data-sensitivity rule applies -- synthetic data is not raw data and must be clearly separated.
Create data/synthetic/ if it does not exist.
Step 6: Data Dictionary
Produce a markdown data dictionary alongside the dataset:
# Data Dictionary: {name}
Generated: {date}
Script: `code/generate_synthetic_{name}.R`
Seed: {seed}
N: {sample_size}
| Variable | Type | Description | Distribution | Parameters |
|----------|------|-------------|-------------- |------------|
| id | integer | Unique identifier | Sequential | 1 to N |
| treatment | binary | Treatment assignment | Bernoulli | p = 0.5 |
| outcome | continuous | Primary outcome | Normal | mu = 0, sigma = 1 (control) |
| ... | ... | ... | ... | ... |
## Treatment Effects
- True ATE: {value}
- True CATE by subgroup: {if applicable}
## Missing Data
- Mechanism: {MCAR/MAR/MNAR}
- Rate: {percentage} of {variable}Key Principles
Reproducibility
- Always set random seeds. Document the seed in the script header and the data dictionary.
- Script must be fully self-contained -- running it again with the same seed produces identical output.
Realism
- Match variable types to realistic distributions. Not everything is normal:
- Income, reaction times --> log-normal or gamma
- Likert scales --> ordinal with floor/ceiling effects
- Count data --> Poisson or negative binomial
- Proportions --> beta
- Binary outcomes --> Bernoulli with realistic base rates
- Include realistic noise. Treatment effects should be embedded in noisy data, not clean signal.
- Add heterogeneity. Real data has heterogeneous treatment effects -- consider adding subgroup variation.
Missing Data
- If the real data will have missingness, simulate it:
- MCAR: Random deletion at a fixed rate
- MAR: Missingness depends on observed variables (e.g., higher income --> less missing)
- MNAR: Missingness depends on the missing value itself (e.g., depressed people less likely to respond)
- Document the missingness mechanism in the data dictionary.
Calibration (Calibrated Mode)
- Read
references/calibration-targets.mdfor the full procedure. - Require published summary statistics as input (means, SDs, correlations, effect sizes).
- Validate that the synthetic data matches the targets within tolerance.
- Report discrepancies between target and achieved statistics.
Mode: From Design
Workflow
- Locate design document -- check
docs/experiment-design.md,docs/pre-analysis-plan.md,log/plans/ - Extract parameters:
- Treatment arms and assignment mechanism
- Primary and secondary outcomes (types, expected distributions)
- Covariates and their roles
- Sample size and any clustering/stratification
- Expected effect sizes from the power analysis
- Confirm with user -- present extracted parameters and ask for adjustments
- Generate -- follow Steps 3-6 above
Integration with experiment-design
The design document produced by experiment-design Design mode contains everything needed:
- Hypotheses with expected signs --> treatment effect directions
- Conditions and randomization --> treatment assignment DGP
- Outcome measures and scales --> variable types and distributions
- Power analysis results --> sample size and effect size
Mode: From Schema
Workflow
- Interview -- ask user to describe each variable (or provide a sketch)
- Infer structure -- detect relationships from the description:
- "X causes Y" --> include causal pathway
- "A and B are correlated" --> induce correlation via shared latent factor
- "C moderates the effect" --> include interaction term
- Generate -- follow Steps 3-6 above
Common Requests
| User says | Interpret as |
| "A standard survey dataset" | Demographics + Likert DVs + treatment + attention checks |
| "Panel data" | Units x time with unit and time fixed effects |
| "Something like [paper name]" | Switch to Calibrated mode, use paper's descriptives |
Mode: Calibrated
Workflow
- Collect targets -- user provides published summary statistics:
- Means and standard deviations
- Correlation matrix (or key correlations)
- Effect sizes from regression tables
- Sample size
- Distribution shapes (skew, kurtosis) if reported
- Read
references/calibration-targets.mdfor the calibration procedure - Generate with matching -- use the Cholesky decomposition or copula method to match the target correlation structure
- Validate -- compare synthetic descriptives to targets, report match quality
- Save -- follow Steps 5-6 above, include calibration targets in the data dictionary
Cross-References
| Resource | When read |
references/dgp-recipes.md | All modes (code patterns for each design type) |
references/calibration-targets.md | Calibrated mode (matching procedure) |
shared/multi-language-conventions.md | All modes (code style) |
experiment-design skill | From design mode (reads its design documents) |
data-analysis skill | Consumes synthetic data for pipeline testing |
data-sensitivity rule | Never write to data/raw/ |
design-before-results rule | Synthetic data supports locking the design before real data |
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

