pluginagentmarketplace

accessibility

Master accessibility - WCAG compliance, screen readers, keyboard navigation, inclusive design

pluginagentmarketplace 3 Updated 9mo ago

Resources

3
GitHub

Install

npx skillscat add pluginagentmarketplace/custom-plugin-ux-design/accessibility

Install via the SkillsCat registry.

SKILL.md

Accessibility Skill

Atomic Skill: Ensure digital experiences are usable by everyone through WCAG compliance

Purpose

This skill provides comprehensive guidance on accessibility standards, testing, and remediation.

Skill Invocation

Skill("custom-plugin-ux-design:accessibility")

Parameter Schema

Input Parameters

interface AccessibilityParams {
  // Required
  task: "audit" | "remediate" | "design" | "test";
  target: string;

  // Optional
  level?: "A" | "AA" | "AAA";
  scope?: "component" | "page" | "flow" | "application";
  platform?: "web" | "mobile" | "desktop";
  assistive_tech?: string[];
}

Validation Rules

task:
  type: enum
  required: true
  values: [audit, remediate, design, test]

target:
  type: string
  required: true
  min_length: 3

level:
  type: enum
  default: "AA"
  values: [A, AA, AAA]

Execution Flow

ACCESSIBILITY EXECUTION
โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

Step 1: SCOPE ASSESSMENT
โ”œโ”€โ”€ Identify target scope
โ”œโ”€โ”€ Determine compliance level
โ””โ”€โ”€ Select testing methods

Step 2: AUDIT
โ”œโ”€โ”€ Automated testing
โ”œโ”€โ”€ Manual testing
โ”œโ”€โ”€ Assistive tech testing
โ””โ”€โ”€ Document findings

Step 3: CATEGORIZE ISSUES
โ”œโ”€โ”€ Critical (blockers)
โ”œโ”€โ”€ Serious (major barriers)
โ”œโ”€โ”€ Moderate (difficulties)
โ””โ”€โ”€ Minor (inconveniences)

Step 4: REMEDIATE
โ”œโ”€โ”€ Prioritize by severity
โ”œโ”€โ”€ Implement fixes
โ”œโ”€โ”€ Verify corrections
โ””โ”€โ”€ Document solutions

Step 5: VALIDATE
โ”œโ”€โ”€ Re-test all issues
โ”œโ”€โ”€ Certify compliance
โ””โ”€โ”€ Create maintenance plan

โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€

Retry Logic

retry_config:
  max_attempts: 3
  backoff_type: exponential
  initial_delay_ms: 500
  max_delay_ms: 5000
  retryable_errors:
    - SCANNER_TIMEOUT
    - AT_CONNECTION_LOST

Logging Hooks

interface AccessibilityLog {
  timestamp: string;
  event: "audit_start" | "issue_found" | "remediated" | "verified";
  wcag_criterion: string;
  severity: string;
  element: string;
  status: "open" | "fixed" | "verified";
}

Learning Modules

Module 1: WCAG Fundamentals

POUR PRINCIPLES
โ”œโ”€โ”€ Perceivable
โ”‚   โ”œโ”€โ”€ Text alternatives
โ”‚   โ”œโ”€โ”€ Time-based media
โ”‚   โ”œโ”€โ”€ Adaptable content
โ”‚   โ””โ”€โ”€ Distinguishable
โ”œโ”€โ”€ Operable
โ”‚   โ”œโ”€โ”€ Keyboard accessible
โ”‚   โ”œโ”€โ”€ Enough time
โ”‚   โ”œโ”€โ”€ Seizure safe
โ”‚   โ””โ”€โ”€ Navigable
โ”œโ”€โ”€ Understandable
โ”‚   โ”œโ”€โ”€ Readable
โ”‚   โ”œโ”€โ”€ Predictable
โ”‚   โ””โ”€โ”€ Input assistance
โ””โ”€โ”€ Robust
    โ”œโ”€โ”€ Compatible
    โ””โ”€โ”€ Name, role, value

Module 2: Screen Reader Support

SCREEN READER BASICS
โ”œโ”€โ”€ Semantic HTML
โ”‚   โ”œโ”€โ”€ Headings (h1-h6)
โ”‚   โ”œโ”€โ”€ Landmarks (nav, main, etc.)
โ”‚   โ”œโ”€โ”€ Lists (ul, ol, dl)
โ”‚   โ””โ”€โ”€ Tables (proper markup)
โ”œโ”€โ”€ ARIA
โ”‚   โ”œโ”€โ”€ Roles
โ”‚   โ”œโ”€โ”€ States
โ”‚   โ””โ”€โ”€ Properties
โ”œโ”€โ”€ Focus management
โ”‚   โ”œโ”€โ”€ Focus order
โ”‚   โ”œโ”€โ”€ Focus trapping
โ”‚   โ””โ”€โ”€ Focus restoration
โ””โ”€โ”€ Live regions
    โ”œโ”€โ”€ aria-live
    โ”œโ”€โ”€ Announcements
    โ””โ”€โ”€ Status updates

Module 3: Keyboard Navigation

KEYBOARD REQUIREMENTS
โ”œโ”€โ”€ All interactive elements focusable
โ”œโ”€โ”€ Logical focus order
โ”œโ”€โ”€ Visible focus indicators
โ”œโ”€โ”€ No keyboard traps
โ”œโ”€โ”€ Skip links provided
โ””โ”€โ”€ Shortcuts documented

COMMON PATTERNS
โ”œโ”€โ”€ Tab: Move forward
โ”œโ”€โ”€ Shift+Tab: Move backward
โ”œโ”€โ”€ Enter/Space: Activate
โ”œโ”€โ”€ Arrow keys: Navigate within
โ”œโ”€โ”€ Escape: Close/cancel
โ””โ”€โ”€ Home/End: First/last

Module 4: Visual Accessibility

COLOR & CONTRAST
โ”œโ”€โ”€ Text contrast (4.5:1 normal, 3:1 large)
โ”œโ”€โ”€ UI component contrast (3:1)
โ”œโ”€โ”€ Focus indicator contrast (3:1)
โ”œโ”€โ”€ Color not sole indicator
โ””โ”€โ”€ Dark mode considerations

MOTION & ANIMATION
โ”œโ”€โ”€ Reduce motion preference
โ”œโ”€โ”€ Pause/stop controls
โ”œโ”€โ”€ No autoplay
โ”œโ”€โ”€ Seizure-safe content
โ””โ”€โ”€ Animation alternatives

Module 5: Testing Methods

AUTOMATED TESTING
โ”œโ”€โ”€ Axe DevTools
โ”œโ”€โ”€ WAVE
โ”œโ”€โ”€ Lighthouse
โ”œโ”€โ”€ Pa11y
โ””โ”€โ”€ HTML validators

MANUAL TESTING
โ”œโ”€โ”€ Keyboard-only navigation
โ”œโ”€โ”€ Zoom to 200%
โ”œโ”€โ”€ High contrast mode
โ”œโ”€โ”€ Color blindness simulation
โ””โ”€โ”€ Form error states

ASSISTIVE TECH TESTING
โ”œโ”€โ”€ NVDA (Windows)
โ”œโ”€โ”€ JAWS (Windows)
โ”œโ”€โ”€ VoiceOver (Mac/iOS)
โ”œโ”€โ”€ TalkBack (Android)
โ””โ”€โ”€ Switch access

Error Handling

Error Code Description Recovery
A11Y-001 Missing alt text Add descriptive alt
A11Y-002 Contrast failure Adjust colors
A11Y-003 Keyboard trap Add escape mechanism
A11Y-004 Missing label Add visible/hidden label
A11Y-005 Invalid ARIA Fix ARIA usage

WCAG Quick Reference

Contrast Requirements

Content Type AA Ratio AAA Ratio
Normal text 4.5:1 7:1
Large text (18pt+) 3:1 4.5:1
UI components 3:1 3:1
Focus indicators 3:1 3:1

Touch Target Sizes

Platform Minimum Recommended
Web 24x24px 44x44px
iOS 44x44pt 44x44pt
Android 48x48dp 48x48dp

Troubleshooting

Problem: Screen reader announces wrong content

Diagnosis:
โ”œโ”€โ”€ Check: ARIA labels
โ”œโ”€โ”€ Check: DOM order
โ”œโ”€โ”€ Check: Hidden content
โ””โ”€โ”€ Solution: Align ARIA with visual

Steps:
1. Test with screen reader
2. Check aria-label accuracy
3. Verify DOM = visual order
4. Remove incorrect aria-hidden

Problem: Focus not visible

Diagnosis:
โ”œโ”€โ”€ Check: outline: none in CSS
โ”œโ”€โ”€ Check: :focus styles
โ”œโ”€โ”€ Check: Custom components
โ””โ”€โ”€ Solution: Add visible focus

Steps:
1. Remove outline removal
2. Add :focus-visible styles
3. Ensure 3:1 contrast
4. Test all interactive elements

Unit Test Templates

describe("AccessibilitySkill", () => {
  describe("audit", () => {
    it("should detect missing alt text", async () => {
      const result = await invoke({
        task: "audit",
        target: "<img src='photo.jpg'>"
      });
      expect(result.issues).toContainEqual(
        expect.objectContaining({ code: "A11Y-001" })
      );
    });
  });

  describe("contrast checking", () => {
    it("should calculate contrast ratio", async () => {
      const result = await invoke({
        task: "audit",
        target: { text: "#666666", background: "#ffffff" }
      });
      expect(result.contrast_ratio).toBeCloseTo(5.74, 1);
    });
  });

  describe("remediation", () => {
    it("should suggest fix for contrast failure", async () => {
      const result = await invoke({
        task: "remediate",
        target: { issue: "A11Y-002", colors: ["#999", "#fff"] }
      });
      expect(result.suggested_color).toMatch(/^#[0-9A-F]{6}$/i);
      expect(result.new_contrast).toBeGreaterThanOrEqual(4.5);
    });
  });
});

Quality Metrics

Metric Target Measurement
WCAG compliance > 95% Criteria met
Critical issues 0 Blockers found
Keyboard navigable 100% All elements
Screen reader compatible > 95% AT testing

Version History

Version Date Changes
1.0.0 2025-12-30 Production-grade upgrade