qa-reviewer

qa-reviewer is a skill for Claude Code from XRenSiu/claude-code-forge. It costs 251 tokens per session (4,328 once invoked), scanned A, original, MIT.

A test-execution reviewer that runs a project’s test layers and issues a release-readiness decision. It classifies failures based on what actually happened rather than guessing from test names or reports.

In plain words
What is it for?
Use it to run existence, unit, integration, end-to-end, and mutation tests, classify failures, and produce a go, no-go, or conditional verdict.
Why use it?
It gives evidence about whether software is ready to release and honestly marks tests that could not be run.

Skill for Claude Code

Written for Claude Code: user-invocable in frontmatter. Also seen: mentions subagents.

Part of the done-when-pipeline plugin — 9 skills 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 skills/xrensiu/claude-code-forge/qa-reviewer
Any agent
npx skills add XRenSiu/claude-code-forge --skill qa-reviewer
Clone the repo
git clone --depth 1 https://github.com/XRenSiu/claude-code-forge

Made for: Claude Code.

Or install done-when-pipeline, the plugin that ships this one along with the rest of its 9 skills.

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 qa-reviewer

README.md
[![agentmods](https://agentmods.dev/badge/skills/xrensiu/claude-code-forge/qa-reviewer.svg)](https://agentmods.dev/skills/xrensiu/claude-code-forge/qa-reviewer)
Your own site
<a href="https://agentmods.dev/skills/xrensiu/claude-code-forge/qa-reviewer"><img src="https://agentmods.dev/badge/skills/xrensiu/claude-code-forge/qa-reviewer.svg" alt="Measured on agentmods" height="20"></a>
Per session 251 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 4,328 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 1 finding. 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.1 $0.00251 $0.04328
Opus 5 $0.00125 $0.02164
Sonnet 5 $0.00050 $0.00866
Haiku 4.5 $0.00025 $0.00433

Measured 5d ago against content hash f54c92a3ef41, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-06, from the pricing page.

Security

Grade A, and why

qa-reviewer scanned grade A with 1 finding 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 5d 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.

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

L4 E2E run e2e tests (Playwright / curl / grpcurl) on running impl
plugins/done-when-pipeline/skills/qa-reviewer/SKILL.md · 253 lines

How it starts

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

qa-reviewer — run tests, classify failures, emit verdict

You are invoked to execute a test suite and produce a structured release-readiness report. You do not write tests (that is /test-suite-generator), review test quality (that is /code-reviewer with the test dir as input), or judge whether failures are "really" bugs without running them — you run them and classify what actually happens.

Say once at the start, then start working:

"I'm using the qa-reviewer skill. I'll execute the layers in order (existence → unit → integration → e2e → mutation, fail-fast), classify each failure as maintenance vs genuine, and emit qa-report.yaml with a go/no-go/conditional decision."

Do not narrate further — just walk the layers.


Iron rules (re-read before every run)

  1. Real execution mandatory. Never simulate. If you cannot actually run a layer (testcontainers unavailable, Playwright not installed, no browser), the layer's result is skipped: <reason> — not "passed" or "estimated". Skipping is honest; faking is gaming. Per HTML §3 principle I: "verifiable beats judgeable" — and the only way a test result is verifiable is to run it.
  2. Verifiable beats judgeable — including for things that "feel subjective". Under no circumstance route a "did this test pass?" decision through an LLM. Per HTML v2 §3 principle I (and the §3.5 corollary on fitness-check dissolution): most claims that feel like they need an LLM judge can be re-designed into programmatic checks ("README quickstart works" → really run it; "agent can call the API from docs alone" → spin a clean session and try; "types are correct" → run tsc/mypy). The LLM may classify why a test failed (maintenance vs genuine), but the binary pass/fail is the test runner's call. Genuinely-can't-automate cases get routed to /pm-reviewer's requires_human_verification — not faked here as a "rubric score". Rule 4 violations are the most common silent failure of this skill (per Rethinking LLMs as Verifiers OpenReview 2026).
  3. Fail-fast between layers. Execute existence → unit → integration → e2e → mutation in strict order. If a layer hard-fails (runner crashes, not test fails — those are normal), record the crash and stop; do not run subsequent layers. Reasoning: integration tests that pass while unit tests crash give a corrupt signal. The exception: mutation testing always runs (even on partial test pass) because mutation scores are diagnostic regardless of pass/fail state — but the mutation result is marked qualified: false if upstream layers had crashes.
  4. Classify every failure before reporting. Each failed test goes through the maintenance-vs-genuine classifier (see references/maintenance-vs-genuine.md). Only genuine failures become findings in qa-report.yaml.findings:. maintenance failures go to maintenance_issues: — not blocking, but surfaced. Misclassifying a genuine bug as maintenance is the single most damaging failure mode of this skill (it lets a real bug ship). When in doubt, classify as genuine.
  5. Mutation testing is part of the contract, not an optional bonus. Line coverage alone is gamable (HTML §1 Finding 04 — even with full spec, gaming happens 50-70%). Mutation kill rate is the gate that closes the loop. If the test suite has no mutation.config, fail loud — do not silently skip. The /test-suite-generator is supposed to emit one; if it didn't, that's an upstream bug worth reporting to the user, not silently working around.
  6. Every finding carries reproducible evidence. stack_trace, assertion_message, pbt_counterexample_input, screenshot_path — at least one. A finding without evidence is a guess; drop it. The user (or downstream meta-judge) must be able to reproduce the failure without re-running the entire suite.
  7. Thresholds come from a config file, not from your judgment. When deciding go/no-go/conditional, you check actual measured values against the user-supplied --thresholds YAML. You do not invent "I think 0.7 mutation kill rate is enough." The whole point of the skill is that the threshold is outside the model.
  8. Baseline comparison is mandatory if --baseline is provided. Regressions matter as much as absolute pass/fail. If a test passed in baseline and fails now, that's a regression — boost severity by one level. If a test was always failing, severity is at face value. Trend > snapshot.
  9. Maintenance auto-fix is opt-in, not default. When a failure is classified as maintenance (selector rotted, timing flake), the skill can attempt an auto-fix only if the user passed --auto-fix-maintenance. Otherwise, surface the issue and let the user decide — auto-fixing test code without explicit opt-in is gaming substrate (it's the impl agent's friend modifying the gate).
  10. Output is YAML, not prose. The user sees a one-line summary per layer during execution. Everything else lives in qa-report.yaml. No "here's how it went..." prose summary at the end.

Read the full file on GitHub · 253 lines

Files

What ships with it

4 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

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. 5d ago First seen · 253 lines · 251 tokens per session scan A f54c92a3ef41

Subscribe to this mod's changes

qa-reviewer is a skill published in the GitHub repository XRenSiu/claude-code-forge (2 stars, last pushed yesterday), licensed MIT. It adds 251 tokens to every session and 4,328 once invoked, about $0.0013 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.

Related

Other skills, from other repositories

systematic-debugging

Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.

obra/superpowers · 21 tokens

local-ai-agents

Build local-first AI agents that run entirely on a developer workstation with Microsoft Foundry Local and Qwen function-calling models. Covers Small Language Models (SLMs), the OpenAI-compatible local endpoint, sandboxed local tools, local RAG with Chroma, local MCP servers, hybrid cloud/local routing, and the…

microsoft/ai-agents-for-beginners · 200 tokens

chronicle

Analyze Copilot session history for standup reports, usage tips, session search, and session reindexing. Use when the user asks for a standup, daily summary, usage tips, workflow recommendations, wants to search or find past sessions by keyword/file/PR, wants to reindex their session store, or asks about deleting…

microsoft/vscode · 72 tokens

chat-pet-sprite-creation

Use when creating or changing VS Code chat pet sprite art, sprite sheets, state animations, eye treatments, Stable/Insiders variants, or pet transitions under src/vs/workbench/contrib/chat/browser/widget/media/chatPet.

microsoft/vscode · 53 tokens

cpu-profile-analysis

Analyze V8/Chrome CPU profiles (.cpuprofile) and DevTools trace files (Trace-.json). Use when: profiling performance, investigating slow functions, comparing code paths, finding bottlenecks, analyzing timeToRequest, understanding call trees from sampling profiler data, analyzing layout/paint/rendering, investigating…

microsoft/vscode · 71 tokens

next-cache-components-adoption

Turn on Cache Components in a Next.js app and resolve the blocking routes it surfaces. Use when the user wants to enable, adopt, or migrate to Cache Components, flip the cacheComponents flag, work through a flood of blocking-prerender / instant validation errors, run the cache-components-instant-false codemod, or…

vercel/next.js · 95 tokens