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 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/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<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="Reviewed on agentmods" width="80" 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.05188 |
| Opus 5.5 | $0.00100 | $0.02075 |
| Sonnet 5.5 | $0.00050 | $0.01038 |
| Haiku 4.5 | $0.00025 | $0.00519 |
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 1mo 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 — 294 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
11 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.
- eval/gate.json 2.5 KB
- eval/report.md 870 B
- fixtures/repo/src/app/handler.py 76 B runs code
- fixtures/repo/src/domain/order.py 78 B runs code
- fixtures/structure-breach.yaml 186 B
- fixtures/structure-clean.yaml 458 B
- references/finding-schema.yaml 10.0 KB
- references/maintenance-vs-genuine.md 7.2 KB
- references/test-layer-protocol.md 9.2 KB
- references/thresholds-format.md 5.8 KB
- scripts/verify_structure.py 23 KB runs code
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.
- 1mo ago Changed · +41 lines 586074db7d16
- 2mo 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 1mo ago), licensed MIT. It adds 251 tokens to every session and 5,188 once invoked, about $0.0010 per session on Opus 5.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
research-engineer
An uncompromising Academic Research Engineer. Operates with absolute scientific rigor, objective criticism, and zero flair. Focuses on theoretical correctness, formal verification, and optimal implementation across any required technology.
tika-eval-compare
Compare extracts from two Tika builds over a corpus to detect regressions in content, encoding, exceptions, and embedded-document handling. Use for "compare before/after extracts", "eval this change against the corpus".
cua-driver
Use Cua Driver for desktop or browser tasks that are awkward or unavailable through Bash/APIs, or when the user explicitly wants GUI interaction: app testing, visual bug reproduction, form filling, calendar entry, screenshots, and demo recording. Also covers Cua setup; not OpenAI Codex Computer Use or web research.
jetson-validate-image
Use after jetson-flash-image to run static BSP checks, on-target smoke/regression tests on a flashed DUT, or both. Not for build or flash steps. Triggers: validate bsp, on-target validation.
atmos-validation
Validate Atmos projects, components, arbitrary JSON Schema inputs, EditorConfig, and GitHub Actions; use affected-file selection and native CI annotations.
skill-benchmark
Benchmark AI skill effectiveness by measuring implementation quality against legacy constraints.