| name | issue-sanity-check |
| layer | method |
| description | A pessimistic go/no-go the moment you pick up a GitHub issue โ read it skeptically and hunt for reasons NOT to do it (already done? obsolete? duplicate? premise wrong? cheaper way? net-negative?), returning proceed / reshape / drop with one-line evidence. The pickup-time half of the dedup gate (the create-time half is /issue-dedup). Use as step 1 of the Task Execution Workflow, or run /issue-sanity-check |
| allowed-tools | mcp__github__issue_read, mcp__github__search_issues, mcp__github__list_issues, mcp__github__add_issue_comment, Read, Grep, Glob, Bash |
Issue Sanity-Check โ should this even be done? (pickup gate)
Claiming an issue and starting to build is a reflex. This skill inserts a deliberately
skeptical pause first: a stale, obsolete, duplicated, or wrong-premise issue is cheapest to
catch before a build is sunk into it. It's the pickup-time half of the dedup gate;
/issue-dedup is the create-time half. Both are sub-issues of epic #297.
This is a skeptic's checklist, not a rubber stamp. Your job here is to find a reason not
to do the work. If you can't find one, that's the proceed signal.
When this fires
Step 1 of the Task Execution Workflow โ the moment you claim an issue, before doing the
work. Also on demand: /issue-sanity-check #NN.
The checklist (hunt for a reason to STOP)
Read the issue, then ask each โ answer with one line of evidence (a link, a path, a date):
- Already done? โ search closed issues/PRs and the code for the change. Did a later
commit/PR already ship this? (
git log --oneline -S'<symbol>', search_issues state:closed.)
- Obsolete / overtaken? โ has the architecture moved past it? (e.g. it targets Pages but
we're on Workers; it patches a file that's been deleted/rewritten.)
- Duplicate / colliding? โ is there an open issue or epic for the same thing? (Reuse the
/issue-dedup search. If yes, this is a merge, not two builds.)
- Premise still true? โ does the "we think thatโฆ" hypothesis still hold, or did reality
change? A wrong premise makes a perfectly-built feature worthless.
- Cheaper alternative? โ is there a smaller change, an existing composable/skill, or a
config flip that gets 90% of the value? (KISS โ CLAUDE.md core principle.)
- Net-negative? โ does it add surface/complexity we'll regret, contradict a current
pattern, or block something more valuable? Sometimes the right move is to close it.
The verdict (REQUIRED output)
End with exactly one of:
- โ
Proceed โ no blocker found. One line on why it still makes sense, then go.
- ๐ Reshape โ the goal is valid but the framing/scope is wrong. State the smaller/changed
scope, update the issue body, then proceed on the reshaped version.
- ๐ Drop โ there's a real reason not to do it. Name it with evidence, and (interactive)
recommend closing
not_planned / merging into the duplicate โ ask the owner before
closing, don't unilaterally bin their issue.
Keep it tight โ six one-line checks and a verdict, not an essay. The value is the pause, not
a long report.
Recording it
- Interactive โ state the verdict in chat. For ๐/๐, ask the owner before reshaping or
closing (use
AskUserQuestion). For a ๐ you act on, post a comment with the evidence so the
close is explained (lead with the ๐ค provenance header โ see CLAUDE.md).
- Autonomous / pipeline โ post the verdict as a comment on the issue (provenance header)
so the chain is auditable, and for ๐ set
status:blocked + @mention rather than closing
silently.
What this is not
- Not the create gate โ that's
/issue-dedup (don't mint a duplicate).
- Not bug-archaeology โ that's the "how/when was this introduced" gate for bugs (#424).
- Not a license to skip work you simply don't feel like doing โ the verdict needs evidence,
not vibes.