Use for \"interrogate\", \"adversarial review\", \"multi-model review\", \"challenge this\", \"stress test this code\", \"find blind spots\", or \"tear this apart\". Multiple LLM reviewers challenge changes from independent angles.
npx skills add https://github.com/uzairansaruzi/p3-stack --skill interrogate
Spawn one reviewer per configured model to adversarially review code changes. Each model gets the same prompt and rubric. The adversarial signal comes from model diversity, not assigned personas.
The deliverable is a synthesized verdict. Do NOT auto-apply changes.
Identify what to review from context:
git diff main...HEAD (or the appropriate base branch) for the full changesetPackage the diff (or file contents) plus any surrounding context files the reviewers need to understand the code.
Before spawning reviewers, state the intent explicitly. Derive this from:
Write one clear paragraph. If you're unsure about the intent, ask the user before proceeding.
Launch all reviewers in a single turn, one delegate_task per reviewer with mode: "async". Use the interrogate reviewers line in p3-models.md, one reviewer per entry, labeled Reviewer A, B, C, and so on for the configured entry count. Resolve each entry's provider and model through orchestrator_capabilities. If the line is missing, run setup-p3 first.
For each reviewer:
auto or inherit-parent entry, omit the model so that reviewer runs on the parent model.If delegate_task rejects a configured entry, say so and run that reviewer on the closest available model of the same family from orchestrator_capabilities. Do not block the review on it.
Read references/reviewer-prompt.md and fill in the template with:
references/rubric.mdreferences/code-quality-review.mdThe same filled template goes to all reviewers, so every model applies the code-quality lens. Drain results with task_status.
As results come back, build a unified picture:
You are the lead reviewer, a pragmatic senior engineer, not a neutral aggregator.
Read references/lead-judgment.md for the full framework.
Categorize every finding using these buckets:
For each finding, include:
Present the verdict in this structure:
> [The stated intent paragraph from Step 2]
[Findings that should be addressed. For each: description, which models raised it, why it matters.]
[Findings worth thinking about. For each: description, which models raised it, tradeoff involved.]
[Valid but low-priority. Brief list.]
[Rejected findings with brief rationale.]
[Where did models agree, where did they diverge, and what does the pattern of agreement/disagreement tell us?]
Take uzairansaruzi/interrogate from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.