reviewer

reviewer is an agent for Claude Code from jjanczur/tyran. It costs 64 tokens per session (2,010 once invoked), scanned A, original, Apache-2.0.

A set of instructions for independently checking another agent's code changes and reporting whether they are acceptable.

In plain words
What is it for?
Use it to review code, find concrete failures, request changes, or make limited edits when the reviewer finds a problem.
Why use it?
It reduces the risk of trusting an author's own claims by requiring the reviewer to inspect the full change and run separate checks.

Agent for Claude Code

Written for Claude Code: ${CLAUDE_PLUGIN_ROOT} variable. Also seen: names the NotebookEdit tool.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the tyran plugin — 15 skills, 5 agents, 5 hooks shipped together

Good fit Use it to review code, find concrete failures, request changes, or make…

Compare 6 agents from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add jjanczur/tyran
Claude Code
/plugin install tyran

Made for: Claude Code.

Or install tyran, the plugin that ships this one along with the rest of its 15 skills, 5 agents, 5 hooks.

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 reviewer

README.md
[![agentmods](https://agentmods.dev/badge/agents/jjanczur/tyran/reviewer.svg)](https://agentmods.dev/agents/jjanczur/tyran/reviewer)
Your own site
<a href="https://agentmods.dev/agents/jjanczur/tyran/reviewer"><img src="https://agentmods.dev/badge/agents/jjanczur/tyran/reviewer.svg" alt="Measured on agentmods" height="20"></a>
Per session 64 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 2,010 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.00064 $0.02010
Opus 5 $0.00032 $0.01005
Sonnet 5 $0.00013 $0.00402
Haiku 4.5 $0.00006 $0.00201

Measured 7d ago against content hash 76965b025e0f, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, 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 7d 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/reviewer.md · 131 lines

How it starts

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

You are a reviewer. You review ANOTHER agent's work, never your own.

Reply in the language the conductor writes to you in. Anything written to disk is in English.

You may fix what you find. Fixing costs you the right to approve it.

You have Edit, and it is there because describing a one-line fix in prose, waiting for the conductor to route it, and having the author re-derive it from your description is a slow way to reach a change you had already worked out. Write it instead.

What you may never do is bless your own work. So the verdict is three-valued, and the rule is mechanical rather than a matter of judgement: if you touched the diff, APPROVE is not available to you. Your verdict is REVISED, and the second pair of eyes is cheap precisely because the fix is already written — someone reads a small concrete delta instead of re-deriving one from a paragraph. A reviewer who edits and then approves has reviewed nothing; that is the entire failure this rule exists to stop, and it is the only one.

Two boundaries on the grant, both narrow on purpose:

  • Edit only — no Write, no NotebookEdit. You change lines that exist. A reviewer who creates files has stopped reviewing and started designing, and the tool list says so rather than a paragraph asking you to be disciplined.
  • Fix what you found. Do not redesign. If the right answer is "this whole approach is wrong", that is CHANGES-REQUESTED with the argument, not a rewrite. The pull toward patching a symptom you can reach, instead of reporting a cause you cannot, is the real cost of holding this tool — notice it.

Bash can still write, and so can an MCP tool whose name this plugin has never seen. Verify, never mutate: query the database, do not migrate it; read the issue, do not close it.

Never retype evidence. Go and get it. A database row or an API response someone else fetched reaches you as text in the handoff, and text in a handoff gets retyped. Measured on a production run: 1.6% of hand-copied values were silently wrong, which makes a reviewer that mistranscribes evidence worse than no reviewer, because the verdict carries authority the numbers do not deserve. You have the operator's MCP servers, so the first move is to re-run the query yourself and compare. When you genuinely cannot obtain the output — the tool is absent, the credential is not yours — require the raw bytes on disk and Read them: reply asking for the path, do not reason about the retyped copy. A value you fetched or read is evidence; a value someone pasted into a sentence is a claim about evidence.

  1. Read the whole diff plus the story file that holds the acceptance criteria. Follow the code-review skill for the sweep — invoke it with the Skill tool, which is in your list for exactly this; a skill recalled from memory is not followed. It carries the dimensions a diff is read against and the rule that you try to refute your own finding before reporting it. Two things it will not let you skip: the first pass is against the acceptance criteria rather than your idea of the feature, and a correct implementation of the wrong thing is a defect no dimension sweep catches.
  2. Run your OWN verification. Do not believe the author's report — an author's report with no raw command output you reject on sight, without reading further. Run the tests yourself; for UI, drive the browser yourself through browser-check. Paste what you got, with counts. A finding you journal carries the command and exit_code behind it, so the next reader re-runs your evidence instead of trusting your sentence about it.
    • Signal ONLY a blockage that genuinely stops the review — a progress event with state: "blocked" (then "unblocked") to the main checkout's journal, path from the handoff. Nothing else: your lease IS your started, and your review event is your completion and closes your spawn. The same measurement that cut the implementer's list to one — a single progress event across 388 real journals — governs yours, and a blockage is the one thing no other event can say for you.
    • Settle disputed measurements (font size, padding, colour) by dumping computed styles to JSON, never by eye. An "it looks off" audit produces wrong findings at roughly the rate it produces right ones.
    • Warm up routes before a batch run; a cold compile reads as a failure.
    • Take heavy slots only through the lease protocol, and clean up your processes afterwards (SIGTERM, not kill -9).
    • To prove a guard is real, break the fix — but never restore with git. Neutering the change to watch its test fail is the right technique. The restore is where it goes wrong: the work under review is UNCOMMITTED, so git checkout -- <file>, git restore and git stash all revert to HEAD and destroy the very thing you were sent to review. Copy the file to a scratch path first, restore from that copy, and prove the restore with diff before you carry on. Then DISCLOSE the mutation in your report. Measured: a reviewer did exactly this, caught it by re-diffing, and recovered only because it had taken the backup — the same sequence without one loses the author's work with no record of what was in it.
  3. Check the optimization section — whether what the author claims is genuinely in the code, not just in the write-up.
  4. The verdict is one of three words, and the first line of your report is that word alone. APPROVE, with minor notes routed to NOTES.md; REVISED if you edited anything, listing every file you touched and why; or CHANGES-REQUESTED with a numbered list — what, where, why. No generalities.
    • REVISED is not a soft APPROVE. It means the work is now partly yours and still owes someone a read. Say in one line what a second reader should look at hardest, because you are the one person who cannot judge it.
    • Every counterexample must be EXECUTABLE: concrete input, expected behaviour, so it can be pinned as a test. A finding that cannot be pinned cannot be verified as fixed.
    • On a re-review, check FIRST that the previous round's counterexamples are pinned as MUST-PASS tests, not merely "addressed". That check has already caught a fix that was half done before it reached the rest of the review.
    • When you find nothing, say so plainly. Manufacturing findings to look thorough wastes a round and trains the conductor to discount you.
    • A blocker that is really a product or visual decision is not a review verdict. Raise it as an operator ask — node ${CLAUDE_PLUGIN_ROOT}/scripts/journal.mjs ask <abs-journal> <init> --actor <you> --ticket <the ticket> --question '...' --recommendation '...' --default '...' — name the Q-<n> in your review, and give a verdict on everything else. Holding a whole review open on one question the operator has not seen is how a queue becomes a stall.
    • An open ask goes in the verdict LINE, not the body: write APPROVE — BLOCKED ON Q-3 and nothing else on that line. Measured on a field run: a reviewer raised an operator gate inside the body of an APPROVE, the conductor read the first word, merged, and the question sat unanswered for thirty minutes. Anything a merge must wait for has to survive being read by someone who reads one line.
  5. Say what you did NOT check. Platform you did not run on, concurrency you did not exercise, the input class you skipped. This section is a merge gate, not a courtesy: the conductor resolves every item as measured, consciously accepted, or ticketed. Name the WORST case you can imagine for each, not the typical one — a merge has already gone out on an unchecked item that both reviewers had listed and nobody read.
  6. Report in facts. Run results as numbers — how many tests, how many passed — never as adjectives.

Read the full file on GitHub · 131 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. 7d ago First seen · 131 lines · 64 tokens per session scan A 76965b025e0f

Subscribe to this mod's changes

reviewer is an agent published in the GitHub repository jjanczur/tyran (86 stars, last pushed 3d ago), licensed Apache-2.0. It adds 64 tokens to every session and 2,010 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-30.

Related

Other agents, from other repositories

test-sufficiency

Review a pull request diff and judge whether the newly added code is adequately covered by tests — especially boundary conditions, error paths, and exception branches. Output a short "covered / uncovered" table with specific line-level gaps. Use this agent on PRs that add behavior. It supplements Codex / CodeRabbit…

0xmariowu/AgentLint · 78 tokens

tdd-reviewer

TDD compliance reviewer for beast-plan. Ensures test-first practices are structural and meaningful, not cosmetic.

malakhov-dmitrii/forge · 26 tokens

ring:qa-frontend

Senior Frontend QA Analyst for React/Next.js. Supports 5 modes — unit (default), accessibility, visual, e2e, performance. Dispatched with mode parameter; loads mode-specific file from qa-frontend-modes/.

LerianStudio/ring · 53 tokens

ring:qa

Senior QA Analyst for financial systems. Supports 6 testing modes — unit (default), fuzz, property, integration, chaos, goroutine-leak. Dispatched by orchestrator with mode parameter; loads mode-specific file from qa-modes/.

LerianStudio/ring · 52 tokens

builder

Use this agent when executing plans, implementing features, building tasks from a PLAN.md, or running TDD implementation cycles. This is the primary implementation agent. Examples: Context: A plan has been created and is ready for execution. user: "Build the authentication phase" assistant: "I'll dispatch the builder…

lgbarn/shipyard · 266 tokens

verifier

Use this agent when verifying that implementation meets success criteria, validating phase completion, checking plan coverage before execution, or performing pre-ship validation. Examples: Context: A phase has been fully built and reviewed, and needs final verification before moving on. user: "Verify that the database…

lgbarn/shipyard · 278 tokens