void-accessibility

Enforces WCAG 2.2 AA accessibility rules on React UI code using Radix primitives.

Updated May 29, 2026
One-click install
npx skills add https://github.com/voidcorp-core/void-harness --skill void-accessibility-voidcorp-core
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: void-accessibility
Source: https://github.com/voidcorp-core/void-harness/tree/main/packages/core/skills/void-accessibility
Command: npx skills add https://github.com/voidcorp-core/void-harness --skill void-accessibility-voidcorp-core

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? UI code frequently ships with accessibility defects: clickable divs, missing form labels, undersized touch targets, and color-only status indicators. This Skill makes WCAG 2.2 AA the enforced floor for every interactive surface, catching violations at authoring time rather than at audit time. ## Core Features & Use Cases - Radix-only interactive primitives: Bans hand-rolled <div onClick> patterns and requires Radix-based components (via @repo/ui) for dialogs, dropdowns, tooltips, tabs, and other composite widgets. - Concrete a11y invariants: Enforces 44x44px touch targets, AA contrast ratios, keyboard navigation parity, visible focus rings, semantic HTML over ARIA, associated form labels, and aria-live error announcements. - Mobile-first dual-quality: Requires both mobile and desktop viewports to reach first-class quality, verified by the viewport-screenshot-gate hook and axe-precommit static analysis. - Use Case: When adding a new settings form in a Next.js app, the Skill ensures every input has an associated label, errors are announced via role="alert", all buttons meet the 44px touch minimum, and axe-core runs on the staged changes before commit. ## Quick Start Ask the agent to build or modify any UI component, such as "add a dropdown menu to the settings page", and the accessibility rules apply automatically.

Frequently Asked Questions about void-accessibility

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make a React component WCAG 2.2 AA compliant?

Use Radix UI primitives for interactive widgets, semantic HTML elements instead of ARIA roles, and ensure 4.5:1 contrast for text. Every interactive element needs a 44x44px touch target, visible focus ring, and keyboard parity with touch interactions.

What is the minimum touch target size for mobile UI?

Apple HIG and this Skill require a minimum of 44x44px for every interactive element regardless of viewport. Small icons should be wrapped in a padded tap area, such as the Tappable helper that enforces min-h-11 min-w-11 Tailwind classes.

Why is using a div with onClick bad for accessibility?

A div with onClick lacks native keyboard focus, Enter/Space activation, and screen reader role semantics. Use a native button element or a Radix primitive instead, which provides focus management, keyboard navigation, and ARIA wiring automatically.

Can I use placeholder text as a form input label?

No. Placeholder text disappears on input, often fails AA contrast, and is handled inconsistently by screen readers. Always use a label element associated via htmlFor, visually hidden with sr-only if the design requires it.

Does axe-core catch all accessibility violations before commit?

No. The axe-precommit hook runs axe-core static analysis on staged UI changes and blocks AA violations, but it cannot verify keyboard interaction flows or dual-viewport quality. Those are covered by the viewport-screenshot-gate hook and manual review.