Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Performance and accessibility auditing using Google Lighthouse. Measure Core Web Vitals, accessibility scores, SEO, and best practices. Generate reports and track performance budgets.
.claude/skills/a5c-ai-lighthouse/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 154% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 161% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 64% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 8% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 216% | 0% |
You are lighthouse - a specialized skill for comprehensive web auditing using Google Lighthouse, providing performance, accessibility, SEO, and best practices analysis.
This skill enables AI-powered web auditing including:
lighthouse CLI or npm packageMeasure and analyze Core Web Vitals:
json{ "coreWebVitals": { "LCP": { "value": 2.1, "unit": "s", "rating": "good", "threshold": { "good": 2.5, "poor": 4.0 }, "description": "Largest Contentful Paint" }, "INP": { "value": 150, "unit": "ms", "rating": "good", "threshold": { "good": 200, "poor": 500 }, "description": "Interaction to Next Paint" }, "CLS": { "value": 0.05, "unit": "", "rating": "good", "threshold": { "good": 0.1, "poor": 0.25 }, "description": "Cumulative Layout Shift" }, "FCP": { "value": 1.2, "unit": "s", "rating": "good", "description": "First Contentful Paint" }, "TTFB": { "value": 0.3, "unit": "s", "rating": "good", "description": "Time to First Byte" } } }
Generate scores across all Lighthouse categories:
json{ "scores": { "performance": { "score": 92, "displayValue": "92", "color": "green" }, "accessibility": { "score": 98, "displayValue": "98", "color": "green" }, "bestPractices": { "score": 95, "displayValue": "95", "color": "green" }, "seo": { "score": 100, "displayValue": "100", "color": "green" }, "pwa": { "score": 85, "displayValue": "85", "color": "orange" } } }
Detailed performance breakdown:
json{ "performanceMetrics": { "firstContentfulPaint": 1200, "largestContentfulPaint": 2100, "totalBlockingTime": 150, "cumulativeLayoutShift": 0.05, "speedIndex": 1800, "timeToInteractive": 2500 }, "opportunities": [ { "id": "unused-css-rules", "title": "Remove unused CSS", "description": "Remove dead rules from stylesheets", "savings": "120 KiB", "estimatedSavings": 800 }, { "id": "render-blocking-resources", "title": "Eliminate render-blocking resources", "resources": [ { "url": "/styles/main.css", "transferSize": 45000 } ], "estimatedSavings": 500 } ], "diagnostics": [ { "id": "dom-size", "title": "Avoid an excessive DOM size", "description": "Browser engineers recommend pages contain fewer than ~1,500 DOM nodes", "value": 1823, "rating": "warning" } ] }
Comprehensive accessibility analysis:
json{ "accessibility": { "score": 98, "audits": { "passed": [ "color-contrast", "document-title", "html-has-lang", "meta-viewport" ], "failed": [ { "id": "image-alt", "title": "Image elements do not have [alt] attributes", "impact": "critical", "nodes": [ { "html": "<img src=\"hero.jpg\">", "selector": ".hero-image > img" } ], "recommendation": "Add descriptive alt text to images" } ], "notApplicable": ["frame-title", "video-caption"] } } }
SEO optimization recommendations:
json{ "seo": { "score": 100, "audits": { "passed": [ { "id": "document-title", "title": "Document has a <title> element" }, { "id": "meta-description", "title": "Document has a meta description" }, { "id": "http-status-code", "title": "Page has successful HTTP status code" }, { "id": "is-crawlable", "title": "Page isn't blocked from indexing" } ], "opportunities": [ { "id": "link-text", "title": "Links do not have descriptive text", "nodes": [ { "html": "<a href=\"/more\">Click here</a>" } ] } ] } } }
Track against defined performance budgets:
json{ "budget": { "resourceSizes": [ { "resourceType": "script", "budget": 300000, "actual": 285000, "status": "pass" }, { "resourceType": "stylesheet", "budget": 100000, "actual": 125000, "status": "fail", "overage": 25000 }, { "resourceType": "image", "budget": 500000, "actual": 450000, "status": "pass" } ], "timings": [ { "metric": "largest-contentful-paint", "budget": 2500, "actual": 2100, "status": "pass" } ] } }
bash# Basic audit lighthouse https://example.com --output json --output-path report.json # Desktop audit lighthouse https://example.com --preset desktop # Specific categories lighthouse https://example.com --only-categories=performance,accessibility # With performance budget lighthouse https://example.com --budget-path=budget.json # Multiple runs for accuracy lighthouse https://example.com --chrome-flags="--headless" -n 3
This skill can leverage the following MCP servers:
| Server | Description | Installation | |--------|-------------|--------------| | Lighthouse MCP Server (danielsogl) | 13+ tools for comprehensive auditing | GitHub | | Lighthouse MCP (priyankark) | Agentic optimization loops | GitHub |
This skill integrates with the following processes:
responsive-design.js - Performance testing across viewportsaccessibility-audit.js - Accessibility scoringcomponent-library.js - Component performance impactWhen executing operations, provide structured output:
json{ "operation": "audit", "url": "https://example.com", "device": "mobile", "status": "success", "scores": { "performance": 92, "accessibility": 98, "bestPractices": 95, "seo": 100 }, "coreWebVitals": { "LCP": { "value": 2.1, "rating": "good" }, "INP": { "value": 150, "rating": "good" }, "CLS": { "value": 0.05, "rating": "good" } }, "artifacts": ["report.json", "report.html"] }
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 15,961 | 13,978 | -12% | 1 | 1 | 0% | 1,895 | 4,822 | +154% | 0 | 0 | — |
case-02 | fail→pass | 15,354 | 17,841 | +16% | 1 | 1 | 0% | 1,992 | 5,191 | +161% | 0 | 0 | — |
case-03 | fail→fail | 26,223 | 23,241 | -11% | 1 | 1 | 0% | 4,271 | 6,366 | +49% | 0 | 0 | — |
case-04 | pass→pass | 12,496 | 11,101 | -11% | 1 | 1 | 0% | 1,251 | 3,053 | +144% | 0 | 0 | — |
case-09 | fail→fail | 14,815 | 12,060 | -19% | 1 | 1 | 0% | 2,012 | 3,468 | +72% | 0 | 0 | — |
case-05 | fail→pass | 17,887 | 11,074 | -38% | 1 | 1 | 0% | 1,982 | 3,258 | +64% | 0 | 0 | — |
case-06 | pass→pass | 17,048 | 9,429 | -45% | 1 | 1 | 0% | 917 | 3,171 | +246% | 0 | 0 | — |
case-07 | pass→pass | 12,556 | 10,591 | -16% | 1 | 1 | 0% | 1,172 | 2,882 | +146% | 0 | 0 | — |
case-08 | pass→pass | 11,272 | 8,600 | -24% | 1 | 1 | 0% | 1,292 | 3,012 | +133% | 0 | 0 | — |
case-10 | fail→pass | 34,653 | 9,634 | -72% | 1 | 1 | 0% | 2,963 | 3,207 | +8% | 0 | 0 | — |
case-11 | pass→pass | 13,570 | 8,355 | -38% | 1 | 1 | 0% | 1,468 | 2,964 | +102% | 0 | 0 | — |
case-12 | pass→pass | 12,529 | 14,583 | +16% | 1 | 1 | 0% | 2,310 | 4,250 | +84% | 0 | 0 | — |
case-13 | pass→pass | 13,843 | 12,453 | -10% | 1 | 1 | 0% | 1,817 | 3,561 | +96% | 0 | 0 | — |
case-19 | pass→pass | 8,867 | 8,022 | -10% | 1 | 1 | 0% | 1,377 | 2,782 | +102% | 0 | 0 | — |
case-14 | pass→pass | 12,796 | 17,144 | +34% | 1 | 1 | 0% | 2,309 | 4,576 | +98% | 0 | 0 | — |
case-15 | pass→pass | 14,569 | 15,662 | +8% | 1 | 1 | 0% | 1,681 | 4,334 | +158% | 0 | 0 | — |
case-16 | fail→pass | 5,493 | 10,369 | +89% | 1 | 1 | 0% | 1,071 | 3,386 | +216% | 0 | 0 | — |
case-17 | fail→pass | 10,775 | 5,266 | -51% | 1 | 1 | 0% | 1,779 | 3,220 | +81% | 0 | 0 | — |
case-18 | fail→pass | 13,218 | 7,928 | -40% | 1 | 1 | 0% | 1,376 | 2,637 | +92% | 0 | 0 | — |
case-20 | fail→pass | 35,429 | 5,791 | -84% | 1 | 1 | 0% | 3,748 | 3,344 | -11% | 0 | 0 | — |
case-21 | fail→pass | 15,464 | 9,684 | -37% | 1 | 1 | 0% | 2,182 | 3,800 | +74% | 0 | 0 | — |
case-22 | pass→pass | 10,857 | 8,039 | -26% | 1 | 1 | 0% | 1,810 | 3,498 | +93% | 0 | 0 | — |
case-23 | pass→pass | 12,757 | 5,347 | -58% | 1 | 1 | 0% | 2,193 | 3,342 | +52% | 0 | 0 | — |
case-24 | pass→pass | 9,840 | 7,177 | -27% | 1 | 1 | 0% | 1,451 | 3,708 | +156% | 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. 24 cases were attempted. The headline lift of +38 percentage points is the difference between those two pass rates over the 24 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.
Other measured skills in the registry, with their headline benchmark lift.