visual-qa
Skill8 starsChanged 27 days agoMITView on GitHub
Verify UI changes by actually rendering them. Opens the page in a browser tool or Playwright, checks desktop and mobile widths (including 320px reflow), and drives the primary interaction with mouse and keyboard. Looks at loading, empty and error states and the console, takes screenshots, and gives a PASS / WARN / BLOCK verdict that is never based on reading code alone. Use when the user asks for visual QA, /visual-qa, "check it in the browser", "screenshot check", "does this look right?", "check mobile and desktop", or after frontend changes to layout, interaction, responsive behavior or visual state. Not for a code scan of layout patterns (responsive-audit), finding missing states (ui-edge-case-audit) or a WCAG audit (design-accessibility).
- Installs packages
20 other projects use a version of this.
Adopted by
Most recently taken up by
- DevNewbie1826/skillstheir own version, first seen Nov 8, 2026
- claude-world/cf-browsertheir own version, first seen Nov 1, 2026
- toribryan/design-skillstheir own version, first seen Oct 25, 2026
- Alfred-Lau/skillstheir own version, first seen Oct 20, 2026
- nimadorostkar/Claude-Skills-collectiontheir own version, first seen Oct 13, 2026
- wjgoarxiv/litopencodetheir own version, first seen Oct 13, 2026
Other versions20 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 20
- RandallLiuXin/GodotMaker★ 555same name
- dylanfeltus/skills★ 179same name
- liangdabiao/Godogen★ 120same name
- DanielKerridge/claude-code-power-platform-skills★ 61same name
- nimadorostkar/Claude-Skills-collection★ 33same name
- archibate/agent-skills★ 16same name
- claude-world/cf-browser★ 9same name
- dev-ik/ai-design-rules★ 3same name
- DevNewbie1826/skills★ 2same name
- wjgoarxiv/litopencode★ 2same name
10 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository19 other files it gives its agents.
- brand-tokens-translatorSkill
- case-study-captureSkill
- component-generatorSkill
- content-writerSkill
- design-accessibilitySkill
- design-brief-generatorSkill
- design-lead-thought-partnerSkill
- flow-captureSkill
- flow-diagram-renderSkill
- icon-generatorSkill
- intent-specSkill
- meeting-actions-to-tasksSkill
- portable-prototypeSkill
- requirements-to-decision-docSkill
- responsive-auditSkill
- spec-packSkill
- theme-generatorSkill
- token-auditSkill
- ui-edge-case-auditSkill
The file
We split this skill into the rules it gives an agent
8 rules. 0 are common, 7 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 20 edited versions we read keep these.
7
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Verify that UI changes actually render and behave correctly.
- Distinctive: line 12
Use after frontend changes involving:
- Distinctive: line 22
Start or reuse the local dev server when needed.
- Very specific: line 43
If the UI supports them, reduced motion (prefers-reduced-motion) and dark mode still look right.
- Distinctive: line 99
Do not claim visual verification from code inspection alone.
- Distinctive: line 100
Do not use the operating system's "open in browser" command as a substitute for a browser tool or Playwright.
- Distinctive: line 101
If a dev server cannot start, report that clearly and do not emit PASS.
- Distinctive: line 102
If you track work through a pipeline or status board, record the verdict and screenshot paths there.
“Common” is measured: kept by at least 6 in 10 of the 20 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
visual-qa
Verify that UI changes actually render and behave correctly. Static code review is not enough for user-facing UI.
When to use
Use after frontend changes involving:
- layout, spacing, responsive behavior, or overflow
- interactive controls, dialogs, menus, forms, tables, tabs, or drawers
- charts, images, generated assets, canvas, or 3D scenes
- loading, empty, error, permission, or disabled states
Workflow
- Identify the changed route or component surface.
- Start or reuse the local dev server when needed.
- Open the UI with a browser tool (a built-in browser, a Chrome extension, or a Playwright MCP server). If none is connected, use the Playwright fallback below.
- Check at least:
- desktop width
- mobile width around 390px
- 320px width with no sideways page scroll (WCAG 2.2 SC 1.4.10 Reflow)
- the primary interaction, with the mouse and then with the keyboard only
- loading/empty/error state if available
- Capture screenshots when the tool supports it.
- Report visible defects and whether they were fixed.
Checks
- Text does not overflow or overlap, including at 200% browser zoom (WCAG 1.4.4).
- Buttons and controls have stable dimensions.
- Keyboard: Tab order follows the visual order, focus is always visible, Esc closes dialogs and menus, and focus returns to the control that opened them.
- Important content is not hidden below folds, clipped, or covered.
- Responsive layout stacks intentionally.
- Images/canvas/media render, are not blank, and are framed correctly.
- Error and empty states are usable.
- The browser console shows no errors and no failed requests for the changed surface.
- If the UI supports them, reduced motion (
prefers-reduced-motion) and dark mode still look right. - UI copy is real and domain-appropriate, not placeholder filler.
Playwright fallback (no browser tool connected)
Install a browser once with npx playwright install chromium, then run a short script from the project (save it as visual-qa.mjs and run node visual-qa.mjs; requires playwright in the project or installed with npm i -D playwright):
import { chromium } from 'playwright';
const url = process.argv[2] ?? 'http://localhost:5173/';
const browser = await chromium.launch();
const page = await browser.newPage();
page.on('console', m => m.type() === 'error' && console.log('console error:', m.text()));
for (const [w, h] of [[1440, 900], [390, 844], [320, 640]]) {
await page.setViewportSize({ width: w, height: h });
await page.goto(url, { waitUntil: 'networkidle' });
await page.screenshot({ path: `qa-${w}.png`, fullPage: true });
}
await browser.close();Then view the screenshots. If nothing can render the page, report that; the verdict cannot be PASS.
Output format
## Visual QA
Verdict: PASS | WARN | BLOCK
### Surfaces checked
| Surface | Viewport | Result |
|---|---|---|
### Interactions checked
- <interaction> (mouse / keyboard): PASS/WARN/BLOCK
### Findings
- <file/route, issue, recommendation>
### Evidence
- Screenshot(s): <paths or note if unavailable>
- Console: <clean, or the errors seen>
### Unverified
- <anything not checked>Verdict rules
- BLOCK: blank screen, broken primary interaction, unreadable/overlapping text, inaccessible modal/focus trap, a keyboard dead end, or severe mobile breakage (including sideways page scroll at 320px).
- WARN: cosmetic issue, console errors that don't break the surface, untested secondary state, minor responsive concern.
- PASS: key surfaces and interactions were checked and no material issues were found.
Rules
- Do not claim visual verification from code inspection alone.
- Do not use the operating system's "open in browser" command as a substitute for a browser tool or Playwright; you can't see or drive what it opens.
- If a dev server cannot start, report that clearly and do not emit PASS.
- If you track work through a pipeline or status board, record the verdict and screenshot paths there; never record PASS from code inspection alone.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

