Install any skill in seconds. Free to start, no credit card required.
Get Started Free →This skill enables visual inspection of websites running locally or remotely to identify and fix design issues. Triggers on requests like "review website design", "check the UI", "fix the layout", "find design problems". Detects issues with responsive design, accessibility, visual consistency, and layout breakage, then performs fixes at the source code level.
.claude/skills/web-design-reviewer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 106% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 166% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 96% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 129% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 176% | 0% |
This skill enables visual inspection and validation of website design quality, identifying and fixing issues at the source code level.
http://localhost:3000)mermaidflowchart 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]
If the URL is not provided, ask the user:
> Please provide the URL of the website to review (e.g., http://localhost:3000)
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? |
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| 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 |
Work through references/visual-checklist.md during inspection and again during post-fix verification.
| 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 |
| 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 |
| 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 |
| 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 |
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 |
mermaidblock-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
Identify source files from problematic elements:
grep_searchsemantic_search Style files: src/**/*.css, styles/**/* Components: src/components/**/* Pages: src/pages/**, app/**
See references/framework-fixes.md for details.
mermaidflowchart 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
markdown# 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] {Issue Title} - **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] {Issue Title} ... ## 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}
| 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 |
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 |
json{ "mcpServers": { "playwright": { "command": "npx", "args": ["-y", "@playwright/mcp@latest", "--caps=vision"] } } }
| 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.
package.json| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,667 | 4,918 | -13% | 1 | 1 | 0% | 396 | 2,754 | +595% | 0 | 0 | — |
case-02 | fail→fail | 4,142 | 5,527 | +33% | 1 | 1 | 0% | 281 | 2,818 | +903% | 0 | 0 | — |
case-03 | fail→fail | 3,472 | 3,703 | +7% | 1 | 1 | 0% | 226 | 3,077 | +1262% | 0 | 0 | — |
case-04 | fail→pass | 8,969 | 6,601 | -26% | 1 | 1 | 0% | 1,909 | 3,942 | +106% | 0 | 0 | — |
case-05 | pass→pass | 8,355 | 5,428 | -35% | 1 | 1 | 0% | 1,511 | 3,455 | +129% | 0 | 0 | — |
case-06 | pass→pass | 6,531 | 4,564 | -30% | 1 | 1 | 0% | 1,246 | 3,433 | +176% | 0 | 0 | — |
case-07 | pass→pass | 8,684 | 4,955 | -43% | 1 | 1 | 0% | 1,544 | 3,421 | +122% | 0 | 0 | — |
case-08 | fail→pass | 5,831 | 3,806 | -35% | 1 | 1 | 0% | 1,263 | 3,354 | +166% | 0 | 0 | — |
case-09 | pass→pass | 7,957 | 3,848 | -52% | 1 | 1 | 0% | 1,517 | 3,270 | +116% | 0 | 0 | — |
case-10 | pass→pass | 5,760 | 5,765 | +0% | 1 | 1 | 0% | 994 | 3,581 | +260% | 0 | 0 | — |
case-11 | pass→pass | 8,793 | 9,480 | +8% | 1 | 1 | 0% | 1,786 | 4,488 | +151% | 0 | 0 | — |
case-12 | pass→pass | 8,799 | 9,717 | +10% | 1 | 1 | 0% | 1,964 | 4,586 | +134% | 0 | 0 | — |
case-13 | pass→pass | 8,915 | 7,034 | -21% | 1 | 1 | 0% | 1,531 | 3,766 | +146% | 0 | 0 | — |
case-14 | pass→pass | 7,258 | 3,275 | -55% | 1 | 1 | 0% | 1,188 | 3,158 | +166% | 0 | 0 | — |
case-15 | pass→pass | 10,340 | 4,000 | -61% | 1 | 1 | 0% | 2,384 | 3,489 | +46% | 0 | 0 | — |
case-16 | fail→pass | 10,713 | 5,905 | -45% | 1 | 1 | 0% | 1,878 | 3,679 | +96% | 0 | 0 | — |
case-17 | pass→pass | 7,820 | 3,789 | -52% | 1 | 1 | 0% | 1,625 | 3,296 | +103% | 0 | 0 | — |
case-18 | pass→pass | 8,348 | 9,074 | +9% | 1 | 1 | 0% | 1,603 | 4,311 | +169% | 0 | 0 | — |
case-19 | pass→pass | 5,300 | 5,200 | -2% | 1 | 1 | 0% | 1,009 | 3,457 | +243% | 0 | 0 | — |
case-20 | fail→fail | 8,472 | 4,405 | -48% | 1 | 1 | 0% | 2,007 | 3,035 | +51% | 0 | 0 | — |
case-21 | fail→fail | 26,694 | 25,421 | -5% | 1 | 1 | 0% | 6,182 | 7,846 | +27% | 0 | 0 | — |
case-22 | fail→fail | 5,893 | 2,091 | -65% | 1 | 1 | 0% | 1,324 | 2,820 | +113% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 19 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 7/24/2026 | +36% |
Other measured skills in the registry, with their headline benchmark lift.