repro-builder
Turns a vague bug report into a minimal, runnable reproduction: extracts hypotheses from the report text, snapshots the environment, generates a repro test/script, EXECUTES it and iterates (max 5 atte
SKILL.mdskills/runtime/repro-builder/SKILL.md
GitHub/repro
Turns a vague bug report into a minimal, actually EXECUTED repro test - or a precise list of which information is missing to reproduce.
PROTECTION RULE - never modify target project or ~/.claude/
This skill writes repro artifacts to a repro/ subfolder in the working
directory, never inside the target project. It also never touches
~/.claude/. If $ProjectDir resolves to a path under ~/.claude/, the
collector rejects it with an error.
What this is for
- "Doesn't work" is the most expensive sentence in the industry. Instead of guessing, this skill extracts hypotheses from the report, generates a repro candidate, EXECUTES IT and iterates based on the result.
- No fix - repro is the product, a fix is a follow-up task. No UI/browser reproduction (code level only). No production databases - only local/synthetic data.
- Repro artifacts always live in the working directory (
repro/subfolder), never in the target project.
What You Must Do When Invoked
If /repro -help or /repro -h (without further arguments) is invoked:
output the ## Usage section unchanged and stop.
Otherwise follow these steps in order, skipping none.
Step 1 - Help check
If invoked with -help or -h, output the ## Usage section unchanged and stop.
Step 2 - Clarify target and bug report
Clarify -ProjectDir and the bug report (paste free text or file path).
Get confirmation.
Step 3 - Environment snapshot
& "<SKILL_DIR>/scripts/env-snapshot.ps1" -ProjectDir "<path>"
The result (stack, runtimes, test runner, git state, entry points) flows into the protocol later - it records AGAINST which state reproduction was done.
Step 4 - Dissect report
Symptom (what happens), expectation (what should happen), trigger candidates (inputs, sequence, state), environment hints. Missing core information NOTE IMMEDIATELY as "missing info" - but continue with hypotheses anyway, do not give up prematurely.
Step 5 - Localize suspicious code
From symptom terms + stacktrace (if present) find the relevant files (Grep) and read them completely (Read). Form hypotheses: under which conditions does this code produce the symptom? Order by likelihood.
No usable hint in the report: make ONE hypothesis attempt from pure code reading, then abort early with a list of questions - do not burn 5 blind attempts.
Step 6 - Repro loop (max 5 attempts)
Per attempt:
- Generate repro artifact in the working directory under
repro/(never in the target project): preferably a test in the style of the detected test runner that imports/invokes the target project; otherwise a standalone script. Minimal: one scenario, one hard assertion on EXPECTED behavior - the test MUST fail when the bug is present (that is the proof logic). - Execute (Bash/PowerShell depending on stack), interpret result:
- Assertion fails with the reported symptom -> reproduced. Minimize artifact (remove unnecessary parts, run again - must stay red).
- Test green or different symptom -> discard/refine hypothesis, next attempt.
- Record each attempt in the protocol (hypothesis, artifact version, result including verbatim output).
- External services (DB, API) needed: use stubs/fakes in the artifact; if impossible, document as missing info instead of guessing.
- Heisenbug suspicion (timing/race): artifact with retry loop (N runs, measure failure rate); "reproduced" from demonstrable rate, rate in protocol.
- Test runner not installed in target project: standalone script instead of test, do not install anything in the target project.
Step 7 - Finalize
repro/ folder in the working directory with repro artifact + repro-protocol.md:
- Reproduced: environment snapshot, final artifact, exact output of the red
run (verbatim), classification (which hypothesis was correct,
provenby run output). Note: artifact is suitable as regression test. - Not reproduced (after up to 5 attempts): all attempts in the protocol + precise list of missing info as copy-ready follow-up questions for the reporter ("Which locale?", "What data volume?"). Never "cannot reproduce" WITHOUT this list.
Evidence requirement: "reproduced" only with verbatim error output of the run in
the protocol. Hypotheses without a run are at most suspected.
Step 8 - Summarize
Briefly: reproduced yes/no, how, what (if not reproduced) is missing.
Usage
/repro # interactive
/repro <repo> # report will be prompted
/repro <repo> <report-file> # report from file
/repro -help