qc-reviewer

qc-reviewer is an agent for Claude Code from kyle-chalmers/ticketwright. It costs 75 tokens per session (1,525 once invoked), scanned A, original, MIT.

Independent, read-only quality reviewer for a ticket's deliverables. Re-runs queries via the configured warehouse adapter, walks the validation pyramid, sweeps anti-patterns, and returns an APPROVE / REQUEST-CHANGES verdict. Spawn from /review (or before any ship) for a true second-context pass. Tool-agnostic via…

Agent for Claude Code

Written for Claude Code: installed under .claude/. Also seen: mentions subagents.

Install with agentmods
npx agentmods add agents/kyle-chalmers/ticketwright/qc-reviewer
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.

Clone the repo
git clone --depth 1 https://github.com/kyle-chalmers/ticketwright

Made for: Claude Code.

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

README.md
[![agentmods](https://agentmods.dev/badge/agents/kyle-chalmers/ticketwright/qc-reviewer/github.svg)](https://agentmods.dev/agents/kyle-chalmers/ticketwright/qc-reviewer)
Your own site
<a href="https://agentmods.dev/agents/kyle-chalmers/ticketwright/qc-reviewer"><img src="https://agentmods.dev/badge/agents/kyle-chalmers/ticketwright/qc-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.

agentmods 80×15 button for qc-reviewer

Your own site · 80×15
<a href="https://agentmods.dev/agents/kyle-chalmers/ticketwright/qc-reviewer"><img src="https://agentmods.dev/badge/agents/kyle-chalmers/ticketwright/qc-reviewer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 75 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,525 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.00075 $0.01525
Opus 5.5 $0.00030 $0.00610
Sonnet 5.5 $0.00015 $0.00305
Haiku 4.5 $0.00007 $0.00153

Measured today against content hash a06385c246cf, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

qc-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 today.

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.

.claude/agents/qc-reviewer.md · 88 lines

How it starts

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

QC Reviewer (sub-agent)

You are an independent reviewer with fresh context — you did not write this work. Your job is to verify a ticket's deliverables and return a clear verdict, not to fix code (the build owns fixes). You re-run things yourself; you do not trust the author's claimed numbers.

Two ways this file runs. Spawned as a subagent, the spawning skill passes review_mode and the subagent_isolation posture in your prompt — copy both into the record verbatim, and claim only what the posture supports: documented means the fresh-context paragraph above holds; unestablished means you have a second context whose independence is NOT established — never assert more. On a runtime whose adapter declares subagents absent or isolation none/unknown, /review instead walks this checklist inline, in its own context. The fresh-context claim above does NOT hold there: the record must say review_mode: inline-same-context and must carry this sentence verbatim:

This review ran in the same conversation that did the work, so it is not the independent second check the review process expects.

Setup

  1. Read .claude/config/stack.yaml. Resolve the warehouse target(s) in scope (order in adapters/README.md § Multi-target seams; a target name may be passed in your prompt). Lint and re-run each .sql against the target its -- warehouse-target: header names — re-executing a deliverable on the wrong warehouse throws a syntax error that reads like a defect in the deliverable. Load each target's adapter and its dialect_notes (function names, sizing model, dedup idiom, cast/filter rules, dialect anti-patterns). If no warehouse seam, review is code/output/doc only.
  2. Read the ticket README, the plan (plan.md — its Validation strategy is part of the checklist), the spec (if any), and list final_deliverables/ + qc_queries/.
  3. Load the team's docs: use the rows and doc rules the spawning prompt passed, or run bash "$(git rev-parse --show-toplevel 2>/dev/null || echo .)/bin/tw" team_docs.py --json. Read every standards doc and any context doc that defines a metric or table in play (a path directly, a link with whatever reader you have). Mark each opened or unreadable (exists: false is unreadable). Never report an unreadable standards doc as checked; if you were given no text for a linked doc and cannot open the link, it is unreadable. If the command exits 3, record team_docs: unknown (team config unreadable). A broken rule from an opened doc is a finding, Should-fix by default, Critical only where the doc makes the rule a must; a metric that contradicts its written definition is a finding too.

Read the full file on GitHub · 88 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. today First seen · 88 lines · 75 tokens per session scan A a06385c246cf

Subscribe to this mod's changes

qc-reviewer is an agent published in the GitHub repository kyle-chalmers/ticketwright (4 stars, last pushed 2d ago), licensed MIT. It adds 75 tokens to every session and 1,525 once invoked, about $0.0003 per session on Opus 5.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-11-07.

Related

qc-reviewer compared with agents from other repositories

qc-reviewer next to 6 agents from other repositories
ModTypeStarsLast pushLicenceScanTokensWorks with
qc-reviewerkyle-chalmers/ticketwrightAgent42d agoMITA75Claude Code
analysis-reviewerlancegui/causal-powersAgent2todayMITA162Claude Code
code-reviewernyldn/claude-octopusAgent4.4kyesterdayMITA19Claude Code
edge-case-explorertestdouble/hanAgent3375d agoMITA135Claude Code
integrations-engineeravelikiy/great_ctoAgent1122d agoMITA106Claude Code
adversarial-validatortestdouble/hanAgent3375d agoMITA45Claude Code
code-reviewerNikiforovAll/claude-code-rulesAgent1424d agoApache-2.0A37Claude Code