visual-review
Automated UI verification tool that uses browser devtools to check for visual and functional regressions.
Install
mkdir -p .claude/skills/visual-review && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/15324" && unzip -o skill.zip -d .claude/skills/visual-review && rm skill.zipInstalls to .claude/skills/visual-review
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use when UI changes need visual verification, or to check for console errors and network issuesKey capabilities
- →Start backend and frontend services for UI verification
- →Navigate to target pages using Chrome DevTools
- →Capture screenshots for visual inspection
- →Check console messages for errors and warnings
- →List network requests to identify failures or slow responses
How it works
The skill starts application services, navigates to specified pages, takes screenshots, and checks console and network activity using Chrome DevTools. It also handles authentication and tests user flows.
Inputs & outputs
When to use visual-review
- →Verifying UI changes
- →Checking for network errors
- →Testing frontend user flows
About this skill
Visual Review with Chrome DevTools
Overview
Verify UI changes using Chrome DevTools MCP integration. Takes screenshots, checks console for errors, verifies network requests, and tests user flows.
Announce at start: "I'm using visual-review to verify the UI changes."
Prerequisites
- Application running (backend + frontend)
- Chrome browser open
- Chrome DevTools MCP configured and connected
Process
Step 1: Start Application
# Start backend (in background)
cd backend && dotnet run &
BACKEND_PID=$!
# Start frontend (in background)
cd frontend && npm run dev &
FRONTEND_PID=$!
# Wait for startup
echo "Waiting for services to start..."
sleep 10
# Verify services are running
curl -s http://localhost:5000/health || echo "Backend not ready"
curl -s http://localhost:5173 || echo "Frontend not ready"
Step 2: Identify Pages to Verify
From changed files, determine affected pages:
| Changed File | Affected Page |
|---|---|
src/pages/Users.tsx | /users |
src/components/UserForm.tsx | /users/new, /users/:id/edit |
src/api/users.ts | All user pages |
Step 3: List Available Pages
mcp__chrome-devtools__list_pages
Select the page running your frontend (usually localhost:5173).
Step 4: Handle Authentication
After navigating to a page, check if you're on a login screen.
Detection: Look for login indicators in the screenshot or DOM:
- Login form with email/password fields
- "Sign in" or "Log in" buttons
- Redirect to
/login,/auth,/signinURLs
If login screen detected:
-
Ask user for test credentials:
"I've hit a login screen. Please provide test credentials: - Email/username: - Password: Or tell me if there's a specific test user I should use." -
Log in using provided credentials:
mcp__chrome-devtools__fill_form selector: "input[type='email'], input[name='email'], #email" value: "<provided-email>" mcp__chrome-devtools__fill_form selector: "input[type='password'], input[name='password'], #password" value: "<provided-password>" mcp__chrome-devtools__click selector: "button[type='submit'], .login-button, button:contains('Sign in')" mcp__chrome-devtools__wait_for selector: ".dashboard, .home, [data-authenticated='true']" timeout: 5000 -
Verify login succeeded — Take screenshot to confirm authenticated state
-
Continue with review — Navigate to intended pages
Step 5: Navigate and Verify Each Page
For each affected page:
5a. Navigate to Page
mcp__chrome-devtools__navigate_page
url: "http://localhost:5173/<path>"
5b. Take Screenshot
mcp__chrome-devtools__take_screenshot
Save/display screenshot for visual inspection.
5c. Check Console Messages
mcp__chrome-devtools__list_console_messages
Flag issues:
- ❌ Errors (red) — Must fix
- ⚠️ Warnings related to changed code — Should review
- ℹ️ Info/debug — Usually OK
5d. Check Network Requests
mcp__chrome-devtools__list_network_requests
Flag issues:
- ❌ Failed requests (4xx, 5xx status)
- ⚠️ Slow requests (>1000ms)
- ⚠️ Missing expected requests
Step 6: Test User Flows
For interactive features, test the complete flow:
Example: Form Submission
# 1. Navigate to form page
mcp__chrome-devtools__navigate_page
url: "http://localhost:5173/users/new"
# 2. Fill form fields
mcp__chrome-devtools__fill_form
selector: "#name"
value: "Test User"
mcp__chrome-devtools__fill_form
selector: "#email"
value: "[email protected]"
# 3. Submit form
mcp__chrome-devtools__click
selector: "button[type='submit']"
# 4. Wait for result
mcp__chrome-devtools__wait_for
selector: ".success-message"
timeout: 5000
# 5. Capture result
mcp__chrome-devtools__take_screenshot
Example: Navigation Flow
# 1. Start at list page
mcp__chrome-devtools__navigate_page
url: "http://localhost:5173/users"
# 2. Click on item
mcp__chrome-devtools__click
selector: ".user-card:first-child"
# 3. Wait for detail page
mcp__chrome-devtools__wait_for
selector: ".user-detail"
timeout: 3000
# 4. Verify content loaded
mcp__chrome-devtools__take_snapshot
Step 7: Take DOM Snapshot (Optional)
For detailed inspection:
mcp__chrome-devtools__take_snapshot
Useful for verifying:
- Correct elements rendered
- Proper accessibility attributes
- Expected data displayed
Report Format
**Visual Review Complete**
## Pages Verified
| Page | Screenshot | Console | Network |
|------|------------|---------|---------|
| /users | ✓ | ✓ 0 errors | ✓ 0 failures |
| /users/new | ✓ | ⚠ 1 warning | ✓ 0 failures |
| /users/123 | ✓ | ✓ 0 errors | ✓ 0 failures |
## User Flows Tested
| Flow | Result |
|------|--------|
| Create user | ✓ Pass |
| Edit user | ✓ Pass |
| Delete user | ✓ Pass |
## Issues Found
### Console Warning (Page: /users/new)
Warning: Each child in a list should have a unique "key" prop. at SelectOptions (SelectOptions.tsx:15)
**Recommendation:** Add key prop to list items in SelectOptions component.
## Screenshots
[Screenshots captured and available for review]
## Summary
- Pages checked: 3
- Screenshots: 3
- Console errors: 0
- Console warnings: 1
- Network failures: 0
- User flows: 3/3 passed
**Recommendation:** Fix console warning, otherwise ready to proceed.
Cleanup
After visual review:
# Stop services
kill $BACKEND_PID $FRONTEND_PID 2>/dev/null
Common Issues
Page Not Loading
Check:
1. Is the frontend dev server running?
2. Is the correct URL being used?
3. Are there build errors?
Run: npm run dev (in frontend directory)
Network Requests Failing
Check:
1. Is the backend running?
2. Is the API URL configured correctly?
3. Are there CORS issues?
Run: dotnet run (in backend directory)
Check: Browser DevTools Network tab
Chrome DevTools Not Connected
Check:
1. Is Chrome running with remote debugging?
2. Is the MCP server configured?
3. Is the correct port being used?
Start Chrome with: --remote-debugging-port=9222
When not to use it
- →When the application is not running
- →When Chrome DevTools MCP is not configured and connected
- →When the task does not involve UI changes or visual verification
Prerequisites
Limitations
- →Requires the application to be running locally
- →Depends on Chrome DevTools MCP integration
- →Authentication requires user-provided credentials
How it compares
This skill automates UI verification by integrating with Chrome DevTools to capture visual evidence and log data, providing a structured report, unlike manual visual inspection.
Compared to similar skills
visual-review side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| visual-review (this skill) | 0 | 6mo | Review | Intermediate |
| playwright-browser-automation | 29 | 8mo | Review | Intermediate |
| comprehensive-testing-verification | 1 | 7mo | No flags | Intermediate |
| dependency-upgrade | 26 | 5mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
playwright-browser-automation
lackeyjb
Complete browser automation with Playwright. Auto-detects dev servers, writes clean test scripts to /tmp. Test pages, fill forms, take screenshots, check responsive design, validate UX, test login flows, check links, automate any browser task. Use when user wants to test websites, automate browser interactions, validate web functionality, or perform any browser-based testing.
comprehensive-testing-verification
ananddtyagi
MASTER Vue.js application testing with strict enforcement of verification protocols. Systematically test functionality with Playwright, validate bug fixes, verify features work, and enforce zero-tolerance policies for false success claims. MANDATORY testing with visual evidence before any deployment or functionality claims.
dependency-upgrade
wshobson
Manage major dependency version upgrades with compatibility analysis, staged rollout, and comprehensive testing. Use when upgrading framework versions, updating major dependencies, or managing breaking changes in libraries.
telegram-mini-app
davila7
Expert in building Telegram Mini Apps (TWA) - web apps that run inside Telegram with native-like experience. Covers the TON ecosystem, Telegram Web App API, payments, user authentication, and building viral mini apps that monetize. Use when: telegram mini app, TWA, telegram web app, TON app, mini app.
chrome-devtools
mrgoonie
Browser automation, debugging, and performance analysis using Puppeteer CLI scripts. Use for automating browsers, taking screenshots, analyzing performance, monitoring network traffic, web scraping, form automation, and JavaScript debugging.
shopify-development
davila7
Build Shopify apps, extensions, themes using GraphQL Admin API, Shopify CLI, Polaris UI, and Liquid. TRIGGER: "shopify", "shopify app", "checkout extension", "admin extension", "POS extension", "shopify theme", "liquid template", "polaris", "shopify graphql", "shopify webhook", "shopify billing", "app subscription", "metafields", "shopify functions"