theus-cli-linux-x64 1.2.1 → 1.3.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/README.md +15 -0
- package/RELEASE.json +6 -6
- package/bin/theus +0 -0
- package/package.json +1 -1
- package/vendor/chrome-extension/README.md +142 -0
- package/vendor/chrome-extension/background.js +540 -0
- package/vendor/chrome-extension/cdp-core.js +400 -0
- package/vendor/chrome-extension/cdp-core.test.ts +321 -0
- package/vendor/chrome-extension/cdp.js +672 -0
- package/vendor/chrome-extension/icons/icon128.png +0 -0
- package/vendor/chrome-extension/icons/icon16.png +0 -0
- package/vendor/chrome-extension/icons/icon32.png +0 -0
- package/vendor/chrome-extension/icons/icon48.png +0 -0
- package/vendor/chrome-extension/manifest.json +36 -0
- package/vendor/chrome-extension/popup.html +78 -0
- package/vendor/chrome-extension/popup.js +47 -0
- package/vendor/chrome-extension/recorder.js +316 -0
- package/vendor/higiene-motor/PARCHES.md +244 -0
- package/vendor/higiene-motor/audit_dir.py +166 -0
- package/vendor/higiene-motor/audit_lib.py +333 -0
- package/vendor/higiene-motor/audit_website.py +635 -0
- package/vendor/higiene-motor/av_meta.py +498 -0
- package/vendor/higiene-motor/check_staged.py +71 -0
- package/vendor/higiene-motor/clean_ctrlregen.py +212 -0
- package/vendor/higiene-motor/clean_file.py +237 -0
- package/vendor/higiene-motor/clean_image.py +218 -0
- package/vendor/higiene-motor/clean_staged.py +143 -0
- package/vendor/higiene-motor/clean_text.py +108 -0
- package/vendor/higiene-motor/common.py +486 -0
- package/vendor/higiene-motor/container_meta.py +2522 -0
- package/vendor/higiene-motor/detect_gumbel.py +308 -0
- package/vendor/higiene-motor/detect_text_watermark.py +613 -0
- package/vendor/higiene-motor/format_dispatch.py +157 -0
- package/vendor/higiene-motor/hook_written_file.py +253 -0
- package/vendor/higiene-motor/image_meta.py +2171 -0
- package/vendor/higiene-motor/inspect_file.py +138 -0
- package/vendor/higiene-motor/inspect_image.py +72 -0
- package/vendor/higiene-motor/inspect_text.py +86 -0
- package/vendor/higiene-motor/markdiffusion_harness.py +533 -0
- package/vendor/higiene-motor/rewrite_text.py +737 -0
- package/vendor/higiene-motor/score_stylometry.py +460 -0
- package/vendor/higiene-motor/score_synthid.py +165 -0
- package/vendor/higiene-motor/server.py +1059 -0
- package/vendor/higiene-motor/synthid_score_server.py +176 -0
- package/vendor/higiene-motor/text_detectors.py +433 -0
- package/vendor/higiene-motor/text_unicode.py +730 -0
- package/vendor/theus-arsenal/.arsenal-nombres-ola2.json +0 -6
- package/vendor/theus-arsenal/.arsenal-nombres-ola3.json +0 -72
- package/vendor/theus-arsenal/.mailmap +0 -2
- package/vendor/theus-arsenal/.theus-plugin/marketplace.json +0 -25
- package/vendor/theus-arsenal/.theus-plugin/plugin.json +0 -20
- package/vendor/theus-arsenal/AUTHORS.md +0 -8
- package/vendor/theus-arsenal/CLEANROOM_REPLACEMENT_PLAN.md +0 -11
- package/vendor/theus-arsenal/LICENSE +0 -26
- package/vendor/theus-arsenal/PROVENANCE.md +0 -9
- package/vendor/theus-arsenal/README.md +0 -41
- package/vendor/theus-arsenal/THIRD_PARTY.md +0 -80
- package/vendor/theus-arsenal/agents/actualizador-docs.md +0 -123
- package/vendor/theus-arsenal/agents/analista-comentarios.md +0 -53
- package/vendor/theus-arsenal/agents/analista-conversaciones.md +0 -60
- package/vendor/theus-arsenal/agents/analista-tests-pr.md +0 -53
- package/vendor/theus-arsenal/agents/analista-tipos.md +0 -49
- package/vendor/theus-arsenal/agents/arquitecto-accesibilidad.md +0 -148
- package/vendor/theus-arsenal/agents/arquitecto-codigo.md +0 -79
- package/vendor/theus-arsenal/agents/arquitecto-homelab.md +0 -90
- package/vendor/theus-arsenal/agents/arquitecto-redes.md +0 -116
- package/vendor/theus-arsenal/agents/arquitecto-sistemas.md +0 -219
- package/vendor/theus-arsenal/agents/bifurcador-opensource.md +0 -206
- package/vendor/theus-arsenal/agents/cazador-fallos-silenciosos.md +0 -58
- package/vendor/theus-arsenal/agents/consultor-documentacion.md +0 -76
- package/vendor/theus-arsenal/agents/diagnosticador-redes.md +0 -135
- package/vendor/theus-arsenal/agents/ejecutor-e2e.md +0 -96
- package/vendor/theus-arsenal/agents/empaquetador-opensource.md +0 -257
- package/vendor/theus-arsenal/agents/escaner-secretos.md +0 -196
- package/vendor/theus-arsenal/agents/especialista-seo.md +0 -70
- package/vendor/theus-arsenal/agents/estratega-marketing.md +0 -158
- package/vendor/theus-arsenal/agents/evaluador-agentes.md +0 -214
- package/vendor/theus-arsenal/agents/evaluador-harness.md +0 -217
- package/vendor/theus-arsenal/agents/explorador-codigo.md +0 -79
- package/vendor/theus-arsenal/agents/extractor-specs.md +0 -214
- package/vendor/theus-arsenal/agents/generador-harness.md +0 -139
- package/vendor/theus-arsenal/agents/guia-tdd.md +0 -99
- package/vendor/theus-arsenal/agents/jefe-de-gabinete.md +0 -162
- package/vendor/theus-arsenal/agents/limpiador-refactors.md +0 -93
- package/vendor/theus-arsenal/agents/optimizador-rendimiento.md +0 -454
- package/vendor/theus-arsenal/agents/planificador-harness.md +0 -107
- package/vendor/theus-arsenal/agents/planificador.md +0 -221
- package/vendor/theus-arsenal/agents/resolutor-apps-harmonyos.md +0 -181
- package/vendor/theus-arsenal/agents/resolutor-builds-cpp.md +0 -98
- package/vendor/theus-arsenal/agents/resolutor-builds-dart.md +0 -209
- package/vendor/theus-arsenal/agents/resolutor-builds-django.md +0 -253
- package/vendor/theus-arsenal/agents/resolutor-builds-go.md +0 -102
- package/vendor/theus-arsenal/agents/resolutor-builds-java.md +0 -274
- package/vendor/theus-arsenal/agents/resolutor-builds-kotlin.md +0 -128
- package/vendor/theus-arsenal/agents/resolutor-builds-pytorch.md +0 -128
- package/vendor/theus-arsenal/agents/resolutor-builds-react.md +0 -214
- package/vendor/theus-arsenal/agents/resolutor-builds-rust.md +0 -156
- package/vendor/theus-arsenal/agents/resolutor-builds-swift.md +0 -169
- package/vendor/theus-arsenal/agents/resolutor-builds.md +0 -122
- package/vendor/theus-arsenal/agents/revisor-bd.md +0 -97
- package/vendor/theus-arsenal/agents/revisor-codigo.md +0 -291
- package/vendor/theus-arsenal/agents/revisor-config-red.md +0 -116
- package/vendor/theus-arsenal/agents/revisor-cpp.md +0 -80
- package/vendor/theus-arsenal/agents/revisor-csharp.md +0 -109
- package/vendor/theus-arsenal/agents/revisor-django.md +0 -168
- package/vendor/theus-arsenal/agents/revisor-fastapi.md +0 -82
- package/vendor/theus-arsenal/agents/revisor-flutter.md +0 -251
- package/vendor/theus-arsenal/agents/revisor-go.md +0 -84
- package/vendor/theus-arsenal/agents/revisor-java.md +0 -192
- package/vendor/theus-arsenal/agents/revisor-kotlin.md +0 -171
- package/vendor/theus-arsenal/agents/revisor-ml.md +0 -159
- package/vendor/theus-arsenal/agents/revisor-php.md +0 -108
- package/vendor/theus-arsenal/agents/revisor-python.md +0 -106
- package/vendor/theus-arsenal/agents/revisor-react.md +0 -166
- package/vendor/theus-arsenal/agents/revisor-rust.md +0 -102
- package/vendor/theus-arsenal/agents/revisor-seguridad.md +0 -116
- package/vendor/theus-arsenal/agents/revisor-software-clinico.md +0 -95
- package/vendor/theus-arsenal/agents/revisor-swift.md +0 -115
- package/vendor/theus-arsenal/agents/revisor-typescript.md +0 -123
- package/vendor/theus-arsenal/agents/revisor-vue.md +0 -205
- package/vendor/theus-arsenal/agents/simplificador-codigo.md +0 -55
- package/vendor/theus-arsenal/commands/actualizar-docs.md +0 -88
- package/vendor/theus-arsenal/commands/actualizar-mapas-codigo.md +0 -78
- package/vendor/theus-arsenal/commands/aprender-evaluar.md +0 -109
- package/vendor/theus-arsenal/commands/aprender.md +0 -74
- package/vendor/theus-arsenal/commands/arreglar-build.md +0 -66
- package/vendor/theus-arsenal/commands/bucle-multiperspectiva.md +0 -153
- package/vendor/theus-arsenal/commands/build-cpp.md +0 -173
- package/vendor/theus-arsenal/commands/build-flutter.md +0 -164
- package/vendor/theus-arsenal/commands/build-go.md +0 -183
- package/vendor/theus-arsenal/commands/build-gradle.md +0 -75
- package/vendor/theus-arsenal/commands/build-kotlin.md +0 -176
- package/vendor/theus-arsenal/commands/build-react.md +0 -187
- package/vendor/theus-arsenal/commands/build-rust.md +0 -187
- package/vendor/theus-arsenal/commands/campana-marketing.md +0 -125
- package/vendor/theus-arsenal/commands/checkpoint.md +0 -78
- package/vendor/theus-arsenal/commands/cobertura-tests.md +0 -73
- package/vendor/theus-arsenal/commands/configurar-gestor-paquetes.md +0 -86
- package/vendor/theus-arsenal/commands/consulta.md +0 -164
- package/vendor/theus-arsenal/commands/control-calidad.md +0 -50
- package/vendor/theus-arsenal/commands/crear-skill.md +0 -77
- package/vendor/theus-arsenal/commands/enrutar-modelo.md +0 -30
- package/vendor/theus-arsenal/commands/epica-desbloquear.md +0 -17
- package/vendor/theus-arsenal/commands/epica-descomponer.md +0 -22
- package/vendor/theus-arsenal/commands/epica-publicar.md +0 -21
- package/vendor/theus-arsenal/commands/epica-reclamar.md +0 -25
- package/vendor/theus-arsenal/commands/epica-revisar.md +0 -22
- package/vendor/theus-arsenal/commands/epica-sincronizar.md +0 -21
- package/vendor/theus-arsenal/commands/epica-validar.md +0 -21
- package/vendor/theus-arsenal/commands/evolucionar.md +0 -176
- package/vendor/theus-arsenal/commands/funcionalidad.md +0 -49
- package/vendor/theus-arsenal/commands/guardar-sesion.md +0 -278
- package/vendor/theus-arsenal/commands/harness-build.md +0 -111
- package/vendor/theus-arsenal/commands/harness-diseno.md +0 -46
- package/vendor/theus-arsenal/commands/informe-costos.md +0 -90
- package/vendor/theus-arsenal/commands/iniciar-bucle.md +0 -36
- package/vendor/theus-arsenal/commands/instintos-estado.md +0 -53
- package/vendor/theus-arsenal/commands/instintos-exportar.md +0 -69
- package/vendor/theus-arsenal/commands/instintos-importar.md +0 -120
- package/vendor/theus-arsenal/commands/lienzo-planes.md +0 -48
- package/vendor/theus-arsenal/commands/limpiar-refactor.md +0 -84
- package/vendor/theus-arsenal/commands/modo-seguro.md +0 -96
- package/vendor/theus-arsenal/commands/orq-agregar-funcionalidad.md +0 -36
- package/vendor/theus-arsenal/commands/orq-cambiar-funcionalidad.md +0 -38
- package/vendor/theus-arsenal/commands/orq-construir-mvp.md +0 -36
- package/vendor/theus-arsenal/commands/orq-corregir-defecto.md +0 -40
- package/vendor/theus-arsenal/commands/orq-refinar-codigo.md +0 -44
- package/vendor/theus-arsenal/commands/orq-revisar.md +0 -135
- package/vendor/theus-arsenal/commands/plan-prd.md +0 -160
- package/vendor/theus-arsenal/commands/plan.md +0 -198
- package/vendor/theus-arsenal/commands/podar.md +0 -31
- package/vendor/theus-arsenal/commands/pr.md +0 -181
- package/vendor/theus-arsenal/commands/promover.md +0 -41
- package/vendor/theus-arsenal/commands/proyectos.md +0 -33
- package/vendor/theus-arsenal/commands/prp-commit.md +0 -112
- package/vendor/theus-arsenal/commands/prp-implementar.md +0 -385
- package/vendor/theus-arsenal/commands/prp-planificar.md +0 -501
- package/vendor/theus-arsenal/commands/reanudar-sesion.md +0 -160
- package/vendor/theus-arsenal/commands/revisar-codigo.md +0 -289
- package/vendor/theus-arsenal/commands/revisar-cpp.md +0 -132
- package/vendor/theus-arsenal/commands/revisar-fastapi.md +0 -39
- package/vendor/theus-arsenal/commands/revisar-flutter.md +0 -115
- package/vendor/theus-arsenal/commands/revisar-go.md +0 -148
- package/vendor/theus-arsenal/commands/revisar-kotlin.md +0 -140
- package/vendor/theus-arsenal/commands/revisar-pr.md +0 -37
- package/vendor/theus-arsenal/commands/revisar-python.md +0 -297
- package/vendor/theus-arsenal/commands/revisar-react.md +0 -170
- package/vendor/theus-arsenal/commands/revisar-rust.md +0 -142
- package/vendor/theus-arsenal/commands/revisar-vue.md +0 -174
- package/vendor/theus-arsenal/commands/salud-skills.md +0 -52
- package/vendor/theus-arsenal/commands/sesiones.md +0 -345
- package/vendor/theus-arsenal/commands/test-cpp.md +0 -252
- package/vendor/theus-arsenal/commands/test-flutter.md +0 -143
- package/vendor/theus-arsenal/commands/test-go.md +0 -268
- package/vendor/theus-arsenal/commands/test-kotlin.md +0 -312
- package/vendor/theus-arsenal/commands/test-react.md +0 -265
- package/vendor/theus-arsenal/commands/test-rust.md +0 -309
- package/vendor/theus-arsenal/commands/vigilancia-canary.md +0 -43
- package/vendor/theus-arsenal/hooks/hooks.json +0 -274
- package/vendor/theus-arsenal/package.json +0 -6
- package/vendor/theus-arsenal/rules/angular/coding-style.md +0 -182
- package/vendor/theus-arsenal/rules/angular/hooks.md +0 -25
- package/vendor/theus-arsenal/rules/angular/patterns.md +0 -249
- package/vendor/theus-arsenal/rules/angular/security.md +0 -87
- package/vendor/theus-arsenal/rules/angular/testing.md +0 -164
- package/vendor/theus-arsenal/rules/arkts/coding-style.md +0 -153
- package/vendor/theus-arsenal/rules/arkts/hooks.md +0 -80
- package/vendor/theus-arsenal/rules/arkts/patterns.md +0 -236
- package/vendor/theus-arsenal/rules/arkts/security.md +0 -141
- package/vendor/theus-arsenal/rules/arkts/testing.md +0 -126
- package/vendor/theus-arsenal/rules/common/agents.md +0 -49
- package/vendor/theus-arsenal/rules/common/code-review.md +0 -123
- package/vendor/theus-arsenal/rules/common/coding-style.md +0 -90
- package/vendor/theus-arsenal/rules/common/development-workflow.md +0 -44
- package/vendor/theus-arsenal/rules/common/git-workflow.md +0 -24
- package/vendor/theus-arsenal/rules/common/hooks.md +0 -32
- package/vendor/theus-arsenal/rules/common/patterns.md +0 -31
- package/vendor/theus-arsenal/rules/common/performance.md +0 -53
- package/vendor/theus-arsenal/rules/common/security.md +0 -29
- package/vendor/theus-arsenal/rules/common/testing.md +0 -57
- package/vendor/theus-arsenal/rules/cpp/coding-style.md +0 -44
- package/vendor/theus-arsenal/rules/cpp/hooks.md +0 -39
- package/vendor/theus-arsenal/rules/cpp/patterns.md +0 -51
- package/vendor/theus-arsenal/rules/cpp/security.md +0 -51
- package/vendor/theus-arsenal/rules/cpp/testing.md +0 -44
- package/vendor/theus-arsenal/rules/csharp/coding-style.md +0 -72
- package/vendor/theus-arsenal/rules/csharp/hooks.md +0 -25
- package/vendor/theus-arsenal/rules/csharp/patterns.md +0 -50
- package/vendor/theus-arsenal/rules/csharp/security.md +0 -58
- package/vendor/theus-arsenal/rules/csharp/testing.md +0 -50
- package/vendor/theus-arsenal/rules/dart/coding-style.md +0 -159
- package/vendor/theus-arsenal/rules/dart/hooks.md +0 -68
- package/vendor/theus-arsenal/rules/dart/patterns.md +0 -261
- package/vendor/theus-arsenal/rules/dart/security.md +0 -135
- package/vendor/theus-arsenal/rules/dart/testing.md +0 -215
- package/vendor/theus-arsenal/rules/fsharp/coding-style.md +0 -112
- package/vendor/theus-arsenal/rules/fsharp/hooks.md +0 -26
- package/vendor/theus-arsenal/rules/fsharp/patterns.md +0 -111
- package/vendor/theus-arsenal/rules/fsharp/security.md +0 -76
- package/vendor/theus-arsenal/rules/fsharp/testing.md +0 -62
- package/vendor/theus-arsenal/rules/golang/coding-style.md +0 -32
- package/vendor/theus-arsenal/rules/golang/hooks.md +0 -17
- package/vendor/theus-arsenal/rules/golang/patterns.md +0 -45
- package/vendor/theus-arsenal/rules/golang/security.md +0 -34
- package/vendor/theus-arsenal/rules/golang/testing.md +0 -31
- package/vendor/theus-arsenal/rules/java/coding-style.md +0 -114
- package/vendor/theus-arsenal/rules/java/hooks.md +0 -18
- package/vendor/theus-arsenal/rules/java/patterns.md +0 -147
- package/vendor/theus-arsenal/rules/java/security.md +0 -101
- package/vendor/theus-arsenal/rules/java/testing.md +0 -133
- package/vendor/theus-arsenal/rules/kotlin/coding-style.md +0 -86
- package/vendor/theus-arsenal/rules/kotlin/hooks.md +0 -17
- package/vendor/theus-arsenal/rules/kotlin/patterns.md +0 -146
- package/vendor/theus-arsenal/rules/kotlin/security.md +0 -82
- package/vendor/theus-arsenal/rules/kotlin/testing.md +0 -128
- package/vendor/theus-arsenal/rules/nuxt/coding-style.md +0 -47
- package/vendor/theus-arsenal/rules/nuxt/hooks.md +0 -39
- package/vendor/theus-arsenal/rules/nuxt/patterns.md +0 -54
- package/vendor/theus-arsenal/rules/nuxt/security.md +0 -48
- package/vendor/theus-arsenal/rules/nuxt/testing.md +0 -49
- package/vendor/theus-arsenal/rules/php/coding-style.md +0 -40
- package/vendor/theus-arsenal/rules/php/hooks.md +0 -24
- package/vendor/theus-arsenal/rules/php/patterns.md +0 -33
- package/vendor/theus-arsenal/rules/php/security.md +0 -37
- package/vendor/theus-arsenal/rules/php/testing.md +0 -38
- package/vendor/theus-arsenal/rules/python/coding-style.md +0 -42
- package/vendor/theus-arsenal/rules/python/fastapi.md +0 -58
- package/vendor/theus-arsenal/rules/python/hooks.md +0 -19
- package/vendor/theus-arsenal/rules/python/patterns.md +0 -39
- package/vendor/theus-arsenal/rules/python/security.md +0 -30
- package/vendor/theus-arsenal/rules/python/testing.md +0 -38
- package/vendor/theus-arsenal/rules/react/coding-style.md +0 -109
- package/vendor/theus-arsenal/rules/react/hooks.md +0 -187
- package/vendor/theus-arsenal/rules/react/patterns.md +0 -194
- package/vendor/theus-arsenal/rules/react/security.md +0 -180
- package/vendor/theus-arsenal/rules/react/testing.md +0 -208
- package/vendor/theus-arsenal/rules/react-native/accessibility.md +0 -55
- package/vendor/theus-arsenal/rules/react-native/coding-style.md +0 -71
- package/vendor/theus-arsenal/rules/react-native/hooks.md +0 -28
- package/vendor/theus-arsenal/rules/react-native/patterns.md +0 -88
- package/vendor/theus-arsenal/rules/react-native/performance.md +0 -45
- package/vendor/theus-arsenal/rules/react-native/production-readiness.md +0 -51
- package/vendor/theus-arsenal/rules/react-native/security.md +0 -43
- package/vendor/theus-arsenal/rules/react-native/testing.md +0 -52
- package/vendor/theus-arsenal/rules/ruby/coding-style.md +0 -46
- package/vendor/theus-arsenal/rules/ruby/hooks.md +0 -37
- package/vendor/theus-arsenal/rules/ruby/patterns.md +0 -44
- package/vendor/theus-arsenal/rules/ruby/security.md +0 -51
- package/vendor/theus-arsenal/rules/ruby/testing.md +0 -51
- package/vendor/theus-arsenal/rules/rust/coding-style.md +0 -151
- package/vendor/theus-arsenal/rules/rust/hooks.md +0 -16
- package/vendor/theus-arsenal/rules/rust/patterns.md +0 -168
- package/vendor/theus-arsenal/rules/rust/security.md +0 -141
- package/vendor/theus-arsenal/rules/rust/testing.md +0 -154
- package/vendor/theus-arsenal/rules/swift/coding-style.md +0 -47
- package/vendor/theus-arsenal/rules/swift/hooks.md +0 -20
- package/vendor/theus-arsenal/rules/swift/patterns.md +0 -66
- package/vendor/theus-arsenal/rules/swift/security.md +0 -33
- package/vendor/theus-arsenal/rules/swift/testing.md +0 -45
- package/vendor/theus-arsenal/rules/typescript/coding-style.md +0 -199
- package/vendor/theus-arsenal/rules/typescript/hooks.md +0 -22
- package/vendor/theus-arsenal/rules/typescript/patterns.md +0 -52
- package/vendor/theus-arsenal/rules/typescript/security.md +0 -28
- package/vendor/theus-arsenal/rules/typescript/testing.md +0 -18
- package/vendor/theus-arsenal/rules/vue/coding-style.md +0 -54
- package/vendor/theus-arsenal/rules/vue/hooks.md +0 -45
- package/vendor/theus-arsenal/rules/vue/patterns.md +0 -56
- package/vendor/theus-arsenal/rules/vue/security.md +0 -46
- package/vendor/theus-arsenal/rules/vue/testing.md +0 -53
- package/vendor/theus-arsenal/rules/web/coding-style.md +0 -108
- package/vendor/theus-arsenal/rules/web/design-quality.md +0 -75
- package/vendor/theus-arsenal/rules/web/hooks.md +0 -141
- package/vendor/theus-arsenal/rules/web/patterns.md +0 -91
- package/vendor/theus-arsenal/rules/web/performance.md +0 -76
- package/vendor/theus-arsenal/rules/web/security.md +0 -69
- package/vendor/theus-arsenal/rules/web/testing.md +0 -67
- package/vendor/theus-arsenal/scripts/hooks/bash-hook-dispatcher.js +0 -192
- package/vendor/theus-arsenal/scripts/hooks/block-no-verify.js +0 -556
- package/vendor/theus-arsenal/scripts/hooks/check-console-log.js +0 -92
- package/vendor/theus-arsenal/scripts/hooks/check-hook-enabled.js +0 -16
- package/vendor/theus-arsenal/scripts/hooks/config-protection.js +0 -171
- package/vendor/theus-arsenal/scripts/hooks/design-quality-check.js +0 -132
- package/vendor/theus-arsenal/scripts/hooks/doc-file-warning.js +0 -110
- package/vendor/theus-arsenal/scripts/hooks/modo-seguro.js +0 -158
- package/vendor/theus-arsenal/scripts/hooks/notificacion-escritorio.js +0 -208
- package/vendor/theus-arsenal/scripts/hooks/plugin-hook-bootstrap.js +0 -280
- package/vendor/theus-arsenal/scripts/hooks/post-bash-command-log.js +0 -87
- package/vendor/theus-arsenal/scripts/hooks/post-bash-dispatcher.js +0 -24
- package/vendor/theus-arsenal/scripts/hooks/post-bash-pr-created.js +0 -60
- package/vendor/theus-arsenal/scripts/hooks/post-edit-accumulator.js +0 -94
- package/vendor/theus-arsenal/scripts/hooks/post-edit-console-warn.js +0 -54
- package/vendor/theus-arsenal/scripts/hooks/post-edit-format.js +0 -110
- package/vendor/theus-arsenal/scripts/hooks/post-edit-typecheck.js +0 -98
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-commit-quality.js +0 -447
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dev-server-block.js +0 -232
- package/vendor/theus-arsenal/scripts/hooks/pre-bash-dispatcher.js +0 -27
- package/vendor/theus-arsenal/scripts/hooks/pre-compact.js +0 -101
- package/vendor/theus-arsenal/scripts/hooks/pretooluse-visible-output.js +0 -49
- package/vendor/theus-arsenal/scripts/hooks/quality-gate.js +0 -168
- package/vendor/theus-arsenal/scripts/hooks/run-with-flags.js +0 -271
- package/vendor/theus-arsenal/scripts/hooks/salud-mcp.js +0 -749
- package/vendor/theus-arsenal/scripts/hooks/seguimiento-costos.js +0 -161
- package/vendor/theus-arsenal/scripts/hooks/session-end.js +0 -340
- package/vendor/theus-arsenal/scripts/hooks/session-start.js +0 -906
- package/vendor/theus-arsenal/scripts/hooks/stop-format-typecheck.js +0 -263
- package/vendor/theus-arsenal/scripts/hooks/suggest-compact.js +0 -286
- package/vendor/theus-arsenal/scripts/hooks/theus-context-monitor.js +0 -289
- package/vendor/theus-arsenal/scripts/hooks/verificacion-factual.js +0 -1278
- package/vendor/theus-arsenal/scripts/lib/agent-data-home.js +0 -96
- package/vendor/theus-arsenal/scripts/lib/cost-estimate.js +0 -66
- package/vendor/theus-arsenal/scripts/lib/hook-flags.js +0 -79
- package/vendor/theus-arsenal/scripts/lib/llm-summary.js +0 -185
- package/vendor/theus-arsenal/scripts/lib/loopback-guard.js +0 -54
- package/vendor/theus-arsenal/scripts/lib/observer-sessions.js +0 -237
- package/vendor/theus-arsenal/scripts/lib/package-manager.d.ts +0 -120
- package/vendor/theus-arsenal/scripts/lib/package-manager.js +0 -434
- package/vendor/theus-arsenal/scripts/lib/path-safety.js +0 -86
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/markdown.js +0 -285
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sdk.js +0 -238
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/server.js +0 -534
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/sessions.js +0 -274
- package/vendor/theus-arsenal/scripts/lib/plan-canvas/ui.js +0 -546
- package/vendor/theus-arsenal/scripts/lib/project-detect.js +0 -451
- package/vendor/theus-arsenal/scripts/lib/resolve-formatter.js +0 -193
- package/vendor/theus-arsenal/scripts/lib/resolve-theus-root.js +0 -101
- package/vendor/theus-arsenal/scripts/lib/session-aliases.d.ts +0 -138
- package/vendor/theus-arsenal/scripts/lib/session-aliases.js +0 -483
- package/vendor/theus-arsenal/scripts/lib/session-bridge.js +0 -155
- package/vendor/theus-arsenal/scripts/lib/session-manager.d.ts +0 -137
- package/vendor/theus-arsenal/scripts/lib/session-manager.js +0 -555
- package/vendor/theus-arsenal/scripts/lib/shell-split.js +0 -86
- package/vendor/theus-arsenal/scripts/lib/shell-substitution.js +0 -501
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/dashboard.js +0 -414
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/health.js +0 -285
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/index.js +0 -22
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/provenance.js +0 -200
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/tracker.js +0 -157
- package/vendor/theus-arsenal/scripts/lib/skill-evolution/versioning.js +0 -246
- package/vendor/theus-arsenal/scripts/lib/transcript-context.js +0 -232
- package/vendor/theus-arsenal/scripts/lib/utils.d.ts +0 -205
- package/vendor/theus-arsenal/scripts/lib/utils.js +0 -658
- package/vendor/theus-arsenal/scripts/plan-canvas.js +0 -341
- package/vendor/theus-arsenal/scripts/setup-package-manager.js +0 -46
- package/vendor/theus-arsenal/scripts/skills-health.js +0 -143
- package/vendor/theus-arsenal/skills/a11y-frontend/SKILL.md +0 -444
- package/vendor/theus-arsenal/skills/accesibilidad/SKILL.md +0 -144
- package/vendor/theus-arsenal/skills/acelerador-throughput-datos/SKILL.md +0 -72
- package/vendor/theus-arsenal/skills/agente-scraper-datos/SKILL.md +0 -771
- package/vendor/theus-arsenal/skills/analisis-plataformas-competencia/SKILL.md +0 -137
- package/vendor/theus-arsenal/skills/api-x/SKILL.md +0 -233
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/SKILL.md +0 -335
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer-loop.sh +0 -374
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/observer.md +0 -188
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/session-guardian.sh +0 -153
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/agents/start-observer.sh +0 -253
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/config.json +0 -8
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/hooks/observe.sh +0 -594
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/detect-project.sh +0 -325
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/instinct-cli.py +0 -1918
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/lib/arsenal-dir.sh +0 -23
- package/vendor/theus-arsenal/skills/aprendizaje-continuo-v2/scripts/test_parse_instinct.py +0 -1420
- package/vendor/theus-arsenal/skills/arquitectura-hexagonal/SKILL.md +0 -275
- package/vendor/theus-arsenal/skills/arquitectura-limpia-android/SKILL.md +0 -340
- package/vendor/theus-arsenal/skills/arquitectura-pipelines-recomendacion/SKILL.md +0 -112
- package/vendor/theus-arsenal/skills/atlas-datos-prediccion/SKILL.md +0 -53
- package/vendor/theus-arsenal/skills/auditoria-arquitectura-agentes/SKILL.md +0 -257
- package/vendor/theus-arsenal/skills/auditoria-produccion/SKILL.md +0 -180
- package/vendor/theus-arsenal/skills/auditoria-rutas-clic/SKILL.md +0 -243
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/SKILL.md +0 -180
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/high-score-example.md +0 -89
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/examples/low-score-example.md +0 -87
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/evaluation-criteria.md +0 -71
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/references/hook-integration.md +0 -90
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/scripts/evaluate.py +0 -409
- package/vendor/theus-arsenal/skills/autoevaluacion-agente/templates/evaluation-report.md +0 -86
- package/vendor/theus-arsenal/skills/automatizacion-ssh-netmiko/SKILL.md +0 -176
- package/vendor/theus-arsenal/skills/base-datos-pubmed/SKILL.md +0 -174
- package/vendor/theus-arsenal/skills/base-datos-uspto/SKILL.md +0 -173
- package/vendor/theus-arsenal/skills/benchmark/SKILL.md +0 -92
- package/vendor/theus-arsenal/skills/bitacora-crecimiento/SKILL.md +0 -120
- package/vendor/theus-arsenal/skills/bucle-verificacion/SKILL.md +0 -125
- package/vendor/theus-arsenal/skills/buscar-primero/SKILL.md +0 -184
- package/vendor/theus-arsenal/skills/busqueda-exa/SKILL.md +0 -111
- package/vendor/theus-arsenal/skills/cache-por-hash/SKILL.md +0 -160
- package/vendor/theus-arsenal/skills/campana-marketing/SKILL.md +0 -118
- package/vendor/theus-arsenal/skills/capacidad-producto/SKILL.md +0 -138
- package/vendor/theus-arsenal/skills/cazador-vulnerabilidades/SKILL.md +0 -104
- package/vendor/theus-arsenal/skills/compactacion-estrategica/SKILL.md +0 -115
- package/vendor/theus-arsenal/skills/comparador-baskets-prediccion/SKILL.md +0 -69
- package/vendor/theus-arsenal/skills/compras-energia/SKILL.md +0 -206
- package/vendor/theus-arsenal/skills/concurrencia-swift-6-2/SKILL.md +0 -224
- package/vendor/theus-arsenal/skills/consejo/SKILL.md +0 -201
- package/vendor/theus-arsenal/skills/construccion-harness-agentes/SKILL.md +0 -78
- package/vendor/theus-arsenal/skills/constructor-conectores/SKILL.md +0 -119
- package/vendor/theus-arsenal/skills/constructor-equipos/SKILL.md +0 -169
- package/vendor/theus-arsenal/skills/consulta-documentacion/SKILL.md +0 -92
- package/vendor/theus-arsenal/skills/consultas-genomicas-gget/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/contacto-inversores/SKILL.md +0 -95
- package/vendor/theus-arsenal/skills/corrutinas-flows-kotlin/SKILL.md +0 -284
- package/vendor/theus-arsenal/skills/creacion-video-remotion/SKILL.md +0 -46
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/3d.md +0 -86
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/animations.md +0 -29
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/charts-bar-chart.tsx +0 -173
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-typewriter.tsx +0 -100
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets/text-animations-word-highlight.tsx +0 -108
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/assets.md +0 -78
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/audio.md +0 -172
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/calculate-metadata.md +0 -104
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/can-decode.md +0 -75
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/charts.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/compositions.md +0 -146
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/display-captions.md +0 -126
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/extract-frames.md +0 -229
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/fonts.md +0 -152
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-audio-duration.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-dimensions.md +0 -68
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/get-video-duration.md +0 -58
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/gifs.md +0 -138
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/images.md +0 -130
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/import-srt-captions.md +0 -67
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/lottie.md +0 -67
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-dom-nodes.md +0 -34
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/measuring-text.md +0 -143
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/sequencing.md +0 -106
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/tailwind.md +0 -11
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/text-animations.md +0 -20
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/timing.md +0 -179
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transcribe-captions.md +0 -19
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/transitions.md +0 -122
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/trimming.md +0 -52
- package/vendor/theus-arsenal/skills/creacion-video-remotion/rules/videos.md +0 -171
- package/vendor/theus-arsenal/skills/cumplimiento-aduanero/SKILL.md +0 -270
- package/vendor/theus-arsenal/skills/cumplimiento-hipaa/SKILL.md +0 -78
- package/vendor/theus-arsenal/skills/datos-sensibles-salud/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/decimales-tokens-evm/SKILL.md +0 -128
- package/vendor/theus-arsenal/skills/decisiones-arquitectura/SKILL.md +0 -206
- package/vendor/theus-arsenal/skills/demos-ui/SKILL.md +0 -469
- package/vendor/theus-arsenal/skills/desarrollo-por-intencion/SKILL.md +0 -369
- package/vendor/theus-arsenal/skills/descubrimiento-marca/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/10_proposito-porque.md +0 -42
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/20_posicionamiento.md +0 -47
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/30_audiencia-nicho.md +0 -53
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/40_personalidad-arquetipo.md +0 -61
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/50_voz-tono.md +0 -62
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/60_narrativa-historia.md +0 -54
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/70_tension-fundador.md +0 -50
- package/vendor/theus-arsenal/skills/descubrimiento-marca/references/90_SINTESIS.md +0 -133
- package/vendor/theus-arsenal/skills/descubrimiento-plugins-laravel/SKILL.md +0 -230
- package/vendor/theus-arsenal/skills/destilado-reglas/SKILL.md +0 -263
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-rules.sh +0 -58
- package/vendor/theus-arsenal/skills/destilado-reglas/scripts/scan-skills.sh +0 -129
- package/vendor/theus-arsenal/skills/diagnostico-bgp/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/direccion-estetica/SKILL.md +0 -220
- package/vendor/theus-arsenal/skills/direccion-estetica/references/taxonomia-generos.md +0 -89
- package/vendor/theus-arsenal/skills/diseno-api/SKILL.md +0 -522
- package/vendor/theus-arsenal/skills/diseno-liquid-glass/SKILL.md +0 -282
- package/vendor/theus-arsenal/skills/e2e-escritorio-windows/SKILL.md +0 -879
- package/vendor/theus-arsenal/skills/edicion-video/SKILL.md +0 -289
- package/vendor/theus-arsenal/skills/enfoque-producto/SKILL.md +0 -91
- package/vendor/theus-arsenal/skills/entornos-flox/SKILL.md +0 -493
- package/vendor/theus-arsenal/skills/estandares-codigo/SKILL.md +0 -548
- package/vendor/theus-arsenal/skills/estandares-cpp/SKILL.md +0 -727
- package/vendor/theus-arsenal/skills/estandares-java/SKILL.md +0 -389
- package/vendor/theus-arsenal/skills/estilo-legado/SKILL.md +0 -149
- package/vendor/theus-arsenal/skills/estructura-informes-competencia/SKILL.md +0 -95
- package/vendor/theus-arsenal/skills/evaluacion-academica/SKILL.md +0 -165
- package/vendor/theus-arsenal/skills/explorador-skills/SKILL.md +0 -129
- package/vendor/theus-arsenal/skills/flujo-git/SKILL.md +0 -714
- package/vendor/theus-arsenal/skills/flujo-ingenieria-ml/SKILL.md +0 -343
- package/vendor/theus-arsenal/skills/flujo-tdd/SKILL.md +0 -584
- package/vendor/theus-arsenal/skills/forja-personas/SKILL.md +0 -298
- package/vendor/theus-arsenal/skills/forja-personas/gacha.py +0 -224
- package/vendor/theus-arsenal/skills/forja-personas/gacha.sh +0 -5
- package/vendor/theus-arsenal/skills/forja-personas/references/avatar-style.md +0 -123
- package/vendor/theus-arsenal/skills/forja-personas/references/boundary-rules.md +0 -53
- package/vendor/theus-arsenal/skills/forja-personas/references/error-handling.md +0 -53
- package/vendor/theus-arsenal/skills/forja-personas/references/identity-tension.md +0 -48
- package/vendor/theus-arsenal/skills/forja-personas/references/naming-system.md +0 -39
- package/vendor/theus-arsenal/skills/forja-personas/references/output-template.md +0 -166
- package/vendor/theus-arsenal/skills/fundamentos-animacion/SKILL.md +0 -296
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/SKILL.md +0 -156
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/generate_icons.swift +0 -258
- package/vendor/theus-arsenal/skills/generacion-iconos-ios/scripts/iconify_gen.sh +0 -235
- package/vendor/theus-arsenal/skills/gestion-excepciones-logisticas/SKILL.md +0 -208
- package/vendor/theus-arsenal/skills/gestion-transportistas/SKILL.md +0 -204
- package/vendor/theus-arsenal/skills/guia-adopcion-ml/SKILL.md +0 -64
- package/vendor/theus-arsenal/skills/harness-agente-autonomo/SKILL.md +0 -252
- package/vendor/theus-arsenal/skills/harness-eval-clinico/SKILL.md +0 -212
- package/vendor/theus-arsenal/skills/harness-evaluacion/SKILL.md +0 -296
- package/vendor/theus-arsenal/skills/harness-generador-evaluador/SKILL.md +0 -254
- package/vendor/theus-arsenal/skills/homelab-diseno-red/SKILL.md +0 -120
- package/vendor/theus-arsenal/skills/homelab-dns-pihole/SKILL.md +0 -264
- package/vendor/theus-arsenal/skills/homelab-preparacion-red/SKILL.md +0 -144
- package/vendor/theus-arsenal/skills/homelab-segmentacion-vlan/SKILL.md +0 -307
- package/vendor/theus-arsenal/skills/homelab-vpn-wireguard/SKILL.md +0 -299
- package/vendor/theus-arsenal/skills/ingenieria-agentica/SKILL.md +0 -96
- package/vendor/theus-arsenal/skills/inspeccion-animaciones-blender/SKILL.md +0 -164
- package/vendor/theus-arsenal/skills/instaladores-python/SKILL.md +0 -820
- package/vendor/theus-arsenal/skills/integracion-jira/SKILL.md +0 -307
- package/vendor/theus-arsenal/skills/inteligencia-leads/SKILL.md +0 -312
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/agente-enriquecimiento.md +0 -87
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/mapeador-mutuos.md +0 -76
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/puntuador-senales.md +0 -60
- package/vendor/theus-arsenal/skills/inteligencia-leads/agents/redactor-outreach.md +0 -102
- package/vendor/theus-arsenal/skills/inteligencia-mercados-prediccion/SKILL.md +0 -53
- package/vendor/theus-arsenal/skills/introspeccion-agente/SKILL.md +0 -150
- package/vendor/theus-arsenal/skills/inventario-skills/SKILL.md +0 -194
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/quick-diff.sh +0 -87
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/save-results.sh +0 -57
- package/vendor/theus-arsenal/skills/inventario-skills/scripts/scan.sh +0 -170
- package/vendor/theus-arsenal/skills/investigacion-mercado/SKILL.md +0 -87
- package/vendor/theus-arsenal/skills/investigacion-oraculos-prediccion/SKILL.md +0 -59
- package/vendor/theus-arsenal/skills/investigacion-profunda/SKILL.md +0 -161
- package/vendor/theus-arsenal/skills/keccak256-nodejs/SKILL.md +0 -100
- package/vendor/theus-arsenal/skills/libro-decisiones-recursivo/SKILL.md +0 -82
- package/vendor/theus-arsenal/skills/lienzo-planes/SKILL.md +0 -111
- package/vendor/theus-arsenal/skills/limpieza-configuracion/SKILL.md +0 -116
- package/vendor/theus-arsenal/skills/logistica-inversa-devoluciones/SKILL.md +0 -241
- package/vendor/theus-arsenal/skills/manejo-errores/SKILL.md +0 -375
- package/vendor/theus-arsenal/skills/materiales-inversores/SKILL.md +0 -101
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/SKILL.md +0 -170
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/forget.mjs +0 -44
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/info.mjs +0 -24
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/init.mjs +0 -152
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/list.mjs +0 -40
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/migrate.mjs +0 -214
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/resume.mjs +0 -36
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/save.mjs +0 -210
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/commands/shared.mjs +0 -402
- package/vendor/theus-arsenal/skills/memoria-por-proyecto/hooks/session-start.mjs +0 -238
- package/vendor/theus-arsenal/skills/metodologia-benchmarks/SKILL.md +0 -131
- package/vendor/theus-arsenal/skills/migraciones-bd/SKILL.md +0 -430
- package/vendor/theus-arsenal/skills/modelos-fundacionales-en-dispositivo/SKILL.md +0 -244
- package/vendor/theus-arsenal/skills/modo-seguro/SKILL.md +0 -86
- package/vendor/theus-arsenal/skills/motion-avanzado/SKILL.md +0 -592
- package/vendor/theus-arsenal/skills/motor-de-contenido/SKILL.md +0 -136
- package/vendor/theus-arsenal/skills/no-conformidades-calidad/SKILL.md +0 -249
- package/vendor/theus-arsenal/skills/onboarding-codigo/SKILL.md +0 -244
- package/vendor/theus-arsenal/skills/operaciones-agentes-empresariales/SKILL.md +0 -51
- package/vendor/theus-arsenal/skills/operaciones-conocimiento/SKILL.md +0 -159
- package/vendor/theus-arsenal/skills/operaciones-correo/SKILL.md +0 -123
- package/vendor/theus-arsenal/skills/operaciones-facturacion/SKILL.md +0 -142
- package/vendor/theus-arsenal/skills/operaciones-flujo-proyectos/SKILL.md +0 -110
- package/vendor/theus-arsenal/skills/operaciones-github/SKILL.md +0 -143
- package/vendor/theus-arsenal/skills/operaciones-google-workspace/SKILL.md +0 -100
- package/vendor/theus-arsenal/skills/operaciones-investigacion/SKILL.md +0 -124
- package/vendor/theus-arsenal/skills/operaciones-mensajes/SKILL.md +0 -103
- package/vendor/theus-arsenal/skills/operaciones-terminal/SKILL.md +0 -110
- package/vendor/theus-arsenal/skills/optimizacion-benchmark/SKILL.md +0 -70
- package/vendor/theus-arsenal/skills/optimizacion-costos-llm/SKILL.md +0 -182
- package/vendor/theus-arsenal/skills/optimizador-conexiones/SKILL.md +0 -191
- package/vendor/theus-arsenal/skills/optimizador-paralelismo/SKILL.md +0 -75
- package/vendor/theus-arsenal/skills/optimizador-prompts/SKILL.md +0 -374
- package/vendor/theus-arsenal/skills/orq-agregar-funcionalidad/SKILL.md +0 -37
- package/vendor/theus-arsenal/skills/orq-cambiar-funcionalidad/SKILL.md +0 -36
- package/vendor/theus-arsenal/skills/orq-construir-mvp/SKILL.md +0 -38
- package/vendor/theus-arsenal/skills/orq-corregir-defecto/SKILL.md +0 -36
- package/vendor/theus-arsenal/skills/orq-pipeline/SKILL.md +0 -134
- package/vendor/theus-arsenal/skills/orq-refinar-codigo/SKILL.md +0 -49
- package/vendor/theus-arsenal/skills/orquestacion-equipos-agentes/SKILL.md +0 -117
- package/vendor/theus-arsenal/skills/pagos-agentes-x402/SKILL.md +0 -237
- package/vendor/theus-arsenal/skills/patrones-angular/SKILL.md +0 -153
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-animations.md +0 -160
- package/vendor/theus-arsenal/skills/patrones-angular/references/angular-aria.md +0 -410
- package/vendor/theus-arsenal/skills/patrones-angular/references/cli.md +0 -86
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-harnesses.md +0 -59
- package/vendor/theus-arsenal/skills/patrones-angular/references/component-styling.md +0 -91
- package/vendor/theus-arsenal/skills/patrones-angular/references/components.md +0 -117
- package/vendor/theus-arsenal/skills/patrones-angular/references/creating-services.md +0 -97
- package/vendor/theus-arsenal/skills/patrones-angular/references/data-resolvers.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/define-routes.md +0 -67
- package/vendor/theus-arsenal/skills/patrones-angular/references/defining-providers.md +0 -72
- package/vendor/theus-arsenal/skills/patrones-angular/references/di-fundamentals.md +0 -120
- package/vendor/theus-arsenal/skills/patrones-angular/references/e2e-testing.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-angular/references/effects.md +0 -83
- package/vendor/theus-arsenal/skills/patrones-angular/references/hierarchical-injectors.md +0 -43
- package/vendor/theus-arsenal/skills/patrones-angular/references/host-elements.md +0 -80
- package/vendor/theus-arsenal/skills/patrones-angular/references/injection-context.md +0 -63
- package/vendor/theus-arsenal/skills/patrones-angular/references/inputs.md +0 -101
- package/vendor/theus-arsenal/skills/patrones-angular/references/linked-signal.md +0 -59
- package/vendor/theus-arsenal/skills/patrones-angular/references/loading-strategies.md +0 -61
- package/vendor/theus-arsenal/skills/patrones-angular/references/mcp.md +0 -67
- package/vendor/theus-arsenal/skills/patrones-angular/references/navigate-to-routes.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/outputs.md +0 -86
- package/vendor/theus-arsenal/skills/patrones-angular/references/reactive-forms.md +0 -122
- package/vendor/theus-arsenal/skills/patrones-angular/references/rendering-strategies.md +0 -44
- package/vendor/theus-arsenal/skills/patrones-angular/references/resource.md +0 -77
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-animations.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-angular/references/route-guards.md +0 -52
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-lifecycle.md +0 -45
- package/vendor/theus-arsenal/skills/patrones-angular/references/router-testing.md +0 -87
- package/vendor/theus-arsenal/skills/patrones-angular/references/show-routes-with-outlets.md +0 -68
- package/vendor/theus-arsenal/skills/patrones-angular/references/signal-forms.md +0 -795
- package/vendor/theus-arsenal/skills/patrones-angular/references/signals-overview.md +0 -94
- package/vendor/theus-arsenal/skills/patrones-angular/references/tailwind-css.md +0 -69
- package/vendor/theus-arsenal/skills/patrones-angular/references/template-driven-forms.md +0 -114
- package/vendor/theus-arsenal/skills/patrones-angular/references/testing-fundamentals.md +0 -65
- package/vendor/theus-arsenal/skills/patrones-animacion/SKILL.md +0 -432
- package/vendor/theus-arsenal/skills/patrones-backend/SKILL.md +0 -560
- package/vendor/theus-arsenal/skills/patrones-cdss-clinico/SKILL.md +0 -249
- package/vendor/theus-arsenal/skills/patrones-cisco-ios/SKILL.md +0 -148
- package/vendor/theus-arsenal/skills/patrones-clickhouse/SKILL.md +0 -443
- package/vendor/theus-arsenal/skills/patrones-compose-multiplatform/SKILL.md +0 -298
- package/vendor/theus-arsenal/skills/patrones-dart-flutter/SKILL.md +0 -566
- package/vendor/theus-arsenal/skills/patrones-despliegue/SKILL.md +0 -426
- package/vendor/theus-arsenal/skills/patrones-django/SKILL.md +0 -739
- package/vendor/theus-arsenal/skills/patrones-django-celery/SKILL.md +0 -456
- package/vendor/theus-arsenal/skills/patrones-docker/SKILL.md +0 -363
- package/vendor/theus-arsenal/skills/patrones-dotnet/SKILL.md +0 -321
- package/vendor/theus-arsenal/skills/patrones-emr-clinico/SKILL.md +0 -168
- package/vendor/theus-arsenal/skills/patrones-fastapi/SKILL.md +0 -513
- package/vendor/theus-arsenal/skills/patrones-frontend/SKILL.md +0 -655
- package/vendor/theus-arsenal/skills/patrones-go/SKILL.md +0 -674
- package/vendor/theus-arsenal/skills/patrones-jpa/SKILL.md +0 -156
- package/vendor/theus-arsenal/skills/patrones-kotlin/SKILL.md +0 -717
- package/vendor/theus-arsenal/skills/patrones-kotlin-exposed/SKILL.md +0 -724
- package/vendor/theus-arsenal/skills/patrones-kotlin-ktor/SKILL.md +0 -694
- package/vendor/theus-arsenal/skills/patrones-kubernetes/SKILL.md +0 -754
- package/vendor/theus-arsenal/skills/patrones-laravel/SKILL.md +0 -414
- package/vendor/theus-arsenal/skills/patrones-mcp/SKILL.md +0 -66
- package/vendor/theus-arsenal/skills/patrones-mysql/SKILL.md +0 -420
- package/vendor/theus-arsenal/skills/patrones-nestjs/SKILL.md +0 -229
- package/vendor/theus-arsenal/skills/patrones-nextjs/SKILL.md +0 -56
- package/vendor/theus-arsenal/skills/patrones-nuxt4/SKILL.md +0 -99
- package/vendor/theus-arsenal/skills/patrones-perl/SKILL.md +0 -508
- package/vendor/theus-arsenal/skills/patrones-postgres/SKILL.md +0 -141
- package/vendor/theus-arsenal/skills/patrones-prisma/SKILL.md +0 -399
- package/vendor/theus-arsenal/skills/patrones-python/SKILL.md +0 -750
- package/vendor/theus-arsenal/skills/patrones-pytorch/SKILL.md +0 -400
- package/vendor/theus-arsenal/skills/patrones-quarkus/SKILL.md +0 -729
- package/vendor/theus-arsenal/skills/patrones-react/SKILL.md +0 -339
- package/vendor/theus-arsenal/skills/patrones-react-native/SKILL.md +0 -325
- package/vendor/theus-arsenal/skills/patrones-redis/SKILL.md +0 -401
- package/vendor/theus-arsenal/skills/patrones-rust/SKILL.md +0 -504
- package/vendor/theus-arsenal/skills/patrones-springboot/SKILL.md +0 -314
- package/vendor/theus-arsenal/skills/patrones-swiftui/SKILL.md +0 -261
- package/vendor/theus-arsenal/skills/patrones-tinystruct/SKILL.md +0 -281
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/architecture.md +0 -90
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/data-handling.md +0 -60
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/database.md +0 -99
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/routing.md +0 -64
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/system-usage.md +0 -97
- package/vendor/theus-arsenal/skills/patrones-tinystruct/references/testing.md +0 -72
- package/vendor/theus-arsenal/skills/patrones-vite/SKILL.md +0 -449
- package/vendor/theus-arsenal/skills/patrones-vue/SKILL.md +0 -469
- package/vendor/theus-arsenal/skills/persistencia-actores-swift/SKILL.md +0 -148
- package/vendor/theus-arsenal/skills/pipeline-opensource/SKILL.md +0 -254
- package/vendor/theus-arsenal/skills/planificacion-demanda-inventario/SKILL.md +0 -236
- package/vendor/theus-arsenal/skills/planificador-trades-prediccion/SKILL.md +0 -60
- package/vendor/theus-arsenal/skills/plano-tecnico/SKILL.md +0 -102
- package/vendor/theus-arsenal/skills/presentaciones-html/SKILL.md +0 -189
- package/vendor/theus-arsenal/skills/presentaciones-html/STYLE_PRESETS.md +0 -330
- package/vendor/theus-arsenal/skills/presentaciones-html/animation-patterns.md +0 -122
- package/vendor/theus-arsenal/skills/presentaciones-html/html-template.md +0 -419
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/export-pdf.sh +0 -418
- package/vendor/theus-arsenal/skills/presentaciones-html/scripts/extract-pptx.py +0 -96
- package/vendor/theus-arsenal/skills/presentaciones-html/viewport-base.css +0 -153
- package/vendor/theus-arsenal/skills/presupuesto-contexto/SKILL.md +0 -263
- package/vendor/theus-arsenal/skills/procesamiento-documentos-nutrient/SKILL.md +0 -168
- package/vendor/theus-arsenal/skills/programacion-produccion/SKILL.md +0 -220
- package/vendor/theus-arsenal/skills/publicacion-cruzada/SKILL.md +0 -117
- package/vendor/theus-arsenal/skills/publicador-social/SKILL.md +0 -121
- package/vendor/theus-arsenal/skills/puerta-de-entrega/SKILL.md +0 -164
- package/vendor/theus-arsenal/skills/puerta-de-entrega/hooks/puerta-entrega.py +0 -242
- package/vendor/theus-arsenal/skills/pulir-interfaces/SKILL.md +0 -126
- package/vendor/theus-arsenal/skills/qa-navegador/SKILL.md +0 -103
- package/vendor/theus-arsenal/skills/ranking-grafo-social/SKILL.md +0 -153
- package/vendor/theus-arsenal/skills/recuperacion-iterativa/SKILL.md +0 -236
- package/vendor/theus-arsenal/skills/redaccion-articulos/SKILL.md +0 -81
- package/vendor/theus-arsenal/skills/regex-vs-llm/SKILL.md +0 -221
- package/vendor/theus-arsenal/skills/regresion-codigo-ia/SKILL.md +0 -388
- package/vendor/theus-arsenal/skills/rendimiento-react/SKILL.md +0 -567
- package/vendor/theus-arsenal/skills/revision-codigo-flutter-dart/SKILL.md +0 -442
- package/vendor/theus-arsenal/skills/revision-literatura-cientifica/SKILL.md +0 -191
- package/vendor/theus-arsenal/skills/revision-multiperspectiva/SKILL.md +0 -302
- package/vendor/theus-arsenal/skills/revision-riesgo-prediccion/SKILL.md +0 -56
- package/vendor/theus-arsenal/skills/revision-seguridad/SKILL.md +0 -505
- package/vendor/theus-arsenal/skills/revision-seguridad/cloud-infrastructure-security.md +0 -361
- package/vendor/theus-arsenal/skills/runtime-bun/SKILL.md +0 -83
- package/vendor/theus-arsenal/skills/salud-codigo-codescene/SKILL.md +0 -163
- package/vendor/theus-arsenal/skills/salud-interfaces-red/SKILL.md +0 -143
- package/vendor/theus-arsenal/skills/seguimiento-costos/SKILL.md +0 -122
- package/vendor/theus-arsenal/skills/seguridad-agentes-trading/SKILL.md +0 -145
- package/vendor/theus-arsenal/skills/seguridad-amm-defi/SKILL.md +0 -166
- package/vendor/theus-arsenal/skills/seguridad-django/SKILL.md +0 -648
- package/vendor/theus-arsenal/skills/seguridad-laravel/SKILL.md +0 -945
- package/vendor/theus-arsenal/skills/seguridad-perl/SKILL.md +0 -507
- package/vendor/theus-arsenal/skills/seguridad-quarkus/SKILL.md +0 -474
- package/vendor/theus-arsenal/skills/seguridad-springboot/SKILL.md +0 -279
- package/vendor/theus-arsenal/skills/seo/SKILL.md +0 -166
- package/vendor/theus-arsenal/skills/sistema-diseno/SKILL.md +0 -81
- package/vendor/theus-arsenal/skills/sistema-operativo-agentico/SKILL.md +0 -375
- package/vendor/theus-arsenal/skills/sistemas-latencia-critica/SKILL.md +0 -65
- package/vendor/theus-arsenal/skills/tdd-django/SKILL.md +0 -735
- package/vendor/theus-arsenal/skills/tdd-laravel/SKILL.md +0 -673
- package/vendor/theus-arsenal/skills/tdd-quarkus/SKILL.md +0 -817
- package/vendor/theus-arsenal/skills/tdd-springboot/SKILL.md +0 -165
- package/vendor/theus-arsenal/skills/testing-cpp/SKILL.md +0 -328
- package/vendor/theus-arsenal/skills/testing-csharp/SKILL.md +0 -321
- package/vendor/theus-arsenal/skills/testing-e2e/SKILL.md +0 -325
- package/vendor/theus-arsenal/skills/testing-go/SKILL.md +0 -719
- package/vendor/theus-arsenal/skills/testing-kotlin/SKILL.md +0 -829
- package/vendor/theus-arsenal/skills/testing-perl/SKILL.md +0 -479
- package/vendor/theus-arsenal/skills/testing-protocolos-di-swift/SKILL.md +0 -196
- package/vendor/theus-arsenal/skills/testing-python/SKILL.md +0 -815
- package/vendor/theus-arsenal/skills/testing-react/SKILL.md +0 -421
- package/vendor/theus-arsenal/skills/testing-rust/SKILL.md +0 -506
- package/vendor/theus-arsenal/skills/tours-de-codigo/SKILL.md +0 -252
- package/vendor/theus-arsenal/skills/traduccion-documentos-visado/SKILL.md +0 -121
- package/vendor/theus-arsenal/skills/ui-a-vue/SKILL.md +0 -141
- package/vendor/theus-arsenal/skills/validacion-config-red/SKILL.md +0 -211
- package/vendor/theus-arsenal/skills/verificacion-django/SKILL.md +0 -470
- package/vendor/theus-arsenal/skills/verificacion-factual/SKILL.md +0 -142
- package/vendor/theus-arsenal/skills/verificacion-laravel/SKILL.md +0 -184
- package/vendor/theus-arsenal/skills/verificacion-quarkus/SKILL.md +0 -485
- package/vendor/theus-arsenal/skills/verificacion-springboot/SKILL.md +0 -237
- package/vendor/theus-arsenal/skills/videodb/SKILL.md +0 -374
- package/vendor/theus-arsenal/skills/videodb/reference/api-reference.md +0 -550
- package/vendor/theus-arsenal/skills/videodb/reference/capture-reference.md +0 -407
- package/vendor/theus-arsenal/skills/videodb/reference/capture.md +0 -101
- package/vendor/theus-arsenal/skills/videodb/reference/editor.md +0 -443
- package/vendor/theus-arsenal/skills/videodb/reference/generative.md +0 -331
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream-reference.md +0 -564
- package/vendor/theus-arsenal/skills/videodb/reference/rtstream.md +0 -65
- package/vendor/theus-arsenal/skills/videodb/reference/search.md +0 -230
- package/vendor/theus-arsenal/skills/videodb/reference/streaming.md +0 -406
- package/vendor/theus-arsenal/skills/videodb/reference/use-cases.md +0 -118
- package/vendor/theus-arsenal/skills/videodb/scripts/ws_listener.py +0 -279
- package/vendor/theus-arsenal/skills/videos-manim/SKILL.md +0 -91
- package/vendor/theus-arsenal/skills/videos-manim/assets/network_graph_scene.py +0 -52
- package/vendor/theus-arsenal/skills/vigilancia-canary/SKILL.md +0 -108
- package/vendor/theus-arsenal/skills/voz-de-marca/SKILL.md +0 -106
|
@@ -1,444 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: a11y-frontend
|
|
3
|
-
description: >
|
|
4
|
-
Patrones de accesibilidad para React y Next.js — HTML semántico, atributos ARIA,
|
|
5
|
-
etiquetado de formularios, navegación por teclado, gestión del foco y soporte para
|
|
6
|
-
lectores de pantalla. Úsala al construir cualquier componente de UI o formulario interactivo.
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
# Patrones de accesibilidad frontend
|
|
10
|
-
|
|
11
|
-
Patrones prácticos de accesibilidad para React y Next.js. Cubre los problemas más señalados en revisiones de código: labels de formulario ausentes, uso incorrecto de ARIA, elementos interactivos no semánticos y navegación por teclado rota.
|
|
12
|
-
|
|
13
|
-
## Cuándo activarla
|
|
14
|
-
|
|
15
|
-
- Al construir o revisar componentes de formulario (`<input>`, `<select>`, `<textarea>`)
|
|
16
|
-
- Al crear elementos interactivos (modales, dropdowns, tooltips, tabs)
|
|
17
|
-
- Al usar `<div>` o `<span>` con `onClick`
|
|
18
|
-
- Al agregar atributos `aria-*` a cualquier elemento
|
|
19
|
-
- Al implementar navegación por teclado o gestión del foco
|
|
20
|
-
- Al recibir observaciones de accesibilidad de herramientas de revisión de código (linters de a11y de ESLint, revisores automáticos)
|
|
21
|
-
- Al construir componentes que deben soportar lectores de pantalla
|
|
22
|
-
|
|
23
|
-
## Accesibilidad de formularios
|
|
24
|
-
|
|
25
|
-
La falta del par `htmlFor` / `id` y los mensajes de error desconectados son los problemas más comunes señalados en revisión de código.
|
|
26
|
-
|
|
27
|
-
### Conexión del label
|
|
28
|
-
|
|
29
|
-
```tsx
|
|
30
|
-
// MAL: el label no tiene conexión con el input — los lectores de pantalla no pueden asociarlos
|
|
31
|
-
<label>Email</label>
|
|
32
|
-
<input type="email" />
|
|
33
|
-
|
|
34
|
-
// BIEN: htmlFor coincide con el id del input
|
|
35
|
-
<label htmlFor="email">Email</label>
|
|
36
|
-
<input id="email" type="email" />
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Campos obligatorios
|
|
40
|
-
|
|
41
|
-
```tsx
|
|
42
|
-
// MAL: el asterisco solo visual no transmite nada a los lectores de pantalla
|
|
43
|
-
<label htmlFor="email">Email *</label>
|
|
44
|
-
<input id="email" type="email" />
|
|
45
|
-
|
|
46
|
-
// BIEN: required habilita la validación nativa del navegador; aria-required lo señala a los lectores de pantalla
|
|
47
|
-
<label htmlFor="email">
|
|
48
|
-
Email <span aria-hidden="true">*</span>
|
|
49
|
-
</label>
|
|
50
|
-
<input id="email" type="email" required aria-required="true" />
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
### Mensajes de error
|
|
54
|
-
|
|
55
|
-
```tsx
|
|
56
|
-
// MAL: el texto de error existe visualmente pero no está vinculado al input
|
|
57
|
-
<input id="email" type="email" />
|
|
58
|
-
<span className="error">Dirección de email inválida</span>
|
|
59
|
-
|
|
60
|
-
// BIEN: aria-describedby conecta el input con su mensaje de error
|
|
61
|
-
// aria-invalid señala el estado inválido a los lectores de pantalla
|
|
62
|
-
<input
|
|
63
|
-
id="email"
|
|
64
|
-
type="email"
|
|
65
|
-
aria-describedby="email-error"
|
|
66
|
-
aria-invalid={!!error}
|
|
67
|
-
/>
|
|
68
|
-
{error && (
|
|
69
|
-
<span id="email-error" role="alert">
|
|
70
|
-
{error}
|
|
71
|
-
</span>
|
|
72
|
-
)}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### Formulario accesible completo
|
|
76
|
-
|
|
77
|
-
```tsx
|
|
78
|
-
interface LoginFormProps {
|
|
79
|
-
onSubmit: (email: string, password: string) => void;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export function LoginForm({ onSubmit }: LoginFormProps) {
|
|
83
|
-
const [email, setEmail] = useState('');
|
|
84
|
-
const [password, setPassword] = useState('');
|
|
85
|
-
const [errors, setErrors] = useState<{ email?: string; password?: string }>({});
|
|
86
|
-
|
|
87
|
-
const handleSubmit = (e: React.FormEvent) => {
|
|
88
|
-
e.preventDefault();
|
|
89
|
-
const newErrors: typeof errors = {};
|
|
90
|
-
if (!email) newErrors.email = 'El email es obligatorio';
|
|
91
|
-
if (!password) newErrors.password = 'La contraseña es obligatoria';
|
|
92
|
-
if (Object.keys(newErrors).length) {
|
|
93
|
-
setErrors(newErrors);
|
|
94
|
-
return;
|
|
95
|
-
}
|
|
96
|
-
onSubmit(email, password);
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
return (
|
|
100
|
-
<form onSubmit={handleSubmit} noValidate>
|
|
101
|
-
<div>
|
|
102
|
-
<label htmlFor="email">
|
|
103
|
-
Email <span aria-hidden="true">*</span>
|
|
104
|
-
</label>
|
|
105
|
-
<input
|
|
106
|
-
id="email"
|
|
107
|
-
type="email"
|
|
108
|
-
value={email}
|
|
109
|
-
onChange={e => setEmail(e.target.value)}
|
|
110
|
-
aria-required="true"
|
|
111
|
-
aria-describedby={errors.email ? 'email-error' : undefined}
|
|
112
|
-
aria-invalid={!!errors.email}
|
|
113
|
-
autoComplete="email"
|
|
114
|
-
/>
|
|
115
|
-
{errors.email && (
|
|
116
|
-
<span id="email-error" role="alert">
|
|
117
|
-
{errors.email}
|
|
118
|
-
</span>
|
|
119
|
-
)}
|
|
120
|
-
</div>
|
|
121
|
-
|
|
122
|
-
<div>
|
|
123
|
-
<label htmlFor="password">
|
|
124
|
-
Contraseña <span aria-hidden="true">*</span>
|
|
125
|
-
</label>
|
|
126
|
-
<input
|
|
127
|
-
id="password"
|
|
128
|
-
type="password"
|
|
129
|
-
value={password}
|
|
130
|
-
onChange={e => setPassword(e.target.value)}
|
|
131
|
-
aria-required="true"
|
|
132
|
-
aria-describedby={errors.password ? 'password-error' : undefined}
|
|
133
|
-
aria-invalid={!!errors.password}
|
|
134
|
-
autoComplete="current-password"
|
|
135
|
-
/>
|
|
136
|
-
{errors.password && (
|
|
137
|
-
<span id="password-error" role="alert">
|
|
138
|
-
{errors.password}
|
|
139
|
-
</span>
|
|
140
|
-
)}
|
|
141
|
-
</div>
|
|
142
|
-
|
|
143
|
-
<button type="submit">Iniciar sesión</button>
|
|
144
|
-
</form>
|
|
145
|
-
);
|
|
146
|
-
}
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
## HTML semántico
|
|
150
|
-
|
|
151
|
-
Usa el elemento que coincida con la intención. Los lectores de pantalla y los usuarios de teclado dependen de la semántica nativa.
|
|
152
|
-
|
|
153
|
-
```tsx
|
|
154
|
-
// MAL: el div no tiene role, ni soporte de teclado, ni nombre accesible
|
|
155
|
-
<div onClick={handleClick}>Enviar</div>
|
|
156
|
-
|
|
157
|
-
// BIEN: el button es enfocable, se activa con Enter/Espacio y se anuncia como "botón"
|
|
158
|
-
<button type="button" onClick={handleClick}>Enviar</button>
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
```tsx
|
|
162
|
-
// MAL: navegación no semántica
|
|
163
|
-
<div onClick={() => navigate('/home')}>Inicio</div>
|
|
164
|
-
|
|
165
|
-
// BIEN: el anchor soporta clic derecho, clic medio y navegación por teclado
|
|
166
|
-
<a href="/home">Inicio</a>
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
```tsx
|
|
170
|
-
// MAL: jerarquía de encabezados con saltos (de h1 a h4)
|
|
171
|
-
<h1>Panel</h1>
|
|
172
|
-
<h4>Actividad reciente</h4>
|
|
173
|
-
|
|
174
|
-
// BIEN: niveles de encabezado secuenciales
|
|
175
|
-
<h1>Panel</h1>
|
|
176
|
-
<h2>Actividad reciente</h2>
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
## Atributos ARIA
|
|
180
|
-
|
|
181
|
-
Usa ARIA solo cuando la semántica nativa de HTML sea insuficiente. Un ARIA incorrecto es peor que ningún ARIA.
|
|
182
|
-
|
|
183
|
-
### aria-label vs aria-labelledby
|
|
184
|
-
|
|
185
|
-
```tsx
|
|
186
|
-
// aria-label: etiqueta de texto en línea — úsala cuando no exista un texto de label visible
|
|
187
|
-
<button aria-label="Cerrar modal">
|
|
188
|
-
<XIcon />
|
|
189
|
-
</button>
|
|
190
|
-
|
|
191
|
-
// aria-labelledby: referencia el texto de otro elemento — úsalo cuando exista un label visible
|
|
192
|
-
<section aria-labelledby="section-title">
|
|
193
|
-
<h2 id="section-title">Pedidos recientes</h2>
|
|
194
|
-
{/* contenido */}
|
|
195
|
-
</section>
|
|
196
|
-
```
|
|
197
|
-
|
|
198
|
-
### aria-describedby
|
|
199
|
-
|
|
200
|
-
```tsx
|
|
201
|
-
// Aporta una descripción complementaria más allá del label
|
|
202
|
-
<button
|
|
203
|
-
aria-describedby="delete-warning"
|
|
204
|
-
onClick={handleDelete}
|
|
205
|
-
> Eliminar cuenta
|
|
206
|
-
</button>
|
|
207
|
-
<p id="delete-warning">Esta acción no se puede deshacer.</p>
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
### aria-live para contenido dinámico
|
|
211
|
-
|
|
212
|
-
```tsx
|
|
213
|
-
// Usa aria-live para anunciar contenido que se actualiza sin recargar la página
|
|
214
|
-
// polite: espera a que el usuario termine su acción actual antes de anunciar
|
|
215
|
-
// assertive: interrumpe de inmediato — úsalo solo para errores urgentes
|
|
216
|
-
|
|
217
|
-
export function StatusMessage({ message, isError }: { message: string; isError?: boolean }) {
|
|
218
|
-
return (
|
|
219
|
-
<div role="status" aria-live={isError ? 'assertive' : 'polite'} aria-atomic="true">
|
|
220
|
-
{message}
|
|
221
|
-
</div>
|
|
222
|
-
);
|
|
223
|
-
}
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### aria-expanded y aria-controls
|
|
227
|
-
|
|
228
|
-
```tsx
|
|
229
|
-
export function Accordion({ title, children }: { title: string; children: React.ReactNode }) {
|
|
230
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
231
|
-
const contentId = useId();
|
|
232
|
-
|
|
233
|
-
return (
|
|
234
|
-
<div>
|
|
235
|
-
<button aria-expanded={isOpen} aria-controls={contentId} onClick={() => setIsOpen(prev => !prev)}>
|
|
236
|
-
{title}
|
|
237
|
-
</button>
|
|
238
|
-
<div id={contentId} hidden={!isOpen}>
|
|
239
|
-
{children}
|
|
240
|
-
</div>
|
|
241
|
-
</div>
|
|
242
|
-
);
|
|
243
|
-
}
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
## Navegación por teclado
|
|
247
|
-
|
|
248
|
-
Todo elemento interactivo debe ser alcanzable y operable únicamente con el teclado.
|
|
249
|
-
|
|
250
|
-
### Dropdown personalizado
|
|
251
|
-
|
|
252
|
-
```tsx
|
|
253
|
-
export function Dropdown({ options, onSelect }: { options: string[]; onSelect: (value: string) => void }) {
|
|
254
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
255
|
-
const [activeIndex, setActiveIndex] = useState(0);
|
|
256
|
-
const listId = useId();
|
|
257
|
-
|
|
258
|
-
if (!options.length) return null;
|
|
259
|
-
|
|
260
|
-
const handleKeyDown = (e: React.KeyboardEvent) => {
|
|
261
|
-
switch (e.key) {
|
|
262
|
-
case 'ArrowDown':
|
|
263
|
-
e.preventDefault();
|
|
264
|
-
setActiveIndex(i => Math.min(i + 1, options.length - 1));
|
|
265
|
-
break;
|
|
266
|
-
case 'ArrowUp':
|
|
267
|
-
e.preventDefault();
|
|
268
|
-
setActiveIndex(i => Math.max(i - 1, 0));
|
|
269
|
-
break;
|
|
270
|
-
case 'Enter':
|
|
271
|
-
case ' ':
|
|
272
|
-
e.preventDefault();
|
|
273
|
-
if (isOpen) onSelect(options[activeIndex]);
|
|
274
|
-
setIsOpen(prev => !prev);
|
|
275
|
-
break;
|
|
276
|
-
case 'Escape':
|
|
277
|
-
setIsOpen(false);
|
|
278
|
-
break;
|
|
279
|
-
}
|
|
280
|
-
};
|
|
281
|
-
|
|
282
|
-
return (
|
|
283
|
-
<div
|
|
284
|
-
role="combobox"
|
|
285
|
-
aria-expanded={isOpen}
|
|
286
|
-
aria-haspopup="listbox"
|
|
287
|
-
aria-controls={listId}
|
|
288
|
-
tabIndex={0}
|
|
289
|
-
onKeyDown={handleKeyDown}
|
|
290
|
-
onClick={() => setIsOpen(prev => !prev)}
|
|
291
|
-
>
|
|
292
|
-
<span>{options[activeIndex]}</span>
|
|
293
|
-
{isOpen && (
|
|
294
|
-
<ul id={listId} role="listbox">
|
|
295
|
-
{options.map((option, index) => (
|
|
296
|
-
<li
|
|
297
|
-
key={option}
|
|
298
|
-
role="option"
|
|
299
|
-
aria-selected={index === activeIndex}
|
|
300
|
-
onClick={() => {
|
|
301
|
-
onSelect(option);
|
|
302
|
-
setIsOpen(false);
|
|
303
|
-
}}
|
|
304
|
-
>
|
|
305
|
-
{option}
|
|
306
|
-
</li>
|
|
307
|
-
))}
|
|
308
|
-
</ul>
|
|
309
|
-
)}
|
|
310
|
-
</div>
|
|
311
|
-
);
|
|
312
|
-
}
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
## Gestión del foco
|
|
316
|
-
|
|
317
|
-
El foco debe moverse de forma lógica cuando cambia el estado de la UI — especialmente en modales y transiciones de ruta.
|
|
318
|
-
|
|
319
|
-
### Restauración del foco en modales
|
|
320
|
-
|
|
321
|
-
> Este ejemplo cubre el foco inicial y su restauración. Para una trampa de foco completa (ciclado de Tab/Shift+Tab dentro del modal), usa una librería como [`focus-trap-react`](https://github.com/focus-trap/focus-trap-react), que maneja casos borde como contenido dinámico y portales anidados.
|
|
322
|
-
|
|
323
|
-
```tsx
|
|
324
|
-
export function Modal({ isOpen, onClose, title, children }: { isOpen: boolean; onClose: () => void; title: string; children: React.ReactNode }) {
|
|
325
|
-
const modalRef = useRef<HTMLDivElement>(null);
|
|
326
|
-
const previousFocusRef = useRef<HTMLElement | null>(null);
|
|
327
|
-
|
|
328
|
-
useEffect(() => {
|
|
329
|
-
if (isOpen) {
|
|
330
|
-
// Guardar el elemento con foco actual y mover el foco al modal
|
|
331
|
-
previousFocusRef.current = document.activeElement as HTMLElement;
|
|
332
|
-
modalRef.current?.focus();
|
|
333
|
-
} else {
|
|
334
|
-
// Restaurar el foco al elemento que abrió el modal
|
|
335
|
-
previousFocusRef.current?.focus();
|
|
336
|
-
}
|
|
337
|
-
}, [isOpen]);
|
|
338
|
-
|
|
339
|
-
if (!isOpen) return null;
|
|
340
|
-
|
|
341
|
-
return (
|
|
342
|
-
<div ref={modalRef} role="dialog" aria-modal="true" aria-labelledby="modal-title" tabIndex={-1} onKeyDown={e => e.key === 'Escape' && onClose()}>
|
|
343
|
-
<h2 id="modal-title">{title}</h2>
|
|
344
|
-
{children}
|
|
345
|
-
<button onClick={onClose}>Cerrar</button>
|
|
346
|
-
</div>
|
|
347
|
-
);
|
|
348
|
-
}
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
## Imágenes e íconos
|
|
352
|
-
|
|
353
|
-
```tsx
|
|
354
|
-
// MAL: ícono decorativo anunciado como imagen sin etiqueta
|
|
355
|
-
<img src="/icon.svg" />
|
|
356
|
-
|
|
357
|
-
// BIEN: imagen decorativa oculta a los lectores de pantalla
|
|
358
|
-
<img src="/decoration.png" alt="" aria-hidden="true" />
|
|
359
|
-
|
|
360
|
-
// BIEN: imagen con significado y texto alternativo descriptivo
|
|
361
|
-
<img src="/chart.png" alt="Los ingresos mensuales aumentaron 23% entre enero y marzo" />
|
|
362
|
-
|
|
363
|
-
// BIEN: botón de ícono con etiqueta accesible
|
|
364
|
-
<button aria-label="Eliminar elemento">
|
|
365
|
-
<TrashIcon aria-hidden="true" />
|
|
366
|
-
</button>
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
## Movimiento reducido
|
|
370
|
-
|
|
371
|
-
Respeta a los usuarios que han solicitado movimiento reducido en la configuración de su sistema operativo.
|
|
372
|
-
|
|
373
|
-
```tsx
|
|
374
|
-
export function useReducedMotion(): boolean {
|
|
375
|
-
const [prefersReduced, setPrefersReduced] = useState(false);
|
|
376
|
-
|
|
377
|
-
useEffect(() => {
|
|
378
|
-
const mq = window.matchMedia('(prefers-reduced-motion: reduce)');
|
|
379
|
-
setPrefersReduced(mq.matches);
|
|
380
|
-
const handler = (e: MediaQueryListEvent) => setPrefersReduced(e.matches);
|
|
381
|
-
mq.addEventListener('change', handler);
|
|
382
|
-
return () => mq.removeEventListener('change', handler);
|
|
383
|
-
}, []);
|
|
384
|
-
|
|
385
|
-
return prefersReduced;
|
|
386
|
-
}
|
|
387
|
-
|
|
388
|
-
// Uso
|
|
389
|
-
export function AnimatedCard({ children }: { children: React.ReactNode }) {
|
|
390
|
-
const reduceMotion = useReducedMotion();
|
|
391
|
-
|
|
392
|
-
return (
|
|
393
|
-
<div
|
|
394
|
-
style={{
|
|
395
|
-
transition: reduceMotion ? 'none' : 'transform 300ms ease'
|
|
396
|
-
}}
|
|
397
|
-
>
|
|
398
|
-
{children}
|
|
399
|
-
</div>
|
|
400
|
-
);
|
|
401
|
-
}
|
|
402
|
-
```
|
|
403
|
-
|
|
404
|
-
## Antipatrones
|
|
405
|
-
|
|
406
|
-
```tsx
|
|
407
|
-
// MAL: onClick en un elemento no interactivo sin soporte de teclado
|
|
408
|
-
<div onClick={handleClick}>Haz clic</div>
|
|
409
|
-
|
|
410
|
-
// MAL: aria-label en un div que no tiene role
|
|
411
|
-
<div aria-label="Navegación">...</div>
|
|
412
|
-
|
|
413
|
-
// MAL: placeholder usado como sustituto del label
|
|
414
|
-
<input placeholder="Ingresa tu email" />
|
|
415
|
-
|
|
416
|
-
// MAL: un tabIndex positivo crea un orden de tabulación impredecible
|
|
417
|
-
<button tabIndex={3}>Enviar</button>
|
|
418
|
-
|
|
419
|
-
// MAL: aria-hidden en un elemento enfocable — los usuarios de teclado quedan atrapados
|
|
420
|
-
<button aria-hidden="true">Abrir</button>
|
|
421
|
-
|
|
422
|
-
// MAL: role="button" en un div sin handler de teclado
|
|
423
|
-
<div role="button" onClick={handleClick}>Enviar</div>
|
|
424
|
-
// Falta: tabIndex={0}, onKeyDown para Enter/Espacio
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
## Checklist
|
|
428
|
-
|
|
429
|
-
Antes de enviar a revisión cualquier componente interactivo:
|
|
430
|
-
|
|
431
|
-
- [ ] Cada `<input>`, `<select>` y `<textarea>` tiene un `<label>` conectado vía `htmlFor`/`id`
|
|
432
|
-
- [ ] Los mensajes de error están vinculados con `aria-describedby` y marcados con `role="alert"`
|
|
433
|
-
- [ ] Ningún `onClick` en `<div>` o `<span>` sin `role`, `tabIndex` y `onKeyDown`
|
|
434
|
-
- [ ] Los botones de solo ícono tienen `aria-label`
|
|
435
|
-
- [ ] Las imágenes decorativas usan `alt=""` y `aria-hidden="true"`
|
|
436
|
-
- [ ] Los modales restauran el foco al cerrarse (para una trampa de foco completa con ciclado Tab/Shift+Tab, usa una librería como `focus-trap-react`)
|
|
437
|
-
- [ ] Las actualizaciones de contenido dinámico usan `aria-live`
|
|
438
|
-
- [ ] Las animaciones respetan `prefers-reduced-motion`
|
|
439
|
-
|
|
440
|
-
## Skills relacionadas
|
|
441
|
-
|
|
442
|
-
- `patrones-frontend` — patrones generales de componentes y estado en React
|
|
443
|
-
- `sistema-diseno` — consistencia de tokens de diseño y componentes
|
|
444
|
-
- `patrones-animacion` — patrones de animación con consideraciones de accesibilidad
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: accesibilidad
|
|
3
|
-
description: Diseña, implementa y audita productos digitales inclusivos según el estándar WCAG 2.2
|
|
4
|
-
Nivel AA. Usa esta skill para generar ARIA semántico en Web y traits de accesibilidad en plataformas Web y nativas (iOS/Android).
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Accesibilidad (WCAG 2.2)
|
|
8
|
-
|
|
9
|
-
Esta skill garantiza que las interfaces digitales sean Perceptibles, Operables, Comprensibles y Robustas (POUR) para todas las personas, incluidas quienes usan lectores de pantalla, controles por interruptor o navegación por teclado. Se centra en la implementación técnica de los criterios de éxito de WCAG 2.2.
|
|
10
|
-
|
|
11
|
-
## Cuándo usarla
|
|
12
|
-
|
|
13
|
-
- Al definir especificaciones de componentes de UI para Web, iOS o Android.
|
|
14
|
-
- Al auditar código existente en busca de barreras de accesibilidad o brechas de cumplimiento.
|
|
15
|
-
- Al implementar los nuevos criterios de WCAG 2.2 como Tamaño de objetivo (mínimo) y Apariencia del foco.
|
|
16
|
-
- Al mapear requisitos de diseño de alto nivel a atributos técnicos (roles ARIA, traits, hints).
|
|
17
|
-
|
|
18
|
-
## Conceptos clave
|
|
19
|
-
|
|
20
|
-
- **Principios POUR**: la base de WCAG (Perceptible, Operable, Comprensible, Robusto).
|
|
21
|
-
- **Mapeo semántico**: usar elementos nativos en lugar de contenedores genéricos para obtener accesibilidad incorporada.
|
|
22
|
-
- **Árbol de accesibilidad**: la representación de la UI que las tecnologías de asistencia realmente "leen".
|
|
23
|
-
- **Gestión del foco**: controlar el orden y la visibilidad del cursor de teclado/lector de pantalla.
|
|
24
|
-
- **Etiquetas y hints**: aportar contexto mediante `aria-label`, `accessibilityLabel` y `contentDescription`.
|
|
25
|
-
|
|
26
|
-
## Cómo funciona
|
|
27
|
-
|
|
28
|
-
### Paso 1: identifica el rol del componente
|
|
29
|
-
|
|
30
|
-
Determina el propósito funcional (¿es un botón, un enlace o una pestaña?). Usa el elemento nativo más semántico disponible antes de recurrir a roles personalizados.
|
|
31
|
-
|
|
32
|
-
### Paso 2: define los atributos perceptibles
|
|
33
|
-
|
|
34
|
-
- Asegura que el contraste del texto cumpla **4.5:1** (texto normal) o **3:1** (texto grande/UI).
|
|
35
|
-
- Añade alternativas textuales para el contenido no textual (imágenes, iconos).
|
|
36
|
-
- Implementa reflow responsivo (hasta 400 % de zoom sin pérdida de funcionalidad).
|
|
37
|
-
|
|
38
|
-
### Paso 3: implementa controles operables
|
|
39
|
-
|
|
40
|
-
- Garantiza un tamaño de objetivo mínimo de **24x24 píxeles CSS** (WCAG 2.2 SC 2.5.8).
|
|
41
|
-
- Verifica que todos los elementos interactivos sean alcanzables por teclado y tengan un indicador de foco visible (SC 2.4.11).
|
|
42
|
-
- Ofrece alternativas de puntero único para los gestos de arrastre.
|
|
43
|
-
|
|
44
|
-
### Paso 4: asegura una lógica comprensible
|
|
45
|
-
|
|
46
|
-
- Usa patrones de navegación consistentes.
|
|
47
|
-
- Proporciona mensajes de error descriptivos con sugerencias de corrección (SC 3.3.3).
|
|
48
|
-
- Implementa "Entrada redundante" (SC 3.3.7) para evitar pedir los mismos datos dos veces.
|
|
49
|
-
|
|
50
|
-
### Paso 5: verifica la compatibilidad robusta
|
|
51
|
-
|
|
52
|
-
- Usa correctamente los patrones `Name, Role, Value`.
|
|
53
|
-
- Implementa `aria-live` o regiones dinámicas para actualizaciones de estado en tiempo real.
|
|
54
|
-
|
|
55
|
-
## Diagrama de arquitectura de accesibilidad
|
|
56
|
-
|
|
57
|
-
```mermaid
|
|
58
|
-
flowchart TD
|
|
59
|
-
UI["Componente de UI"] --> Platform{¿Plataforma?}
|
|
60
|
-
Platform -->|Web| ARIA["WAI-ARIA + HTML5"]
|
|
61
|
-
Platform -->|iOS| SwiftUI["Traits de accesibilidad + etiquetas"]
|
|
62
|
-
Platform -->|Android| Compose["Semantics + ContentDesc"]
|
|
63
|
-
|
|
64
|
-
ARIA --> AT["Tecnología de asistencia (lectores de pantalla, interruptores)"]
|
|
65
|
-
SwiftUI --> AT
|
|
66
|
-
Compose --> AT
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
## Mapeo multiplataforma
|
|
70
|
-
|
|
71
|
-
| Función | Web (HTML/ARIA) | iOS (SwiftUI) | Android (Compose) |
|
|
72
|
-
| :--------------------- | :----------------------- | :----------------------------------- | :---------------------------------------------------------- |
|
|
73
|
-
| **Etiqueta principal** | `aria-label` / `<label>` | `.accessibilityLabel()` | `contentDescription` |
|
|
74
|
-
| **Hint secundario** | `aria-describedby` | `.accessibilityHint()` | `Modifier.semantics { stateDescription = ... }` |
|
|
75
|
-
| **Rol de acción** | `role="button"` | `.accessibilityAddTraits(.isButton)` | `Modifier.semantics { role = Role.Button }` |
|
|
76
|
-
| **Actualizaciones en vivo** | `aria-live="polite"` | `.accessibilityLiveRegion(.polite)` | `Modifier.semantics { liveRegion = LiveRegionMode.Polite }` |
|
|
77
|
-
|
|
78
|
-
## Ejemplos
|
|
79
|
-
|
|
80
|
-
### Web: buscador accesible
|
|
81
|
-
|
|
82
|
-
```html
|
|
83
|
-
<form role="search">
|
|
84
|
-
<label for="search-input" class="sr-only">Buscar productos</label>
|
|
85
|
-
<input type="search" id="search-input" placeholder="Buscar..." />
|
|
86
|
-
<button type="submit" aria-label="Enviar búsqueda">
|
|
87
|
-
<svg aria-hidden="true">...</svg>
|
|
88
|
-
</button>
|
|
89
|
-
</form>
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### iOS: botón de acción accesible
|
|
93
|
-
|
|
94
|
-
```swift
|
|
95
|
-
Button(action: deleteItem) {
|
|
96
|
-
Image(systemName: "trash")
|
|
97
|
-
}
|
|
98
|
-
.accessibilityLabel("Eliminar elemento")
|
|
99
|
-
.accessibilityHint("Elimina permanentemente este elemento de tu lista")
|
|
100
|
-
.accessibilityAddTraits(.isButton)
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
### Android: interruptor accesible
|
|
104
|
-
|
|
105
|
-
```kotlin
|
|
106
|
-
Switch(
|
|
107
|
-
checked = isEnabled,
|
|
108
|
-
onCheckedChange = { onToggle() },
|
|
109
|
-
modifier = Modifier.semantics {
|
|
110
|
-
contentDescription = "Activar notificaciones"
|
|
111
|
-
}
|
|
112
|
-
)
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## Antipatrones a evitar
|
|
116
|
-
|
|
117
|
-
- **Div-botones**: usar un `<div>` o `<span>` para un evento de clic sin añadir rol ni soporte de teclado.
|
|
118
|
-
- **Significado solo por color**: indicar un error o estado _únicamente_ con un cambio de color (p. ej., poner un borde en rojo).
|
|
119
|
-
- **Foco no contenido en modales**: modales que no atrapan el foco, permitiendo que usuarios de teclado naveguen el contenido de fondo mientras el modal está abierto. El foco debe estar contenido _y_ poder liberarse con la tecla `Escape` o un botón de cierre explícito (WCAG SC 2.1.2).
|
|
120
|
-
- **Texto alternativo redundante**: usar "Imagen de..." o "Foto de..." en el alt (los lectores de pantalla ya anuncian el rol "Imagen").
|
|
121
|
-
|
|
122
|
-
## Lista de verificación de buenas prácticas
|
|
123
|
-
|
|
124
|
-
- [ ] Los elementos interactivos cumplen el tamaño de objetivo de **24x24 px** (Web) o **44x44 pt** (nativo).
|
|
125
|
-
- [ ] Los indicadores de foco son claramente visibles y de alto contraste.
|
|
126
|
-
- [ ] Los modales **contienen el foco** mientras están abiertos y lo liberan limpiamente al cerrar (tecla `Escape` o botón de cierre).
|
|
127
|
-
- [ ] Los desplegables y menús devuelven el foco al elemento disparador al cerrarse.
|
|
128
|
-
- [ ] Los formularios ofrecen sugerencias de error en texto.
|
|
129
|
-
- [ ] Todos los botones de solo icono tienen una etiqueta de texto descriptiva.
|
|
130
|
-
- [ ] El contenido refluye correctamente cuando se escala el texto.
|
|
131
|
-
|
|
132
|
-
## Referencias
|
|
133
|
-
|
|
134
|
-
- [Directrices WCAG 2.2](https://www.w3.org/TR/WCAG22/)
|
|
135
|
-
- [WAI-ARIA Authoring Practices](https://www.w3.org/TR/wai-aria-practices/)
|
|
136
|
-
- [Guía de programación de accesibilidad de iOS](https://developer.apple.com/documentation/accessibility)
|
|
137
|
-
- [Human Interface Guidelines de iOS - Accesibilidad](https://developer.apple.com/design/human-interface-guidelines/accessibility)
|
|
138
|
-
- [Guía de accesibilidad para desarrolladores de Android](https://developer.android.com/guide/topics/ui/accessibility)
|
|
139
|
-
|
|
140
|
-
## Skills relacionadas
|
|
141
|
-
|
|
142
|
-
- `patrones-frontend`
|
|
143
|
-
- `sistema-diseno`
|
|
144
|
-
- `a11y-frontend`
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: acelerador-throughput-datos
|
|
3
|
-
description: Úsala cuando una ingesta masiva de datos, un backfill, un export, un ETL, la carga a
|
|
4
|
-
un data warehouse, la puesta al día de manifiestos o la sincronización de tablas necesiten
|
|
5
|
-
volverse mucho más rápidos preservando la corrección de los datos.
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Acelerador de throughput de datos
|
|
9
|
-
|
|
10
|
-
Usa esta skill cuando el cuello de botella sea mover, transformar o guardar grandes
|
|
11
|
-
volúmenes de datos. El objetivo no es solo velocidad. El objetivo es que datos correctos
|
|
12
|
-
aterricen más rápido en el lugar correcto, con evidencia.
|
|
13
|
-
|
|
14
|
-
## Primera distinción
|
|
15
|
-
|
|
16
|
-
Separa esto antes de optimizar:
|
|
17
|
-
|
|
18
|
-
- velocidad de extracción en el origen;
|
|
19
|
-
- velocidad de transferencia por red;
|
|
20
|
-
- velocidad de carga al warehouse;
|
|
21
|
-
- velocidad de transformación;
|
|
22
|
-
- frescura de las tablas de servicio;
|
|
23
|
-
- crecimiento de la cola en vivo mientras el job corre.
|
|
24
|
-
|
|
25
|
-
Un pipeline puede ser "rápido" y aun así parecer retrasado si los datos nuevos llegan
|
|
26
|
-
más rápido que la ventana final de puesta al día.
|
|
27
|
-
|
|
28
|
-
## Heurísticas de ruta rápida
|
|
29
|
-
|
|
30
|
-
- Mueve el cómputo a donde ya están los datos.
|
|
31
|
-
- Prefiere scans, joins y appends nativos del warehouse para archivos grandes ya aterrizados.
|
|
32
|
-
- Usa manifiestos o checkpoints para que los archivos/particiones completados se omitan.
|
|
33
|
-
- Usa particionado y clustering que coincidan con el patrón de lectura y de append.
|
|
34
|
-
- Agrupa en lotes los archivos pequeños, las peticiones y las escrituras.
|
|
35
|
-
- Haz las escrituras idempotentes mediante claves únicas, manifiestos o staging reemplazable.
|
|
36
|
-
- Mantén las tablas crudas, derivadas y de servicio con contabilidad separada.
|
|
37
|
-
|
|
38
|
-
## Flujo de trabajo
|
|
39
|
-
|
|
40
|
-
1. Lee los contratos actuales de origen, destino y manifiesto.
|
|
41
|
-
2. Mide el backlog: archivos externos, filas del manifiesto, filas crudas, filas derivadas,
|
|
42
|
-
timestamps mín/máx y conteos sin procesar.
|
|
43
|
-
3. Ejecuta una puesta al día segura o un benchmark con muestra.
|
|
44
|
-
4. Compara variantes: tamaño de lote, número de workers, SQL del warehouse, agrupación de
|
|
45
|
-
archivos, forma del staging y método de actualización del manifiesto.
|
|
46
|
-
5. Promueve solo la ruta más rápida que mantenga coherentes los conteos y los timestamps.
|
|
47
|
-
6. Codifica la ruta como un CLI, un job programado, un workflow o un runbook.
|
|
48
|
-
7. Vuelve a correr la contabilidad final después de que la ruta codificada se ejecute.
|
|
49
|
-
|
|
50
|
-
## Salida de contabilidad
|
|
51
|
-
|
|
52
|
-
Usa un bloque de contabilidad estricto:
|
|
53
|
-
|
|
54
|
-
```text
|
|
55
|
-
Resultado de throughput de datos:
|
|
56
|
-
- Archivos de origen descubiertos: 294
|
|
57
|
-
- Archivos procesados en esta corrida: 294
|
|
58
|
-
- Filas crudas añadidas: 9,683,598
|
|
59
|
-
- Filas derivadas añadidas: 8,917,585
|
|
60
|
-
- Cola restante: 24 archivos al momento de la relectura
|
|
61
|
-
- Duración: 38.7s
|
|
62
|
-
- Compuerta de corrección: los conteos del manifiesto y los timestamps máximos de las tablas coinciden
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
## Salvaguardas
|
|
66
|
-
|
|
67
|
-
- No borres datos crudos para que una métrica se vea mejor.
|
|
68
|
-
- No omitas archivos fallidos en silencio.
|
|
69
|
-
- No mezcles el estado del backfill histórico con la frescura de la cola en vivo.
|
|
70
|
-
- No declares un pipeline completo hasta que las tablas de destino y el manifiesto concuerden.
|
|
71
|
-
- Para datos financieros, de salud, regulados o con impacto en clientes, preserva
|
|
72
|
-
la evidencia de replay y las compuertas de aprobación.
|