AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Web Accessibility A11y

skill-plugin87-full-stack-design-skills-web-accessibility-a11y · by plugin87

Build accessible web experiences that work for everyone. Use this skill whenever dealing with WCAG compliance, semantic HTML, ARIA patterns, screen reader testing, keyboard navigation, contrast ratios, accessibility audits, or inclusive design patterns. Triggers include: accessibility concerns, form design, modal dialogs, focus management, live regions, color-only differentiation, keyboard shortc…

No reviews yet
0 installs
22 views
0.0% view→install

Install

$ agentstack add skill-plugin87-full-stack-design-skills-web-accessibility-a11y

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-plugin87-full-stack-design-skills-web-accessibility-a11y)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
22d ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Web Accessibility A11y? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Web Accessibility (a11y)

A practical guide to building digital products that work for everyone, regardless of ability.

Accessibility is not an afterthought—it's a foundational design principle. This skill covers the technical standards (WCAG 2.1) and practical patterns for building inclusive web experiences.

Why Accessibility Matters

Legal: WCAG 2.1 compliance is increasingly required (ADA, ATAG, EN 301 549, UK EQA).

Business: ~15% of the global population has a disability. Accessible design benefits everyone (captions help in noisy environments, voice control helps people with mobility issues, clear navigation helps users with cognitive disabilities).

Technical: Accessible patterns are often better for SEO, performance, and maintainability.


Core Principles: WCAG 2.1

WCAG (Web Content Accessibility Guidelines) has four principles, abbreviated as POUR:

1. Perceivable

Information must be perceivable—users must be able to see, hear, or otherwise sense it.

Guidelines:

  • Text alternatives — Images need alt text
  • Captions & transcripts — Audio/video needs text
  • Adaptable content — Info not lost when zoomed or reflow
  • Distinguishable — Text is readable (4.5:1 contrast, font size ≥12px)

2. Operable

Interfaces must be operable—users must be able to navigate and interact.

Guidelines:

  • Keyboard accessible — All functions available via keyboard
  • Enough time — Users can pause auto-playing content
  • Seizure prevention — No flashing/flickering (3+ times/second)
  • Navigable — Clear landmarks, skip links, heading hierarchy

3. Understandable

Content and operation must be understandable.

Guidelines:

  • Readable — Clear language, short sentences, defined jargon
  • Predictable — Consistent navigation, no surprises
  • Input assistance — Form errors are identified and labeled clearly

4. Robust

Code must be robust—compatible with assistive technologies.

Guidelines:

  • Valid HTML — Correct use of semantic elements
  • ARIA correctly — Only use ARIA when HTML can't do it
  • Naming, role, value — Every interactive element has a label (name), is understood (role), and exposes state (value)

Semantic HTML: The Foundation

Semantic HTML means using HTML elements for their intended purpose. This is 80% of accessibility.

Correct Element Usage

Don't:

Submit
Page Title
Click me

Do:

Submit
Page Title
Click me

Essential Semantic Elements

| Element | Purpose | Screen Reader Announces | |---------|---------|------------------------| | ` | Clickable action | "Button: [label]" | | | Navigation link | "Link: [label]" | | | Headings (hierarchy) | "Heading level 1: [text]" | | | Navigation region | "Navigation" | | | Main content region | "Main" | | | Self-contained content | "Article" | | | Thematic grouping | "Region" | | | Sidebar/supplementary | "Complementary" | | , | Page regions | Landmarks | | | Form label (paired to input) | "Label: [text]" | | & | Group related form inputs | "Group: [legend]" | | , , | Lists | "List, X items" | | , , , | Data tables (not layout) | Headers + cells announced | | & ` | Images with captions | "Figure: [caption]" |

Landmark Navigation

Users of screen readers navigate by landmarks (regions). Provide at least:

  • One `` — Contains primary content
  • One `` — Contains navigation
  • Optional `, , `

  
    
  
  
    
  
  
  

Form Accessibility

Forms are the most common source of accessibility issues.

Labeling

Every input needs a label, associated via for/id:

Email address

Not this:

Placeholder text vanishes when you start typing — users with memory issues won't know what the field was for.

Required Fields

Indicate required fields clearly in label + legend text:

Name *

Error Handling

When validation fails:

  1. Announce the error immediately (use aria-live="polite")
  2. Identify which field failed
  3. Describe the error (not "Invalid" but "Phone number must be 10 digits")
  4. Suggest correction
Phone

Phone must be 10 digits, e.g., 415-555-0123

Fieldsets & Legends

Group related inputs (radio buttons, checkboxes) with ` and label with `:


  Select your experience level
   Beginner
   Intermediate
   Expert

Keyboard Navigation

All interactive elements must be keyboard accessible. Users without mice rely entirely on keyboard.

Tab Order

Use the natural tab order (HTML source order). If visual order differs from source order, fix the source:

Bad:


Button 2
Button 3
Button 1

Good:


Button 1
Button 2
Button 3

Focus Management

  • Never remove focus outline — Users need visual feedback of where they are
  • Focus should be visible on all interactive elements (buttons, links, inputs, custom controls)
  • Custom focus style must have ≥3px visible area, 3:1 contrast
button:focus-visible {
  outline: 2px solid #2563eb;
  outline-offset: 2px;
}

Keyboard Traps

Avoid situations where keyboard users can't escape using keyboard. Test: Press Tab repeatedly — can you reach every element and move past it?

Example trap:

Open Modal

Fix:

Open Modal

  Close Modal
  
  

Keyboard Shortcuts

If you define custom keyboard shortcuts (Ctrl+S, etc.):

  • Avoid single-key shortcuts (break form inputs)
  • Allow users to disable or remap shortcuts
  • Document all shortcuts in Help

ARIA (Accessible Rich Internet Applications)

ARIA adds accessibility information to HTML. Use semantic HTML first; ARIA only when HTML can't do it.

Golden Rules of ARIA

  1. No ARIA is better than bad ARIA — Incorrect ARIA breaks things for screen reader users
  2. ARIA doesn't change DOMrole="button" on a ` doesn't make it keyboard accessible; still need tabindex="0" and onkeydown`
  3. ARIA is for exceptions — 90% of a11y is semantic HTML

Common ARIA Attributes

| Attribute | Use | Example | |-----------|-----|---------| | role="" | Tells AT the element's purpose | ` (only if not semantic element) | | aria-label="" | Visible label missing | × | | aria-labelledby="" | Connect to visible heading | Title | | aria-describedby="" | Additional description | + | | aria-required="true" | Field is required | | | aria-invalid="true" | Field has error | | | aria-expanded="false" | Toggle button state | Menu | | aria-hidden="true" | Hide from AT | | | aria-live="polite" | Announce content changes | 3 items added` |

When to Use ARIA

Don't use ARIA for:

  • Semantic HTML does it already (`, , `, etc.)
  • Simple styling or layout (just use CSS)

Do use ARIA for:

  • Custom components without semantic HTML (tabs, accordion, tooltip)
  • Live regions that update (chat, notifications, search results)
  • Hidden/collapsed content state (aria-expanded)
  • Relationships between non-adjacent elements (aria-labelledby, aria-describedby)

Testing & Validation

Automated Tools (Catch ~30% of issues)

  • axe DevTools (browser extension) — Fast, reliable
  • WebAIM Contrast Checker — Verify color contrast
  • WAVE — Visual accessibility feedback
  • Lighthouse (Chrome DevTools) — Performance + accessibility audit

Manual Testing (Required for remaining 70%)

Keyboard-only navigation:

  • Unplug your mouse
  • Navigate entire site with Tab, Enter, Shift+Tab, Arrow keys
  • Identify any keyboard traps or missing focus

Screen reader testing:

  • NVDA (Windows, free)
  • JAWS (Windows, paid)
  • VoiceOver (Mac, free — press Cmd+F5 to enable)
  • TalkBack (Android, free)
  • Test with real AT — browser extensions don't replicate the experience

Zoom testing:

  • Zoom to 200% — text should reflow, no horizontal scroll
  • Zoom to 400% — should still be readable

Colorblind testing:

  • Simulator: Coblis
  • Ensure information conveyed by color also uses icons, text, patterns

Accessibility Audit Checklist

See bundled resources for comprehensive WCAG 2.1 AA checklist.


Common Mistakes & Fixes

Missing Alt Text

Problem: Images have no alt text. Fix: Every image needs alt="" (can be empty if decorative, but must be present). Describe content concisely: alt="Coffee cup on wooden table" not alt="image.jpg".

Color-Only Indicators

Problem: Red = error, green = success (no other differentiation). Fix: Add icons, text labels, or patterns alongside color.

No Focus Visible

Problem: outline: none applied globally to remove focus ring. Fix: Never remove focus outline. Customize it: outline: 2px solid blue; outline-offset: 2px.

Inaccessible Modals

Problem: Modal opens; focus stays on background; keyboard user can't close it. Fix: Move focus into modal on open. Trap Tab within modal. Move focus back to trigger on close.

Incorrect Heading Hierarchy

Problem: h1, then h3, skipping h2. Fix: Use sequential hierarchy (h1 → h2 → h3). Users rely on heading structure to navigate.

Placeholder ≠ Label

Problem: Form fields use only placeholder; label removed "for clarity." Fix: Always use ``. Placeholder disappears when user types.

Unlabeled Buttons

Problem: or ` (no text). **Fix:** Add visible text or aria-label="Back" / aria-label="Menu"`.


Reference Files & Further Reading

Bundled resources:

  • wcag-2-1-checklist.md — WCAG AA compliance checklist
  • aria-patterns-guide.md — Common ARIA patterns (tabs, accordion, tooltip, etc.)
  • keyboard-navigation-guide.md — Keyboard interaction patterns

When to Use This Skill

Do use for:

  • WCAG compliance review and audit
  • Form accessibility design and testing
  • Keyboard navigation and focus management
  • ARIA attribute selection and implementation
  • Alt text strategy for images
  • Modal, tooltip, popover, tab panel accessibility
  • Color contrast compliance
  • Heading hierarchy and landmark review
  • Error handling and form validation
  • Screen reader testing strategies

Don't use for:

  • CSS styling details (see design-fundamentals)
  • Framework-specific implementation (see appropriate framework skill)
  • Performance optimization (see web-performance-optimization)
  • Design system component creation (see design-systems-architecture)

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.