---
name: prepare-to-reproduce
description: Turn a paper into a reproduction spec — pseudocode, the hyperparameter table, a gap list of everything the paper leaves unstated, and one minimal experiment. Run when asked to reimplement a paper, judge whether it can be reproduced at all, or find what is missing before writing code.
---

The spec someone opens a terminal with. Its centre is the **gap list**: everything the paper leaves unstated that a reimplementation must decide anyway. Reading has already happened — this turns the reading into a build.

## Ground rules

- **Full text or stop.** Obtain the paper's full text (PDF, HTML, or plain text) before starting. When you cannot, ask the user for the file and wait: an abstract plus recall is not a paper.
- **Source-tag every claim.** Each statement about the paper carries `§4.2`, `Fig. 3`, or `Table 1`. Where the paper is silent, write `Paper does not state`.
- **Follow the user's language.** Write prose in the language the user is writing in. Keep technical terms, quoted phrases, source tags, and the structural headings below in their original form, so files stay mergeable across sessions.

## Steps

1. **Load the reading.** Read `papers/<key>.md` where it exists — its `## Assumptions` and `## Stuck` sections are gap-list candidates already found. Where no note exists, say so and offer the `three-pass-read` skill first; the user may still tell you to go ahead from the paper alone.
2. **Work the checklist item by item.** Each item lands as `§x` or as `Paper does not state`:
   - Core algorithm, as pseudocode someone could type up
   - Data — source, size, splits, preprocessing
   - Model — architecture, initialisation, parameter counts
   - Training — optimiser, LR schedule, batch size, steps, hardware, wall-clock
   - Evaluation — metrics, baselines, seeds, error bars
3. **Build the gap list.** Every `Paper does not state` becomes one line under `## Gap list`: the value you would pick instead, and what that choice would change downstream. `Paper does not state` is the only thing that feeds this list, which is why the whole spec rests on the source-tag rule.
4. **Define one minimal experiment**: what to run, which number to watch, and what value counts as reproduced. One number, one threshold.
5. **Call it.** Close with `## Verdict`: `reproducible` / `reproducible with guesses` / `underspecified`, and the gap that decides it.

Write to `papers/<key>-repro.md`.

## Done when

- Every checklist item carries `§x` or sits in the gap list.
- Every gap-list line names both a chosen value and its downstream consequence.
- The minimal experiment names one number and the threshold it must reach.
- `## Verdict` names the gap it rests on.
