ai-ccesibility 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/USAGE.md ADDED
@@ -0,0 +1,498 @@
1
+ # Guía de Uso - AI-ccesibility
2
+
3
+ Esta guía proporciona ejemplos prácticos de cómo usar las herramientas de accesibilidad desde Cursor o Claude Desktop.
4
+
5
+ ## Contenido
6
+
7
+ - [Casos de Uso Comunes](#casos-de-uso-comunes)
8
+ - [Ejemplos por Herramienta](#ejemplos-por-herramienta)
9
+ - [Prompts Efectivos](#prompts-efectivos)
10
+ - [Interpretación de Resultados](#interpretación-de-resultados)
11
+ - [Workflows Recomendados](#workflows-recomendados)
12
+
13
+ ---
14
+
15
+ ## Casos de Uso Comunes
16
+
17
+ ### 1. Auditoría Rápida de una Página Web
18
+
19
+ **Prompt:**
20
+ ```
21
+ Analiza la accesibilidad de https://mi-sitio.com usando todas las herramientas disponibles
22
+ ```
23
+
24
+ **¿Qué herramienta se usará?**
25
+ → `analyze-all` (axe-core + Pa11y en paralelo)
26
+
27
+ **Resultado esperado:**
28
+ - Issues combinados y deduplicados
29
+ - Agrupados por criterio WCAG
30
+ - Con contexto humano enriquecido
31
+
32
+ ---
33
+
34
+ ### 2. Análisis Profundo con una Herramienta Específica
35
+
36
+ **Prompt:**
37
+ ```
38
+ Usa solo axe-core para analizar https://mi-sitio.com y dame un reporte detallado
39
+ ```
40
+
41
+ **¿Qué herramienta se usará?**
42
+ → `analyze-with-axe`
43
+
44
+ **Ventaja:**
45
+ Resultados más rápidos, metadata específica de axe-core.
46
+
47
+ ---
48
+
49
+ ### 3. Análisis de HTML Local o en Desarrollo
50
+
51
+ **Prompt:**
52
+ ```
53
+ Revisa este HTML para problemas de accesibilidad:
54
+ <form>
55
+ <input type="text" placeholder="Nombre">
56
+ <button>Enviar</button>
57
+ </form>
58
+ ```
59
+
60
+ **¿Qué herramienta se usará?**
61
+ → `analyze-all` o `analyze-with-axe`
62
+
63
+ **Issues típicos que encontrará:**
64
+ - Falta de `<label>` asociado al input (WCAG 1.3.1)
65
+ - Button sin `type="submit"` explícito
66
+
67
+ ---
68
+
69
+ ### 4. Linting Estático de Componentes Vue
70
+
71
+ **Prompt:**
72
+ ```
73
+ Analiza los problemas de accesibilidad en src/components/LoginForm.vue
74
+ ```
75
+
76
+ **¿Qué herramienta se usará?**
77
+ → `analyze-with-eslint`
78
+
79
+ **Issues típicos:**
80
+ - `v-if` en elementos interactivos sin `tabindex`
81
+ - Eventos `@click` sin `@keydown` equivalente
82
+ - Imágenes sin `alt`
83
+
84
+ ---
85
+
86
+ ### 5. Comparación de Herramientas
87
+
88
+ **Prompt:**
89
+ ```
90
+ Compara los resultados de axe-core y Pa11y en https://ejemplo.com
91
+ ¿Qué diferencias encuentran?
92
+ ```
93
+
94
+ **¿Qué herramienta se usará?**
95
+ → `analyze-all` con campo `individualResults`
96
+
97
+ **Útil para:**
98
+ - Validar falsos positivos
99
+ - Entender diferencias entre herramientas
100
+ - Decisiones sobre qué tool usar en CI/CD
101
+
102
+ ---
103
+
104
+ ## Ejemplos por Herramienta
105
+
106
+ ### `analyze-with-axe`
107
+
108
+ #### Ejemplo 1: Análisis básico
109
+ ```
110
+ Analiza con axe-core: https://example.com
111
+ ```
112
+
113
+ #### Ejemplo 2: Solo criterios WCAG AA
114
+ ```
115
+ Analiza https://example.com con axe-core, nivel WCAG AA únicamente
116
+ ```
117
+
118
+ #### Ejemplo 3: Esperar carga de contenido dinámico
119
+ ```
120
+ Analiza https://spa-app.com con axe-core, esperando a que aparezca el selector #main-content
121
+ ```
122
+
123
+ **Input equivalente:**
124
+ ```json
125
+ {
126
+ "url": "https://spa-app.com",
127
+ "options": {
128
+ "wcagLevel": "AA",
129
+ "browser": {
130
+ "waitForSelector": "#main-content"
131
+ }
132
+ }
133
+ }
134
+ ```
135
+
136
+ ---
137
+
138
+ ### `analyze-with-pa11y`
139
+
140
+ #### Ejemplo 1: Análisis con warnings
141
+ ```
142
+ Analiza https://example.com con Pa11y incluyendo warnings
143
+ ```
144
+
145
+ #### Ejemplo 2: Solo errores críticos
146
+ ```
147
+ Usa Pa11y para analizar https://example.com excluyendo warnings y notices
148
+ ```
149
+
150
+ **Input equivalente:**
151
+ ```json
152
+ {
153
+ "url": "https://example.com",
154
+ "options": {
155
+ "standard": "WCAG21AA",
156
+ "includeWarnings": false,
157
+ "includeNotices": false
158
+ }
159
+ }
160
+ ```
161
+
162
+ ---
163
+
164
+ ### `analyze-with-eslint`
165
+
166
+ #### Ejemplo 1: Analizar archivo único
167
+ ```
168
+ Revisa problemas de accesibilidad en src/components/Header.vue
169
+ ```
170
+
171
+ #### Ejemplo 2: Analizar directorio completo
172
+ ```
173
+ Analiza todos los archivos Vue en src/components/ para problemas de accesibilidad
174
+ ```
175
+
176
+ #### Ejemplo 3: Código inline
177
+ ```
178
+ ¿Este componente Vue tiene problemas de accesibilidad?
179
+ <template>
180
+ <div @click="handleClick">Click me</div>
181
+ </template>
182
+ ```
183
+
184
+ **Issues esperados:**
185
+ - `no-static-element-interactions`: div no interactivo con evento click
186
+ - Falta de `role="button"` y manejo de teclado
187
+
188
+ ---
189
+
190
+ ### `analyze-all`
191
+
192
+ #### Ejemplo 1: Análisis completo
193
+ ```
194
+ Haz un análisis completo de accesibilidad de https://mi-landing.com
195
+ ```
196
+
197
+ #### Ejemplo 2: Sin deduplicación
198
+ ```
199
+ Analiza https://example.com con axe-core y Pa11y, muéstrame TODOS los issues sin deduplicar
200
+ ```
201
+
202
+ **Input equivalente:**
203
+ ```json
204
+ {
205
+ "url": "https://example.com",
206
+ "tools": ["axe-core", "pa11y"],
207
+ "options": {
208
+ "deduplicateResults": false
209
+ }
210
+ }
211
+ ```
212
+
213
+ ---
214
+
215
+ ## Prompts Efectivos
216
+
217
+ ### ✅ Buenos Prompts
218
+
219
+ #### Específicos y con contexto
220
+ ```
221
+ Analiza la página de checkout en https://tienda.com/checkout
222
+ y prioriza los issues que afecten a usuarios de lectores de pantalla
223
+ ```
224
+
225
+ #### Con restricciones claras
226
+ ```
227
+ Dame solo los issues críticos (severity: critical) de https://example.com
228
+ que tengan esfuerzo de corrección bajo (remediationEffort: low)
229
+ ```
230
+
231
+ #### Solicitan interpretación
232
+ ```
233
+ Analiza https://formulario.com y explícame cuáles son los 3 problemas
234
+ más urgentes de resolver y por qué
235
+ ```
236
+
237
+ #### Con objetivos de negocio
238
+ ```
239
+ Vamos a lanzar la web en 2 días. Analiza https://pre-prod.com
240
+ y dime qué issues debo arreglar SÍ o SÍ antes del lanzamiento
241
+ ```
242
+
243
+ ---
244
+
245
+ ### ❌ Prompts Mejorables
246
+
247
+ #### Demasiado vagos
248
+ ```
249
+ ¿Mi sitio es accesible?
250
+ ```
251
+ **Mejor:** Especifica la URL y qué aspectos te preocupan.
252
+
253
+ #### Sin contexto de acción
254
+ ```
255
+ Analiza https://example.com
256
+ ```
257
+ **Mejor:** Añade qué quieres hacer con los resultados.
258
+
259
+ #### Mezclando tipos de análisis
260
+ ```
261
+ Analiza https://example.com y también src/components/*.vue
262
+ ```
263
+ **Mejor:** Haz dos análisis separados (web vs código fuente).
264
+
265
+ ---
266
+
267
+ ## Interpretación de Resultados
268
+
269
+ ### Campos Clave en los Issues
270
+
271
+ ```json
272
+ {
273
+ "ruleId": "image-alt",
274
+ "severity": "serious",
275
+ "wcag": {
276
+ "criterion": "1.1.1",
277
+ "level": "A",
278
+ "principle": "perceivable"
279
+ },
280
+ "priority": "critical",
281
+ "remediationEffort": "low",
282
+ "affectedUsers": ["screen-reader", "low-vision"]
283
+ }
284
+ ```
285
+
286
+ ### Cómo Priorizar
287
+
288
+ #### Matriz de Priorización
289
+
290
+ | Priority | Effort | Acción |
291
+ |----------|--------|--------|
292
+ | **Critical** | **Low** | 🔥 **Fix inmediatamente** |
293
+ | **Critical** | Medium/High | 📅 Planificar para próximo sprint |
294
+ | **High** | **Low** | ✅ Quick wins - hacer pronto |
295
+ | Medium/Low | High | 📝 Backlog - evaluar vs impacto |
296
+
297
+ #### Ejemplo de Triage
298
+
299
+ **Prompt:**
300
+ ```
301
+ Del análisis anterior, muéstrame:
302
+ 1. Issues críticos con esfuerzo bajo (arreglar hoy)
303
+ 2. Issues high con esfuerzo bajo (arreglar esta semana)
304
+ 3. El resto agrupado por principio WCAG
305
+ ```
306
+
307
+ ---
308
+
309
+ ## Workflows Recomendados
310
+
311
+ ### Workflow 1: Pre-Deploy Check
312
+
313
+ ```
314
+ 1. Analiza https://staging.mi-app.com con todas las herramientas
315
+ 2. Filtra solo issues críticos y de alto impacto
316
+ 3. Si hay issues críticos → bloquear deploy
317
+ 4. Si solo hay issues medium/low → registrar en backlog y deployar
318
+ ```
319
+
320
+ **Prompt sugerido:**
321
+ ```
322
+ Analiza staging.mi-app.com y dime si hay algún issue crítico
323
+ que justifique retrasar el deploy
324
+ ```
325
+
326
+ ---
327
+
328
+ ### Workflow 2: Code Review de PRs
329
+
330
+ ```
331
+ 1. Desarrollador crea PR con cambios en componentes Vue
332
+ 2. Analizar archivos modificados con ESLint
333
+ 3. Si hay issues severity serious/critical → request changes
334
+ 4. Si solo hay warnings → aprobar con comentarios
335
+ ```
336
+
337
+ **Prompt sugerido:**
338
+ ```
339
+ Analiza estos componentes modificados en el PR:
340
+ - src/components/PaymentForm.vue
341
+ - src/components/AddressInput.vue
342
+
343
+ ¿Hay algo que deba corregirse antes de hacer merge?
344
+ ```
345
+
346
+ ---
347
+
348
+ ### Workflow 3: Auditoría Periódica
349
+
350
+ ```
351
+ 1. Cada sprint, analizar la web de producción
352
+ 2. Comparar con análisis anterior
353
+ 3. Identificar regresiones (nuevos issues)
354
+ 4. Priorizar fixes para próximo sprint
355
+ ```
356
+
357
+ **Prompt sugerido:**
358
+ ```
359
+ Analiza https://produccion.com y compara con el análisis
360
+ del mes pasado. ¿Hemos introducido nuevos problemas?
361
+ ```
362
+
363
+ ---
364
+
365
+ ### Workflow 4: Formación del Equipo
366
+
367
+ ```
368
+ 1. Analizar una página con issues variados
369
+ 2. Revisar campo humanContext de cada issue
370
+ 3. Entender ejemplos del mundo real
371
+ 4. Aplicar soluciones sugeridas (suggestedActions)
372
+ ```
373
+
374
+ **Prompt sugerido:**
375
+ ```
376
+ Analiza https://demo.com y explícame en detalle
377
+ el issue WCAG 1.1.1 (Contenido no textual):
378
+ - Qué usuarios afecta
379
+ - Ejemplo real de cómo les impacta
380
+ - Cómo corregirlo paso a paso
381
+ ```
382
+
383
+ ---
384
+
385
+ ## Tips Avanzados
386
+
387
+ ### 1. Análisis de SPA con Lazy Loading
388
+
389
+ ```json
390
+ {
391
+ "url": "https://spa-app.com",
392
+ "options": {
393
+ "browser": {
394
+ "waitForSelector": "[data-loaded='true']",
395
+ "waitForTimeout": 5000
396
+ }
397
+ }
398
+ }
399
+ ```
400
+
401
+ ### 2. Viewport Móvil
402
+
403
+ ```json
404
+ {
405
+ "url": "https://responsive-site.com",
406
+ "options": {
407
+ "browser": {
408
+ "viewport": {
409
+ "width": 375,
410
+ "height": 667
411
+ }
412
+ }
413
+ }
414
+ }
415
+ ```
416
+
417
+ ### 3. Excluir Reglas Específicas
418
+
419
+ Útil si tienes un falso positivo conocido:
420
+
421
+ ```json
422
+ {
423
+ "url": "https://example.com",
424
+ "options": {
425
+ "excludeRules": ["color-contrast"]
426
+ }
427
+ }
428
+ ```
429
+
430
+ ---
431
+
432
+ ## Preguntas Frecuentes
433
+
434
+ ### ¿Qué herramienta usar en CI/CD?
435
+
436
+ - **Para web deployada:** `analyze-all` (cobertura máxima)
437
+ - **Para código Vue:** `analyze-with-eslint` (rápido, sin browser)
438
+
439
+ ### ¿Cómo manejar falsos positivos?
440
+
441
+ 1. Verifica con segunda herramienta
442
+ 2. Revisa `confidence` score (< 0.8 puede ser falso positivo)
443
+ 3. Usa `excludeRules` si es falso positivo confirmado
444
+
445
+ ### ¿Puedo analizar sitios con login?
446
+
447
+ Actualmente no. Las herramientas analizan la página pública. Para análisis autenticado, considera:
448
+ - Configurar browser compartido con cookies
449
+ - Usar HTML capturado post-login
450
+
451
+ ---
452
+
453
+ ## Ejemplos de Respuestas Típicas
454
+
455
+ ### Respuesta con Context Enriquecido
456
+
457
+ ```json
458
+ {
459
+ "ruleId": "image-alt",
460
+ "message": "Images must have alternate text",
461
+ "humanContext": "**Contenido no textual (WCAG 1.1.1 - Nivel A)**\n\nTodo contenido no textual debe tener una alternativa de texto que cumpla el mismo propósito.\n\n**Impacto en usuarios:**\nLos usuarios de lectores de pantalla no pueden acceder a la información transmitida por imágenes...",
462
+ "suggestedActions": [
463
+ "Añadir atributo alt descriptivo a imágenes",
464
+ "Usar aria-label para iconos decorativos con función"
465
+ ],
466
+ "affectedUsers": ["screen-reader", "low-vision"],
467
+ "priority": "critical",
468
+ "remediationEffort": "low"
469
+ }
470
+ ```
471
+
472
+ ### Issues Agrupados por WCAG
473
+
474
+ ```json
475
+ {
476
+ "issuesByWCAG": {
477
+ "1.1.1": [
478
+ { "ruleId": "image-alt", ... },
479
+ { "ruleId": "input-image-alt", ... }
480
+ ],
481
+ "2.1.1": [
482
+ { "ruleId": "button-name", ... }
483
+ ]
484
+ }
485
+ }
486
+ ```
487
+
488
+ ---
489
+
490
+ ## Recursos Adicionales
491
+
492
+ - **WCAG Quick Reference:** https://www.w3.org/WAI/WCAG21/quickref/
493
+ - **MDN Accessibility:** https://developer.mozilla.org/en-US/docs/Web/Accessibility
494
+ - **WAI-ARIA Authoring Practices:** https://www.w3.org/WAI/ARIA/apg/
495
+
496
+ ---
497
+
498
+ ¿Tienes dudas? Revisa el [README.md](./README.md) o abre un issue en el repositorio.
@@ -0,0 +1,2 @@
1
+
2
+ export { }