Skip to content
Testing
Skill

/kb-web-scanning

Reference data, not a reviewer. 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.

From plugin
accessibility-agents
431113 skills7 hooks

Claude Code

$ npx -y skills add Community-Access/accessibility-agents --skill kb-web-scanning --agent claude-code

SKILL.md

kb-web-scanning.SKILL.md
name: kb-web-scanning
description: Reference data, not a reviewer. 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.
license: MIT
disable-model-invocation: true
user-invocable: false
metadata:
  tier: reference
  domain: cross-cutting
  output: none
  effort: low
  title: Web Scanning

Web Scanning

Supported Audit Methods

Each method, with tool and when to use.

| Method | Tool | When to Use | |--------|------|-------------| | Runtime scan | axe-core CLI | Live URL available (dev server or production) | | Code review | Agent specialists | Source code available in workspace | | Both | axe-core + agents | Most comprehensive - catches issues from both angles |

Runtime Scanning Commands

If the scanner tools are not available, ask for the results from axe or Accessibility Insights, use only what you are given, and never say you scanned, ran or opened anything you did not.

axe-core CLI

# Single page scan (WCAG 2.2 AA)
npx @axe-core/cli <URL> --tags wcag2a,wcag2aa,wcag21a,wcag21aa,wcag22aa

# Save results to JSON
npx @axe-core/cli <URL> --tags wcag2a,wcag2aa,wcag21a,wcag21aa,wcag22aa --save ACCESSIBILITY-SCAN.json

# Multiple pages
npx @axe-core/cli <URL1> <URL2> <URL3> --tags wcag2a,wcag2aa,wcag21a,wcag21aa,wcag22aa --save ACCESSIBILITY-SCAN.json

# Extra Chrome arguments (the default browser is already headless Chrome)
npx @axe-core/cli <URL> --tags wcag2a,wcag2aa,wcag21a,wcag21aa,wcag22aa --chrome-options="no-sandbox"

# Fail the command (exit 1) when violations are found, for CI
npx @axe-core/cli <URL> --tags wcag2a,wcag2aa,wcag21a,wcag21aa,wcag22aa --exit

axe-core Tag Reference

Each tag, with its standard. The WCAG 2.2 AA set is all five WCAG tags together; each tag selects only the rules first added at that version and level.

| Tag | Standard | |-----|----------| | wcag2a | WCAG 2.0 Level A | | wcag2aa | WCAG 2.0 Level AA | | wcag21a | WCAG 2.1 Level A | | wcag21aa | WCAG 2.1 Level AA | | wcag22aa | WCAG 2.2 Level AA - in axe-core 4.14 only `target-size` (2.5.8), which runs only when this tag is listed | | wcag2a-obsolete | 4.1.1 Parsing rules (`duplicate-id`, `duplicate-id-active`), deprecated; do not include | | best-practice | Best practices (not WCAG required) |

Most WCAG 2.2 criteria (2.4.11, 2.5.7, 3.2.6, 3.3.7, 3.3.8) have no axe rule; check them manually.

Screenshot Capture

capture-website-cli (preferred - lightweight)

# Full-page screenshot
npx capture-website-cli "<URL>" --output="screenshots/<page>.png" --full-page --type=png

# With viewport
npx capture-website-cli "<URL>" --output="screenshots/<page>.png" --full-page --width=1280 --height=720

# Mobile viewport
npx capture-website-cli "<URL>" --output="screenshots/<page>-mobile.png" --full-page --width=375 --height=812

# With delay for JS-rendered content
npx capture-website-cli "<URL>" --output="screenshots/<page>.png" --full-page --delay=3

Playwright (fallback)

npx playwright screenshot --browser chromium --full-page --wait-for-timeout 3000 "<URL>" "screenshots/<page>.png"

Page Discovery for Multi-Page Audits

Crawl Depth Modes

Each mode, with its behavior and max pages.

| Mode | Behavior | Max Pages | |------|----------|-----------| | Current page only | Scan single URL | 1 | | Key pages | User-provided list | User-defined | | Full site crawl | Follow internal links | 50 (default cap) |

Sitemap-based Discovery

# Check for sitemap
curl -s <BASE_URL>/sitemap.xml | head -20

# Extract URLs from sitemap
curl -s <BASE_URL>/sitemap.xml | grep -oP '<loc>\K[^<]+' | head -50

Link-based Crawling

When crawling from a start URL:

  • Follow only same-domain links
  • Skip anchor links (#), mailto:, tel:, javascript: links
  • Skip file downloads (.pdf, .zip, .doc, etc.)
  • Respect robots.txt
  • Cap at 50 pages unless user overrides
  • Track visited URLs to avoid duplicates

Framework Detection

Detect the framework from workspace files to enable framework-specific scanning:

| Indicator | Framework | |-----------|-----------| | `package.json` contains `react` | React | | `package.json` contains `next` | Next.js | | `package.json` contains `vue` | Vue | | `package.json` contains `@angular/core` | Angular | | `package.json` contains `svelte` | Svelte | | `.jsx` / `.tsx` files present | React/Next.js | | `.vue` files present | Vue | | `angular.json` present | Angular | | `.svelte` files present | Svelte | | Only `.html` files | Vanilla HTML |

Source Code File Patterns

When doing code review, scan these file patterns:

# HTML files
**/*.html

# Component files (framework-specific)
**/*.jsx
**/*.tsx
**/*.vue
**/*.svelte
**/*.component.ts
**/*.component.html

# Style files (for contrast/visual checks)
**/*.css
**/*.scss
**/*.less
**/*.module.css

# Config files (for framework detection)
package.json
next.config.*
nuxt.config.*
angular.json
svelte.config.*
tailwind.config.*

Scan Configuration

Web Scan Config File: `.a11y-web-config.json`

{
  "profile": "standard",
  "wcagLevel": "AA",
  "wcagVersion": "2.2",
  "axeTags": ["wcag2a", "wcag2aa", "wcag21a", "wcag21aa", "wcag22aa"],
  "maxPages": 50,
  "screenshots": false,
  "framework": "auto",
  "ignore": {
    "paths": ["node_modules/**", "dist/**", "build/**", ".next/**"],
    "rules": []
  }
}

Scan Profiles

Each profile, with its phases and thoroughness.

| Profile | Phases | Thoroughness | |---------|--------|-------------| | Quick | 1, 3, 4, 9 | Errors and critical only | | Standard | All audit phases (1-10) | Errors and warnings | | Deep | All + extras | All severities + animation, cognitive, touch |

Read more
@community-access
Ships withaccessibility-agents

WCAG 2.2 AA enforcement for agentic coding, as a set of Agent Skills. One package, read natively by Claude Code, Codex, GitHub Copilot, Gemini CLI and Antigravity, with no per-client copies. Models forget accessibility while generating code.

Stars on GitHub

Momentum

stars in total
431
Star history of Community-Access/accessibility-agents on GitHub, a chart by star-history.com

Other skills on accessibility-agents.

More skills from other plugins.

api-review

api-review

Produce the "Playwright 1.xx API Review" artifact for a range of commits - the public API additions and the breaking or behavior…

@microsoft@microsoftInstall Skill
add-e2e-selectors

add-e2e-selectors

Add reliable @grafana/e2e-selectors to interactive elements and key containers in the Grafana frontend. Use when adding e2e…

grafanatoday78k
@grafana@grafanaInstall Skill
promptfoo-evals

promptfoo-evals

Write, refine, run, and QA promptfoo evaluation suites: promptfooconfig.yaml, prompts, providers, vars, tests, assertions,…

@promptfoo@promptfooInstall Skill
deepeval

deepeval

DeepEval evaluation workflow for AI agents and LLM applications. TRIGGER when the user wants to evaluate or improve an AI agent,…

@confident-ai@confident-aiInstall Skill

Questions about kb-web-scanning.

Which coding agents can use kb-web-scanning?
kb-web-scanning installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.