Communitygithub.com

ultra11y

Audit HTML/CSS/JSX selon RGAA 4.1.2 + WCAG 2.1/2.2 AA (rapport daté) ou rédaction/révision de markup accessible — moteur statique zéro-dépendance + jugement agent, avec garde-fous anti-hallucination. Une skill pour agent skills.sh.

Qu'est-ce que ultra11y ?

`ultra11y` est une skill d'agent IA spécialisée dans l'audit d'accessibilité RGAA 4.1.2 et WCAG 2.1/2.2 AA. Elle sépare le travail mécanique (détection de non-conformités machine-vérifiables par un moteur zéro-dépendance) du jugement humain (pertinence des alternatives, ordre de lecture, rendu visuel). Des garde-fous stricts empêchent l'invention de fausses non-conformités. La skill supporte l'audit de fichiers HTML, JSX/TSX (best-effort), l'entrée standard, l'intégration CI/CD via hooks et baselines, la génération de rapports de conformité datés, la correction automatique (dry-run ou --write), et un tier optionnel Docker pour les tests de rendu (contraste, reflow). Les commandes sont exécutées via `node scripts/ultra11y.mjs <commande>`, sans npm install ni clé API requise. L'agent peut ainsi auditer, reporter, vérifier, corriger et automatiser le suivi de l'accessibilité dans un projet front-end.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add maxgfr/ultra11y

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

ultra11y — auditer le RGAA 4.1.2 et écrire de l'accessible

Sur l'accessibilité, un outil automatique ne voit qu'une partie des problèmes. ultra11y l'assume par une division du travail : le moteur déterministe et zéro-dépendance (node scripts/ultra11y.mjs <commande> — pas de npm install, pas de clé) fait le travail mécanique — détecter les non-conformités machine-vérifiables et les rattacher au bon critère RGAA ; vous faites le jugement — pertinence des alternatives, intitulés en contexte, ordre de lecture — et les critères qui exigent un rendu (contraste, focus, zoom). Des gates empêchent toute non-conformité hallucinée de survivre.

Règles cœur :

  1. Ne jamais inventer de non-conformité : chaque NC cite un élément réel et résoluble (check le vérifie).
  2. HTML natif d'abord, ARIA en dernier ; ne dupliquez pas une sémantique implicite.
  3. Le résidu est explicite : tout critère rendu/jugement non prouvé va dans « à évaluer manuellement », jamais marqué conforme en silence.

Choisir selon la situation

  • « Auditer / rapport de conformité » → node scripts/ultra11y.mjs audit … --json, puis report, puis check ; lire references/audit.md.
  • « Sur un gros dépôt / auditer malin » → se focaliser : --changed (diff git), priorisation des gabarits, dédup, --max-files ; lire references/scale.md.
  • « Mettre en place les fix » → fix (dry-run par défaut, --write applique les correctifs sûrs, propose le reste sans rien inventer) ; lire references/fix.md.
  • « Garde automatique dans le repo (hook / CI) » → init --hook/--ci/--baseline (n'échoue que sur les nouvelles non-conformités) ; lire references/automation.md.
  • « Rendre ce code accessible / le revoir » → auditer l'extrait (audit - < composant.html) en suivant le natif-d'abord ; lire references/authoring.md et references/forbidden-patterns.md.
  • « Que signifie le critère X / quelle thématique » → criteria ; voir references/criteria.md.
  • « Lecture internationale (WCAG / EN 301 549 / Section 508) » → --standard wcag sur report/criteria ; voir references/methodology.md.
  • « Audit à haute assurance » → verify --report … --semantic ; voir references/verify.md. Méthodologie & format : references/methodology.md.
  • « Vérifier le contraste / le rendu (tier optionnel Docker) » → scan <url> --merge … (axe-core dans un navigateur headless) ; voir references/dynamic.md.

Aide-mémoire des commandes

node scripts/ultra11y.mjs audit "src/**/*.html" --json > audit.json
node scripts/ultra11y.mjs audit - < composant.html        # HTML via stdin
node scripts/ultra11y.mjs audit "src/**/*.tsx" --jsx       # JSX/TSX best-effort
node scripts/ultra11y.mjs audit --changed --json           # seulement le diff git (gros dépôt)
node scripts/ultra11y.mjs report --in audit.json --out audits
node scripts/ultra11y.mjs report --in audit.json --standard wcag   # vue WCAG (présentation)
node scripts/ultra11y.mjs criteria 11.1                    # un critère + ses tests
node scripts/ultra11y.mjs criteria --theme 8 --list        # une thématique / la liste
node scripts/ultra11y.mjs check  --report audits/rgaa-AAAA-MM-JJ.md
node scripts/ultra11y.mjs verify --report audits/rgaa-AAAA-MM-JJ.md --semantic
node scripts/ultra11y.mjs fix "src/**/*.html"              # dry-run ; --write applique
node scripts/ultra11y.mjs init --hook --baseline           # garde de régression (hook + baseline)
node scripts/ultra11y.mjs scan https://exemple.fr --merge audits/audit-latest.json  # tier Docker

Sortie machine partout avec --json. Rapport en français par défaut, --lang en disponible.

Combiner moteur, jugement et risque résiduel

La sortie audit classe chaque critère : C/NC/NA pour le sous-ensemble statique ; manual pour les critères de rendu/jugement (listés en residualRisks). Les NC du moteur sont des candidats confirmés (cités fichier:ligne). À vous de trancher les critères manual, et de marquer les critères de rendu « à vérifier manuellement ». Le rapport n'est complet que lorsque chaque critère applicable est C/NC/NA justifié et que chaque risque résiduel est nommé.

À ne pas faire

  • Inventer une non-conformité que le moteur n'a pas trouvée et que vous ne pouvez pas voir (le contraste sur couleurs inline littérales est tranché en statique ; le contraste calculé — CSS externe, variables — passe par scan (tier Docker) ou se vérifie au rendu avant d'être déclaré).
  • Ajouter de l'ARIA qui double la sémantique native.
  • Marquer un critère de rendu/jugement « conforme » sans vérification humaine.
  • Éditer à la main references/criteria.md (généré depuis le référentiel).

Portée

Moteur statique : hors-ligne, déterministe, zéro-dépendance ; entrées HTML + JSX/TSX (best-effort) + stdin. Les critères de rendu (contraste calculé, reflow) sont couverts par le tier optionnel scan (axe-core dans Docker) ; le focus visible, le zoom texte 200% et les contenus au survol restent en revue humaine (risque résiduel). Données : RGAA 4.1.2 © DINUM, Licence Ouverte / Etalab 2.0 (voir NOTICE).

Skills associés