.agents/skills/lighthouse-scanner/SKILL.md
Integration patterns for Lighthouse CI accessibility auditing. Teaches agents how to detect Lighthouse CI configuration, parse accessibility audit results, map findings to the standard severity model, correlate with local axe-core scans, and track score regressions.
npx skillsauth add dodyg/blue-nile-pds lighthouse-scannerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Lighthouse CI is a suite of tools for running Google Lighthouse audits in CI pipelines. The most common GitHub Actions integration uses treosh/lighthouse-ci-action.
Lighthouse provides:
Accessibility focus: The Lighthouse accessibility category runs a subset of axe-core rules and reports a weighted score from 0-100 along with individual audit violations.
Search for workflow files referencing Lighthouse CI:
# Search for the treosh Lighthouse CI action
grep -rl "treosh/lighthouse-ci-action" .github/workflows/
# Search for official Lighthouse CI CLI usage
grep -rl "lhci autorun\|lighthouse-ci" .github/workflows/
Patterns to match in YAML:
- uses: treosh/lighthouse-ci-action@v12
Lighthouse CI uses configuration files in the repository root:
# Check for Lighthouse CI config files
ls lighthouserc.js lighthouserc.json .lighthouserc.js .lighthouserc.json .lighthouserc.yml 2>/dev/null
| Config File | Format |
|------------|--------|
| lighthouserc.js | JavaScript module |
| lighthouserc.json | JSON |
| .lighthouserc.js | JavaScript module (dotfile) |
| .lighthouserc.json | JSON (dotfile) |
| .lighthouserc.yml | YAML (dotfile) |
Key fields in Lighthouse CI config:
{
"ci": {
"collect": {
"url": ["https://example.com", "https://example.com/about"],
"numberOfRuns": 3
},
"assert": {
"assertions": {
"categories:accessibility": ["error", {"minScore": 0.9}]
}
},
"upload": {
"target": "temporary-public-storage"
}
}
}
| Section | Purpose | Agent Use |
|---------|---------|-----------|
| ci.collect.url | URLs to audit | Scope of CI scanning |
| ci.collect.numberOfRuns | How many times to run each URL | Reliability indicator |
| ci.assert.assertions | Score budgets and thresholds | Regression detection |
| ci.upload.target | Where to store reports | Report retrieval |
Lighthouse computes a weighted accessibility score from 0-100 based on individual audit results.
| Score Range | Grade | Interpretation | |-------------|-------|---------------| | 90-100 | A | Good accessibility | | 70-89 | B-C | Some issues to address | | 50-69 | D | Significant issues | | 0-49 | F | Critical accessibility failures |
Each Lighthouse accessibility audit corresponds to an axe-core rule:
| Audit ID | axe-core Rule | WCAG Criterion | Weight |
|----------|--------------|----------------|--------|
| image-alt | image-alt | 1.1.1 | 10 |
| color-contrast | color-contrast | 1.4.3 | 7 |
| label | label | 1.3.1 | 7 |
| button-name | button-name | 4.1.2 | 7 |
| link-name | link-name | 2.4.4 | 7 |
| html-has-lang | html-has-lang | 3.1.1 | 7 |
| document-title | document-title | 2.4.2 | 7 |
| heading-order | heading-order | 1.3.1 | 3 |
| meta-viewport | meta-viewport | 1.4.4 | 10 |
| bypass | bypass | 2.4.1 | 7 |
| tabindex | tabindex | 2.4.3 | 7 |
| aria-allowed-attr | aria-allowed-attr | 4.1.2 | 10 |
| aria-hidden-body | aria-hidden-body | 4.1.2 | 10 |
| aria-required-attr | aria-required-attr | 4.1.2 | 10 |
| aria-roles | aria-roles | 4.1.2 | 7 |
| aria-valid-attr-value | aria-valid-attr-value | 4.1.2 | 7 |
| aria-valid-attr | aria-valid-attr | 4.1.2 | 10 |
Lighthouse uses weights rather than impact levels. Map to the agent severity model based on weight and audit pass/fail:
| Lighthouse Weight | Audit Status | Agent Severity | |------------------|-------------|---------------| | 10 | Fail | Critical | | 7 | Fail | Serious | | 3 | Fail | Moderate | | 1 | Fail | Minor | | Any | Pass | N/A (not reported) |
Since Lighthouse uses axe-core under the hood, correlation is straightforward:
high confidence| Scenario | Interpretation | Action | |----------|---------------|--------| | Found by Lighthouse AND local scan | High confidence | Report as high confidence, full severity weight | | Found by Lighthouse only | Environment-specific | Report as medium confidence, note "CI-only finding" | | Found by local scan only | Not covered by Lighthouse subset | Report as medium confidence, note "local-only finding" | | Lighthouse score regressed | New accessibility issues introduced | Flag as regression, prioritize in report |
Track Lighthouse accessibility scores across runs to detect regressions:
{
"url": "https://example.com",
"previousScore": 95,
"currentScore": 87,
"delta": -8,
"status": "regressed",
"newFailures": ["color-contrast", "image-alt"],
"newPasses": []
}
| Delta | Severity | Action | |-------|----------|--------| | Score drops 10+ points | Critical | Immediate attention, likely multiple new violations | | Score drops 5-9 points | Serious | New violations introduced, review before merge | | Score drops 1-4 points | Moderate | Minor regression, track for follow-up | | Score unchanged or improved | N/A | No regression detected |
When lighthouse-bridge normalizes Lighthouse data, it produces findings in this format:
{
"source": "lighthouse-ci",
"ruleId": "color-contrast",
"wcagCriterion": "1.4.3",
"wcagLevel": "AA",
"severity": "serious",
"confidence": "high",
"url": "https://example.com/login",
"element": "button.submit-btn",
"description": "Element has insufficient color contrast ratio",
"lighthouseWeight": 7,
"lighthouseScore": {
"overall": 87,
"previousOverall": 95,
"delta": -8,
"status": "regressed"
}
}
The most common Lighthouse CI GitHub Action:
- name: Run Lighthouse CI
uses: treosh/lighthouse-ci-action@v12
with:
urls: |
https://example.com
https://example.com/about
uploadArtifacts: true
configPath: ./lighthouserc.json
| Input | Required | Description |
|-------|----------|-------------|
| urls | Yes (or in config) | Newline-separated URLs to audit |
| configPath | No | Path to Lighthouse CI config file |
| uploadArtifacts | No | Upload HTML reports as workflow artifacts |
| temporaryPublicStorage | No | Upload to temporary public storage for sharing |
| runs | No | Number of runs per URL (default: 1) |
| budgetPath | No | Path to a Lighthouse budget JSON file |
Lighthouse CI uploads results as workflow artifacts. To retrieve scores:
categories.accessibility.score for the overall scoreaudits.{audit-id} results for violationstesting
Get best practices for TUnit unit testing, including data-driven tests
development
Severity scoring, scorecard computation, confidence levels, and remediation tracking for web accessibility audits. Use when computing page accessibility scores (0-100 with A-F grades), tracking remediation progress across audits, or generating cross-page comparison scorecards.
development
Web content discovery, URL crawling, and page inventory for accessibility audits. Use when scanning web pages, crawling sites for audit scope, or building page inventories for multi-page audits.
development
Audit report formatting, severity scoring, scorecard computation, and compliance export for document accessibility audits. Use when generating DOCUMENT-ACCESSIBILITY-AUDIT.md reports, computing document severity scores (0-100 with A-F grades), creating VPAT/ACR compliance exports, or formatting remediation priorities.