hannesill/vitrine/reproduce-study
Claude Code and agent skill by hannesill/vitrine
- community
Checking that the SKILL.md file is still in the repository.
Run a reproducibility audit on a vitrine study — re-executes scripts, checks determinism, and verifies claims against outputs.
Install
npx vskill@latest install hannesill/vitrine/reproduce-studySKILL.md
Reproducibility Audit
Re-execute every script in a vitrine study, check determinism, and verify that card claims match script outputs. Produces a REPRODUCIBILITY.md report and a live summary card.
When to Use This Skill
- User asks to verify or reproduce a study
- User wants to check if scripts are deterministic
- User wants to audit whether vitrine cards reflect actual outputs
- Before publishing or sharing a study
Setup
Call register_output_dir() only when the task gave no output directory. Without a path it points the study at a new, empty output/ folder, cutting it off from the directory that holds its scripts and data.
Procedure
Step 1: Orient
Call study_context(STUDY) and read the result. Note:
card_count— total cards in the studycards— list of card dicts, each withcard_id,title,type,previewdecisions_made— decisions and their outcomes
Read PROTOCOL.md and RESULTS.md from output_dir if they exist — these contain claims to verify.
Step 2: Inventory Scripts
List all .py files in output_dir / "scripts/". Sort by filename (they should be numbered: 01_cohort_definition.py, 02_baseline.py, etc.).
If there are no scripts, post a single card explaining that the study has no scripts to audit and stop.
Step 3: Create Progress Card
Post an initial progress card and capture the card ID for progressive updates:
Step 4: Execute Each Script
Rerunning a script overwrites its outputs, so run everything in a copy of the output directory:
For each script in order:
- Run 1 — Execute the script with
python scripts/NN_name.pyfromsandbox. Capture stdout/stderr and exit code. Record output files produced indata/andplots/(snapshot filenames and file hashes).
- Run 2 — Execute the same script a second time. Capture the same information.
- Check determinism — Compare output file hashes between Run 1 and Run 2. If all hashes match, the script is deterministic. If any differ, flag it.
- Check claims — Look through the study's cards for any card whose title or content references this script's outputs (e.g., a card titled "Cohort" that shows a DataFrame likely came from
01_cohort_definition.py). Compare:
- Row counts: does the card's row count match the output parquet's row count?
- Key values: do summary statistics or counts mentioned in markdown cards match the actual outputs?
- If the card is a table, load the parquet and compare shape and column names.
- If you cannot link any card to a script's output, mark as "unverifiable".
- Update progress card — After each script completes, update the card in-place:
Step 5: Write REPRODUCIBILITY.md
Save a full report to output_dir / "REPRODUCIBILITY.md" (the study's own output directory, not the sandbox) with:
Step 6: Final Card Update
Update the progress card one last time with the verdict line appended:
Then delete the sandbox:
Critical Implementation Notes
- Always run from the sandbox. Scripts use
Path(__file__).resolve().parent.parentto finddata/andplots/, so the working directory must besandbox. Running them inoutput_dirwould overwrite the study's own outputs.
- Hash comparison for determinism. Use SHA-256 hashes of output files, not content comparison. For parquet files, hash the file bytes. Some non-determinism is acceptable in floating-point edge cases — note it but don't fail the script.
- Claim matching is best-effort. Not every card will map cleanly to a script. Use title keywords, output filenames, and row counts as heuristics. Mark anything ambiguous as "unverifiable" rather than guessing.
- Do not modify scripts. This is an audit — run scripts as-is. If a script fails, record the failure and move on. The only file you write to
output_dirisREPRODUCIBILITY.md.
- Use `study=STUDY` on every `show()` call. This keeps audit cards grouped with the study being audited.
- Progressive updates use `replace=card_id`. The first
show()returns aDisplayHandle(string-like card ID). Pass it asreplace=to update the same card.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingsrc/vitrine/skills/reproduce-study/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/hannesill/vitrine/reproduce-study)