Accessibility Skill — AuditKit
This skill is auto-included in the generated ZIP when the Accessibility pillar score is below 90.
10 stars
bynirholas
Best use case
Accessibility Skill — AuditKit is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
This skill is auto-included in the generated ZIP when the Accessibility pillar score is below 90.
Teams using Accessibility Skill — AuditKit should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
$curl -o ~/.claude/skills/accessibility/SKILL.md --create-dirs "https://raw.githubusercontent.com/nirholas/AuditKit/main/.agents/skills/accessibility/SKILL.md"
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/accessibility/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Accessibility Skill — AuditKit Compares
| Feature / Agent | Accessibility Skill — AuditKit | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
This skill is auto-included in the generated ZIP when the Accessibility pillar score is below 90.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Accessibility Skill — AuditKit
This skill is auto-included in the generated ZIP when the Accessibility pillar score is below 90.
## WCAG 2.1 Quick Reference
The most common failures caught by Lighthouse (axe-core):
## Images
```html
<!-- Every <img> needs meaningful alt text -->
<img src="/hero.jpg" alt="Team working in a modern office">
<!-- Decorative images use empty alt -->
<img src="/divider.svg" alt="" role="presentation">
<!-- Next.js -->
<Image src="/hero.jpg" alt="Team working in a modern office" width={1200} height={600} />
```
## Colour Contrast
- Normal text: minimum **4.5:1** contrast ratio
- Large text (18px+): minimum **3:1**
- UI components (buttons, borders): minimum **3:1**
```css
/* Bad — grey text on white */
color: #999999; /* 2.85:1 — fails */
/* Good */
color: #767676; /* 4.54:1 — passes AA */
```
Check contrast: https://webaim.org/resources/contrastchecker/
## Interactive Elements
```html
<!-- Buttons must have accessible labels -->
<button aria-label="Close dialog">
<svg>...</svg>
</button>
<!-- Links must be descriptive -->
<!-- Bad: -->
<a href="/post">Read more</a>
<!-- Good: -->
<a href="/post">Read more about Core Web Vitals</a>
<!-- Form inputs need labels -->
<label for="email">Email address</label>
<input id="email" type="email" name="email">
```
## Keyboard Navigation
```tsx
// All interactive elements must be keyboard accessible
// Use native elements when possible (button, a, input)
// If using div/span for clicks, add:
<div
role="button"
tabIndex={0}
onClick={handleClick}
onKeyDown={(e) => e.key === 'Enter' && handleClick()}
>
Click me
</div>
```
## ARIA
```html
<!-- Navigation landmark -->
<nav aria-label="Main navigation">...</nav>
<!-- Skip link (place first in body) -->
<a href="#main-content" class="sr-only focus:not-sr-only">Skip to content</a>
<!-- Live regions for dynamic content -->
<div aria-live="polite" aria-atomic="true">
<!-- Content that updates dynamically -->
</div>
<!-- Modal -->
<dialog aria-modal="true" aria-labelledby="dialog-title">
<h2 id="dialog-title">Dialog Title</h2>
...
</dialog>
```
## Tailwind CSS Utilities
```html
<!-- Screen reader only text -->
<span class="sr-only">Loading...</span>
<!-- Focus visible (don't remove outlines!) -->
<button class="focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500">...</button>
```
## Testing
```bash
# Install axe-core browser extension for manual testing
# Or run Lighthouse in Chrome DevTools → Accessibility
# Automated: axe-playwright
npm install @axe-core/playwright
```
```typescript
import { checkA11y } from 'axe-playwright'
test('home page passes accessibility', async ({ page }) => {
await page.goto('/')
await checkA11y(page)
})
```Related Skills
We are still matching the closest adjacent skills for this page. In the meantime, continue through the full directory.