Captures provenance records (environment, code, data, seeds, commands) so that results, experiments, or analyses can be reproduced exactly by others or future sessions.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ai-research-workflows:ensuring-reproducibilityThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Given a result, analysis, or experiment, capture enough provenance that someone
Given a result, analysis, or experiment, capture enough provenance that someone else — or future you — can reproduce it exactly.
This skill leans Direct by default. For the full Collaborative-vs-Direct protocol and override rules, see the Interaction Modes reference in the ai-research-workflows:using-research-workflows skill.
Capture a provenance record sufficient for independent reproduction. A result without a provenance record is a claim; with one, it is a reproducible finding.
Capturing the environment, code, data, seeds, and commands is necessary but not sufficient. An unverified provenance record is a hypothesis, not a reproducible finding. You MUST reproduce the result in a clean environment before calling it reproducible.
Deferring the clean-room reproduction is allowed ONLY when a fresh run is technically impossible — the original hardware, proprietary data, or licensed software is genuinely unavailable. Being short on time is never a valid reason. If a full re-run is too long for the time you have, run a minimal reproduction (a smaller subset, fewer steps, one seed) in a clean environment — verify something, never nothing.
A complete provenance record includes:
Environment — interpreter or compiler version (e.g., python 3.12.3),
OS, and the dependency lockfile that was active (e.g., pixi.lock,
uv.lock, requirements-frozen.txt).
Code version — the commit hash of the analysis/model code itself
(git rev-parse HEAD); note if the working tree was dirty. Pinning the
environment but not the code that produced the result defeats reproduction.
Hardware / accelerator — for GPU, accelerated, or parallel runs, record the device, CUDA/driver version, and thread/process counts; these change numerical results and explain nondeterminism.
Data inputs — file paths or URLs, plus a version tag, commit hash, or
content hash (e.g., sha256:abc123) for each dataset. For remote data,
record the retrieval date.
Random seeds — every seed passed to NumPy, PyTorch, stdlib random, or
any other RNG. If the code reads seeds from config, pin that config value.
Configuration and parameters — all non-default flags, hyperparameters, or config file contents that affect the result.
Exact commands — the full shell commands run, in order, so someone can copy-paste them into a clean environment:
pixi run python train.py --config configs/baseline.yaml --seed 42
pixi run python evaluate.py --checkpoint outputs/run-001/best.ckpt
Append a ## Reproducibility section to the relevant artifact in docs/rse/specs/ (or its legacy .agents/ location):
docs/rse/specs/experiment-<slug>.mddocs/rse/specs/implement-<slug>.mddocs/rse/specs/reproducibility-<slug>.mdIf reproducing someone else's work, note what was missing from their record.
This skill decides what provenance to record; separate skills handle how to pin the environment:
scientific-python-development:pixi-package-managerpython-development:uv-package-managerThis skill is language-agnostic at the strategy level. Apply the same provenance principles to R, Julia, Rust, or any other runtime.
Reproduce from the record in a clean environment and confirm the result matches. This is required, not optional (see the Iron Law above) — bounded only by technical impossibility, never by time pressure. Steps:
For nondeterministic outputs (parallelism, GPU float accumulation, stochastic sampling with no fixed seed), define and document a tolerance:
Metric: validation accuracy
Expected: 0.847 ± 0.003 (3 independent runs with seeds 42, 123, 999)
Document the reproduction attempt — success, failure, and any tolerance applied — in the provenance record.
The clean-room reproduction is exactly the step a deadline tempts you to drop:
| Thought | Reality |
|---|---|
| "The env is right here, it'll reproduce fine" | "Right here" is not a clean room. An unverified record is a hypothesis. Run it fresh. |
| "No time to spin up a clean environment" | Time is never a valid deferral. Do a minimal clean-room run, don't skip. |
| "I'll do the clean-room run after submission" | Later never comes — and the number is already in the paper. Verify before you report it. |
| "It's deterministic, so it obviously reproduces" | Determinism is a claim until a fresh environment confirms it; deps, hardware, and unseeded RNG drift silently. |
Before marking reproducibility capture complete:
Integrates with the ai-research-workflows:running-experiments and ai-research-workflows:implementing-plans skills.
Both write docs/rse/specs/ artifacts that become the natural home for the
## Reproducibility section this skill appends.
npx claudepluginhub uw-ssec/rse-plugins --plugin ai-research-workflowsGuides reproducible computational research with environment management, data versioning, code documentation, and sharing protocols.
Verifies reproducibility claims for experiments: requires exact commands, config, seed, commit hash, dataset version, and metric tables before accepting performance improvements.
Sets up an isolated, reproducible workspace with pinned environment, fixed seeds, and immutable raw data before running analysis.