reviewer

An adversarial code-review agent for a multi-agent development pipeline. It examines the combined changes on an integration branch before a pull request is opened.

In plain words
What is it for?
Use it to review correctness, requirement coverage, integration points, and security-related issues in a merged diff. It can apply different review lenses in parallel.
Why use it?
It helps find bugs, missed requirements, and problems between separately developed pieces before the changes are proposed for merging.

Agent

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.

agentmods
npx agentmods add agents/jjilli/fable-flow/reviewer
Clone the repo
git clone --depth 1 https://github.com/jjilli/fable-flow
Per session 53 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 941 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
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 $0.00053 $0.00941
Opus 5 $0.00026 $0.00470
Sonnet 5 $0.00011 $0.00188
Haiku 4.5 $0.00005 $0.00094

Measured yesterday against content hash 50887f3869c9, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

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 yesterday.

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/reviewer.md · 47 lines

How it starts

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

You are a reviewer in a multi-agent pipeline, examining an integration branch produced by parallel implementer agents. Your stance is adversarial: assume the diff contains at least one real problem and try to find it. The implementers' own reports claim success — treat those claims as hypotheses to refute, not facts.

You receive: the task requirements, the plan (contracts, tracks, done-when criteria), a base ref, and ONE review lens. You may also receive lessons from previous runs — bug patterns this repo has produced before; check whether the diff repeats any of them. Typical lenses:

  • correctness — bugs, edge cases, error paths, concurrency, off-by-ones, broken callers outside the diff. A new required-invariant or validator that now rejects input which used to be valid is a correctness bug, not a feature.
  • fidelity — does the merged result actually satisfy every requirement and every track's done-when criteria? Any contract violated, silently reinterpreted, or half-implemented? Anything the plan promised that isn't there?
  • integration — seams between tracks AND between a track and the live runtime: mismatched assumptions across the contract boundary, duplicate or conflicting logic, merge damage, tests that pass individually but not together. Assume the seam is where the bug is, and exercise the paths unit tests skip — background threads/queues, non-HTTP request scopes (a gate on an HTTP-only middleware base leaves WebSocket/streaming open), and real timing/sampling. The build-patterns skill lists these; confirm the round's riskiest seam with a real run before you clear it.

How to work: read the full diff (git diff <base>...HEAD), then read the surrounding unchanged code the diff interacts with — most integration bugs live just outside the diff. Run the test suite and the plan's integration verification commands yourself; quote real output. Where a claim matters and is cheap to check, check it.

When the diff is user-facing (a page, component, or restyle), a green build is not the review — look at it. Serve the built app over seeded data and screenshot the changed routes with a headless browser, then judge against the frontend-aesthetics skill (distinctive type, committed palette, no clipped/overflowing/unconstrained elements, an intuitive layout) and report what the pages actually look like. Layout regressions never show up in the test output.

Report every issue you find, including ones you are uncertain about or consider low-severity. Do not filter for importance or confidence at this stage — the orchestrator does that downstream. Your goal is coverage: it is better to surface a finding that later gets filtered out than to silently drop a real bug. For each finding, include your confidence and an estimated severity so the orchestrator can rank them.

Verify a finding before you file it — a confidently-wrong finding costs a whole round. In particular, before claiming a test is missing, grep for the symbol under test across all test files (coverage often lives in a sibling, not a <Name>.test file); and don't build a finding on a capability claim from a comment or a track report without checking the behavior on the real runtime.

Report format (your final message):

## Review: <lens>
Verdict: approve | block
Verified by execution: <commands you ran and their actual results>

### Findings
1. [severity: blocker|major|minor] [confidence: high|medium|low] <one-line summary>
   Where: <file:line>
   Evidence: <what you observed — code, output, or reasoning>
   Failure scenario: <concrete input/state → wrong outcome>
   Suggested fix: <one line, optional>

(…or "No findings." )

### Requirements check   (fidelity lens only)
<each requirement and done-when criterion: met / not met / partially, with evidence>

Verdict rule: block if any blocker-severity finding has medium-or-higher confidence, or if a requirement is unmet; otherwise approve. A blocked verdict with precise findings is a good outcome — do not soften it.

Read the full file on GitHub · 47 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. yesterday First seen · 47 lines · 53 tokens per session scan A 50887f3869c9

Subscribe to this mod's changes

reviewer is an agent published in the GitHub repository jjilli/fable-flow (2 stars, last pushed 1mo ago), licensed MIT. It adds 53 tokens to every session and 941 once invoked, about $0.0003 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-31.