qa

qa is a skill for Claude Code, Codex from Ashkaan/contextium. It costs 78 tokens per session (14,212 once invoked), scanned C, original, MIT.

A hands-on quality check for a running app that examines its appearance and behavior, including web pages on desktop, tablet, and phone screens.

In plain words
What is it for?
Use it after interface changes or before release to inspect screenshots, review the rendered app, fix visual issues, and record that web targets were checked.
Why use it?
It catches design and rendering problems that code inspection alone may miss and can verify that fixes work in the real product.

Skill for Claude CodeCodex

Written for no agent in particular: nothing here depends on one. Also seen: mentions subagents; mentions Claude Code.

Good fit Use it after interface changes or before release to inspect screenshots, review the rendered app, fix visual issues, and record that web targets were checked.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/ashkaan/contextium/qa
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.

Any agent
npx skills add Ashkaan/contextium --skill qa
Clone the repo
git clone --depth 1 https://github.com/Ashkaan/contextium

Made for: Claude Code, Codex.

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 qa

README.md
[![agentmods](https://agentmods.dev/badge/skills/ashkaan/contextium/qa/github.svg)](https://agentmods.dev/skills/ashkaan/contextium/qa)
Your own site
<a href="https://agentmods.dev/skills/ashkaan/contextium/qa"><img src="https://agentmods.dev/badge/skills/ashkaan/contextium/qa/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 qa

Your own site · 80×15
<a href="https://agentmods.dev/skills/ashkaan/contextium/qa"><img src="https://agentmods.dev/badge/skills/ashkaan/contextium/qa.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 78 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 14,212 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 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.00078 $0.14212
Opus 5.5 $0.00031 $0.05685
Sonnet 5.5 $0.00016 $0.02842
Haiku 4.5 $0.00008 $0.01421

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

Security

Grade C, and why

qa scanned grade C with 2 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 yesterday.

The scan reads SKILL.md. This mod also ships 30 executable files (scripts/a11y.ts, scripts/design-authority.ts, scripts/design-frontmatter.ts, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

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.

Recursive force deletehighDestructive command

rm -rf with a variable or a broad path is one typo away from removing the wrong tree.

[ -z "${KEEP:-}" ] && rm -rf "/tmp/qa-shots/$QA_SLUG/$RUN_ID" # $QA_SLUG (from serve.ts) matches the real shots dir; nobody reviews the shots after the run

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

**Exit 6 = identical shots, HALT.** The script sha256s every PNG and refuses to hand back evidence where two distinct routes rendered byte-identical at the same width. A green `200` on every row proves nothing on its own
templates/agents/skills/qa/SKILL.md · 566 lines

How it starts

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

/qa — see the real running product

Critical

  • /implement REQUIRES this, and will not close without it. /implement phase-4.8 runs scripts/qa-targets.ts over its diff. Every web target it prints gets a full /qa — impeccable on @latest (step-2.6), its fixes (step-2.7), screenshots, sight-check, fresh-context visual review — and validate.ts --require-qa then refuses the close until each one has a marker for the tree that is about to ship. "Fully" is not a posture here, it is the gate's definition: a /qa that stopped after impeccable writes no marker, and the session does not close. scripts/mark-qa-done.ts --tree <sha> writes that marker, only at step-6-teardown, only after the review passed — never by hand, and never early.
  • The automatic trigger is /implement, not a hook. Phase 4.8 runs validate.ts --phase qa-list and --require-qa, so a session that changed a web app cannot close without a finished /qa. Invoking /qa by hand is the manual override.
  • Tools install on first use; a missing tool is a skip, never a pass. Playwright and Chromium (ensure-playwright.ts), impeccable (impeccable-detect.ts, which also upgrades it when a newer version is published) and the axe packages for --a11y install the first time they are needed — nothing at install time. When one cannot be installed (offline, no npm, QA_NO_INSTALL=1), the script prints qa: skipped — Playwright unavailable (<reason>) or impeccable: detector unavailable — <reason>; repeat that line to the user word for word and write no marker. The sight stamp uses ImageMagick (magick) when installed and Playwright otherwise, so it needs nothing extra. Node 22.18+ is assumed (every script here is TypeScript that Node runs directly).
  • A design authority that contains no design is a P1, not a pass. /qa delegates the entire look question to the app's own DESIGN.md — correct — but a delegated file can hold no design. gen-design-md.ts writes a token inventory on a repo's first run, the design-system-* checks run against it, and the result is clean forever; that is how a portal passes /qa while its owner finds it plainly bad. design-authority.ts (step-2.5) now raises the missing system as the run's first finding, and system-drift.ts (step-2.6b) counts how far the source has drifted from whatever the app DID declare. Neither adds a design opinion to this skill: the rubric still prescribes no type ramp, palette or spacing scale.
  • Evidence, not assertion. The deliverable is the manifest (page x viewport -> path, bytes, http-status) + the fresh-context findings, NOT "looks good." Give the agent a runnable check, and show the evidence.
  • The builder does not grade itself. step-4-fresh-review dispatches a fresh-context subagent (in Claude Code, the Task tool; elsewhere, the harness's subagent or a new session) that Reads the PNGs and checks geometry — never inline-QA in this orchestrator. Hot-context self-review produces motivated reasoning.
  • Zero-config — no .qa.json. Routes come from whichever file-based routing dirs the repo actually has — src/pages/, pages/, app/, src/app/ (discover-routes.ts); the live URL from --live-url, or the Cloudflare Pages registry when wrangler's credentials are set. DESIGN.md is the only per-repo file the QA process involves, and /qa commits it itself (step-2.5-design-md).
  • Never guess a serve command. Node-server / CLI / render targets REQUIRE a qa:* script in the repo's own package.json (qa:serve / qa:cmd / qa:render). Only Astro / Vite / static get a convention default.
  • Own your processes. Teardown signals only the process group serve.ts started + removes only the worktree it created. Never global-pkill workerd/wrangler — that kills other repos' servers on the same machine. Ownership is proved at STARTUP too: the health check refuses a listener that is not in the process group this run spawned (unless no listener pid can be read at all and the port was verified free the instant before spawning — a pid that resolves to another group is refused even then, because another session can take the port in that gap). Answering on a port is not evidence of owning it — a stale server from another repo answers 200 all day.
  • CLI/Node Playwright only — npx playwright or an inline Node script importing the playwright package. No Playwright MCP server; the Node API is what screenshot.ts is built on.

Read the full file on GitHub · 566 lines

Files

What ships with it

60 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.

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. yesterday Changed · -2 lines de8d3d8ca076
  2. 12d ago Changed 428ef79bc452
  3. 15d ago Changed · +32 lines 96ba3ef0e27a
  4. 16d ago First seen · 536 lines · 78 tokens per session scan C 4775cf33f50c

Subscribe to this mod's changes

qa is a skill published in the GitHub repository Ashkaan/contextium (36 stars, last pushed yesterday), licensed MIT. It adds 78 tokens to every session and 14,212 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it C with 2 findings (recursive force delete, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-30.

Related

Other skills, from other repositories

browser

Use this skill when the user says browser, /browser, test in Chrome, inspect a webpage, verify a localhost app, capture screenshots, check console/network errors, run browser QA, or automate browser flows with the Mochi browser MCP.

DevZonayed/Mochi · 50 tokens

webapp-testing

Write and run comprehensive web app tests — unit, integration, E2E with Playwright/Cypress, and visual regression.

inbharatai/claude-skills · 29 tokens

develop-web-game

Use when Codex is building or iterating on a web game (HTML/JS) and needs a reliable development + testing loop: implement small changes, run a Playwright-based test script with short input bursts and intentional pauses, inspect screenshots/text, and review console errors with rendergametotext.

netease-youdao/LobsterAI · 64 tokens

red-team-review

Unified adversarial review, two modes. Strategic Matrix v4.3 (MTA-004) for arguments/plans/decisions: Priors → Rubric → Adversarial Lenses → SWOT/TOWS → MCDA → Blind Spot/Kill Switch → Summary. Deliverable Audit for built artefacts (assignments, reports, code outputs): isolated fresh-context hunt against the brief…

winstonkoh87/Athena-Public · 103 tokens

visual-regression

Setup visual regression testing with Storybook stories, configuration, and CI/CD workflows. Supports Chromatic, Percy, BackstopJS. Auto-invoke when user says "set up visual regression", "add Chromatic tests", "add screenshot testing", or "set up Percy".

qf-studio/navigator · 59 tokens

photoshop-recipes

Route a Photoshop request to the matching recipe. Use for Instagram, sky replacement, vesikalık, dodge and burn, watermark, csv cards, carousel, portrait, color grade, frequency separation, mockup, organize layers, gradient fade, or web export.

alisaitteke/photoshop-mcp · 57 tokens