Agent skill · Testing & QA

visual-qa

MUST USE after building/changing any UI or when asked whether a page, component, or TUI looks right. Rigorous visual QA across web/page and terminal UIs. Prefer browser:control-in-app-browser for unauthenticated browser/page QA in Codex, then Playwright/agent-browser/dev-browser. Captures screenshot/TUI evidence with bundled diff scripts, runs design-system/functional and visual-fidelity/CJK reviewer passes, then synthesizes a good/bad verdict. Triggers: visual QA, screenshot/pixel diff, UI looks wrong, reference fidelity, design system check, responsive check, CJK text clipping, TUI alignment

YeonGyu-Kim69,732★ · +488/wk · 2 repos on radarProfile →
claude-codecodexcursorships scriptsNOASSERTION
Install
npx skills add code-yeongyu/oh-my-openagent --skill visual-qa --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 18
SKILL.md size: 26 KB
Bundled scripts: yes
Path: packages/shared-skills/skills/visual-qa/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 67,209 · +483 this week
Language: TypeScript
Read our review of the source →

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

Review
written from the skill's own SKILL.md · Aug 5, 2026

What it does

Verifies a rendered UI against intent using objective script evidence plus two parallel read-only oracle passes, then synthesizes a single good/bad verdict. It handles web/page UIs and TUI/terminal UIs, capturing reference and actual evidence, computing diffs, and triggering dual-pass QA reviews.

How it works

  • Step 1 - Detect the surface: determine whether the UI is web/page-based or a TUI, and identify if a reference packet exists for pixel-accurate comparison.
  • Step 2 - Capture objective reference evidence: generate or ingest a reference packet (screenshots, Figma exports, annotations, etc.), redact secrets, and ensure complete coverage across pages, viewports, and states. Produce fresh captures for comparison and run image diff via node "$SKILL_DIR/scripts/visual-qa.mjs" image-diff <reference.png> <actual.png> with fields like dimensionsMatch, diffRatio, similarityScore, alphaChannelIntact, hotspots[].
  • For web: capture reference image, then actual screenshot (preferred via browser:control-in-app-browser when available, otherwise via Playwright/agent-browser/dev-browser tooling). Use agent-browser as a fallback with setup instructions in $SKILL_DIR/references/agent-browser-setup.md.
  • For TUI: render via a real pty in a browser using xterm.js, producing terminal.png, terminal.txt, terminal-ansi.txt, and metadata.json, then run node "$SKILL_DIR/scripts/visual-qa.mjs" tui-check .omo/evidence/<slug>/tui-web-terminal/terminal.txt --cols <N> to validate width and layout.
  • Step 3 - Dispatch two read-only QA subagents in parallel: run two oracle reviews concurrently via the harness. Each returns PASS, REVISE, or FAIL with concrete findings, and must include [product] or [evidence] tags in their observations. Pass A (design-system and functional integrity) and Pass B (visual fidelity and CJK precision) evaluate different aspects and use the provided evidence and CAPTURES.
  • Each pass returns a structured verdict with findings and blocking items if any.

When to use it

  • Use after building or changing any UI, before declaring it done.
  • Use for red-flagged or important visual changes where pixel fidelity, layout accuracy, and CJK text handling matter.
  • Skip when there is no rendered surface (pure backend or library logic with no visual output).

What it can touch

  • It relies on the skill’s internal tooling and scripts located under the packages/shared-skills/skills/visual-qa/ directory, including the scripts/visual-qa.mjs and scripts/cli.ts components. It requires tools compatible with the described browser and terminal capture workflows, as well as the referenced agent tooling (e.g., agent-browser).

Caveats

  • Uses two read-only oracle passes; results depend on the completeness and freshness of captures (must be redacted properly, and evidence must be fresh).
  • The guidance enforces strict handling of reference packets and demands coverage of all enumerated pages and states; incomplete coverage is considered BLOCKING.
  • The review requires handling of motion and interactions, not just static captures; animation states should be captured and compared appropriately.
From the SKILL.md

# Visual QA - Dual-Oracle Web and TUI Verification Verify a rendered UI against intent using objective script evidence plus two parallel read-only oracle passes, then synthesize one good/bad verdict. The script numbers focus the reviewers. They are not the verdict. ## Purpose and when to use - Use after you build or change any UI, before calling it done. Covers web/page UIs and TUI/terminal UIs. - Use when output must match a mock, a baseline, or a stated design intent; when you suspect a regression; when CJK (Korean/Japanese/Chinese) text may clip, misalign, or wrap awkwardly; when a claimed design system might actually be a flat image; when a terminal layout may overflow or its borders may break. - Skip when there is no rendered surface (pure backend or library logic with no visual or terminal output). For broad post-implementation review use review-work; this skill is the visual specialist. In the commands below, `$SKILL_DIR` is this skill's own directory (the folder containing this SKILL.md). The bundled Node evidence CLI lives at `scripts/visual-qa.mjs` inside it; the TypeScript source in `scripts/cli.ts` is for development. ## Step 1 - Detect the surface - Web/page UI: render

What's inside
Steps it walks through
  1. Purpose and when to use
  2. Step 1 - Detect the surface
  3. Step 2 - Capture objective reference evidence
  4. Reference packet hygiene
  5. Coverage - capture every page, not a sample
  6. Evidence must be fresh
  7. Capture hygiene - validate before dispatching reviewers
  8. Web
  9. TUI
  10. Motion and interaction capture
  11. Step 3 - Dispatch two read-only QA subagents in parallel
  12. Pass A - Design-system and functional integrity (deeper, strict)
  13. Pass B - Visual fidelity and CJK precision (focused)
  14. Step 4 - Synthesize one verdict
Ships with 17 files
  • references/agent-browser-setup.md
  • scripts/ansi.test.ts
  • scripts/ansi.ts
  • scripts/cli.test.ts
  • scripts/cli.ts
  • scripts/east-asian-width.test.ts
  • scripts/east-asian-width.ts
  • scripts/image-diff.test.ts
  • scripts/image-diff.ts
  • scripts/png-crc.ts
  • scripts/png-decode.test.ts
  • scripts/png-decode.ts
  • scripts/png-synth.ts
  • scripts/tui-grid.test.ts
  • scripts/tui-grid.ts
  • scripts/types.ts
  • scripts/visual-qa.mjs
More from oh-my-openagent
All skills →
About this skill
What does the visual-qa skill do?

MUST USE after building/changing any UI or when asked whether a page, component, or TUI looks right. Rigorous visual QA across web/page and terminal UIs. Prefer browser:control-in-app-browser for unauthenticated browser/page QA in Codex, then Playwright/agent-browser/dev-browser. Captures screenshot/TUI evidence with bundled diff scripts, runs design-system/functional and visual-fidelity/CJK reviewer passes, then synthesizes a good/bad verdict. Triggers: visual QA, screenshot/pixel diff, UI looks wrong, reference fidelity, design system check, responsive check, CJK text clipping, TUI alignment

How do I install it?

Run `npx skills add code-yeongyu/oh-my-openagent --skill visual-qa --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From code-yeongyu/oh-my-openagent, a repository with 67,209 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going