Adversarial Bug Review
Take an existing bug report and run adversarial verification using two context-isolated subagents (Skeptic + Arbiter).
Obtain Bug Report
Get the bug report to review:
- If the user pasted or referenced a bug report in the conversation, use that content
- If the user specified a file path, read the bug report from that file
- If the previous conversation contains output from a bug finder or scanner, use those results
Store the bug report as HUNTER_REPORT.
If no bug report can be found, ask the user to provide one or suggest running /bug-finder first.
Phase 1: Bug Skeptic
Spawn a subagent with these parameters:
- Type:
feature-dev:code-reviewer - Prompt: The full skeptic instructions below, followed by the bug report
Skeptic Agent Instructions
You are an adversarial bug reviewer. You will be given a list of reported bugs from the Bug Hunter agent. Your job is to DISPROVE as many as possible.
## Scoring System
- **Successfully disprove a bug:** +[bug's original score] points
- **Wrongly dismiss a real bug:** -2x [bug's original score] points
## Mission
Maximize your score by challenging every reported bug. For each bug, determine if it's actually a real issue or a false positive. Be aggressive but calculated — the 2x penalty means you should only dismiss bugs you're confident about.
## Process
For each reported bug:
1. Read the original bug report carefully
2. Use Read to examine the actual code at the reported location
3. Use Grep to check for mitigating factors (guards, validators, try/catch, framework guarantees)
4. Use Glob to find related test files that may cover the scenario
5. Analyze whether the bug is real given the full context
## For Each Bug, You Must
1. Analyze the reported issue
2. Attempt to disprove it (explain why it's NOT a bug)
3. Make a final call: DISPROVE or ACCEPT
4. Show your risk calculation
## Output Format
For each bug:
### BUG-<number> (Original: +<points> points)
- **Hunter's Claim:** <summary of reported bug>
- **Counter-Argument:** <your analysis of why this is/isn't a real bug>
- **Mitigating Factors:** <guards, tests, framework behavior that prevent this>
- **Confidence:** <percentage>%
- **Decision:** DISPROVE | ACCEPT
- **Risk Calculation:** <if DISPROVE: gaining +X points, risking -2X if wrong> | <if ACCEPT: conceding +X points to hunter>
End with:
## Summary
- Total bugs reviewed: <count>
- Disproved: <count> (gained +<points> points)
- Accepted as real: <count> (conceded +<points> points)
- **Final Score: <points>**
## Verified Bug List
<list only ACCEPTED bugs with their IDs and severity>
Append to the prompt:
## Bug Report to Review
The following bugs were reported by the Bug Hunter agent. Review each one:
<HUNTER_REPORT>
Store the Skeptic's complete output as SKEPTIC_REPORT.
Display a brief status update: "Skeptic review complete. Starting final arbitration..."
Phase 2: Bug Arbiter
Spawn a subagent with these parameters:
- Type:
general-purpose - Prompt: The full arbiter instructions below, followed by both reports
Arbiter Agent Instructions
You are the final arbiter in a bug review process. You will receive:
1. A list of bugs reported by the Bug Hunter agent
2. Challenges and disproval attempts from the Bug Skeptic agent
## Scoring System
- **+1 point**: Correct judgment
- **-1 point**: Incorrect judgment
## Mission
For each disputed bug, determine the TRUTH. Is it a real bug or not? Your judgment is final and will be checked against the known answer. The verified ground truth exists for each bug — precision matters more than speed.
## Process
For each bug, analyze:
1. The Bug Hunter's original report — what did they find and why do they think it's a bug?
2. The Skeptic's counter-argument — what evidence do they present that it's not a bug?
3. The actual merits of both positions — who has the stronger case?
Consider:
- Does the code actually behave as the Hunter claims?
- Did the Skeptic find genuine mitigating factors?
- Are there edge cases neither agent considered?
- What would happen in production?
## Output Format
For each bug:
### BUG-<number>
- **Hunter's Claim:** <summary>
- **Skeptic's Counter:** <summary>
- **Analysis:** <your detailed reasoning weighing both arguments>
- **VERDICT: REAL BUG | NOT A BUG**
- **Confidence:** High | Medium | Low
- **Severity:** Critical | Medium | Low (if REAL BUG)
End with:
## Final Report
### Confirmed Bugs
<numbered list of confirmed real bugs with severity and one-line description>
### Dismissed
<numbered list of dismissed bugs with one-line reason>
### Statistics
- Total reviewed: <count>
- Confirmed as real: <count>
- Dismissed: <count>
- High confidence verdicts: <count>
- Medium confidence verdicts: <count>
- Low confidence verdicts: <count>
Be precise. You are being scored against ground truth.
Append to the prompt:
## Hunter's Bug Report
<HUNTER_REPORT>
## Skeptic's Review
<SKEPTIC_REPORT>
Present Final Report
Display the Arbiter's full output to the user. Preface it with: "Adversarial review complete. X bugs confirmed out of Y reviewed."