Synthèse automatique
Ce skill passe en revue des composants d'interface web pour vérifier leur conformité WCAG 2.1 niveau AA (HTML sémantique, ARIA, navigation clavier, contrastes, formulaires, structure de titres).
Points forts
- Couvre les huit axes classiques d'un audit a11y : sémantique, ARIA, clavier, alt, contraste, formulaires, titres, contenu dynamique.
- Chaque point est illustré par un exemple de code « à éviter » et « à privilégier », directement réutilisable.
- Rappelle le premier principe d'ARIA (ne pas utiliser ARIA si le HTML sémantique suffit) et les seuils de contraste 4.5:1 / 3:1.
- Reste en lecture seule (Read, Grep, Glob) : aucun risque de modification involontaire du code.
Limites
- Analyse statique uniquement : ne teste pas le rendu réel, les lecteurs d'écran ni les ratios de contraste calculés sur les couleurs effectives.
- Aucune intégration à des outils automatisés (axe, Lighthouse, Pa11y) et pas de rapport chiffré de type score de conformité.
- La section sur le contenu dynamique est incomplète dans le fichier fourni, et le skill ne traite pas les cas de formulaires multi-étapes ou de SPA complexes.
À utiliser lorsqu'on écrit ou relit un composant frontend et que l'on veut un contrôle de conformité WCAG AA avec des correctifs concrets.
À éviter si l'on attend une validation automatisée en navigateur ou un audit formel certifié incluant des tests avec utilisateurs et lecteurs d'écran réels.
Analyse de sécurité
SûrThe skill only uses read-only tools (Read, Grep, Glob) and provides educational guidance on accessibility auditing. It contains no destructive, exfiltrating, or obfuscated actions. The included npx commands are for accessibility testing tools and are not executed by the skill itself, and even if run manually, they are benign.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
Review src/components/Modal.tsx for accessibility: check focus trapping, returning focus on close, ARIA roles, and Escape key handling. Give me the specific fixes.My signup form uses placeholder text instead of labels and shows errors only in red. Audit it against WCAG AA and show me the corrected markup.This custom dropdown is a div with onClick and no keyboard support. Tell me what's broken for a11y and write the keyboard/ARIA version.name: accessibility-auditor description: Reviews UI components for WCAG compliance, ARIA attributes, keyboard navigation, and screen reader support. Use when building frontend components or user requests accessibility improvements. allowed-tools: Read, Grep, Glob
Accessibility Auditor
Audits web applications for accessibility compliance (WCAG 2.1 Level AA) and suggests improvements.
When to Use
- Building or reviewing UI components
- User requests accessibility improvements
- Preparing for accessibility audit
- User mentions "accessibility", "a11y", "WCAG", "screen reader", or "keyboard navigation"
Instructions
1. Semantic HTML Check
Use proper HTML elements:
<!-- Bad -->
<div onclick="submit()">Submit</div>
<!-- Good -->
<button onclick="submit()">Submit</button>
Semantic structure:
<header>,<nav>,<main>,<footer><article>,<section>,<aside><h1>through<h6>in proper hierarchy<button>for actions,<a>for navigation
2. ARIA Attributes
When to use ARIA:
- Custom widgets (tabs, accordions, modals)
- Dynamic content updates
- Complex interactions
- When semantic HTML isn't sufficient
Common ARIA attributes:
<!-- Landmark roles -->
<nav role="navigation" aria-label="Main">
<!-- Widget roles -->
<div role="button" tabindex="0" aria-pressed="false">
<!-- Live regions -->
<div role="alert" aria-live="assertive">Error occurred</div>
<!-- Labels and descriptions -->
<button aria-label="Close dialog">×</button>
<input aria-describedby="password-help" />
First rule of ARIA: Don't use ARIA if semantic HTML works
3. Keyboard Navigation
All interactive elements must be keyboard accessible:
// Add keyboard support to custom elements
<div
role="button"
tabindex="0"
onClick={handleClick}
onKeyDown={(e) => {
if (e.key === 'Enter' || e.key === ' ') {
handleClick();
}
}}
>
Click me
</div>
Tab order:
- Use
tabindex="0"for custom interactive elements - Avoid
tabindex > 0(creates confusing tab order) - Use
tabindex="-1"for programmatic focus only
Focus management:
- Visible focus indicators
- Trap focus in modals
- Return focus when closing dialogs
- Skip links for main content
4. Alt Text and Images
Informative images:
<img src="chart.png" alt="Sales increased 25% in Q3" />
Decorative images:
<img src="decoration.png" alt="" />
<!-- or -->
<img src="decoration.png" role="presentation" />
Complex images:
<figure>
<img src="complex-chart.png" alt="Quarterly sales chart" />
<figcaption>
Detailed description of the chart data...
</figcaption>
</figure>
5. Color and Contrast
Contrast ratios (WCAG AA):
- Normal text: 4.5:1 minimum
- Large text (18pt+): 3:1 minimum
- UI components: 3:1 minimum
Don't rely on color alone:
<!-- Bad: Color only -->
<span style="color: red;">Error</span>
<!-- Good: Icon + color -->
<span style="color: red;">
<svg aria-hidden="true"><!-- error icon --></svg>
<span class="sr-only">Error: </span>
Invalid input
</span>
6. Forms and Labels
Every input needs a label:
<!-- Explicit label -->
<label for="email">Email</label>
<input id="email" type="email" />
<!-- Implicit label -->
<label>
Email
<input type="email" />
</label>
<!-- aria-label for icon buttons -->
<button aria-label="Search">
<svg><!-- search icon --></svg>
</button>
Error messages:
<input
id="password"
aria-invalid="true"
aria-describedby="password-error"
/>
<div id="password-error" role="alert">
Password must be at least 8 characters
</div>
7. Headings and Document Structure
Proper heading hierarchy:
<h1>Page Title</h1>
<h2>Section 1</h2>
<h3>Subsection 1.1</h3>
<h3>Subsection 1.2</h3>
<h2>Section 2</h2>
Don't skip levels: h1 → h2 → h3 (not h1 → h3)
8. Dynamic Content
Announce updates to screen readers:
<!-- Polite: wait for user to pause -->
<div role="status" aria-live="polite">
5 new messages
</div>
<!-- Assertive: interrupt immediately -->
<div role="alert" aria-live="assertive">
Your session will expire in 1 minute
</div>
Loading states:
<button aria-busy="true" aria-label="Loading...">
<span aria-hidden="true">Loading</span>
</button>
9. Screen Reader Testing
Screen reader only text:
.sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border-width: 0;
}
Hide decorative elements:
<svg aria-hidden="true"><!-- icon --></svg>
10. Common Issues to Check
Missing:
- [ ] Alt text on images
- [ ] Labels on form inputs
- [ ] Proper heading hierarchy
- [ ] Keyboard focus indicators
- [ ] ARIA labels on icon buttons
Improper:
- [ ] Low contrast text
- [ ] Non-semantic markup (divs as buttons)
- [ ] Missing focus management in modals
- [ ] Keyboard traps
- [ ] Auto-playing media
Testing:
- [ ] Keyboard only navigation
- [ ] Screen reader (NVDA, JAWS, VoiceOver)
- [ ] Color blindness simulation
- [ ] Zoom to 200%
- [ ] Automated tools (axe, Lighthouse)
11. Automated Testing
Tools:
# Lighthouse
npx lighthouse https://example.com --only-categories=accessibility
# axe-core
npm install --save-dev @axe-core/cli
npx axe https://example.com
# pa11y
npm install --save-dev pa11y
npx pa11y https://example.com
In tests:
import { axe } from 'jest-axe';
test('should have no accessibility violations', async () => {
const { container } = render(<MyComponent />);
const results = await axe(container);
expect(results).toHaveNoViolations();
});
12. WCAG 2.1 Level AA Checklist
Perceivable:
- [ ] Text alternatives for non-text content
- [ ] Captions for audio/video
- [ ] Content adaptable (semantic markup)
- [ ] Sufficient color contrast
Operable:
- [ ] Keyboard accessible
- [ ] No keyboard traps
- [ ] Adequate time limits (adjustable)
- [ ] No seizure-inducing flashing
- [ ] Skip navigation links
- [ ] Descriptive page titles
- [ ] Focus order makes sense
- [ ] Link purpose clear from context
Understandable:
- [ ] Language of page specified (
<html lang="en">) - [ ] Predictable navigation
- [ ] Input assistance (labels, instructions, error messages)
Robust:
- [ ] Valid HTML
- [ ] Name, role, value for custom widgets
- [ ] Compatible with assistive technologies
Best Practices
- Build accessibility in from start
- Test with real assistive technologies
- Use semantic HTML first, ARIA second
- Maintain logical document structure
- Provide multiple ways to access content
- Test keyboard navigation thoroughly
- Don't disable zoom
- Use landmarks and headings
Supporting Files
reference/wcag-checklist.md: Full WCAG 2.1 AA checklistreference/aria-patterns.md: Common ARIA widget patterns
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/web-accessibility-auditor-mm5t8cfy' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/web-accessibility-auditor-mm5t8cfy/download' --output '.skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md.part' && mv '.skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md.part' '.skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Read, Grep, Glob
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md' && test -s '.skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/accessibility-auditor' && cp -R '.skill-downloads/web-accessibility-auditor-mm5t8cfy' '.claude/skills/accessibility-auditor'Cursor
test -f '.skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md' && test -s '.skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md' && mkdir -p '.cursor/skills' && test ! -e '.cursor/skills/accessibility-auditor' && cp -R '.skill-downloads/web-accessibility-auditor-mm5t8cfy' '.cursor/skills/accessibility-auditor'Codex
test -f '.skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md' && test -s '.skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md' && mkdir -p '.agents/skills' && test ! -e '.agents/skills/accessibility-auditor' && cp -R '.skill-downloads/web-accessibility-auditor-mm5t8cfy' '.agents/skills/accessibility-auditor'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/web-accessibility-auditor-mm5t8cfy'openskills read 'web-accessibility-auditor-mm5t8cfy'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/web-accessibility-auditor-mm5t8cfy/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Comparaison de performances ClickHouse
Testing
Évaluez les résultats de tests de performance ClickHouse, analysez les régressions de PR, comparez avec l'historique et vérifiez la fiabilité des mesures.
Analyse des rapports de performance CI
Testing
Analyse les rapports de comparaison de performance CI pour une PR ClickHouse. Recoupe l'historique master pour distinguer les vraies régressions des tests instables.
Méthode Santa
Testing
Vérification adversarial multi-agents avec deux réviseurs indépendants. La sortie est vérifiée deux fois et corrigée itérativement jusqu'à ce que les deux acceptent avant publication.