Run accessibility audit on components (WCAG 2.1 AA checks)
Performs WCAG 2.1 AA accessibility audits on React components and generates detailed reports.
/plugin marketplace add markus41/claude/plugin install chakra-react-toolkit@claude-orchestration[component-path] [--strict]When this command is invoked, perform a comprehensive accessibility audit on the specified component or directory of components against WCAG 2.1 AA standards.
Locate Target Components
Read and Analyze Each Component
Generate Detailed Audit Report
// Check for proper Chakra accessibility props
interface ChakraA11yPatterns {
// Button accessibility
hasAriaLabel: boolean; // <Button aria-label="...">
hasVisibleText: boolean; // <Button>Text</Button>
hasIconButton: boolean; // <IconButton aria-label="..." />
// Form accessibility
formControlId: boolean; // <FormControl id="...">
formLabelHtmlFor: boolean; // <FormLabel htmlFor="...">
formHelperText: boolean; // <FormHelperText>
formErrorMessage: boolean; // <FormErrorMessage>
// Modal/Drawer accessibility
hasModalHeader: boolean; // <ModalHeader>
hasCloseButton: boolean; // <ModalCloseButton>
// Image accessibility
imageAlt: boolean; // <Image alt="..." />
// Link accessibility
isExternal: boolean; // <Link isExternal> adds proper attributes
}
// BAD - No accessible label
<IconButton icon={<DeleteIcon />} />
// GOOD - Has aria-label
<IconButton
icon={<DeleteIcon />}
aria-label="Delete item"
/>
// BAD - No association
<FormLabel>Email</FormLabel>
<Input type="email" />
// GOOD - Proper association
<FormControl id="email">
<FormLabel htmlFor="email">Email</FormLabel>
<Input id="email" type="email" />
</FormControl>
// BAD - No heading for screen readers
<Modal>
<ModalContent>
<Text fontSize="xl">Settings</Text>
</ModalContent>
</Modal>
// GOOD - Proper modal structure
<Modal>
<ModalContent>
<ModalHeader>Settings</ModalHeader>
<ModalCloseButton />
<ModalBody>...</ModalBody>
</ModalContent>
</Modal>
// Check theme token usage
// BAD - Low contrast
<Text color="gray.400" bg="gray.100">Low contrast text</Text>
// GOOD - Sufficient contrast
<Text color="gray.700" bg="white">High contrast text</Text>
Generate a markdown report saved as a11y-audit-report-[timestamp].md:
# Accessibility Audit Report
**Generated:** [timestamp]
**Components Audited:** [count]
**Overall Score:** [percentage] / 100
## Summary
- Critical Issues: [count]
- Warnings: [count]
- Informational: [count]
## Critical Issues
### [ComponentName.tsx]
**Line [X]:** Missing aria-label on icon button
```tsx
// Current code
<IconButton icon={<CloseIcon />} onClick={onClose} />
// Recommended fix
<IconButton
icon={<CloseIcon />}
aria-label="Close dialog"
onClick={onClose}
/>
[Similar format for warnings]
[Similar format for info items]
claude /a11y-fix [component-path] to auto-fix common issuesclaude /test-a11y [component-path] to generate accessibility tests
## Usage Examples
```bash
# Audit a specific component
claude /a11y-audit src/components/UserProfile.tsx
# Audit all components in a directory
claude /a11y-audit src/components/forms
# Strict mode (fail on warnings)
claude /a11y-audit src/components --strict
# Audit entire component library
claude /a11y-audit
When analyzing Chakra components, leverage built-in accessibility features:
If --strict flag is used, check against theme tokens:
// Extract color values from theme
const contrastChecks = [
{ fg: 'gray.600', bg: 'white', ratio: 4.5 },
{ fg: 'blue.500', bg: 'blue.50', ratio: 3.2 }, // FAIL
];
// Report contrast failures with suggestions
/a11y-auditAudit a frontend application for WCAG 2.1/2.2 compliance, screen reader compatibility, keyboard accessibility, and inclusive design patterns.