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.
npx agentmods add skills/xrensiu/claude-code-forge/qa-reviewernpx skills add XRenSiu/claude-code-forge --skill qa-reviewergit clone --depth 1 https://github.com/XRenSiu/claude-code-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/skills/xrensiu/claude-code-forge/qa-reviewer)<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>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.00251 | $0.04328 |
| Opus 5 | $0.00125 | $0.02164 |
| Sonnet 5 | $0.00050 | $0.00866 |
| Haiku 4.5 | $0.00025 | $0.00433 |
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 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)
- 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. - 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'srequires_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). - 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: falseif upstream layers had crashes. - Classify every failure before reporting. Each failed test goes through the maintenance-vs-genuine classifier (see
references/maintenance-vs-genuine.md). Onlygenuinefailures become findings inqa-report.yaml.findings:.maintenancefailures go tomaintenance_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 asgenuine. - 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-generatoris supposed to emit one; if it didn't, that's an upstream bug worth reporting to the user, not silently working around. - 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. - 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
--thresholdsYAML. 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. - Baseline comparison is mandatory if
--baselineis 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. - 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). - 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.
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.
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.
- 5d ago First seen · 253 lines · 251 tokens per session scan A f54c92a3ef41
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.
Other skills, from other repositories
systematic-debugging
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes.
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…
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…
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.
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…
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…