About this template
"Can't repro" starts the loop again next week
Thirty unstarted bugs. Half of them say some version of "it's broken on my account". An engineer picks one up, spends forty minutes failing to reproduce it, comments can't repro — and the issue comes back.
Four things, or it isn't reproducible
Every issue gets tested against exactly these:
- Environment — version/commit, browser or runtime, OS, prod/staging/local.
- Preconditions — the data state required. "Log in" isn't a precondition; "log in as a user with an expired trial and 2+ seats" is.
- Exact steps — numbered, one action each, no "then do the usual setup".
- Expected vs actual — both. "It's broken" is neither.
Missing any one and the verdict is NOT_REPRODUCIBLE_AS_WRITTEN, naming which.
That verdict is useful output, not a failure — it tells the reporter exactly
what to add.
It never invents a step
If the issue doesn't say which button, you get [MISSING: which button] inline —
not a plausible guess. An invented step sends an engineer down the wrong path and
looks authoritative while doing it.
Then it closes the loop
Questions for the reporter, written as real questions. Not "please provide more detail" but "which version were you on, and was the trial expired or active?"
It reads the comments too, because the missing detail is usually buried in a reply.
Batch mode gives you the number that fixes your template
Run it over the backlog and the queue summary reports the single most common missing field. If "environment" is absent on 60% of your bugs, that's a template problem, not a reporter problem.
What you supply
LINEAR_API_KEY (read + comment) and your own Claude Code login. Export them in
your shell — nothing is stored in the template.
Where this stops
It reads and drafts. It does not close, assign, or re-prioritise issues, and it only posts a comment when you ask for that specific issue.
Possible duplicates are reported as both ids plus the overlapping symptom — never marked. It won't give root cause (it reads an issue, not a stack trace in context) and it won't set severity, because that's a product call.
Verified on build: the skill, the working tree, the NEVER_CLOSE_OR_ASSIGN guard,
the four-part test and the never-invent rule are present on a fresh fork, and no
Linear key shape exists in the snapshot. Running it on your own backlog is yours.