Testing
visual-qa - Claude MCP Skill
Browser-based visual QA for frontend changes. Opens the running app, takes screenshots, identifies layout/styling/UX issues. Use when: frontend changes are code-complete, before commit or PR. Composes: agent-browser for automation, taste-skill for anti-slop analysis.
SEO Guide: Enhance your AI agent with the visual-qa tool. This Model Context Protocol (MCP) server allows Claude Desktop and other LLMs to browser-based visual qa for frontend changes. opens the running app, takes screenshots, identifies l... Download and configure this skill to unlock new capabilities for your AI workflow.
Documentation
SKILL.md# /visual-qa
See the app through a user's eyes before shipping.
## Role
QA engineer with strong visual design sense. You test what the user sees, not what the code says.
## Objective
Open the running app in a browser, screenshot every affected page/viewport, identify visual and UX issues, and either fix them or report them.
## Latitude
- Start the dev server if not running
- Navigate to all affected routes (infer from git diff)
- Fix trivial issues (spacing, contrast, overflow) inline
- Flag subjective issues for user decision
- Never read source code to "verify" visual correctness — if it looks wrong, it IS wrong
## When This Runs
This skill is a **primitive** invoked by other skills. It also runs standalone via `/visual-qa`.
| Invoker | Trigger |
|---------|---------|
| `/build` | After quality gates pass, if diff touches `app/`, `components/`, or `*.css` |
| `/autopilot` | After Build, before Refine phase |
| `/frontend-design` | After code generation, as validation loop |
| `/review-and-fix` | After fixes applied, before `/pr` |
| `/pr` | Generates before/after screenshots for PR body |
| `/commit` | Optional — if `--qa` flag or diff touches frontend files |
| standalone | `/visual-qa [url]` |
## Setup
| Parameter | Default | Override |
|-----------|---------|----------|
| **URL** | `http://localhost:3000` | `/visual-qa https://staging.example.com` |
| **Routes** | Inferred from `git diff --name-only` | `/visual-qa --routes /,/dashboard,/pricing` |
| **Viewports** | Desktop 1280x720 | `--mobile` adds 390x844 |
| **Fix mode** | Report only | `--fix` to auto-fix trivial issues |
## Workflow
```
1. Ensure Dev server running, browser session open
2. Discover Identify affected routes from git diff
3. Capture Screenshot each route at each viewport
4. Analyze Check for visual/UX issues (checklist below)
5. Report List findings with severity and screenshots
6. Fix Auto-fix trivials if --fix mode, flag others
```
### 1. Ensure
```bash
# Check if dev server is running
curl -s -o /dev/null -w "%{http_code}" http://localhost:3000 || echo "NOT_RUNNING"
```
If not running, start it:
```bash
bun dev &
sleep 5
```
Open browser session:
```bash
agent-browser open http://localhost:3000 && agent-browser wait --load networkidle
```
### 2. Discover Routes
Parse `git diff --name-only` to identify affected routes:
| File pattern | Route |
|-------------|-------|
| `app/page.tsx` | `/` |
| `app/dashboard/**` | `/dashboard` |
| `app/pricing/**` | `/pricing` |
| `app/s/**` | `/s/demo` (status page) |
| `components/**`, `globals.css` | All major routes |
| `lib/design/**` | All major routes |
If `$ARGUMENTS` specifies routes, use those instead.
### 3. Capture
For each route:
```bash
agent-browser open {URL}{ROUTE} && agent-browser wait --load networkidle
agent-browser screenshot /tmp/vqa-{route-slug}-desktop.png
```
Scroll through long pages to capture below-the-fold content:
```bash
agent-browser scroll down 800
agent-browser screenshot /tmp/vqa-{route-slug}-desktop-scroll1.png
agent-browser scroll down 800
agent-browser screenshot /tmp/vqa-{route-slug}-desktop-scroll2.png
```
If `--mobile`:
```bash
agent-browser close
agent-browser --viewport 390x844 open {URL}{ROUTE} && agent-browser wait --load networkidle
agent-browser screenshot /tmp/vqa-{route-slug}-mobile.png
```
### 4. Analyze
Read each screenshot. Check against this list:
**Layout**
- [ ] No horizontal overflow / scrollbar
- [ ] Content doesn't clip or overlap
- [ ] Spacing is consistent (no random gaps or cramped sections)
- [ ] Cards/sections have balanced visual weight
- [ ] Nothing is awkwardly empty (dead space with no purpose)
**Typography**
- [ ] Text is readable at all sizes
- [ ] No orphaned words on their own line
- [ ] Hierarchy is clear (h1 > h2 > body)
- [ ] Line lengths aren't too wide (max ~75ch for body)
**Color & Contrast**
- [ ] Text passes WCAG AA contrast ratio
- [ ] Buttons are visually distinct from background
- [ ] Interactive elements look clickable
- [ ] Dark mode doesn't have invisible elements
**Components**
- [ ] Buttons have adequate padding and hit targets
- [ ] Cards have consistent border/shadow treatment
- [ ] Icons are aligned with adjacent text
- [ ] Loading states aren't visible on fast connections
**AI Slop Indicators** (from taste-skill)
- [ ] No gratuitous blur-3xl / ambient orbs
- [ ] No animate-ping on non-notification elements
- [ ] No purple gradients on white
- [ ] No pill badges with pulsing dots
- [ ] No numbered step circles (1, 2, 3)
- [ ] Copy doesn't use "delve", "comprehensive", "landscape"
### 5. Report
Format findings as:
```
## Visual QA — {route}
### Issues
**P0 — Must fix before ship**
- [screenshot ref] Description of issue
**P1 — Should fix**
- [screenshot ref] Description of issue
**P2 — Nice to have**
- [screenshot ref] Description of issue
### Passing
- Layout: OK
- Typography: OK
- ...
```
### 6. Fix (if --fix mode)
Auto-fix without asking:
- Spacing inconsistencies (margin/padding)
- Obvious contrast failures
- Overflow/clip issues
- Missing dark mode styles
Flag for user:
- Layout restructuring
- Copy changes
- Component redesign
- Subjective aesthetic choices
After fixes, re-screenshot to verify.
## Integration Pattern
Other skills invoke visual-qa as a sub-step. The calling skill should:
1. Pass the URL and affected routes
2. Wait for the report
3. If P0 issues found: fix before continuing
4. If P1 issues found: fix or flag, skill's discretion
5. If only P2: note in PR, continue
Example from another skill:
```
After quality gates pass, run visual QA:
- Identify frontend-touching files from the diff
- If any exist, run /visual-qa with affected routes
- Fix P0/P1 issues, note P2s in PR body
```
## Output
Findings list with severities, screenshot paths, and fix status.Signals
Information
- Repository
- phrazzld/claude-config
- Author
- phrazzld
- Last Sync
- 3/2/2026
- Repo Updated
- 3/1/2026
- Created
- 3/1/2026
Reviews (0)
No reviews yet. Be the first to review this skill!
Related Skills
browser-use
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with web pages, fill forms, take screenshots, or extract information from web pages.
remote-browser
Controls a cloud browser from a sandboxed remote machine. Use when the agent is running in a sandbox (no GUI) and needs to navigate websites, interact with web pages, fill forms, take screenshots, or expose local dev servers via tunnels.
agent-builder
Design and build AI agents for any domain. Use when users: (1) ask to "create an agent", "build an assistant", or "design an AI system" (2) want to understand agent architecture, agentic patterns, or autonomous AI (3) need help with capabilities, subagents, planning, or skill mechanisms (4) ask about Claude Code, Cursor, or similar agent internals (5) want to build agents for business, research, creative, or operational tasks Keywords: agent, assistant, autonomous, workflow, tool use, multi-step, orchestration
troubleshooting
Uses Chrome DevTools MCP and documentation to troubleshoot connection and target issues. Trigger this skill when list_pages, new_page, or navigate_page fail, or when the server initialization fails.
Related Guides
Mastering the Oracle CLI: A Complete Guide to the Claude Skill for Database Professionals
Learn how to use the oracle Claude skill. Complete guide with installation instructions and examples.
Python Django Best Practices: A Comprehensive Guide to the Claude Skill
Learn how to use the python django best practices Claude skill. Complete guide with installation instructions and examples.
Building Full-Stack Applications with Claude: The Node.js MongoDB JWT Express React Skill Guide
Learn how to use the nodejs mongodb jwt express react Claude skill. Complete guide with installation instructions and examples.