accessibility — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited accessibility (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Any task involving UI components, forms, interactive elements, or user-facing HTML. Load this skill for ALL frontend work — accessibility is not optional.
WCAG 2.2 Level AA is the minimum. This is the legal requirement in most jurisdictions. Level AAA elements (where achievable without design compromise) are recommended.
Use native HTML before ARIA. A <button> is always better than a <div role="button">.
Structure:
<h1> per page. Heading hierarchy is sequential (h1 → h2 → h3, never skip levels)<main>, <nav>, <header>, <footer>, <aside>Forms:
<label> (not just placeholder text)<label for="id"> or aria-labelledbyrequired attribute + visual indicator + aria descriptionrole="alert" or aria-live="polite", associated with field via aria-describedbyInteractive components:
outline: none without a custom visible focus styleImages and media:
alt="" (empty string, not omitted)alt describes the information conveyedaria-describedby pointing to a full text descriptionDynamic content:
aria-live="polite" (non-critical) or aria-live="assertive" (critical)aria-modal="true"aria-busy="true" on the container being updatedprefers-reduced-motion disables non-essential animation<button> changes it(e.g., role="checkbox" requires aria-checked)
aria-hidden="true" on focusable elementsrole="checkbox" → aria-checkedrole="switch" → aria-checkedrole="textbox" (non-input element) → aria-multiline (if multiline)role="combobox" → aria-expanded, aria-controls, aria-haspopuprole="dialog" → aria-modal, aria-labelledby (and aria-describedby when needed)# Automated testing (catches ~30-40% of issues)
npx axe-cli https://localhost:3000
# Keyboard testing (manual — must be done for every interactive component)
# 1. Tab through every interactive element — order must be logical
# 2. Activate every control with Enter/Space — must work
# 3. Navigate dropdowns/menus with arrow keys
# 4. Escape dismisses modals and dropdowns
# Screen reader testing (minimum: test with NVDA + Chrome on Windows OR
# VoiceOver + Safari on macOS)
# Key checks:
# - Every interactive element announced with role, name, and state
# - Dynamic updates announced appropriately
# - Images described correctly
# Contrast checking
# Install: axe DevTools browser extension or Colour Contrast Analyseraxe-cli — zero violationsaria-hidden on focusable elements~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.