Web Design Reviewer
This skill enables visual inspection and validation of website design quality, identifying and fixing issues at the source code level.
Scope of Application Static sites (HTML/CSS/JS) SPA frameworks such as React / Vue / Angular / Svelte Full-stack frameworks such as Next.js / Nuxt / SvelteKit CMS platforms such as WordPress / Drupal Any other web application Prerequisites Required
Target website must be running
Local development server (e.g., http://localhost:3000) Staging environment Production environment (for read-only reviews)
Browser automation must be available
Screenshot capture Page navigation DOM information retrieval
Access to source code (when making fixes)
Project must exist within the workspace Workflow Overview flowchart TD A[Step 1: Information Gathering] --> B[Step 2: Visual Inspection] B --> C[Step 3: Issue Fixing] C --> D[Step 4: Re-verification] D --> E{Issues Remaining?} E -->|Yes| B E -->|No| F[Completion Report]
Step 1: Information Gathering Phase 1.1 URL Confirmation
If the URL is not provided, ask the user:
Please provide the URL of the website to review (e.g., http://localhost:3000)
1.2 Understanding Project Structure
When making fixes, gather the following information:
Item Example Question Framework Are you using React / Vue / Next.js, etc.? Styling Method CSS / SCSS / Tailwind / CSS-in-JS, etc. Source Location Where are style files and components located? Review Scope Specific pages only or entire site? 1.3 Automatic Project Detection
Attempt automatic detection from files in the workspace:
Detection targets: ├── package.json → Framework and dependencies ├── tsconfig.json → TypeScript usage ├── tailwind.config → Tailwind CSS ├── next.config → Next.js ├── vite.config → Vite ├── nuxt.config → Nuxt └── src/ or app/ → Source directory
1.4 Identifying Styling Method Method Detection Edit Target Pure CSS .css files Global CSS or component CSS SCSS/Sass .scss, .sass SCSS files CSS Modules .module.css Module CSS files Tailwind CSS tailwind.config.* className in components styled-components styled. in code JS/TS files Emotion @emotion/ imports JS/TS files CSS-in-JS (other) Inline styles JS/TS files Step 2: Visual Inspection Phase 2.1 Page Traversal Navigate to the specified URL Capture screenshots Retrieve DOM structure/snapshot (if possible) If additional pages exist, traverse through navigation 2.2 Inspection Items Layout Issues Issue Description Severity Element Overflow Content overflows from parent element or viewport High Element Overlap Unintended overlapping of elements High Alignment Issues Grid or flex alignment problems Medium Inconsistent Spacing Padding/margin inconsistencies Medium Text Clipping Long text not handled properly Medium Responsive Issues Issue Description Severity Non-mobile Friendly Layout breaks on small screens High Breakpoint Issues Unnatural transitions when screen size changes Medium Touch Targets Buttons too small on mobile Medium Accessibility Issues Issue Description Severity Insufficient Contrast Low contrast ratio between text and background High No Focus State Cannot determine state during keyboard navigation High Missing alt Text No alternative text for images Medium Visual Consistency Issue Description Severity Font Inconsistency Mixed font families Medium Color Inconsistency Non-unified brand colors Medium Spacing Inconsistency Non-uniform spacing between similar elements Low 2.3 Viewport Testing (Responsive)
Test at the following viewports:
Name Width Representative Device Mobile 375px iPhone SE/12 mini Tablet 768px iPad Desktop 1280px Standard PC Wide 1920px Large display Step 3: Issue Fixing Phase 3.1 Issue Prioritization block-beta columns 1 block:priority["Priority Matrix"] P1["P1: Fix Immediately\n(Layout issues affecting functionality)"] P2["P2: Fix Next\n(Visual issues degrading UX)"] P3["P3: Fix If Possible\n(Minor visual inconsistencies)"] end
3.2 Identifying Source Files
Identify source files from problematic elements:
Selector-based Search
Search codebase by class name or ID Explore style definitions with grep_search
Component-based Search
Identify components from element text or structure Explore related files with semantic_search
File Pattern Filtering
Style files: src//*.css, styles// Components: src/components// Pages: src/pages/, app/
3.3 Applying Fixes Framework-specific Fix Guidelines
See references/framework-fixes.md for details.
Fix Principles Minimal Changes: Only make the minimum changes necessary to resolve the issue Respect Existing Patterns: Follow existing code style in the project Avoid Breaking Changes: Be careful not to affect other areas Add Comments: Add comments to explain the reason for fixes where appropriate Step 4: Re-verification Phase 4.1 Post-fix Confirmation Reload browser (or wait for development server HMR) Capture screenshots of fixed areas Compare before and after 4.2 Regression Testing Verify that fixes haven't affected other areas Confirm responsive display is not broken 4.3 Iteration Decision flowchart TD A{Issues Remaining?} A -->|Yes| B[Return to Step 2] A -->|No| C[Proceed to Completion Report]
Iteration Limit: If more than 3 fix attempts are needed for a specific issue, consult the user
Output Format Review Results Report
Web Design Review Results
Summary
| Item | Value |
|------|-------|
| Target URL | {URL} |
| Framework | {Detected framework} |
| Styling | {CSS / Tailwind / etc.} |
| Tested Viewports | Desktop, Mobile |
| Issues Detected | {N} |
| Issues Fixed | {M} |
Detected Issues
[P1]
- Page: {Page path}
- Element: {Selector or description}
- Issue: {Detailed description of the issue}
- Fixed File:
{File path} - Fix Details: {Description of changes}
- Screenshot: Before/After
[P2]
...
Unfixed Issues (if any)
{Issue Title}
- Reason: {Why it was not fixed/could not be fixed}
- Recommended Action: {Recommendations for user}
Recommendations
- {Suggestions for future improvements}
Required Capabilities Capability Description Required Web Page Navigation Access URLs, page transitions ✅ Screenshot Capture Page image capture ✅ Image Analysis Visual issue detection ✅ DOM Retrieval Page structure retrieval Recommended File Read/Write Source code reading and editing Required for fixes Code Search Code search within project Required for fixes Reference Implementation Implementation with Playwright MCP
Playwright MCP is recommended as the reference implementation for this skill.
Capability Playwright MCP Tool Purpose Navigation browser_navigate Access URLs Snapshot browser_snapshot Retrieve DOM structure Screenshot browser_take_screenshot Images for visual inspection Click browser_click Interact with interactive elements Resize browser_resize Responsive testing Console browser_console_messages Detect JS errors Configuration Example (MCP Server) { "mcpServers": { "playwright": { "command": "npx", "args": ["-y", "@playwright/mcp@latest", "--caps=vision"] } } }
Other Compatible Browser Automation Tools Tool Features Selenium Broad browser support, multi-language support Puppeteer Chrome/Chromium focused, Node.js Cypress Easy integration with E2E testing WebDriver BiDi Standardized next-generation protocol
The same workflow can be implemented with these tools. As long as they provide the necessary capabilities (navigation, screenshot, DOM retrieval), the choice of tool is flexible.
Best Practices DO (Recommended) ✅ Always save screenshots before making fixes ✅ Fix one issue at a time and verify each ✅ Follow the project's existing code style ✅ Confirm with user before major changes ✅ Document fix details thoroughly DON'T (Not Recommended) ❌ Large-scale refactoring without confirmation ❌ Ignoring design systems or brand guidelines ❌ Fixes that ignore performance ❌ Fixing multiple issues at once (difficult to verify) Troubleshooting Problem: Style files not found Check dependencies in package.json Consider the possibility of CSS-in-JS Consider CSS generated at build time Ask user about styling method Problem: Fixes not reflected Check if development server HMR is working Clear browser cache Rebuild if project requires build Check CSS specificity issues Problem: Fixes affecting other areas Rollback changes Use more specific selectors Consider using CSS Modules or scoped styles Consult user to confirm impact scope