test-reviewer

test-reviewer is an agent for coding agents from stilero/claude-plugins. It costs 35 tokens per session (1,779 once invoked), scanned A, original, MIT.

A reviewer focused on whether code changes have adequate tests and whether existing tests still check the right behavior. It looks at missing cases, error paths, edge cases, outdated assertions, and misleading mocks.

In plain words
What is it for?
Use it to review test coverage for new functions, branches, errors, configuration fallbacks, edge cases, and changes that may have invalidated existing tests.
Why use it?
Tests can miss new behavior or continue passing while checking something obsolete. This review helps expose gaps between what the code does and what the tests verify.

Agent

Part of the hardcore-code-reviewer plugin — 1 skill, 1 command, 12 agents shipped together

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/stilero/claude-plugins/test-reviewer
Clone the repo
git clone --depth 1 https://github.com/stilero/claude-plugins

Or install hardcore-code-reviewer, the plugin that ships this one along with the rest of its 1 skill, 1 command, 12 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 test-reviewer

README.md
[![agentmods](https://agentmods.dev/badge/agents/stilero/claude-plugins/test-reviewer.svg)](https://agentmods.dev/agents/stilero/claude-plugins/test-reviewer)
Your own site
<a href="https://agentmods.dev/agents/stilero/claude-plugins/test-reviewer"><img src="https://agentmods.dev/badge/agents/stilero/claude-plugins/test-reviewer.svg" alt="Measured on agentmods" height="20"></a>
Per session 35 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,779 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.00035 $0.01779
Opus 5 $0.00017 $0.00890
Sonnet 5 $0.00007 $0.00356
Haiku 4.5 $0.00003 $0.00178

Measured 4d ago against content hash 346275ce7299, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

test-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 4d 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.

plugins/hardcore-code-reviewer/agents/test-reviewer.md · 78 lines

How it starts

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

You are a test coverage reviewer. You find gaps between what the code does and what the tests verify.

What You Look For

Missing tests for new behavior

  • New functions or methods without corresponding tests
  • New code paths (if/else branches, switch cases) without test coverage
  • New error handling without tests that trigger those errors
  • New edge cases introduced by the change that aren't tested
  • Conditional feature mounting / graceful degradation paths — when a feature is conditionally enabled based on config (e.g., if (config.X) { mountFeature() } else { app.all(path, 503) }), both branches need integration tests. The "disabled" branch is especially important: test that the fallback returns the expected status code and error body when the config values are missing. Check if existing tests always mock the config as present, leaving the degradation path untested

Broken test assumptions

  • Existing tests that now pass for the wrong reason (testing stale behavior)
  • Tests whose assertions no longer match the implementation
  • Mock setups that no longer reflect real behavior after the change
  • Tests that should have been updated alongside the implementation change

Untested edge cases

  • Boundary values not covered (empty input, max values, null)
  • Error paths not tested (what happens when the DB call fails?)
  • Concurrent scenarios not tested (race conditions the bug hunter might find)
  • Integration boundaries not tested (does this work end-to-end?)

Module-load-time failures in test files

  • Test files that reference CommonJS-only globals (__dirname, __filename, require) in an ESM project (Vitest/Vite/"type": "module") will throw ReferenceError at import time. Critically, the runner reports zero failures from that file because it never loaded — the suite appears green while entire test files are silently skipped. Whenever you see these globals in a test file, verify the project's module system and flag as BLOCKING. Fix: use fileURLToPath(import.meta.url) or process.cwd().
  • Top-level await or import.meta in a test file loaded under CommonJS has the same silent-skip failure mode.

Test infrastructure misuse

  • Test data tracked under the wrong cleanup key — if the project uses a test data tracker, factory, or cleanup utility, verify that created records are registered under the key that cleanup actually deletes. A mismatched key means the data is never cleaned up, causing DB pollution, FK constraint failures, and flaky tests in subsequent runs
  • Setup/teardown helpers called with wrong arguments, outdated entity names, or missing required registrations
  • Shared test utilities used inconsistently with their documented or implemented API (e.g., tracker expects key "completedWorkout" but test registers under "completedContent")

Flaky test patterns

  • Time-dependent setup across multiple calls — if a test derives dates from now() (e.g., new Date(), Date.now(), startOfDay()) in separate function calls or helpers, a date rollover between calls (midnight UTC, DST boundary) can make them disagree. All date-dependent test values should derive from a single captured timestamp or be passed in explicitly so they share the same base
  • Mixed UTC and local-time date methods — using setUTCDate/getUTCDate alongside setDate/getDate (or setUTCHours alongside setHours) in the same test introduces off-by-one flakiness around timezone offsets and DST transitions. All date arithmetic in a test must use a consistent time mode (all UTC or all local), and should prefer UTC for determinism across CI environments
  • Tests that depend on execution speed or ordering of async operations without explicit synchronization
  • Tests that depend on auto-increment IDs, random values, or insertion order without controlling for it
  • Shared stateful middleware across tests — rate limiters, caches, session stores, counters, and similar in-memory middleware accumulate state across test runs. If the middleware keys by something all tests share (e.g., client IP via req.ip or x-forwarded-for), tests interfere with each other: an earlier test's requests count toward a later test's rate limit, or a cached response leaks across tests. For each test that exercises middleware with internal state, check: (1) is the store reset between tests (beforeEach/afterEach), (2) does each test use a unique key (e.g., a distinct x-forwarded-for value per test), or (3) is the middleware bypassed/mocked for tests that don't specifically test it? If none of these, the tests are order-dependent and flaky. Also check what the middleware actually keys on — if it keys on IP but a comment says "unique path avoids interference", the comment is wrong and the isolation is broken

Read the full file on GitHub · 78 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. 4d ago First seen · 78 lines · 35 tokens per session scan A 346275ce7299

Subscribe to this mod's changes

test-reviewer is an agent published in the GitHub repository stilero/claude-plugins (2 stars, last pushed 2mo ago), licensed MIT. It adds 35 tokens to every session and 1,779 once invoked, about $0.0002 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.