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.
git clone --depth 1 https://github.com/sangrokjung/claude-forgeWrote 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.
[](https://agentmods.dev/agents/sangrokjung/claude-forge/adversarial-reviewer)<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.
<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>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.
| Model | Per session | Once 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 |
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.
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>
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.
- 12d ago First seen · 116 lines · 102 tokens per session scan A 970693ef2a38
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.
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…
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…
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…
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…
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…
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…