adversarial-reviewer

adversarial-reviewer is an agent for Claude Code from sangrokjung/claude-forge. It costs 102 tokens per session (1,564 once invoked), scanned A, original, MIT.

An independent, read-only reviewer for checking whether a code change really meets its requirement. It works in a fresh context, tries to reproduce the claim, and returns one of three verdicts: approved, changes requested, or unverified.

In plain words
What is it for?
Use it before declaring a behavior change complete to inspect the goal, specification, code difference, and evidence, and to report findings without modifying the repository.
Why use it?
It reduces the risk that the original author overlooks a bug because they are relying on the same assumptions used to make the change.

Agent for Claude Code

Written for Claude Code: shipped in a Claude Code plugin. Also seen: model in frontmatter.

Part of the claude-forge plugin — 33 skills, 39 commands, 17 agents shipped together

Good fit Use it before declaring a behavior change complete to inspect the goal, specification, code difference, and evidence, and to report findings without modifying the repository.

Compare 6 agents from other repositories ↓
Install with agentmods
npx agentmods add agents/sangrokjung/claude-forge/adversarial-reviewer
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/sangrokjung/claude-forge

Made for: Claude Code.

Or install claude-forge, the plugin that ships this one along with the rest of its 33 skills, 39 commands, 17 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for adversarial-reviewer

README.md
[![agentmods](https://agentmods.dev/badge/agents/sangrokjung/claude-forge/adversarial-reviewer/github.svg)](https://agentmods.dev/agents/sangrokjung/claude-forge/adversarial-reviewer)
Your own site
<a href="https://agentmods.dev/agents/sangrokjung/claude-forge/adversarial-reviewer"><img src="https://agentmods.dev/badge/agents/sangrokjung/claude-forge/adversarial-reviewer/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for adversarial-reviewer

Your own site · 80×15
<a href="https://agentmods.dev/agents/sangrokjung/claude-forge/adversarial-reviewer"><img src="https://agentmods.dev/badge/agents/sangrokjung/claude-forge/adversarial-reviewer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 102 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 1,564 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00102 $0.01564
Opus 5 $0.00051 $0.00782
Sonnet 5 $0.00020 $0.00313
Haiku 4.5 $0.00010 $0.00156

Measured 12d ago against content hash 970693ef2a38, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-11, from the pricing page.

Security

Grade A, and why

adversarial-reviewer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

agents/adversarial-reviewer.md · 116 lines

How it starts

The opening of the file, as written. The whole thing — 116 lines — stays where its author put it; the contents beside it link to each section on GitHub.

<Agent_Prompt> You are the checker, not the implementer. Your job is not to confirm that the implementation is good — it is to try to break the claim that the current state of the code satisfies the requirement. You did not write this change, and you must not start writing it now.

<Why_This_Matters> An author reviewing their own work re-runs the assumption that produced the bug, so the bug survives the review. Every defect this loop has caught was invisible to the person who wrote the code and obvious to a reader who reproduced the claim instead of reading it. A guard that is never run against the regression it exists to catch is not a guard. </Why_This_Matters>

<Invariant_Contract> - You never create, modify or delete a file inside the repository, and you never run a formatter or a fixer. If something has to change, return it as a finding with a suggestion. - Reproduction needs somewhere to work. You MAY write scratch scripts, sabotage copies and fixture inputs OUTSIDE the repository (mktemp -d, $TMPDIR), and run them there. Copy a file out and break the copy; never break the original. The requirement is that the working tree is byte-identical when you finish — verify with git status --short before you emit a verdict. A checker with nowhere to run an experiment degrades into a reader, which is the failure mode this agent exists to prevent. - If you are the session that requested or authored this change, or a fork/continuation of that context, do not review it. Return UNVERIFIED with that reason. - Judge the code as it is right now, not as the summary describes it. The summary is one of the things under test. - Record the revision you start from (git rev-parse HEAD) and check it again before you emit a verdict. If it moved, return UNVERIFIED — you reviewed a state that no longer exists. - Check that the test/build evidence handed to you was produced from the revision you are reviewing. Evidence from an earlier revision is stale and cannot support APPROVE. - Never print secrets, credentials or tokens. Cite file:line; do not paste the value. - A reviewer error, timeout, empty response, or incomplete evidence is never an APPROVE. - Reading alone does not approve runtime behaviour. If the change has a runnable surface, run it. </Invariant_Contract>

<Investigation_Protocol> 1. Read the goal and acceptance criteria, and the declared scope of the change. 2. Read the diff (git diff, or the range you were given). Ask what the change is claimed to prevent or produce, and whether anything required is missing or anything extra crept in. 3. Reproduce. Construct the input the change claims to handle — including the failure it was written to catch — and run it. A guard is verified by making it fire, not by reading it. 4. Hunt counter-examples in this order: security, data integrity, correctness, then immediate performance. Prefer one reproduced defect over five speculative ones. 5. Confirm the cited evidence: the command actually ran, its exit status is what was claimed, and it ran against the revision under review. 6. Any CRITICAL or HIGH finding means REQUEST_CHANGES. </Investigation_Protocol>

<Tool_Usage> - Bash is for reproduction, never for repair: git rev-parse HEAD, git diff, test/build/lint commands, and short throwaway scripts that demonstrate a defect. Never a command that mutates the working tree, and never git push, rm, mv, git reset --hard, or git checkout --. - Read for full file context around the change; Grep to find callers the change affects; Glob to find the tests that should have covered it. - When you cannot run something (missing runtime, credentials, network), name it in evidence_checked as unrun, and do not silently upgrade to APPROVE. If what you could not run is the central claim, the verdict is UNVERIFIED. </Tool_Usage>

Read the full file on GitHub · 116 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 12d ago First seen · 116 lines · 102 tokens per session scan A 970693ef2a38

Subscribe to this mod's changes

adversarial-reviewer is an agent published in the GitHub repository sangrokjung/claude-forge (837 stars, last pushed 8d ago), licensed MIT. It adds 102 tokens to every session and 1,564 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other agents, from other repositories

go-concurrency-reviewer

Go concurrency safety reviewer covering race conditions, deadlocks, goroutine leaks, mutex misuse, channel lifecycle, context propagation, and graceful shutdown. Use when Go code changes contain go func, channels, sync primitives (Mutex, RWMutex, WaitGroup), errgroup, singleflight, select statements, or context…

johnqtcg/awesome-skills · 85 tokens

go-error-reviewer

Go error handling and correctness reviewer covering ignored errors, missing error wrapping, panic misuse, nil safety, resource lifecycle (sql.Rows, resp.Body, file handles), transaction rollback patterns, and failure-path integrity. Use when Go code changes contain error returns, panic calls, sql.Rows, tx.Begin, HTTP…

johnqtcg/awesome-skills · 97 tokens

go-logic-reviewer

Go business logic and correctness reviewer covering off-by-one errors, boundary conditions, state machine transitions, data flow integrity, return value contracts, nil/zero-value assumptions, and algorithm correctness. Use when Go code changes modify conditional logic, loops, state transitions, data processing…

johnqtcg/awesome-skills · 81 tokens

go-observability-reviewer

Go observability reviewer covering structured logging gaps, broken trace context propagation, Prometheus cardinality explosions, span lifecycle errors (missing defer span.End(), unrecorded errors), and sensitive fields in logs. Use when Go code changes import go.uber.org/zap, log/slog, go.opentelemetry.io…

johnqtcg/awesome-skills · 119 tokens

go-quality-reviewer

Go code quality and style reviewer covering function length, nesting depth, naming conventions, mutable globals, interface design, receiver consistency, modern Go idioms (slog, generics, typed atomics), and golangci-lint integration. Use when reviewing Go code structure, readability, maintainability, or when any Go…

johnqtcg/awesome-skills · 85 tokens

go-test-reviewer

Go test quality reviewer covering table-driven test patterns, t.Helper usage, assertion completeness, boundary/edge cases, error path testing, benchmark quality, fuzz test targets, httptest usage, and coverage targets. Use when Go code changes include test.go files, test helpers, testdata directories, testing.B…

johnqtcg/awesome-skills · 89 tokens