Systems Lab

Agent skill

qa-reviewer

Stage-gate validator and trace recorder for the Microsite Factory.

activeSelf-containedInstructions only664 words

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-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about qa-reviewer

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
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.

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_objection is 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 view event 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 warn with 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.

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.