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 Ashkaan/contextium --skill qagit clone --depth 1 https://github.com/Ashkaan/contextiumWrote 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/ashkaan/contextium/qa)<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.
<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>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.00078 | $0.14212 |
| Opus 5.5 | $0.00031 | $0.05685 |
| Sonnet 5.5 | $0.00016 | $0.02842 |
| Haiku 4.5 | $0.00008 | $0.01421 |
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.
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 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
/implementREQUIRES this, and will not close without it./implementphase-4.8 runsscripts/qa-targets.tsover 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 — andvalidate.ts --require-qathen 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/qathat 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 runsvalidate.ts --phase qa-listand--require-qa, so a session that changed a web app cannot close without a finished/qa. Invoking/qaby 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--a11yinstall the first time they are needed — nothing at install time. When one cannot be installed (offline, no npm,QA_NO_INSTALL=1), the script printsqa: skipped — Playwright unavailable (<reason>)orimpeccable: 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.
/qadelegates the entire look question to the app's ownDESIGN.md— correct — but a delegated file can hold no design.gen-design-md.tswrites a token inventory on a repo's first run, thedesign-system-*checks run against it, and the result is clean forever; that is how a portal passes/qawhile its owner finds it plainly bad.design-authority.ts(step-2.5) now raises the missing system as the run's first finding, andsystem-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-reviewdispatches a fresh-context subagent (in Claude Code, theTasktool; 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.mdis the only per-repo file the QA process involves, and/qacommits 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 ownpackage.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.tsstarted + 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 playwrightor an inline Node script importing theplaywrightpackage. No Playwright MCP server; the Node API is whatscreenshot.tsis built on.
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.
- references/review-rubric.md 17 KB
- scripts/a11y.ts 9.7 KB runs code
- scripts/design-authority.ts 5.8 KB runs code
- scripts/design-frontmatter.ts 14 KB runs code
- scripts/detect-app.ts 7.1 KB runs code
- scripts/discover-routes.ts 9.0 KB runs code
- scripts/element-scan.ts 4.2 KB runs code
- scripts/ensure-playwright.ts 6.4 KB runs code
- scripts/gen-design-md.ts 19 KB runs code
- scripts/impeccable-detect.ts 14 KB runs code
- scripts/import-map.ts 4.8 KB runs code
- scripts/interaction-check.browser.ts 22 KB runs code
- scripts/interaction-check.ts 5.5 KB runs code
- scripts/lib.ts 35 KB runs code
- scripts/mark-qa-done.ts 6.9 KB runs code
- scripts/nav.ts 1.8 KB runs code
- scripts/probe-acts-as.test.ts 21 KB runs code
- scripts/qa-targets.ts 16 KB runs code
- scripts/screenshot.ts 25 KB runs code
- scripts/serve.ts 37 KB runs code
- scripts/sight-check.ts 15 KB runs code
- scripts/sight-stamp.ts 3.2 KB runs code
- scripts/sight-validate.ts 2.5 KB runs code
- scripts/system-drift.ts 20 KB runs code
- scripts/tests/a11y.test.ts 14 KB runs code
- scripts/tests/design-authority.test.ts 4.5 KB runs code
- scripts/tests/design-frontmatter.test.ts 7.9 KB runs code
- scripts/tests/detect-app.test.ts 5.0 KB runs code
- scripts/tests/discover-routes.test.ts 5.8 KB runs code
- scripts/tests/element-scan.test.ts 5.4 KB runs code
- scripts/tests/ensure-playwright.test.ts 5.7 KB runs code
- scripts/tests/fixtures/interaction-site/api/data 5 B
- scripts/tests/fixtures/interaction-site/blank/index.html 175 B
- scripts/tests/fixtures/interaction-site/collapsed/index.html 226 B
- scripts/tests/fixtures/interaction-site/confirm/index.html 159 B
- scripts/tests/fixtures/interaction-site/disables/index.html 154 B
- scripts/tests/fixtures/interaction-site/formpost/index.html 226 B
- scripts/tests/fixtures/interaction-site/good/index.html 160 B
- scripts/tests/fixtures/interaction-site/greys/index.html 190 B
- scripts/tests/fixtures/interaction-site/hoverattr/index.html 176 B
- scripts/tests/fixtures/interaction-site/iframe/index.html 150 B
- scripts/tests/fixtures/interaction-site/late/index.html 196 B
- scripts/tests/fixtures/interaction-site/lateui/index.html 331 B
- scripts/tests/fixtures/interaction-site/loading/index.html 194 B
- scripts/tests/fixtures/interaction-site/optout/index.html 170 B
- scripts/tests/fixtures/interaction-site/overlay/index.html 203 B
- scripts/tests/fixtures/interaction-site/remembers/index.html 428 B
- scripts/tests/fixtures/interaction-site/selected/index.html 400 B
- scripts/tests/fixtures/interaction-site/silent/index.html 170 B
- scripts/tests/fixtures/interaction-site/socket/index.html 206 B
- scripts/tests/fixtures/interaction-site/theme/index.html 159 B
- scripts/tests/fixtures/interaction-site/unloadsave/index.html 542 B
- scripts/tests/fixtures/qa-targets-baseline/change/apps/notes/dashboard/notes.md 65 B
- scripts/tests/fixtures/qa-targets-baseline/change/apps/tools/renderer/README.md 63 B
- scripts/tests/fixtures/qa-targets-baseline/change/packages/ui/Button.astro 50 B
- scripts/tests/fixtures/qa-targets-baseline/expected-no-base.status 2 B
- scripts/tests/fixtures/qa-targets-baseline/expected-no-base.stdout 0 B
- scripts/tests/fixtures/qa-targets-baseline/expected.status 2 B
- scripts/tests/fixtures/qa-targets-baseline/expected.stdout 26 B
- scripts/tests/fixtures/qa-targets-baseline/tree/apps/notes/dashboard/package.fixture.json 122 B
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.
- yesterday Changed · -2 lines de8d3d8ca076
- 12d ago Changed 428ef79bc452
- 15d ago Changed · +32 lines 96ba3ef0e27a
- 16d ago First seen · 536 lines · 78 tokens per session scan C 4775cf33f50c
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.
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.
webapp-testing
Write and run comprehensive web app tests — unit, integration, E2E with Playwright/Cypress, and visual regression.
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.
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…
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".
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.