GitHub Issue deep analysis. Read issue -> classify problem -> select investigation strategy -> integrate four investigation tools.
| Type | Source | Example |
|---|---|---|
| GitHub Issue | Issue number, URL, or description | /issue-analyze 123 |
| Review Thread | file:line + reviewer comment | /issue-analyze --triage "src/foo.ts:42 β Use early return" |
When input is a Review Thread:
gh issue view, uses provided thread data directlyreferences/classification.md)| Mode | Input Type | Phases Executed | Use Case |
|---|---|---|---|
| Full (default) | Issue or Thread | 1 β 2 β 2.5 β 3 β 4 | Deep analysis with investigation |
Triage (--triage) |
Review Thread | 2 β 2.5 only | Lightweight classification + verdict (thread data provided inline) |
Triage (--triage) |
GitHub Issue | 1 β 2 β 2.5 | Fetch issue first, then classify + verdict |
/bug-fix)/feature-dev)/codex-review)βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 1: Read Issue / Review Thread β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β GitHub Issue: gh issue view <number> --json ... β
β Review Thread: use provided { path, line, reviewer, comment } β
β Extract: symptoms, reproduction steps, error messages, files β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 2: Problem Classification β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β GitHub Issue: Determine problem type β investigation strategy β
β Review Thread: Determine category β actionability β
β β
β ββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββ β
β β Type β Investigation Strategy β β
β ββββββββββββββββββΌβββββββββββββββββββββββββββββββββββ€ β
β β Unfamiliar β /code-explore β β
β β Regression β /git-investigate β β
β β Complex root β /code-investigate (dual view) β β
β β Multiple cause β /codex-brainstorm (exhaustive) β β
β β Composite β Combine multiple strategies β β
β ββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 2.5: Verdict Assessment (NEW) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Codex blind verification: ACTIONABLE / NON_ACTIONABLE / UNCERTAINβ
β Fresh exec thread (Β§ Start), anti-anchoring β
β Pattern: @skills/seek-verdict/references/verdict-prompt.md β
β Thresholds: @skills/seek-verdict/references/policy-mapping.md β
β β
β β οΈ Never send Claude's classification to Codex β
β --triage mode: stop here, output verdict + classification β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 3: Execute Investigation β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Skip if verdict = DISMISS_VERIFIED (per policy-mapping thresholds) β
β Otherwise: invoke corresponding investigation command β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Phase 4: Consolidated Report β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Synthesize investigation results + verdict, produce report β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Issue Symptoms
β
ββ "It used to work, now it doesn't" ββββ /git-investigate
β (find introduction point)
β
ββ "Don't know how this feature works" ββ /code-explore
β (quick understanding)
β
ββ "Has error message / stack trace"
β β
β ββ Clear error βββββββββββββββββ /code-explore
β β (trace path)
β β
β ββ Vague / intermittent ββββββββ /code-investigate
β (dual-view confirmation)
β
ββ "Many possible causes" βββββββββββββ /codex-brainstorm
β (exhaustive analysis)
β
ββ Composite / uncertain ββββββββββββββ Start with /code-explore
then choose based on results
| Tool | Purpose | Speed | Depth |
|---|---|---|---|
/code-explore |
Quick code exploration | Fast | Single |
/git-investigate |
Track change history | Medium | Single |
/code-investigate |
Dual confirmation | Slow | Dual-view |
/codex-brainstorm |
Exhaust possibilities | Slowest | Adversarial |
After classification, run Codex blind verification to independently assess actionability.
Codex call requirements (same as /seek-verdict pattern):
| Requirement | Detail |
|---|---|
| Thread | Fresh β @skills/codex-code-review/references/codex-transport.md Β§ Start, never a Β§ Resume onto an existing thread |
| Sandbox and approval policy | pinned by the adapter β see @skills/codex-code-review/references/codex-transport.md Β§ Start; not chosen here |
| Anti-anchoring | Never send Claude's Phase 2 classification to Codex |
Prompt construction: follow @skills/seek-verdict/references/verdict-prompt.md pattern, adapting input:
Codex output (all fields required):
- codex_verdict: ACTIONABLE | NON_ACTIONABLE | UNCERTAIN
- confidence: [0.0 - 1.0]
- evidence_refs: [files/lines/commands used]
- reasoning: [why this verdict]
Policy mapping: follow @skills/seek-verdict/references/policy-mapping.md thresholds (normal state; heightened thresholds apply after [DISMISS_PATTERN_WARN] β see policy-mapping.md Anti-Abuse Guard):
| Verdict | Confidence | Evidence Refs | Result |
|---|---|---|---|
| NON_ACTIONABLE | >= 0.80 (normal) / >= 0.85 (heightened) | >= 2 (normal) / >= 3 (heightened) | Skip Phase 3 investigation (DISMISS_VERIFIED) |
| ACTIONABLE | >= 0.70 | any | Proceed to Phase 3 (FIX_REQUIRED) |
| UNCERTAIN / low | any | any | Proceed to Phase 3 (NEED_HUMAN) |
--triage mode: stop after Phase 2.5, output classification + verdict only.
Graceful degradation β on codex_fail only, which is adapter exit 1 and nothing else
(@skills/codex-code-review/references/codex-transport.md Β§ Completion state machine): log a warning
and continue by mode, because the two modes have different next steps and one instruction cannot
serve both. Full mode proceeds to Phase 3 with the verdict explicitly recorded as unavailable.
--triage mode has no Phase 3 to proceed to β it stops at Phase 2.5 by definition β so it stops
here and emits the classification with verdict: UNAVAILABLE (codex_fail), which the Output and
Verification sections below admit as a complete triage result. Telling triage mode to "proceed to
Phase 3" was an instruction it could not execute. This is a non-gate dispatch, so there is no fallback
carrier to route to. The other outcomes are not this branch: exit 2 is a configuration or
usage error to fix β surface it and stop; an unknown completion is not a failure at all β wait
for it, because a launch is not a verdict. "If the Codex call fails" flattened all three into one
action, which is the reading this line now refuses.
## Issue Analysis: <title>
- **Classification**: <problem type>
- **Verdict**: ACTIONABLE / NON_ACTIONABLE / UNCERTAIN / UNAVAILABLE (codex_fail) (confidence: 0.XX
β omitted for UNAVAILABLE, where no dispatch produced one)
- **Root cause hypothesis**: <analysis>
- **Investigation strategy**: <tools + plan>
- **Priority**: P0 / P1 / P2
--triage mode)## Triage: <file>:<line> (or issue title)
- **Category**: <classification>
- **Verdict**: ACTIONABLE / NON_ACTIONABLE / UNCERTAIN / UNAVAILABLE (codex_fail)
- **Confidence**: 0.XX <!-- omitted when the verdict is UNAVAILABLE: no dispatch produced one -->
- **Reasoning**: <brief justification>
- **Evidence**: <file:line references>
UNAVAILABLE (codex_fail) is a complete result in either mode, not a failure to report one: the
classification stands on its own and the verdict line says plainly that no usable Codex verdict was
produced or accepted. That is the accurate claim, and it is narrower than it looks β adapter exit 1
covers failures that happen after the child may have started (a nonzero child exit, a half-written
prompt, malformed JSONL, a missing thread event, an empty report), so codex_fail does not say
whether a reviewer ran. Only exit 2 means nothing was dispatched
(@skills/codex-code-review/references/codex-transport.md Β§ Completion state machine), and exit 2 is
not this branch. Reporting a verdict nobody produced would be the alternative, and it is worse.
UNAVAILABLE (codex_fail), which is this item satisfied by the degradation branch rather than
unsatisfied: exit 1 can land before any verdict exists to assesscodex_fail there may be no completed dispatch to check--triage mode: outputs classification + verdict only β and on codex_fail, stops there with
verdict: UNAVAILABLE (codex_fail) rather than continuing to a phase this mode does not havereferences/classification.md β Detailed problem classification guide (includes Review Thread dimensions)references/report-template.md β Report template (includes Triage Report)@skills/seek-verdict/references/verdict-prompt.md β Codex blind verification prompt pattern (source of truth)@skills/seek-verdict/references/policy-mapping.md β Verdict thresholds + audit format (source of truth)Input: /issue-analyze 123
Phase 1: gh issue view 123 -> "API returns 500 after update"
Phase 2: Classification = Regression
Phase 3: /git-investigate -> find introducing commit
Phase 4: Report + fix recommendation
Input: /issue-analyze 456
Phase 1: gh issue view 456 -> "Random timeout occurrences"
Phase 2: Classification = Complex root cause (intermittent)
Phase 3: /code-investigate -> Claude + Codex dual-view
Phase 4: Consolidated report -> ranked possible causes
Input: /issue-analyze 789
Phase 1: gh issue view 789 -> "Why does it behave this way?"
Phase 2: Classification = Unfamiliar feature
Phase 2.5: Verdict = ACTIONABLE (confidence 0.75) -> proceed
Phase 3: /code-explore -> trace execution path
Phase 4: Report + flow diagram + verdict
Input: /issue-analyze --triage "src/service.ts:42 β Use early return instead of nested if"
Phase 2: Classification = nit
Phase 2.5: Verdict = NON_ACTIONABLE (confidence 0.85)
Codex found: current nested pattern follows project convention in 12 other files
Output: Triage report β skip suggested