Communitygithub.com

ultra11y

Auditar HTML/CSS/JSX según RGAA 4.1.2 + WCAG 2.1/2.2 AA (informe fechado) o crear/revisar marcado accesible — un motor estático sin dependencias + juicio del agente, con compuertas anti-alucinación. Un skill de agente de skills.sh.

¿Qué es ultra11y?

ultra11y es un skill para agentes de IA (como Claude Code, Cursor, Codex) que automatiza la auditoría y corrección de accesibilidad web según RGAA 4.1.2 y WCAG 2.1/2.2 AA. Combina un motor estático robusto y sin dependencias (ejecutable con `node scripts/ultra11y.mjs`) con el juicio humano, evitando alucinaciones mediante compuertas que impiden inventar no conformidades. El motor detecta de forma determinista problemas máquina-verificables (fallos de HTML semántico, atributos, roles ARIA erróneos) y los vincula al criterio RGAA correspondiente; los criterios que requieren interpretación visual (contraste calculado, foco visible, zoom) se delegan al agente como 'evaluación manual'. Soporta auditoría completa, generación de informes (JSON/Markdown), corrección automática segura (dry-run y `--write`), integración CI/CD, y un tier opcional con Docker para análisis dinámico de contraste. Su diseño anti-alucinación y su división clara entre trabajo mecánico y juicio lo hacen ideal para equipos que buscan informes de conformidad fiables y repetibles sin depender de APIs externas ni claves.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

ultra11y — auditar el RGAA 4.1.2 y escribir accesible

En accesibilidad, una herramienta automática solo ve una parte de los problemas. ultra11y lo asume con una división del trabajo: el motor determinista y sin dependencias (node scripts/ultra11y.mjs <comando> — sin npm install, sin clave) hace el trabajo mecánico — detectar las no conformidades verificables por máquina y vincularlas al criterio RGAA correcto; usted hace el juicio — pertinencia de alternativas, etiquetas en contexto, orden de lectura — y los criterios que exigen una representación (contraste, foco, zoom). Compuertas impiden que sobreviva cualquier no conformidad alucinada.

Reglas principales:

  1. Nunca inventar una no conformidad: cada NC cita un elemento real y solucionable (check lo verifica).
  2. HTML nativo primero, ARIA al final; no duplique una semántica implícita.
  3. El residuo es explícito: todo criterio de representación/juicio no probado va a «a evaluar manualmente», nunca marcado conforme en silencio.

Elegir según la situación

  • «Auditar / informe de conformidad» → node scripts/ultra11y.mjs audit … --json, luego report, luego check; leer references/audit.md.
  • «En un repositorio grande / auditar inteligentemente» → enfocarse: --changed (diff git), priorización de plantillas, dedup, --max-files; leer references/scale.md.
  • «Implementar las correcciones» → fix (dry-run por defecto, --write aplica las correcciones seguras, propone el resto sin inventar nada); leer references/fix.md.
  • «Guardia automática en el repo (hook / CI)» → init --hook/--ci/--baseline (solo falla en nuevas no conformidades); leer references/automation.md.
  • «Hacer accesible este código / revisarlo» → auditar el fragmento (audit - < componente.html) siguiendo nativo-primero; leer references/authoring.md y references/forbidden-patterns.md.
  • «Qué significa el criterio X / qué temática» → criteria; ver references/criteria.md.
  • «Lectura internacional (WCAG / EN 301 549 / Section 508)» → --standard wcag en report/criteria; ver references/methodology.md.
  • «Auditoría de alta confianza» → verify --report … --semantic; ver references/verify.md. Metodología y formato: references/methodology.md.
  • «Verificar contraste / representación (tier opcional Docker)» → scan <url> --merge … (axe-core en un navegador headless); ver references/dynamic.md.

Ayuda memoria de comandos

node scripts/ultra11y.mjs audit "src/**/*.html" --json > audit.json
node scripts/ultra11y.mjs audit - < componente.html        # HTML vía stdin
node scripts/ultra11y.mjs audit "src/**/*.tsx" --jsx       # JSX/TSX best-effort
node scripts/ultra11y.mjs audit --changed --json           # solo el diff git (repositorio grande)
node scripts/ultra11y.mjs report --in audit.json --out audits
node scripts/ultra11y.mjs report --in audit.json --standard wcag   # vista WCAG (presentación)
node scripts/ultra11y.mjs criteria 11.1                    # un criterio + sus pruebas
node scripts/ultra11y.mjs criteria --theme 8 --list        # una temática / la lista
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 aplica
node scripts/ultra11y.mjs init --hook --baseline           # guardia de regresión (hook + baseline)
node scripts/ultra11y.mjs scan https://ejemplo.es --merge audits/audit-latest.json  # tier Docker

Salida máquina en todas partes con --json. Informe en español por defecto, --lang en disponible.

Combinar motor, juicio y riesgo residual

La salida audit clasifica cada criterio: C/NC/NA para el subconjunto estático; manual para los criterios de representación/juicio (listados en residualRisks). Las NC del motor son candidatos confirmados (citados archivo:línea). Usted debe decidir los criterios manual, y marcar los criterios de representación «a verificar manualmente». El informe solo está completo cuando cada criterio aplicable es C/NC/NA justificado y cada riesgo residual está nombrado.

Qué no hacer

  • Inventar una no conformidad que el motor no encontró y que usted no puede ver (el contraste sobre colores inline literales se decide en estático; el contraste calculado — CSS externo, variables — pasa por scan (tier Docker) o se verifica en la representación antes de declararse).
  • Añadir ARIA que duplique la semántica nativa.
  • Marcar un criterio de representación/juicio como «conforme» sin verificación humana.
  • Editar manualmente references/criteria.md (generado desde el repositorio).

Alcance

Motor estático: offline, determinista, sin dependencias; entradas HTML + JSX/TSX (best-effort) + stdin. Los criterios de representación (contraste calculado, reflow) los cubre el tier opcional scan (axe-core en Docker); el foco visible, el zoom texto 200% y los contenidos al pasar el ratón quedan en revisión humana (riesgo residual). Datos: RGAA 4.1.2 © DINUM, Licencia Abierta / Etalab 2.0 (ver NOTICE).

Skills relacionados