adversarial-review
Skill bundle for phil:adversarial-review command — a general-purpose independent adversarial critic.
Skill by pmvanev
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/pmvanev-adversarial-review
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: documents, productivity, agent-building
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/adversarial-review
What's inside
- Skill name
adversarial-review- Description
- Skill bundle for phil:adversarial-review command — a general-purpose independent adversarial critic. Points a fresh, independent reviewer at a completed task, curating its input so it never sees the builder's reasoning, and presents a typed, advisory, span-and-evidence verdict — honestly labeled, never self-adjudicating. Standalone driver; the agent (agents/adversarial-reviewer.md) is the reusable unit and its typed verdict is the composition contract.
- License
- MIT
- Instructions
- 228 lines in SKILL.md · view on GitHub
Files (25)
- SKILL.md
- acceptance.feature
- expected.md · self-test/01-draft-signal-no-oracle/
- manifest.json · self-test/01-draft-signal-no-oracle/
- expected.md · self-test/02-sound-gate-with-oracle/
- manifest.json · self-test/02-sound-gate-with-oracle/
- expected.md · self-test/03-never-sound-gate-without-oracle/
- manifest.json · self-test/03-never-sound-gate-without-oracle/
- expected.md · self-test/04-independent-dispatch/
- manifest.json · self-test/04-independent-dispatch/
- expected.md · self-test/05-cannot-assess-empty-praise/
- manifest.json · self-test/05-cannot-assess-empty-praise/
- expected.md · self-test/06-advisory-never-self-adjudicate/
- manifest.json · self-test/06-advisory-never-self-adjudicate/
- expected.md · self-test/07-clean-pass-no-manufactured-findings/
- manifest.json · self-test/07-clean-pass-no-manufactured-findings/
- expected.md · self-test/08-clean-sound-gate-green-oracle/
- manifest.json · self-test/08-clean-sound-gate-green-oracle/
- expected.md · self-test/09-verifier-refutes-false-positive/
- manifest.json · self-test/09-verifier-refutes-false-positive/
- expected.md · self-test/10-verifier-confirms-real-finding/
- manifest.json · self-test/10-verifier-confirms-real-finding/
- expected.md · self-test/11-uncertain-refute-reaches-the-human/
- manifest.json · self-test/11-uncertain-refute-reaches-the-human/
- README.md · self-test/
SKILL.md (first lines)
# Adversarial Review
Drive an independent adversarial critic at a completed task. Frame the target, dispatch a reviewer that
never sees the builder's reasoning, put each finding to an independent judge, and present what survives
to the human. Judge nothing yourself and decide nothing about "done": the judgment belongs to the
reviewer and the judge, the decision to the human.
The standards a review is held to are whatever applies to the target —
`${CLAUDE_PLUGIN_ROOT}/rules/coding.md`, `${CLAUDE_PLUGIN_ROOT}/rules/testing.md`,
`${CLAUDE_PLUGIN_ROOT}/rules/architecture.md`, `${CLAUDE_PLUGIN_ROOT}/rules/writing.md`, and the target's
own stated intent. **Where the target adds or changes tests, add
`${CLAUDE_PLUGIN_ROOT}/rules/test-patterns.md`** — a suite that is green because its tests assert on
mocks of in-process collaborators, or compute their expected values, proves less than its colour, and
that gap is evidence against "done".
Three roles keep the concerns apart. The **builder** is whoever did the work — the main session or a
delegated AI. The **adversary**, `agents/adversarial-reviewer`, attacks and raises findings. The
**judge**, `agents/adversarial-verifier`, confirms or refutes each finding without seeing the adversary's
reasoning, so a motivated attacker cannot rubber-stamp its own findings. The reviewer agent is the
reusable unit and its typed verdict is the composition contract (see *Composition contract*); this skill
is only the standalone human driver.
---
## Invariants
1. **Independence (C1).** Dispatch the reviewer in **fresh context** with the target, intent, standards
and any `oracle_result` **only**. Withhold the **builder's reasoning and self-assessment**: a reviewer
that sees them agrees with the builder instead of judging the work. The judge is independent of the
reviewer in the same way.
2. **Advisory, never self-adjudicating (C3).** The reviewer emits findings and the judge confirms or
refutes them; neither declares the task done or not done. **The human decides.** Present; never
rule.
3. **Honesty label (C4).** The label is **mechanical**: `sound-gate` iff a deterministic oracle backed
the review, else `draft-signal`. It answers "did an oracle back this?", never "how sure is the
reviewer?", and verification never changes it. Present a soft review as a draft signal and a real
oracle result as a sound gate — over-claiming and under-claiming both fail. Never invent or approximate
an oracle to earn the label.
4. **Adversary and judge stay separate.** The reviewer raises findings and a separate judge confirms or
refutes each. Present only judge-confirmed findings as confirmed.
5. **No manufactured findings, no empty praise (C5).** A clean pass is honest; praise with no span is
coerced to `cannot-assess` — the reviewer owns this; never override it toward approval.
6. **Edit or fix nothing.** This skill reviews; it does not change the work.
7. **Report the verdict as it is.** Soften no major finding and invent none.
---
## Parse the argument
| Pattern | Action |
|---|---|
| `"<target>"` — an explicit path or artifact name | Review that named target. |
| `--intent "<...>"` | Use this as the stated intent, the claim-of-done; otherwise infer it. |
| No argument, or a bare "the task I just completed" | Review the task just completed in this session; infer the target and intent from the conversation leading up to the invocation. |
A composing host passes the intent explicitly; standalone, infer it from context. Inferring the
**intent** is fine; inferring or importing the **builder's reasoning** breaks invariant 1.
---
## FRAME — establish the review contract
Assemble three things, and only these:
1. **Target** — the completed artifact or artifacts under review. With no argument, identify what was
just completed from the conversation. If that is ambiguous, ask the developer what to review — one
short question — rather than guessing.
**That ask follows `${CLAUDE_PLUGIN_ROOT}/skills/shared/decision-request.md`.** Load it before the call.
The candidate scopes go in the context block — this skill is the only thing that knows what they
are — and the counted ask says what turns on the choice: a wrong scope reviews work nobody asked
about and misses the work that was done.
2. **Intent** — the claim-of-done: what the task was meant to achieve, stated by the host, given via
`--intent`, or inferred from context. Show an inferred intent to the developer so they can correct
it.
3. **Standards** — the rules above that fit the target type: code → `coding.md`, `testing.md` and
`architecture.md`, plus `test-patterns.md` when tests change; prose → `writing.md` and any rule the
prose is about; a skill or agent → `writing.md` and the conventions of the plugin it belongs to.
Begin the review only once the target and intent are settled.
---
## ORACLE — run or inherit a deterministic check (sets the label)
Run the oracle here, in the driver: the reviewer stays read-only and only *cites* the result. Inherit a
result a host already captured; never re-implement it.
- **Code target:** detect a test runner via `${CLAUDE_PLUGIN_ROOT}/skills/shared/test-runner-detection.md`;
if one exists, run the suite, and lint and types if present, and capture the result.
- **Prose target** (skill, agent, rule, doc): run the deterministic checks that apply — a scripted
self-test fixture run, a dead-link or skill-ref scan, a frontmatter, length or citation check — with
the repository's own scripts or a standard tool such as a YAML parser. Capture each result. A fixture
suite a model drives is not one, and neither is a check improvised to stand in for judgment: neither
earns `sound-gate`.
- **No deterministic oracle** (a design doc's "soundness", a subjective artifact): proceed with no
`oracle_result`.
Record the outcome as `oracle_result` — the captured output and what was run — or note that none was
available. **An oracle ran → `sound-gate`; none → `draft-signal`.** If the only "check" is your own
judgment, there is no oracle.
---
## CURATE — assemble independent input (invariant 1, the load-bearing step)
Build the reviewer's input as **exactly** `{ target, intent, standards, oracle_result? }`, with
`oracle_result` omitted when none ran. Strip everything else: builder reasoning, self-assessment, a
prior "looks good to me", your own opinion of the work. An `oracle_result` is a machine-produced fact
and must pass; a builder's *claim* that "the tests pass" is not one — pass the captured result, never
the claim.
Independence has two parts, and they are not equally strong. The **fresh-context dispatch** is
structural: the subagent cannot see this session. The **curation** is a discipline you apply inside a
builder-adjacent context, and nothing mechanical stops the builder's rationale reaching the contract —
fixture 04 guards it as a regression check, not a boundary. When in doubt, pass less. The same actor
curating is an accepted limitation; a different-model or multi-lens reviewer is the seam left for
hardening it.From pmvanev/phil-claude-plugin, MIT.
More from pmvanev/phil-claude-plugin
- 0.570score
issue-board
pmvanev
Use when driving a GitLab or GitHub issue tracker or board from the command line with `glab` or `gh` — moving a card between board columns, reordering a…
SkillAFreshness: AClaude Code +9 - 0.570score
board-setup
pmvanev
Use when recording a repo's issue-board constants in its `CLAUDE.md` — the forge and repo, the project and Status field ids, every option id, the enabled…
SkillAFreshness: AClaude Code +9 - 0.570score
board-snapshot
pmvanev
Use when asked where an issue board stands right now rather than what is wrong with it — "summarise my board", "what's on the board", "where does the board…
SkillAFreshness: AClaude Code +9 - 0.570score
nwave-slice-status
pmvanev
Use when the user asks where an nWave feature stands — "how many steps are in this slice", "which ones are done", "which one are we on", "what's next", "is…
SkillAFreshness: AClaude Code +9 - 0.566score
nwave-wave-summary
pmvanev
Use when asked what finished work decided, rather than where it stands or what you were doing — "what did DISCUSS decide", "what did that stage settle"…
SkillAFreshness: AClaude Code +9 - 0.566score
groom-issues
pmvanev
Skill bundle for the phil:groom-issues, phil:groom-fix, phil:groom-set and phil:groom-ask commands — reads a whole issue board in one list call per forge —…
SkillAFreshness: AClaude Code +9 - 0.566score
nwave-issue-board
pmvanev
Use for any GitLab or GitHub board or tracker work in an nWave repo — one holding `.nwave/` or `docs/feature/` — including putting a feature on the tracker as…
SkillAFreshness: AClaude Code +9 - 0.565score
edd
pmvanev
Skill bundle for phil:edd command — Expectation-Driven Development front-door.
SkillAFreshness: AClaude Code +9 - 0.565score
red-team-prose
pmvanev
Skill bundle for phil:red-team-prose command — reviews a doc, README, or release note for AI-generated tells, Elements of Style clarity, and fitness for its…
SkillAFreshness: AClaude Code +9 - 0.561score
ai-eos
pmvanev
Skill bundle for phil:ai-eos command — detects the stylistic tells that mark technical prose as AI-generated, with a density verdict and ranked findings.
SkillAFreshness: AClaude Code +9 - 0.561score
redesign-tests
pmvanev
Skill bundle for phil:redesign-tests command — human-approved, behaviour-changing test redesign loop with a coverage-equivalence claim per rewrite
SkillAFreshness: AClaude Code +9 - 0.561score
refactor-loop
pmvanev
Skill bundle for phil:refactor-loop command — gated closed-loop refactoring with a separate proposer and correctness critic, hard test gates, and a DAG ledger
SkillAFreshness: AClaude Code +9
Signals
- Stars
- 0
- Forks
- 0
- Open issues
- 10
- Last commit (this folder)
- Oct 13, 2026 (15 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/pmvanev/phil-claude-plugin
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from pmvanev
- 0.570score
nwave-slice-status
pmvanev
Use when the user asks where an nWave feature stands — "how many steps are in this slice", "which ones are done", "which one are we on", "what's next", "is…
SkillAFreshness: AClaude Code +9 - 0.570score
board-snapshot
pmvanev
Use when asked where an issue board stands right now rather than what is wrong with it — "summarise my board", "what's on the board", "where does the board…
SkillAFreshness: AClaude Code +9 - 0.570score
board-setup
pmvanev
Use when recording a repo's issue-board constants in its `CLAUDE.md` — the forge and repo, the project and Status field ids, every option id, the enabled…
SkillAFreshness: AClaude Code +9 - 0.570score
issue-board
pmvanev
Use when driving a GitLab or GitHub issue tracker or board from the command line with `glab` or `gh` — moving a card between board columns, reordering a…
SkillAFreshness: AClaude Code +9 - 0.566score
groom-issues
pmvanev
Skill bundle for the phil:groom-issues, phil:groom-fix, phil:groom-set and phil:groom-ask commands — reads a whole issue board in one list call per forge —…
SkillAFreshness: AClaude Code +9 - 0.566score
nwave-issue-board
pmvanev
Use for any GitLab or GitHub board or tracker work in an nWave repo — one holding `.nwave/` or `docs/feature/` — including putting a feature on the tracker as…
SkillAFreshness: AClaude Code +9
Cite this page
adversarial-review skill. Agent Mart. https://agentmart.dev/skills/pmvanev-adversarial-review (last updated 2026-10-24)