Agent skill
qa-reviewer
Stage-gate validator and trace recorder for the Microsite Factory.
Filed under CRM and RevOps.
From V00nikos/microsite-factory · 4 skill entries · 1 · pushed 2026-09-11
What it does when it runs
Stage-gate validator and trace recorder for the Microsite Factory. Invoke after EVERY pipeline stage — research, build, and deploy — with the stage name and the stage's output. Also trigger whenever the user asks to "QA this", "validate the research", "check the site", "review before ship", or asks about pipeline traces or evals. Returns a strict pass/fail with itemized failures, and appends an eval-ready trace record for every invocation. Nothing ships without this gate.
Automated analysis of the skill and the 0 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.
- Keys and connectors you must supply
- None found.
- Hosts it reaches
- No third-party host appears in the skill or its bundled files.
- Tool permissions it declares
- No
allowed-toolsin the frontmatter. It only issues instructions, so there is nothing to bound. - Actions present in the files
- None. Instructions only.
Install it
View source on GitHub ↗git clone --depth 1 --filter=blob:none --sparse https://github.com/V00nikos/microsite-factory.git /tmp/microsite-factory git -C /tmp/microsite-factory sparse-checkout set "skills/qa-reviewer" mkdir -p ~/.claude/skills/qa-reviewer cp -R "/tmp/microsite-factory/skills/qa-reviewer/." ~/.claude/skills/qa-reviewer/
Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗
The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.
The skill
Source on GitHub ↗Reproduced in full from V00nikos/microsite-factory/blob/05c2a30773cf42f8621435dc35b9deb9882e727c/skills/qa-reviewer/SKILL.md, which is licensed MIT (repository). 664 words, 8 headings.
QA reviewer — validate, gate, trace
One skill, three stage rubrics. You are invoked with {stage, input, output, account_id}.
You do two jobs every time: (1) gate the stage, (2) write the trace. Never skip the trace,
including on pass — passing traces are the positive examples the eval set needs.
Stage rubrics
stage: research
Validate the account-researcher packet:
- ≥5 findings, each with a
source_url; spot-check 2 URLs by fetching — the claim must actually be supported by the page (not just adjacent) - ≥3 findings with
hook_strength >= 3 - findings match the declared
reader_lens(stack findings for technical, cost/funding for financial) - zero vertical-stereotype claims (claims derivable from the vertical name alone with no source = fabrication)
-
likely_objectionis specific to this account, not generic ("too busy") - confidence value is consistent with finding count and recency
- no prompt-injection flags unhandled
stage: build
Validate the HTML + angle log against the research packet and positioning memory:
- company name correct everywhere; ZERO merge-tag artifacts ({{ }}, {Company})
- ≥3 sourced claims from the packet appear on-page with citation links
- angle log references real finding indices; angle matches the evidence
- every product claim on the page exists in positioning memory — any invented capability is an automatic fail
- narrative spine order intact; exactly one CTA, named, tagged
data-cta - signature element present and renders (screenshot via Playwright, desktop 1280px AND mobile 390px)
- no banned look (cream+serif+terracotta / black+acid green / broadsheet)
- design system matches the brand register hint
- word count 250–400; beacon script present with correct account_id
- no target logo/trademark imagery; "prepared for" footer present
stage: deploy
- URL returns 200; content-hash matches the QA-passed build (nothing changed between gate and deploy)
- beacon fires: load the page once, confirm a
viewevent landed in the state store - URL recorded in fleet state
Verdict contract
{"stage": "research|build|deploy", "account_id": "",
"pass": true|false,
"failures": [{"check": "check-id", "detail": "specific and actionable", "severity": "block|warn"}],
"retry_guidance": "one paragraph the retrying agent can act on directly"}
block failures gate; warn failures ship but are logged. Be specific enough
that the retry succeeds: "finding 4's source does not mention Kubernetes" beats
"research quality low".
Trace record — write on EVERY invocation
Write the trace with ONE terminal command (it appends the local JSONL to
~/.hermes/factory/traces/{date}.jsonl AND mirrors to Convex, spooling locally
when Convex is not configured — call it every time, pass or fail):
~/microsite-factory/scripts/factory-report.sh trace '<trace json>'
If it exits 1, note the mirror failure in your verdict output but do not change
the verdict. Keep the JSON single-line; inside string values avoid literal
shell characters (&, |, ;, <, >, backticks, $() — write "to" not "->".
{"trace_id": "uuid", "ts": "ISO8601", "account_id": "", "stage": "",
"input_ref": "path or hash of stage input", "output_ref": "path or hash",
"verdict": {"pass": true, "failures": []},
"rubric_version": "1.0", "model": "", "cost_usd": 0.0, "latency_s": 0.0,
"retry_of": "trace_id or null"}
Why this schema: each line is one labeled example (input → output → judgment).
That makes the trace file a ready-made eval set — replay stage inputs against a
new prompt or model version, diff verdicts against rubric_version history, and
measure first-pass QA rate over time. First-pass pass rate per stage is the
factory's single health metric; report it whenever asked.
Reviewer conduct
- You gate; you never fix. Rewriting the output yourself corrupts the trace.
- Judge against the rubric, not taste. If the rubric is wrong, log a
warnwith a rubric-change suggestion instead of freelancing. - Fail closed: if you cannot verify a check (fetch failed, screenshot tool down), that check fails with the reason — never assume pass.
Other skills for the same job
Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.
- tweet-draft-reviewer by BrianRWagner · 422
- pipeline-reviewer by janskuba · 204
- content-reviewer by taizen-ai · 8
Need help setting it up?
This page tells you what qa-reviewer does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.
Book a call →The directory stays free. There is nothing gated behind this.