@saulwade/swl-ses 1.0.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/CLAUDE.md +238 -0
- package/README.md +560 -0
- package/_userland/agentes/.gitkeep +0 -0
- package/_userland/habilidades/.gitkeep +0 -0
- package/agentes/.evolved.json +9 -0
- package/agentes/accesibilidad-wcag-swl.md +692 -0
- package/agentes/arquitecto-swl.md +238 -0
- package/agentes/auto-evolucion-swl.md +854 -0
- package/agentes/backend-api-swl.md +470 -0
- package/agentes/backend-csharp-swl.md +418 -0
- package/agentes/backend-go-swl.md +388 -0
- package/agentes/backend-java-swl.md +279 -0
- package/agentes/backend-node-swl.md +477 -0
- package/agentes/backend-python-swl.md +608 -0
- package/agentes/backend-rust-swl.md +362 -0
- package/agentes/backend-workers-swl.md +480 -0
- package/agentes/cloud-infra-swl.md +485 -0
- package/agentes/consolidador-swl.md +539 -0
- package/agentes/datos-swl.md +584 -0
- package/agentes/depurador-swl.md +349 -0
- package/agentes/devops-ci-swl.md +374 -0
- package/agentes/disenador-ui-swl.md +558 -0
- package/agentes/documentador-swl.md +343 -0
- package/agentes/evals/arquitecto-swl.evals.json +56 -0
- package/agentes/evals/auto-evolucion-swl.evals.json +68 -0
- package/agentes/evals/implementador-swl.evals.json +56 -0
- package/agentes/evals/orquestador-swl.evals.json +60 -0
- package/agentes/evals/perfilador-usuario-swl.evals.json +60 -0
- package/agentes/evals/red-team-swl.evals.json +59 -0
- package/agentes/evals/revisor-codigo-swl.evals.json +59 -0
- package/agentes/frontend-angular-swl.md +627 -0
- package/agentes/frontend-css-swl.md +720 -0
- package/agentes/frontend-react-swl.md +696 -0
- package/agentes/frontend-swl.md +500 -0
- package/agentes/frontend-tailwind-swl.md +830 -0
- package/agentes/implementador-swl.md +328 -0
- package/agentes/investigador-swl.md +430 -0
- package/agentes/investigador-ux-swl.md +500 -0
- package/agentes/llm-apps-swl.md +276 -0
- package/agentes/migrador-swl.md +417 -0
- package/agentes/mobile-android-swl.md +509 -0
- package/agentes/mobile-cross-swl.md +539 -0
- package/agentes/mobile-ios-swl.md +500 -0
- package/agentes/mobile-testing-swl.md +300 -0
- package/agentes/notificador-swl.md +916 -0
- package/agentes/observabilidad-swl.md +436 -0
- package/agentes/orquestador-swl.md +884 -0
- package/agentes/pagos-swl.md +283 -0
- package/agentes/perfilador-usuario-swl.md +306 -0
- package/agentes/planificador-swl.md +402 -0
- package/agentes/producto-prd-swl.md +587 -0
- package/agentes/red-team-swl.md +216 -0
- package/agentes/release-manager-swl.md +568 -0
- package/agentes/rendimiento-swl.md +714 -0
- package/agentes/resolutor-build-swl.md +243 -0
- package/agentes/revisor-angular-swl.md +276 -0
- package/agentes/revisor-codigo-swl.md +348 -0
- package/agentes/revisor-csharp-swl.md +262 -0
- package/agentes/revisor-go-swl.md +257 -0
- package/agentes/revisor-java-swl.md +255 -0
- package/agentes/revisor-kotlin-swl.md +271 -0
- package/agentes/revisor-nextjs-swl.md +279 -0
- package/agentes/revisor-php-swl.md +269 -0
- package/agentes/revisor-react-swl.md +276 -0
- package/agentes/revisor-rust-swl.md +344 -0
- package/agentes/revisor-seguridad-swl.md +390 -0
- package/agentes/revisor-swift-swl.md +266 -0
- package/agentes/revisor-typescript-swl.md +344 -0
- package/agentes/sre-swl.md +265 -0
- package/agentes/tdd-qa-swl.md +354 -0
- package/agentes/ux-disenador-swl.md +501 -0
- package/bin/lib/bot-comandos.js +1030 -0
- package/bin/lib/bot-discovery.js +182 -0
- package/bin/lib/bot-git.js +142 -0
- package/bin/swl-ses.js +325 -0
- package/bin/swl-telegram-bot.js +442 -0
- package/bin/swl-telegram-bot.plist +21 -0
- package/bin/swl-telegram-bot.service +14 -0
- package/comandos/swl/.evolved.json +23 -0
- package/comandos/swl/actualizar.md +174 -0
- package/comandos/swl/adoptar-proyecto.md +207 -0
- package/comandos/swl/aprender.md +701 -0
- package/comandos/swl/auditar-deps.md +134 -0
- package/comandos/swl/autoresearch.md +170 -0
- package/comandos/swl/ayuda.md +224 -0
- package/comandos/swl/brainstorm.md +50 -0
- package/comandos/swl/checkpoint.md +330 -0
- package/comandos/swl/compactar.md +283 -0
- package/comandos/swl/configurar-ci.md +227 -0
- package/comandos/swl/contexto.md +112 -0
- package/comandos/swl/contribuir.md +233 -0
- package/comandos/swl/crear-skill.md +292 -0
- package/comandos/swl/cron.md +196 -0
- package/comandos/swl/dashboard.md +146 -0
- package/comandos/swl/discutir-fase.md +230 -0
- package/comandos/swl/ejecutar-fase.md +135 -0
- package/comandos/swl/evaluar-skill.md +487 -0
- package/comandos/swl/evolucion-estado.md +142 -0
- package/comandos/swl/evolucionar.md +259 -0
- package/comandos/swl/exportar-vault.md +189 -0
- package/comandos/swl/gateway.md +158 -0
- package/comandos/swl/inbox.md +116 -0
- package/comandos/swl/instalar.md +220 -0
- package/comandos/swl/instintos.md +86 -0
- package/comandos/swl/mapear-codebase.md +312 -0
- package/comandos/swl/mcp-status.md +175 -0
- package/comandos/swl/metricas.md +270 -0
- package/comandos/swl/modelo.md +102 -0
- package/comandos/swl/notificaciones.md +396 -0
- package/comandos/swl/nuevo-proyecto.md +154 -0
- package/comandos/swl/planear-fase.md +221 -0
- package/comandos/swl/plugins.md +256 -0
- package/comandos/swl/reflect-skills.md +125 -0
- package/comandos/swl/release.md +217 -0
- package/comandos/swl/revisar-impacto.md +206 -0
- package/comandos/swl/revisar.md +330 -0
- package/comandos/swl/salud.md +363 -0
- package/comandos/swl/sesiones.md +200 -0
- package/comandos/swl/skill-search.md +113 -0
- package/comandos/swl/verificar.md +585 -0
- package/comandos/swl/wiki.md +620 -0
- package/contextos/dev.md +32 -0
- package/contextos/research.md +30 -0
- package/contextos/review.md +31 -0
- package/habilidades/accesibilidad-a11y/SKILL.md +201 -0
- package/habilidades/accesibilidad-a11y/evals/evals.json +56 -0
- package/habilidades/accesibilidad-a11y/recursos/ejemplos-y-checklist-completo.md +441 -0
- package/habilidades/agent-browser/SKILL.md +218 -0
- package/habilidades/agentes-como-servicio/SKILL.md +218 -0
- package/habilidades/ai-runtime-security/SKILL.md +273 -0
- package/habilidades/angular-avanzado/SKILL.md +164 -0
- package/habilidades/angular-avanzado/recursos/ejemplos-avanzados.md +219 -0
- package/habilidades/angular-moderno/SKILL.md +186 -0
- package/habilidades/angular-moderno/evals/evals.json +45 -0
- package/habilidades/angular-moderno/recursos/ejemplos-avanzados.md +106 -0
- package/habilidades/api-rest-diseno/SKILL.md +191 -0
- package/habilidades/api-rest-diseno/recursos/openapi-template.yaml +506 -0
- package/habilidades/api-rest-diseno/recursos/referencia-api.md +140 -0
- package/habilidades/aprendizaje-continuo/SKILL.md +151 -0
- package/habilidades/aprendizaje-continuo/evals/evals.json +53 -0
- package/habilidades/aprendizaje-continuo/recursos/referencia-instintos.md +290 -0
- package/habilidades/async-python/SKILL.md +149 -0
- package/habilidades/async-python/evals/evals.json +47 -0
- package/habilidades/async-python/recursos/patrones-y-ejemplos-completos.md +292 -0
- package/habilidades/auth-patrones/.evolved.json +9 -0
- package/habilidades/auth-patrones/SKILL.md +413 -0
- package/habilidades/auth-patrones/recursos/implementaciones-completas.md +229 -0
- package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -0
- package/habilidades/auto-evolucion-protocolo/evals/evals.json +55 -0
- package/habilidades/auto-evolucion-protocolo/recursos/referencia-completa.md +145 -0
- package/habilidades/autoresearch/SKILL.md +268 -0
- package/habilidades/autoresearch/evals/evals.json +41 -0
- package/habilidades/autoresearch/recursos/checklist-template.md +191 -0
- package/habilidades/autoresearch/scripts/calcular-score.js +88 -0
- package/habilidades/azure-cloud/SKILL.md +308 -0
- package/habilidades/azure-cloud/recursos/aks.md +327 -0
- package/habilidades/backend-mcp-servidor/SKILL.md +270 -0
- package/habilidades/backend-production-resilience/SKILL.md +288 -0
- package/habilidades/brainstorming/SKILL.md +295 -0
- package/habilidades/brainstorming/recursos/componentes-html.md +247 -0
- package/habilidades/build-errors-cpp/SKILL.md +270 -0
- package/habilidades/build-errors-csharp/SKILL.md +265 -0
- package/habilidades/build-errors-go/SKILL.md +306 -0
- package/habilidades/build-errors-java/SKILL.md +278 -0
- package/habilidades/build-errors-kotlin/SKILL.md +303 -0
- package/habilidades/build-errors-nextjs/SKILL.md +312 -0
- package/habilidades/build-errors-php/SKILL.md +270 -0
- package/habilidades/build-errors-python/SKILL.md +292 -0
- package/habilidades/build-errors-rust/SKILL.md +284 -0
- package/habilidades/build-errors-swift/SKILL.md +272 -0
- package/habilidades/build-errors-typescript/SKILL.md +369 -0
- package/habilidades/checklist-calidad/SKILL.md +271 -0
- package/habilidades/checklist-calidad/recursos/quality-report-template.md +148 -0
- package/habilidades/checklist-seguridad/SKILL.md +285 -0
- package/habilidades/checkpoints-verificacion/SKILL.md +298 -0
- package/habilidades/checkpoints-verificacion/recursos/checkpoint-templates.md +360 -0
- package/habilidades/ci-cd-pipelines/SKILL.md +157 -0
- package/habilidades/ci-cd-pipelines/recursos/github-actions-template.yaml +403 -0
- package/habilidades/ci-cd-pipelines/recursos/pipelines-completos.md +487 -0
- package/habilidades/cloud-aws/SKILL.md +142 -0
- package/habilidades/cloud-aws/recursos/servicios-aws-referencia.md +321 -0
- package/habilidades/compactacion-contexto/SKILL.md +247 -0
- package/habilidades/contenedores-docker/SKILL.md +137 -0
- package/habilidades/contenedores-docker/recursos/dockerfile-template.dockerfile +160 -0
- package/habilidades/contenedores-docker/recursos/ejemplos-y-configuraciones.md +327 -0
- package/habilidades/context-builder/SKILL.md +170 -0
- package/habilidades/control-profundidad/SKILL.md +128 -0
- package/habilidades/csharp-experto/SKILL.md +322 -0
- package/habilidades/csharp-patrones/SKILL.md +316 -0
- package/habilidades/csharp-testing/SKILL.md +286 -0
- package/habilidades/css-moderno/SKILL.md +166 -0
- package/habilidades/css-moderno/evals/evals.json +43 -0
- package/habilidades/css-moderno/recursos/ejemplos-y-patrones-completos.md +337 -0
- package/habilidades/datos-etl/SKILL.md +129 -0
- package/habilidades/datos-etl/recursos/implementaciones-completas.md +322 -0
- package/habilidades/dbml-experto/SKILL.md +339 -0
- package/habilidades/dbml-experto/evals/evals.json +56 -0
- package/habilidades/dependencias-auditoria/SKILL.md +320 -0
- package/habilidades/deprecacion-migracion/SKILL.md +169 -0
- package/habilidades/deprecacion-migracion/recursos/implementaciones-completas.md +220 -0
- package/habilidades/design-tokens/SKILL.md +158 -0
- package/habilidades/design-tokens/recursos/tokens-y-configuracion.md +363 -0
- package/habilidades/devsecops-pipeline-security/SKILL.md +309 -0
- package/habilidades/diagrama-arquitectura/SKILL.md +165 -0
- package/habilidades/diagrama-arquitectura/assets/template.html +276 -0
- package/habilidades/discutir-fase/SKILL.md +188 -0
- package/habilidades/diseno-herramientas-agente/SKILL.md +199 -0
- package/habilidades/diseno-responsivo/SKILL.md +186 -0
- package/habilidades/diseno-responsivo/recursos/ejemplos-layouts.md +156 -0
- package/habilidades/django-experto/SKILL.md +205 -0
- package/habilidades/django-experto/recursos/async-django.md +390 -0
- package/habilidades/django-experto/recursos/drf-patrones.md +438 -0
- package/habilidades/django-experto/recursos/orm-avanzado.md +382 -0
- package/habilidades/django-experto/recursos/referencia-completa.md +188 -0
- package/habilidades/django-experto/recursos/testing-django.md +415 -0
- package/habilidades/doc-sync/SKILL.md +280 -0
- package/habilidades/drift-detection/SKILL.md +179 -0
- package/habilidades/ejecutar-fase/SKILL.md +468 -0
- package/habilidades/estilo-sin-ai-isms/SKILL.md +775 -0
- package/habilidades/estilo-sin-ai-isms/evals/evals.json +63 -0
- package/habilidades/estilo-sin-ai-isms/scripts/detectar_aiisms.py +500 -0
- package/habilidades/estructura-proyecto-claude/SKILL.md +215 -0
- package/habilidades/estructura-proyecto-claude/recursos/claude-md-template.md +261 -0
- package/habilidades/estructura-proyecto-claude/recursos/configuracion-y-extensiones.md +176 -0
- package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +289 -0
- package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +77 -0
- package/habilidades/estructura-proyecto-claude/recursos/variantes-por-stack.md +177 -0
- package/habilidades/evaluacion-agentes/SKILL.md +314 -0
- package/habilidades/event-driven/SKILL.md +153 -0
- package/habilidades/event-driven/recursos/implementaciones-completas.md +423 -0
- package/habilidades/extraccion-documentos/SKILL.md +221 -0
- package/habilidades/extractor-de-aprendizajes/.evolved.json +9 -0
- package/habilidades/extractor-de-aprendizajes/SKILL.md +311 -0
- package/habilidades/extractor-de-aprendizajes/evals/evals.json +55 -0
- package/habilidades/fastapi-experto/SKILL.md +221 -0
- package/habilidades/fastapi-experto/recursos/async-patterns.md +438 -0
- package/habilidades/fastapi-experto/recursos/dependency-injection.md +330 -0
- package/habilidades/fastapi-experto/recursos/referencia-completa.md +79 -0
- package/habilidades/fastapi-experto/recursos/testing-httpx.md +420 -0
- package/habilidades/filament-admin/SKILL.md +290 -0
- package/habilidades/frontend-avanzado/SKILL.md +257 -0
- package/habilidades/frontend-avanzado/recursos/apis-nativas-ejemplos.md +341 -0
- package/habilidades/gcp-cloud/SKILL.md +260 -0
- package/habilidades/gcp-cloud/recursos/gke.md +234 -0
- package/habilidades/gcp-cloud/recursos/terraform-gcp.md +307 -0
- package/habilidades/generacion-mermaid/SKILL.md +229 -0
- package/habilidades/git-worktrees-paralelo/SKILL.md +270 -0
- package/habilidades/go-experto/SKILL.md +305 -0
- package/habilidades/go-patrones/SKILL.md +299 -0
- package/habilidades/go-testing/SKILL.md +291 -0
- package/habilidades/graphql-experto/SKILL.md +323 -0
- package/habilidades/guardrail-semantico/SKILL.md +282 -0
- package/habilidades/harness-claude-code/SKILL.md +299 -0
- package/habilidades/iam-secretos/SKILL.md +265 -0
- package/habilidades/iam-secretos/recursos/implementaciones-completas.md +356 -0
- package/habilidades/infra-github-actions/SKILL.md +166 -0
- package/habilidades/instalar-sistema/.evolved.json +9 -0
- package/habilidades/instalar-sistema/SKILL.md +221 -0
- package/habilidades/java-experto/SKILL.md +290 -0
- package/habilidades/java-patrones/SKILL.md +275 -0
- package/habilidades/java-testing/SKILL.md +288 -0
- package/habilidades/kotlin-compose/SKILL.md +278 -0
- package/habilidades/kotlin-compose/recursos/animaciones-performance.md +93 -0
- package/habilidades/kotlin-experto/SKILL.md +318 -0
- package/habilidades/kotlin-testing/SKILL.md +267 -0
- package/habilidades/kotlin-testing/recursos/testing-avanzado.md +74 -0
- package/habilidades/kubernetes-orquestacion/SKILL.md +152 -0
- package/habilidades/kubernetes-orquestacion/recursos/manifiestos-completos.md +452 -0
- package/habilidades/langchain-langraph/SKILL.md +386 -0
- package/habilidades/langchain-langraph/recursos/evaluacion-rag.md +321 -0
- package/habilidades/langchain-langraph/recursos/rag-maturity-model.md +225 -0
- package/habilidades/langchain-langraph/recursos/vectorstores.md +306 -0
- package/habilidades/legacy-code-rescue/SKILL.md +267 -0
- package/habilidades/likec4-experto/SKILL.md +412 -0
- package/habilidades/likec4-experto/evals/evals.json +69 -0
- package/habilidades/manejo-errores/.evolved.json +9 -0
- package/habilidades/manejo-errores/SKILL.md +407 -0
- package/habilidades/manejo-errores/recursos/implementaciones-completas.md +248 -0
- package/habilidades/mapear-codebase/SKILL.md +275 -0
- package/habilidades/memoria-busqueda/SKILL.md +194 -0
- package/habilidades/memoria-busqueda/evals/evals.json +44 -0
- package/habilidades/meta-skills-estandar/SKILL.md +298 -0
- package/habilidades/meta-skills-estandar/recursos/anti-patrones-y-leyes.md +205 -0
- package/habilidades/meta-skills-estandar/recursos/frameworks-seguridad.md +107 -0
- package/habilidades/meta-skills-estandar/recursos/idiomas-framework.md +60 -0
- package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -0
- package/habilidades/microservicios/SKILL.md +155 -0
- package/habilidades/microservicios/recursos/patrones-y-ejemplos-completos.md +325 -0
- package/habilidades/mobile-flutter/SKILL.md +199 -0
- package/habilidades/mobile-flutter/recursos/ejemplos-completos.md +319 -0
- package/habilidades/mobile-react-native/SKILL.md +176 -0
- package/habilidades/mobile-react-native/recursos/ejemplos-completos.md +216 -0
- package/habilidades/mongodb-experto/SKILL.md +302 -0
- package/habilidades/monitoring-alertas/SKILL.md +201 -0
- package/habilidades/monitoring-alertas/recursos/instrumentacion-y-alertas.md +301 -0
- package/habilidades/nestjs-experto/SKILL.md +307 -0
- package/habilidades/nestjs-experto/recursos/guards-interceptors.md +339 -0
- package/habilidades/nestjs-experto/recursos/modulos-di.md +287 -0
- package/habilidades/nestjs-experto/recursos/testing-nestjs.md +354 -0
- package/habilidades/nextjs-experto/SKILL.md +335 -0
- package/habilidades/nextjs-patrones/SKILL.md +303 -0
- package/habilidades/nextjs-testing/SKILL.md +331 -0
- package/habilidades/node-experto/.evolved.json +9 -0
- package/habilidades/node-experto/SKILL.md +266 -0
- package/habilidades/node-experto/recursos/patrones-completos.md +283 -0
- package/habilidades/notificaciones-multicanal/SKILL.md +159 -0
- package/habilidades/notificaciones-multicanal/recursos/config-template.json +115 -0
- package/habilidades/notificaciones-multicanal/recursos/configuracion-y-templates.md +303 -0
- package/habilidades/nuevo-proyecto/SKILL.md +204 -0
- package/habilidades/orquestacion-async/SKILL.md +303 -0
- package/habilidades/paid-media-tracking/SKILL.md +269 -0
- package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +220 -0
- package/habilidades/paid-media-tracking/recursos/google-ads-api.md +215 -0
- package/habilidades/patrones-python/SKILL.md +228 -0
- package/habilidades/patrones-python/evals/evals.json +56 -0
- package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -0
- package/habilidades/patrones-python/recursos/referencia-completa.md +202 -0
- package/habilidades/perfil-usuario/SKILL.md +200 -0
- package/habilidades/perfil-usuario/evals/evals.json +55 -0
- package/habilidades/performance-baseline/SKILL.md +297 -0
- package/habilidades/php-experto/SKILL.md +291 -0
- package/habilidades/php-patrones/SKILL.md +306 -0
- package/habilidades/php-testing/SKILL.md +280 -0
- package/habilidades/planear-fase/SKILL.md +269 -0
- package/habilidades/postgresql-experto/SKILL.md +151 -0
- package/habilidades/postgresql-experto/evals/evals.json +53 -0
- package/habilidades/postgresql-experto/recursos/referencia-completa.md +215 -0
- package/habilidades/prevencion-racionalizacion/SKILL.md +175 -0
- package/habilidades/prevencion-sobreingenieria/SKILL.md +323 -0
- package/habilidades/privacy-memoria/SKILL.md +141 -0
- package/habilidades/privacy-memoria/evals/evals.json +43 -0
- package/habilidades/prompt-engineering/SKILL.md +518 -0
- package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +467 -0
- package/habilidades/rag-arquitectura/SKILL.md +338 -0
- package/habilidades/rails-experto/SKILL.md +237 -0
- package/habilidades/rails-experto/recursos/active-record.md +260 -0
- package/habilidades/rails-experto/recursos/hotwire-turbo.md +293 -0
- package/habilidades/rails-experto/recursos/testing-rspec.md +362 -0
- package/habilidades/react-experto/SKILL.md +209 -0
- package/habilidades/react-experto/evals/evals.json +55 -0
- package/habilidades/react-experto/recursos/patrones-y-ejemplos-completos.md +240 -0
- package/habilidades/react-optimizacion/SKILL.md +174 -0
- package/habilidades/react-optimizacion/recursos/patrones-avanzados.md +138 -0
- package/habilidades/redis-experto/SKILL.md +305 -0
- package/habilidades/release-semver/.evolved.json +9 -0
- package/habilidades/release-semver/SKILL.md +248 -0
- package/habilidades/release-semver/scripts/generar-changelog.sh +238 -0
- package/habilidades/rust-experto/SKILL.md +400 -0
- package/habilidades/rust-patrones/SKILL.md +296 -0
- package/habilidades/rust-testing/SKILL.md +311 -0
- package/habilidades/seguridad-skills-ia/SKILL.md +262 -0
- package/habilidades/sql-optimizacion/SKILL.md +200 -0
- package/habilidades/sql-optimizacion/evals/evals.json +54 -0
- package/habilidades/sql-optimizacion/recursos/patrones-sql-avanzados.md +131 -0
- package/habilidades/sre-patrones/SKILL.md +333 -0
- package/habilidades/sre-patrones/recursos/chaos-engineering.md +241 -0
- package/habilidades/sre-patrones/recursos/oncall-design.md +236 -0
- package/habilidades/stripe-pagos/SKILL.md +550 -0
- package/habilidades/stripe-pagos/recursos/errores-reintentos.md +390 -0
- package/habilidades/stripe-pagos/recursos/stripe-connect.md +290 -0
- package/habilidades/structured-outputs/SKILL.md +343 -0
- package/habilidades/swift-experto/SKILL.md +320 -0
- package/habilidades/swift-experto/recursos/keychain-y-wrappers.md +110 -0
- package/habilidades/swift-patrones/SKILL.md +313 -0
- package/habilidades/swift-patrones/recursos/tca-ejemplo-completo.md +113 -0
- package/habilidades/swift-testing/SKILL.md +254 -0
- package/habilidades/swift-testing/recursos/xcuitest-planes.md +143 -0
- package/habilidades/swl-dashboard/SKILL.md +370 -0
- package/habilidades/swl-markitdown/SKILL.md +285 -0
- package/habilidades/swl-markitdown/evals/evals.json +52 -0
- package/habilidades/swl-revisar-impacto/SKILL.md +233 -0
- package/habilidades/tailwind-experto/SKILL.md +240 -0
- package/habilidades/tailwind-experto/recursos/referencia-completa.md +184 -0
- package/habilidades/tdd-workflow/SKILL.md +293 -0
- package/habilidades/terraform-experto/SKILL.md +321 -0
- package/habilidades/testing-python/SKILL.md +340 -0
- package/habilidades/testing-python/recursos/ejemplos-completos.md +167 -0
- package/habilidades/threat-model-lite/SKILL.md +246 -0
- package/habilidades/tracing-processor/SKILL.md +212 -0
- package/habilidades/tracking-measurement/SKILL.md +239 -0
- package/habilidades/tracking-measurement/recursos/consent-mode.md +231 -0
- package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +216 -0
- package/habilidades/tracking-measurement/recursos/meta-capi.md +262 -0
- package/habilidades/typescript-avanzado/SKILL.md +144 -0
- package/habilidades/typescript-avanzado/evals/evals.json +55 -0
- package/habilidades/typescript-avanzado/recursos/patrones-y-ejemplos-completos.md +298 -0
- package/habilidades/typescript-diagnosticos/SKILL.md +513 -0
- package/habilidades/ux-diseno/SKILL.md +116 -0
- package/habilidades/ux-diseno/evals/evals.json +43 -0
- package/habilidades/ux-diseno/recursos/patrones-ux-referencia.md +214 -0
- package/habilidades/validacion-ci-sistema/SKILL.md +136 -0
- package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +369 -0
- package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +286 -0
- package/habilidades/verificacion-evidencia/SKILL.md +160 -0
- package/habilidades/verificar-trabajo/SKILL.md +303 -0
- package/habilidades/verificar-trabajo/recursos/plantilla-verificacion.md +60 -0
- package/habilidades/wiki-conocimiento/SKILL.md +276 -0
- package/habilidades/wireframes-flujos/SKILL.md +212 -0
- package/habilidades/wireframes-flujos/recursos/referencia-completa.md +192 -0
- package/habilidades/workflow-claude-code/SKILL.md +260 -0
- package/habilidades/workflow-claude-code/recursos/referencia-completa.md +109 -0
- package/hooks/_run-hook.sh +57 -0
- package/hooks/actualizar-perfil-usuario.js +364 -0
- package/hooks/agente-lifecycle.js +71 -0
- package/hooks/aiisms-detector.js +173 -0
- package/hooks/audit-trail.js +204 -0
- package/hooks/auto-background.js +97 -0
- package/hooks/auto-consolidacion.js +178 -0
- package/hooks/auto-evolucion.js +666 -0
- package/hooks/auto-restaurar-settings.js +360 -0
- package/hooks/calidad-pre-commit.js +929 -0
- package/hooks/calidad-typescript.js +511 -0
- package/hooks/captura-feedback-usuario.js +148 -0
- package/hooks/check-update.js +211 -0
- package/hooks/clasificador-mensajes.js +271 -0
- package/hooks/degradacion-instintos.js +272 -0
- package/hooks/escaneo-secretos.js +389 -0
- package/hooks/extraccion-aprendizajes.js +763 -0
- package/hooks/grafo-contexto.js +129 -0
- package/hooks/graph-update.js +67 -0
- package/hooks/guardrail-modelo.js +247 -0
- package/hooks/inbox-aviso.js +75 -0
- package/hooks/inyeccion-contexto.js +246 -0
- package/hooks/lib/abort-registry.js +214 -0
- package/hooks/lib/agent-backend.js +210 -0
- package/hooks/lib/agent-comms.js +263 -0
- package/hooks/lib/agent-issue-codes.js +284 -0
- package/hooks/lib/agent-matcher.js +189 -0
- package/hooks/lib/async-hook-registry.js +252 -0
- package/hooks/lib/atomic-write.js +130 -0
- package/hooks/lib/auto-consolidator.js +335 -0
- package/hooks/lib/canary-skills.js +187 -0
- package/hooks/lib/consolidation-lock.js +291 -0
- package/hooks/lib/context-builder.js +430 -0
- package/hooks/lib/context-compressor.js +657 -0
- package/hooks/lib/convergence-detector.js +105 -0
- package/hooks/lib/delegation-tracker.js +198 -0
- package/hooks/lib/detectar-package-manager.js +423 -0
- package/hooks/lib/edit-accumulator.js +171 -0
- package/hooks/lib/error-classifier.js +308 -0
- package/hooks/lib/event-bus.js +112 -0
- package/hooks/lib/evolution-tracker.js +442 -0
- package/hooks/lib/execution-state.js +316 -0
- package/hooks/lib/fingerprint-id.js +135 -0
- package/hooks/lib/gateway-notify.js +116 -0
- package/hooks/lib/graph-security.js +75 -0
- package/hooks/lib/guardrail-metrics.js +202 -0
- package/hooks/lib/hook-circuit-breaker.js +206 -0
- package/hooks/lib/loop-detector.js +267 -0
- package/hooks/lib/mcp-health.js +184 -0
- package/hooks/lib/mcp-pool.js +436 -0
- package/hooks/lib/memory-search.js +506 -0
- package/hooks/lib/merkle-audit.js +96 -0
- package/hooks/lib/model-router.js +222 -0
- package/hooks/lib/normalize-error.js +324 -0
- package/hooks/lib/normalize-input.js +65 -0
- package/hooks/lib/nudge-tracker.js +306 -0
- package/hooks/lib/otlp-exporter.js +365 -0
- package/hooks/lib/performance-marks.js +239 -0
- package/hooks/lib/privacy-filter.js +128 -0
- package/hooks/lib/prompt-injection-scanner.js +209 -0
- package/hooks/lib/provenance-tracker.js +183 -0
- package/hooks/lib/rate-limit-tracker.js +253 -0
- package/hooks/lib/reflect-classifier.js +164 -0
- package/hooks/lib/resource-quota.js +122 -0
- package/hooks/lib/retry-jitter.js +165 -0
- package/hooks/lib/risk-engine.js +368 -0
- package/hooks/lib/run-log.js +408 -0
- package/hooks/lib/session-fts.js +379 -0
- package/hooks/lib/session-store.js +293 -0
- package/hooks/lib/singleton-guard.js +159 -0
- package/hooks/lib/skill-auditor.js +588 -0
- package/hooks/lib/sync-status.js +228 -0
- package/hooks/lib/taint-tracker.js +107 -0
- package/hooks/lib/task-service.js +295 -0
- package/hooks/lib/tech-skills-map.js +146 -0
- package/hooks/lib/telegram-cliente.js +159 -0
- package/hooks/lib/telegram-config.js +170 -0
- package/hooks/lib/token-budget.js +156 -0
- package/hooks/lib/token-estimator.js +420 -0
- package/hooks/lib/toon-compressor.js +245 -0
- package/hooks/lib/usage-model.js +183 -0
- package/hooks/lib/variable-resolver.js +230 -0
- package/hooks/linea-estado.js +324 -0
- package/hooks/metricas-evolucion.js +209 -0
- package/hooks/monitor-contexto.js +325 -0
- package/hooks/notificacion-sesion-stop.js +198 -0
- package/hooks/notificacion-telegram-notification.js +4 -0
- package/hooks/notificacion-telegram-subagent.js +4 -0
- package/hooks/notificacion-telegram.js +267 -0
- package/hooks/preservar-estado-pre-compact.js +150 -0
- package/hooks/proteccion-rutas.js +366 -0
- package/hooks/registro-turnos.js +209 -0
- package/hooks/resumen-sesion.js +249 -0
- package/hooks/risk-scoring.js +323 -0
- package/hooks/rotar-audit-auto.js +122 -0
- package/hooks/sugerir-regenerar-inventario.js +170 -0
- package/hooks/telemetria-agentes.js +167 -0
- package/hooks/tracking-costos.js +688 -0
- package/instintos/global.yaml +8 -0
- package/instintos/perfil-usuario.yaml +53 -0
- package/instintos/prompt-appendices.yaml +57 -0
- package/instintos/proyecto.yaml +372 -0
- package/manifiestos/gateway-config.json +77 -0
- package/manifiestos/handoff-context.json +223 -0
- package/manifiestos/hook-profiles.json +44 -0
- package/manifiestos/hooks-config.json +360 -0
- package/manifiestos/modulos.json +1173 -0
- package/manifiestos/perfiles.json +404 -0
- package/package.json +86 -0
- package/plantillas/ESTADO.md +109 -0
- package/plantillas/HOJA-RUTA.md +143 -0
- package/plantillas/PROYECTO.md +122 -0
- package/plantillas/REQUISITOS.md +132 -0
- package/plantillas/auditor-veto-template.md +105 -0
- package/plantillas/github-workflows/README.md +47 -0
- package/plantillas/github-workflows/release-please.yml +44 -0
- package/plantillas/github-workflows/swl-ci.yml +107 -0
- package/plantillas/github-workflows/swl-security.yml +51 -0
- package/plantillas/mcp-mineru.json +13 -0
- package/plantillas/research/ARQUITECTURA.md +220 -0
- package/plantillas/research/FUNCIONALIDADES.md +175 -0
- package/plantillas/research/RESUMEN.md +165 -0
- package/plantillas/research/STACK.md +233 -0
- package/plantillas/research/TRAMPAS.md +299 -0
- package/plantillas/skill-evals-template.json +44 -0
- package/plugin.json +343 -0
- package/reglas/accesibilidad.md +269 -0
- package/reglas/api-diseno.md +400 -0
- package/reglas/arquitectura.md +352 -0
- package/reglas/brevedad-output.md +124 -0
- package/reglas/cloud-infra.md +247 -0
- package/reglas/docs.md +245 -0
- package/reglas/estilo-codigo.md +201 -0
- package/reglas/git-workflow.md +245 -0
- package/reglas/gobernanza.md +271 -0
- package/reglas/harness-claude-code.md +213 -0
- package/reglas/hooks.md +186 -0
- package/reglas/lenguajes/csharp/estilo-codigo.md +231 -0
- package/reglas/lenguajes/csharp/hooks.md +281 -0
- package/reglas/lenguajes/csharp/patrones.md +226 -0
- package/reglas/lenguajes/csharp/seguridad.md +258 -0
- package/reglas/lenguajes/csharp/testing.md +176 -0
- package/reglas/lenguajes/go/estilo-codigo.md +195 -0
- package/reglas/lenguajes/go/hooks.md +249 -0
- package/reglas/lenguajes/go/patrones.md +249 -0
- package/reglas/lenguajes/go/seguridad.md +225 -0
- package/reglas/lenguajes/go/testing.md +272 -0
- package/reglas/lenguajes/java/estilo-codigo.md +217 -0
- package/reglas/lenguajes/java/hooks.md +251 -0
- package/reglas/lenguajes/java/patrones.md +226 -0
- package/reglas/lenguajes/java/seguridad.md +233 -0
- package/reglas/lenguajes/java/testing.md +238 -0
- package/reglas/lenguajes/kotlin/estilo-codigo.md +208 -0
- package/reglas/lenguajes/kotlin/hooks.md +245 -0
- package/reglas/lenguajes/kotlin/patrones.md +201 -0
- package/reglas/lenguajes/kotlin/seguridad.md +202 -0
- package/reglas/lenguajes/kotlin/testing.md +236 -0
- package/reglas/lenguajes/nextjs/estilo-codigo.md +175 -0
- package/reglas/lenguajes/nextjs/hooks.md +186 -0
- package/reglas/lenguajes/nextjs/patrones.md +225 -0
- package/reglas/lenguajes/nextjs/seguridad.md +216 -0
- package/reglas/lenguajes/nextjs/testing.md +193 -0
- package/reglas/lenguajes/php/estilo-codigo.md +228 -0
- package/reglas/lenguajes/php/hooks.md +165 -0
- package/reglas/lenguajes/php/patrones.md +233 -0
- package/reglas/lenguajes/php/seguridad.md +186 -0
- package/reglas/lenguajes/php/testing.md +205 -0
- package/reglas/lenguajes/rust/estilo-codigo.md +207 -0
- package/reglas/lenguajes/rust/hooks.md +240 -0
- package/reglas/lenguajes/rust/patrones.md +250 -0
- package/reglas/lenguajes/rust/seguridad.md +221 -0
- package/reglas/lenguajes/rust/testing.md +194 -0
- package/reglas/lenguajes/swift/estilo-codigo.md +238 -0
- package/reglas/lenguajes/swift/hooks.md +257 -0
- package/reglas/lenguajes/swift/patrones.md +235 -0
- package/reglas/lenguajes/swift/seguridad.md +248 -0
- package/reglas/lenguajes/swift/testing.md +242 -0
- package/reglas/markitdown.md +60 -0
- package/reglas/memoria-consolidada.md +209 -0
- package/reglas/patrones.md +225 -0
- package/reglas/performance.md +195 -0
- package/reglas/pruebas.md +159 -0
- package/reglas/seguridad-agentes.md +351 -0
- package/reglas/seguridad.md +151 -0
- package/reglas/skills-estandar.md +373 -0
- package/reglas/testing.md +193 -0
- package/schemas/agent-contract.json +176 -0
- package/schemas/agent-frontmatter.schema.json +149 -0
- package/schemas/agent-message.schema.json +53 -0
- package/schemas/agent-output-implementacion.schema.json +85 -0
- package/schemas/agent-output-planificacion.schema.json +113 -0
- package/schemas/agent-output-review.schema.json +78 -0
- package/schemas/diary-entry.schema.json +80 -0
- package/schemas/hook-profiles.schema.json +39 -0
- package/schemas/hooks-config.schema.json +74 -0
- package/schemas/instinct.schema.json +115 -0
- package/schemas/modulos.schema.json +29 -0
- package/schemas/perfiles.schema.json +28 -0
- package/schemas/plugin.schema.json +64 -0
- package/schemas/skill-evals.schema.json +95 -0
- package/schemas/skill-frontmatter.schema.json +170 -0
- package/scripts/actualizar.js +145 -0
- package/scripts/audit-skills.sh +78 -0
- package/scripts/auditar-agentes-gaps.js +149 -0
- package/scripts/auditar-cobertura-frameworks.js +241 -0
- package/scripts/auditar-skills-gaps.js +206 -0
- package/scripts/bootstrap-instintos.js +259 -0
- package/scripts/check-update.js +109 -0
- package/scripts/comandos/agents.js +105 -0
- package/scripts/comandos/info.js +108 -0
- package/scripts/comandos/install-asistido.js +186 -0
- package/scripts/comandos/skills.js +211 -0
- package/scripts/configurar-branch-protection.js +418 -0
- package/scripts/daemon-swl.py +388 -0
- package/scripts/desinstalar.js +130 -0
- package/scripts/doctor.js +559 -0
- package/scripts/field-report.js +199 -0
- package/scripts/generar-inventario.js +317 -0
- package/scripts/inbox-tmux-inject.js +161 -0
- package/scripts/inferir-herramientas-permitidas.js +586 -0
- package/scripts/inicializar.js +133 -0
- package/scripts/instalador.js +1031 -0
- package/scripts/instalar-git-hook.js +122 -0
- package/scripts/lib/agp-frontmatter.js +222 -0
- package/scripts/lib/append-con-marcadores.js +199 -0
- package/scripts/lib/artefactos-python.js +43 -0
- package/scripts/lib/audit-query.js +221 -0
- package/scripts/lib/autostart-linux.js +347 -0
- package/scripts/lib/autostart-macos.js +360 -0
- package/scripts/lib/autostart-windows.js +307 -0
- package/scripts/lib/budget-enforcer.js +252 -0
- package/scripts/lib/claude-sessions.js +285 -0
- package/scripts/lib/configurar-ci.js +380 -0
- package/scripts/lib/console-span-exporter.js +92 -0
- package/scripts/lib/contadores-inventario.js +217 -0
- package/scripts/lib/dashboard-widgets.js +290 -0
- package/scripts/lib/detectar-runtime.js +279 -0
- package/scripts/lib/detectar-stack.js +187 -0
- package/scripts/lib/diary-entry.js +234 -0
- package/scripts/lib/drift-detector.js +545 -0
- package/scripts/lib/estado.js +124 -0
- package/scripts/lib/gestor-componentes.js +243 -0
- package/scripts/lib/gitignore-manifest.js +305 -0
- package/scripts/lib/graph-analyze.py +556 -0
- package/scripts/lib/graph-builder.py +485 -0
- package/scripts/lib/graph-cluster.py +259 -0
- package/scripts/lib/health-row.js +168 -0
- package/scripts/lib/hooks-settings.js +789 -0
- package/scripts/lib/manifiestos.js +138 -0
- package/scripts/lib/mc-client.js +137 -0
- package/scripts/lib/notificaciones-telegram.js +1107 -0
- package/scripts/lib/npm-version.js +261 -0
- package/scripts/lib/paquetes-conocidos.js +50 -0
- package/scripts/lib/preservar-usuario.js +586 -0
- package/scripts/lib/prompt-builder.js +264 -0
- package/scripts/lib/resolver-externo.js +332 -0
- package/scripts/lib/schedule-parser.js +305 -0
- package/scripts/lib/scoring-instintos.js +240 -0
- package/scripts/lib/seguridad.js +160 -0
- package/scripts/lib/selector-interactivo.js +152 -0
- package/scripts/lib/semantic-search.js +242 -0
- package/scripts/lib/skill-discovery.js +234 -0
- package/scripts/lib/skill-metrics.js +246 -0
- package/scripts/lib/skill-normalizer.js +112 -0
- package/scripts/lib/skills-hub.js +340 -0
- package/scripts/lib/span-schema.js +134 -0
- package/scripts/lib/tool-cost-analyzer.js +255 -0
- package/scripts/lib/tracing-processor-interface.js +286 -0
- package/scripts/lib/transformadores/base.js +80 -0
- package/scripts/lib/transformadores/claude.js +124 -0
- package/scripts/lib/transformadores/codex.js +115 -0
- package/scripts/lib/transformadores/copilot.js +106 -0
- package/scripts/lib/transformadores/gemini.js +74 -0
- package/scripts/lib/transformadores/index.js +35 -0
- package/scripts/lib/transformadores/opencode.js +75 -0
- package/scripts/lib/ui.js +259 -0
- package/scripts/limpiar-artefactos-python.js +131 -0
- package/scripts/mcp-orchestrator.py +386 -0
- package/scripts/mcp-pool-manager.py +352 -0
- package/scripts/mcp-telemetry.py +378 -0
- package/scripts/poblar-evolvable.js +226 -0
- package/scripts/publicar.js +287 -0
- package/scripts/reflect-skills.js +403 -0
- package/scripts/rotar-audit-logs.js +185 -0
- package/scripts/run-skill-evals.js +242 -0
- package/scripts/smoke-test.js +374 -0
- package/scripts/token-analysis.py +471 -0
- package/scripts/validar-manifest.js +195 -0
- package/scripts/validar-memoria.js +321 -0
- package/scripts/validar-tests-aislamiento.js +184 -0
- package/scripts/validar-tokens-test.js +208 -0
- package/scripts/validar.js +147 -0
- package/scripts/validate-markdown.py +339 -0
- package/scripts/validate-skills.py +385 -0
- package/scripts/vendor/claude-usage/README.md +116 -0
- package/scripts/vendor/claude-usage/cli.py +334 -0
- package/scripts/vendor/claude-usage/dashboard.py +795 -0
- package/scripts/vendor/claude-usage/scanner.py +467 -0
- package/scripts/vendor/markitdown/cli.py +194 -0
- package/scripts/verificar-evolucion.js +289 -0
- package/scripts/verificar-release.js +494 -0
package/plugin.json
ADDED
|
@@ -0,0 +1,343 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "swl-ses",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Sistema de ingenieria de software auto-evolutivo multi-runtime polyglot. 59 agentes, 151 habilidades, 42 comandos, 60 reglas y 37 hooks. 60 librerias. 11 lenguajes. Soporta Claude Code, Copilot, OpenCode, Codex y Gemini CLI.",
|
|
5
|
+
"author": "Saul Wade Leon",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"repository": "https://github.com/saul-wade/swl-ses",
|
|
8
|
+
"skills": [
|
|
9
|
+
"habilidades/accesibilidad-a11y",
|
|
10
|
+
"habilidades/agent-browser",
|
|
11
|
+
"habilidades/agentes-como-servicio",
|
|
12
|
+
"habilidades/ai-runtime-security",
|
|
13
|
+
"habilidades/angular-avanzado",
|
|
14
|
+
"habilidades/angular-moderno",
|
|
15
|
+
"habilidades/api-rest-diseno",
|
|
16
|
+
"habilidades/aprendizaje-continuo",
|
|
17
|
+
"habilidades/async-python",
|
|
18
|
+
"habilidades/auth-patrones",
|
|
19
|
+
"habilidades/auto-evolucion-protocolo",
|
|
20
|
+
"habilidades/autoresearch",
|
|
21
|
+
"habilidades/azure-cloud",
|
|
22
|
+
"habilidades/backend-mcp-servidor",
|
|
23
|
+
"habilidades/backend-production-resilience",
|
|
24
|
+
"habilidades/brainstorming",
|
|
25
|
+
"habilidades/build-errors-cpp",
|
|
26
|
+
"habilidades/build-errors-csharp",
|
|
27
|
+
"habilidades/build-errors-go",
|
|
28
|
+
"habilidades/build-errors-java",
|
|
29
|
+
"habilidades/build-errors-kotlin",
|
|
30
|
+
"habilidades/build-errors-nextjs",
|
|
31
|
+
"habilidades/build-errors-php",
|
|
32
|
+
"habilidades/build-errors-python",
|
|
33
|
+
"habilidades/build-errors-rust",
|
|
34
|
+
"habilidades/build-errors-swift",
|
|
35
|
+
"habilidades/build-errors-typescript",
|
|
36
|
+
"habilidades/checklist-calidad",
|
|
37
|
+
"habilidades/checklist-seguridad",
|
|
38
|
+
"habilidades/checkpoints-verificacion",
|
|
39
|
+
"habilidades/ci-cd-pipelines",
|
|
40
|
+
"habilidades/cloud-aws",
|
|
41
|
+
"habilidades/compactacion-contexto",
|
|
42
|
+
"habilidades/contenedores-docker",
|
|
43
|
+
"habilidades/context-builder",
|
|
44
|
+
"habilidades/control-profundidad",
|
|
45
|
+
"habilidades/csharp-experto",
|
|
46
|
+
"habilidades/csharp-patrones",
|
|
47
|
+
"habilidades/csharp-testing",
|
|
48
|
+
"habilidades/css-moderno",
|
|
49
|
+
"habilidades/datos-etl",
|
|
50
|
+
"habilidades/dbml-experto",
|
|
51
|
+
"habilidades/dependencias-auditoria",
|
|
52
|
+
"habilidades/deprecacion-migracion",
|
|
53
|
+
"habilidades/design-tokens",
|
|
54
|
+
"habilidades/devsecops-pipeline-security",
|
|
55
|
+
"habilidades/diagrama-arquitectura",
|
|
56
|
+
"habilidades/discutir-fase",
|
|
57
|
+
"habilidades/diseno-herramientas-agente",
|
|
58
|
+
"habilidades/diseno-responsivo",
|
|
59
|
+
"habilidades/django-experto",
|
|
60
|
+
"habilidades/doc-sync",
|
|
61
|
+
"habilidades/drift-detection",
|
|
62
|
+
"habilidades/ejecutar-fase",
|
|
63
|
+
"habilidades/estilo-sin-ai-isms",
|
|
64
|
+
"habilidades/estructura-proyecto-claude",
|
|
65
|
+
"habilidades/evaluacion-agentes",
|
|
66
|
+
"habilidades/event-driven",
|
|
67
|
+
"habilidades/extraccion-documentos",
|
|
68
|
+
"habilidades/extractor-de-aprendizajes",
|
|
69
|
+
"habilidades/fastapi-experto",
|
|
70
|
+
"habilidades/filament-admin",
|
|
71
|
+
"habilidades/frontend-avanzado",
|
|
72
|
+
"habilidades/gcp-cloud",
|
|
73
|
+
"habilidades/generacion-mermaid",
|
|
74
|
+
"habilidades/git-worktrees-paralelo",
|
|
75
|
+
"habilidades/go-experto",
|
|
76
|
+
"habilidades/go-patrones",
|
|
77
|
+
"habilidades/go-testing",
|
|
78
|
+
"habilidades/graphql-experto",
|
|
79
|
+
"habilidades/guardrail-semantico",
|
|
80
|
+
"habilidades/harness-claude-code",
|
|
81
|
+
"habilidades/iam-secretos",
|
|
82
|
+
"habilidades/infra-github-actions",
|
|
83
|
+
"habilidades/instalar-sistema",
|
|
84
|
+
"habilidades/java-experto",
|
|
85
|
+
"habilidades/java-patrones",
|
|
86
|
+
"habilidades/java-testing",
|
|
87
|
+
"habilidades/kotlin-compose",
|
|
88
|
+
"habilidades/kotlin-experto",
|
|
89
|
+
"habilidades/kotlin-testing",
|
|
90
|
+
"habilidades/kubernetes-orquestacion",
|
|
91
|
+
"habilidades/langchain-langraph",
|
|
92
|
+
"habilidades/legacy-code-rescue",
|
|
93
|
+
"habilidades/likec4-experto",
|
|
94
|
+
"habilidades/manejo-errores",
|
|
95
|
+
"habilidades/mapear-codebase",
|
|
96
|
+
"habilidades/memoria-busqueda",
|
|
97
|
+
"habilidades/meta-skills-estandar",
|
|
98
|
+
"habilidades/microservicios",
|
|
99
|
+
"habilidades/mobile-flutter",
|
|
100
|
+
"habilidades/mobile-react-native",
|
|
101
|
+
"habilidades/mongodb-experto",
|
|
102
|
+
"habilidades/monitoring-alertas",
|
|
103
|
+
"habilidades/nestjs-experto",
|
|
104
|
+
"habilidades/nextjs-experto",
|
|
105
|
+
"habilidades/nextjs-patrones",
|
|
106
|
+
"habilidades/nextjs-testing",
|
|
107
|
+
"habilidades/node-experto",
|
|
108
|
+
"habilidades/notificaciones-multicanal",
|
|
109
|
+
"habilidades/nuevo-proyecto",
|
|
110
|
+
"habilidades/orquestacion-async",
|
|
111
|
+
"habilidades/paid-media-tracking",
|
|
112
|
+
"habilidades/patrones-python",
|
|
113
|
+
"habilidades/perfil-usuario",
|
|
114
|
+
"habilidades/performance-baseline",
|
|
115
|
+
"habilidades/php-experto",
|
|
116
|
+
"habilidades/php-patrones",
|
|
117
|
+
"habilidades/php-testing",
|
|
118
|
+
"habilidades/planear-fase",
|
|
119
|
+
"habilidades/postgresql-experto",
|
|
120
|
+
"habilidades/prevencion-racionalizacion",
|
|
121
|
+
"habilidades/prevencion-sobreingenieria",
|
|
122
|
+
"habilidades/privacy-memoria",
|
|
123
|
+
"habilidades/prompt-engineering",
|
|
124
|
+
"habilidades/rag-arquitectura",
|
|
125
|
+
"habilidades/rails-experto",
|
|
126
|
+
"habilidades/react-experto",
|
|
127
|
+
"habilidades/react-optimizacion",
|
|
128
|
+
"habilidades/redis-experto",
|
|
129
|
+
"habilidades/release-semver",
|
|
130
|
+
"habilidades/rust-experto",
|
|
131
|
+
"habilidades/rust-patrones",
|
|
132
|
+
"habilidades/rust-testing",
|
|
133
|
+
"habilidades/seguridad-skills-ia",
|
|
134
|
+
"habilidades/sql-optimizacion",
|
|
135
|
+
"habilidades/sre-patrones",
|
|
136
|
+
"habilidades/stripe-pagos",
|
|
137
|
+
"habilidades/structured-outputs",
|
|
138
|
+
"habilidades/swift-experto",
|
|
139
|
+
"habilidades/swift-patrones",
|
|
140
|
+
"habilidades/swift-testing",
|
|
141
|
+
"habilidades/swl-dashboard",
|
|
142
|
+
"habilidades/swl-markitdown",
|
|
143
|
+
"habilidades/swl-revisar-impacto",
|
|
144
|
+
"habilidades/tailwind-experto",
|
|
145
|
+
"habilidades/tdd-workflow",
|
|
146
|
+
"habilidades/terraform-experto",
|
|
147
|
+
"habilidades/testing-python",
|
|
148
|
+
"habilidades/threat-model-lite",
|
|
149
|
+
"habilidades/tracing-processor",
|
|
150
|
+
"habilidades/tracking-measurement",
|
|
151
|
+
"habilidades/typescript-avanzado",
|
|
152
|
+
"habilidades/typescript-diagnosticos",
|
|
153
|
+
"habilidades/ux-diseno",
|
|
154
|
+
"habilidades/validacion-ci-sistema",
|
|
155
|
+
"habilidades/verificacion-evidencia",
|
|
156
|
+
"habilidades/verificar-trabajo",
|
|
157
|
+
"habilidades/wiki-conocimiento",
|
|
158
|
+
"habilidades/wireframes-flujos",
|
|
159
|
+
"habilidades/workflow-claude-code"
|
|
160
|
+
],
|
|
161
|
+
"agents": [
|
|
162
|
+
"agentes/accesibilidad-wcag-swl.md",
|
|
163
|
+
"agentes/arquitecto-swl.md",
|
|
164
|
+
"agentes/auto-evolucion-swl.md",
|
|
165
|
+
"agentes/backend-api-swl.md",
|
|
166
|
+
"agentes/backend-csharp-swl.md",
|
|
167
|
+
"agentes/backend-go-swl.md",
|
|
168
|
+
"agentes/backend-java-swl.md",
|
|
169
|
+
"agentes/backend-node-swl.md",
|
|
170
|
+
"agentes/backend-python-swl.md",
|
|
171
|
+
"agentes/backend-rust-swl.md",
|
|
172
|
+
"agentes/backend-workers-swl.md",
|
|
173
|
+
"agentes/cloud-infra-swl.md",
|
|
174
|
+
"agentes/consolidador-swl.md",
|
|
175
|
+
"agentes/datos-swl.md",
|
|
176
|
+
"agentes/depurador-swl.md",
|
|
177
|
+
"agentes/devops-ci-swl.md",
|
|
178
|
+
"agentes/disenador-ui-swl.md",
|
|
179
|
+
"agentes/documentador-swl.md",
|
|
180
|
+
"agentes/frontend-angular-swl.md",
|
|
181
|
+
"agentes/frontend-css-swl.md",
|
|
182
|
+
"agentes/frontend-react-swl.md",
|
|
183
|
+
"agentes/frontend-swl.md",
|
|
184
|
+
"agentes/frontend-tailwind-swl.md",
|
|
185
|
+
"agentes/implementador-swl.md",
|
|
186
|
+
"agentes/investigador-swl.md",
|
|
187
|
+
"agentes/investigador-ux-swl.md",
|
|
188
|
+
"agentes/llm-apps-swl.md",
|
|
189
|
+
"agentes/migrador-swl.md",
|
|
190
|
+
"agentes/mobile-android-swl.md",
|
|
191
|
+
"agentes/mobile-cross-swl.md",
|
|
192
|
+
"agentes/mobile-ios-swl.md",
|
|
193
|
+
"agentes/mobile-testing-swl.md",
|
|
194
|
+
"agentes/notificador-swl.md",
|
|
195
|
+
"agentes/observabilidad-swl.md",
|
|
196
|
+
"agentes/orquestador-swl.md",
|
|
197
|
+
"agentes/pagos-swl.md",
|
|
198
|
+
"agentes/perfilador-usuario-swl.md",
|
|
199
|
+
"agentes/planificador-swl.md",
|
|
200
|
+
"agentes/producto-prd-swl.md",
|
|
201
|
+
"agentes/red-team-swl.md",
|
|
202
|
+
"agentes/release-manager-swl.md",
|
|
203
|
+
"agentes/rendimiento-swl.md",
|
|
204
|
+
"agentes/resolutor-build-swl.md",
|
|
205
|
+
"agentes/revisor-angular-swl.md",
|
|
206
|
+
"agentes/revisor-codigo-swl.md",
|
|
207
|
+
"agentes/revisor-csharp-swl.md",
|
|
208
|
+
"agentes/revisor-go-swl.md",
|
|
209
|
+
"agentes/revisor-java-swl.md",
|
|
210
|
+
"agentes/revisor-kotlin-swl.md",
|
|
211
|
+
"agentes/revisor-nextjs-swl.md",
|
|
212
|
+
"agentes/revisor-php-swl.md",
|
|
213
|
+
"agentes/revisor-react-swl.md",
|
|
214
|
+
"agentes/revisor-rust-swl.md",
|
|
215
|
+
"agentes/revisor-seguridad-swl.md",
|
|
216
|
+
"agentes/revisor-swift-swl.md",
|
|
217
|
+
"agentes/revisor-typescript-swl.md",
|
|
218
|
+
"agentes/sre-swl.md",
|
|
219
|
+
"agentes/tdd-qa-swl.md",
|
|
220
|
+
"agentes/ux-disenador-swl.md"
|
|
221
|
+
],
|
|
222
|
+
"hooks": {
|
|
223
|
+
"PreToolUse": [
|
|
224
|
+
{
|
|
225
|
+
"matcher": "Write|Edit",
|
|
226
|
+
"type": "command",
|
|
227
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/escaneo-secretos.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"matcher": "Write|Edit",
|
|
231
|
+
"type": "command",
|
|
232
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/proteccion-rutas.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"matcher": "Bash",
|
|
236
|
+
"type": "command",
|
|
237
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/calidad-pre-commit.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"type": "command",
|
|
241
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/risk-scoring.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
"matcher": "Bash",
|
|
245
|
+
"type": "command",
|
|
246
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/calidad-typescript.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"matcher": "Glob|Grep|Read",
|
|
250
|
+
"type": "command",
|
|
251
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/grafo-contexto.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
"matcher": "Bash",
|
|
255
|
+
"type": "command",
|
|
256
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/auto-background.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
"PostToolUse": [
|
|
260
|
+
{
|
|
261
|
+
"type": "command",
|
|
262
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/linea-estado.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"type": "command",
|
|
266
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/monitor-contexto.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"matcher": "Bash|Write|Edit",
|
|
270
|
+
"type": "command",
|
|
271
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/extraccion-aprendizajes.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
"matcher": "Bash|Write|Edit",
|
|
275
|
+
"type": "command",
|
|
276
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/degradacion-instintos.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"type": "command",
|
|
280
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/tracking-costos.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
"type": "command",
|
|
284
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/inyeccion-contexto.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"matcher": "Write|Edit",
|
|
288
|
+
"type": "command",
|
|
289
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/graph-update.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"type": "command",
|
|
293
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/auto-consolidacion.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
294
|
+
},
|
|
295
|
+
{
|
|
296
|
+
"matcher": "Agent",
|
|
297
|
+
"type": "command",
|
|
298
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/telemetria-agentes.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"type": "command",
|
|
302
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/audit-trail.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"matcher": "Agent",
|
|
306
|
+
"type": "command",
|
|
307
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/agente-lifecycle.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
308
|
+
}
|
|
309
|
+
],
|
|
310
|
+
"UserPromptSubmit": [
|
|
311
|
+
{
|
|
312
|
+
"type": "command",
|
|
313
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/clasificador-mensajes.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
314
|
+
}
|
|
315
|
+
],
|
|
316
|
+
"Stop": [
|
|
317
|
+
{
|
|
318
|
+
"type": "command",
|
|
319
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/resumen-sesion.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"type": "command",
|
|
323
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/actualizar-perfil-usuario.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"type": "command",
|
|
327
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/metricas-evolucion.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
328
|
+
}
|
|
329
|
+
],
|
|
330
|
+
"SubagentStop": [
|
|
331
|
+
{
|
|
332
|
+
"type": "command",
|
|
333
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/auto-evolucion.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
334
|
+
}
|
|
335
|
+
],
|
|
336
|
+
"PreCompact": [
|
|
337
|
+
{
|
|
338
|
+
"type": "command",
|
|
339
|
+
"command": "PATH=\"/c/Program Files/nodejs:/c/Program Files (x86)/nodejs:$PATH\" node -e \"try{require('./hooks/preservar-estado-pre-compact.js')}catch(e){if(e.code!=='MODULE_NOT_FOUND')throw e}\""
|
|
340
|
+
}
|
|
341
|
+
]
|
|
342
|
+
}
|
|
343
|
+
}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# Regla: Accesibilidad
|
|
2
|
+
|
|
3
|
+
Esta regla es OBLIGATORIA para todo código frontend sin excepción.
|
|
4
|
+
Una interfaz que no puede usarse por personas con discapacidades no es una interfaz completa.
|
|
5
|
+
Ninguna feature de UI se considera terminada si viola cualquiera de los puntos aquí listados.
|
|
6
|
+
La accesibilidad no es opcional ni un "nice to have" — es un requisito de calidad.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Semántica HTML obligatoria
|
|
11
|
+
|
|
12
|
+
El HTML debe comunicar estructura y significado, no solo presentación visual.
|
|
13
|
+
|
|
14
|
+
- Usar elementos semánticos correctos: `<nav>`, `<main>`, `<aside>`, `<header>`, `<footer>`,
|
|
15
|
+
`<section>`, `<article>`, `<h1>`-`<h6>`, `<button>`, `<a>`, `<form>`, `<label>`.
|
|
16
|
+
- NUNCA usar `<div>` o `<span>` donde existe un elemento semántico equivalente.
|
|
17
|
+
- NUNCA usar `<table>` para layout visual — solo para datos tabulares.
|
|
18
|
+
- Los encabezados (`<h1>`-`<h6>`) deben seguir jerarquía lógica. No saltar niveles
|
|
19
|
+
(ej: pasar de `<h1>` a `<h3>` sin `<h2>`) por motivos de estilo visual.
|
|
20
|
+
Si necesitas tamaño diferente sin cambiar jerarquía, usa CSS.
|
|
21
|
+
- Un solo `<h1>` por página. Los componentes internos usan `<h2>` en adelante.
|
|
22
|
+
- Los botones que envían formularios son `<button type="submit">`.
|
|
23
|
+
Los que realizan acciones son `<button type="button">`.
|
|
24
|
+
NUNCA simular botones con `<div onclick>`.
|
|
25
|
+
- Los enlaces (`<a>`) tienen `href` siempre. Si no navegan a ningún lugar, usar `<button>`.
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Contraste de color mínimo (WCAG 2.1 AA)
|
|
30
|
+
|
|
31
|
+
Los colores deben garantizar legibilidad para personas con baja visión o daltonismo.
|
|
32
|
+
|
|
33
|
+
- **Texto normal** (menor a 18pt / 14pt bold): relación de contraste mínima **4.5:1**
|
|
34
|
+
contra su fondo.
|
|
35
|
+
- **Texto grande** (18pt o más / 14pt bold o más): relación de contraste mínima **3:1**.
|
|
36
|
+
- **Componentes de UI** (bordes de inputs, iconos funcionales, indicadores de estado):
|
|
37
|
+
relación de contraste mínima **3:1** contra colores adyacentes.
|
|
38
|
+
- Verificar contraste con la herramienta: https://webaim.org/resources/contrastchecker/
|
|
39
|
+
o el plugin de Chrome "axe DevTools".
|
|
40
|
+
- Los estados de hover y focus deben mantener también el contraste mínimo.
|
|
41
|
+
- NUNCA comunicar información solo mediante color (ej: "los campos en rojo son obligatorios").
|
|
42
|
+
Acompañar siempre con texto o ícono.
|
|
43
|
+
- El texto sobre imágenes debe tener una capa de fondo semiopaco para garantizar contraste.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Navegación por teclado completa
|
|
48
|
+
|
|
49
|
+
Toda funcionalidad disponible por mouse debe ser accesible solo con teclado.
|
|
50
|
+
|
|
51
|
+
- Todos los elementos interactivos (botones, enlaces, inputs, selectores, checkboxes,
|
|
52
|
+
toggles, menús) deben ser alcanzables con `Tab` y operables con `Enter` o `Space`.
|
|
53
|
+
- El orden de tabulación debe ser lógico y seguir el orden visual de la página.
|
|
54
|
+
NUNCA usar `tabindex` mayor que 0 — rompe el orden natural y confunde.
|
|
55
|
+
`tabindex="0"` para hacer focusable un elemento no interactivo.
|
|
56
|
+
`tabindex="-1"` para elementos que solo reciben focus programáticamente.
|
|
57
|
+
- `tabindex="-1"` NUNCA se usa en botones, inputs o enlaces reales — los saca
|
|
58
|
+
de la navegación por teclado.
|
|
59
|
+
- Los menús desplegables deben cerrarse con `Escape`.
|
|
60
|
+
- En tablas complejas, las celdas de datos deben ser navegables con flechas del teclado.
|
|
61
|
+
- Los sliders y rangos deben funcionar con flechas del teclado.
|
|
62
|
+
- Shortcuts de teclado documentados deben ser configurable o desactivables
|
|
63
|
+
si colisionan con shortcuts del sistema operativo o lector de pantalla.
|
|
64
|
+
|
|
65
|
+
---
|
|
66
|
+
|
|
67
|
+
## Indicador de foco visible
|
|
68
|
+
|
|
69
|
+
El foco del teclado debe ser siempre visible. Es el cursor del usuario de teclado.
|
|
70
|
+
|
|
71
|
+
- NUNCA hacer `outline: none` o `outline: 0` sin reemplazarlo con un indicador
|
|
72
|
+
de foco equivalente o mejor. Esta es la violación de accesibilidad más frecuente.
|
|
73
|
+
- El indicador de foco debe tener contraste mínimo de **3:1** contra el fondo adyacente.
|
|
74
|
+
- En Angular con Material: no suprimir el foco de Material sin alternativa.
|
|
75
|
+
- En Tailwind: usar `focus:ring-2 focus:ring-[color]` en elementos interactivos.
|
|
76
|
+
Nunca `focus:outline-none` sin acompañarlo de `focus:ring-*`.
|
|
77
|
+
- El foco debe ser visible en TODOS los estados: hover, activo, deshabilitado no aplica
|
|
78
|
+
(elementos deshabilitados no deben recibir foco).
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## ARIA roles, labels y propiedades
|
|
83
|
+
|
|
84
|
+
ARIA complementa la semántica cuando el HTML no es suficiente. No la reemplaza.
|
|
85
|
+
|
|
86
|
+
- **Regla de oro de ARIA**: no uses ARIA si el HTML semántico lo puede hacer.
|
|
87
|
+
`<button>` es mejor que `<div role="button">`.
|
|
88
|
+
- `aria-label` OBLIGATORIO en:
|
|
89
|
+
- Inputs sin `<label>` visible (iconos de búsqueda, campos dentro de tablas)
|
|
90
|
+
- Botones cuyo texto visible es ambiguo ("X", "...", iconos sin texto)
|
|
91
|
+
- Landmarks cuando hay múltiples del mismo tipo (`<nav aria-label="Principal">`)
|
|
92
|
+
- `aria-labelledby` para asociar un elemento con su etiqueta visible cuando
|
|
93
|
+
no se puede usar `<label for>`.
|
|
94
|
+
- `aria-describedby` para asociar texto de ayuda o mensajes de error a un campo.
|
|
95
|
+
- `aria-expanded` en botones que abren/cierran contenido (acordeones, menús).
|
|
96
|
+
Actualizar el valor cuando el estado cambia.
|
|
97
|
+
- `aria-hidden="true"` en íconos decorativos para que los lectores de pantalla
|
|
98
|
+
los ignoren. NUNCA en elementos con contenido funcional.
|
|
99
|
+
- `aria-live` para anuncios dinámicos (notificaciones, resultados de búsqueda,
|
|
100
|
+
actualizaciones de contenido sin recarga de página). Valores:
|
|
101
|
+
- `aria-live="polite"`: anuncia cuando el usuario esté inactivo (preferido)
|
|
102
|
+
- `aria-live="assertive"`: anuncia inmediatamente (solo para errores críticos)
|
|
103
|
+
- `role="alert"` para mensajes de error importantes — implica `aria-live="assertive"`.
|
|
104
|
+
- `aria-invalid="true"` + `aria-describedby="[id-del-error]"` en campos con error de validación.
|
|
105
|
+
- NUNCA usar roles ARIA inválidos o inventados. Solo los definidos en la especificación WAI-ARIA.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Focus management en modales, drawers y diálogos
|
|
110
|
+
|
|
111
|
+
El foco debe moverse al abrir contenido superpuesto y regresar al cerrarlo.
|
|
112
|
+
|
|
113
|
+
- Al abrir un modal:
|
|
114
|
+
1. Mover el foco al primer elemento interactivo dentro del modal, o al contenedor
|
|
115
|
+
del modal si no hay elemento interactivo al que mover.
|
|
116
|
+
2. Atrapar el foco dentro del modal con "focus trap" — Tab y Shift+Tab no deben
|
|
117
|
+
salir del modal mientras está abierto.
|
|
118
|
+
3. El contenido detrás del modal debe tener `aria-hidden="true"` mientras está abierto.
|
|
119
|
+
- Al cerrar un modal:
|
|
120
|
+
1. Regresar el foco al elemento que abrió el modal (el botón que lo activó).
|
|
121
|
+
2. Quitar `aria-hidden` del contenido de fondo.
|
|
122
|
+
- El modal debe cerrarse con `Escape`.
|
|
123
|
+
- Usar `role="dialog"` y `aria-modal="true"` en el contenedor del modal.
|
|
124
|
+
- En Angular Material: usar `MatDialog` que maneja focus trap automáticamente.
|
|
125
|
+
NUNCA crear modales custom sin implementar focus trap.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Skip navigation links (enlaces de salto)
|
|
130
|
+
|
|
131
|
+
Permiten a usuarios de teclado saltar el menú de navegación repetitivo en cada página.
|
|
132
|
+
|
|
133
|
+
- Implementar un enlace "Saltar al contenido principal" como primer elemento de la página.
|
|
134
|
+
- El enlace puede estar visualmente oculto y mostrarse solo al recibir foco.
|
|
135
|
+
- El enlace debe apuntar al `<main>` o al contenido principal con un `id`.
|
|
136
|
+
- Implementación mínima en HTML:
|
|
137
|
+
|
|
138
|
+
```html
|
|
139
|
+
<a href="#main-content" class="skip-link">Saltar al contenido principal</a>
|
|
140
|
+
...
|
|
141
|
+
<main id="main-content">
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Con CSS:
|
|
145
|
+
```css
|
|
146
|
+
.skip-link {
|
|
147
|
+
position: absolute;
|
|
148
|
+
top: -40px;
|
|
149
|
+
left: 0;
|
|
150
|
+
background: #000;
|
|
151
|
+
color: #fff;
|
|
152
|
+
padding: 8px;
|
|
153
|
+
text-decoration: none;
|
|
154
|
+
z-index: 100;
|
|
155
|
+
}
|
|
156
|
+
.skip-link:focus {
|
|
157
|
+
top: 0;
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
- En aplicaciones con múltiples regiones (`<nav>` principal, `<nav>` de breadcrumbs,
|
|
162
|
+
`<nav>` de paginación), agregar enlaces de salto para cada sección mayor.
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Diseño responsive y compatibilidad con zoom
|
|
167
|
+
|
|
168
|
+
La interfaz debe funcionar en distintos tamaños de pantalla y niveles de zoom.
|
|
169
|
+
|
|
170
|
+
- El diseño debe funcionar correctamente a **200% de zoom** sin pérdida de funcionalidad.
|
|
171
|
+
Probar en Chrome con Ctrl+= o Cmd+= hasta 200%.
|
|
172
|
+
- NUNCA fijar el viewport con `user-scalable=no` o `maximum-scale=1`:
|
|
173
|
+
```html
|
|
174
|
+
<!-- PROHIBIDO -->
|
|
175
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
|
|
176
|
+
|
|
177
|
+
<!-- CORRECTO -->
|
|
178
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
179
|
+
```
|
|
180
|
+
- Las áreas táctiles (botones, enlaces) deben tener mínimo **44×44 píxeles** de
|
|
181
|
+
área de toque para usuarios de dispositivos móviles y baja moticidad.
|
|
182
|
+
- Los textos deben usar unidades relativas (`rem`, `em`) no `px` fijas, para que
|
|
183
|
+
respeten la preferencia de tamaño de fuente del sistema operativo del usuario.
|
|
184
|
+
- NUNCA usar `overflow: hidden` en el `<body>` permanentemente — interfiere con
|
|
185
|
+
el zoom en iOS.
|
|
186
|
+
- El contenido no debe requerir scroll horizontal a ningún ancho estándar
|
|
187
|
+
(320px, 375px, 768px, 1024px, 1440px).
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Multimedia con subtítulos y transcripciones
|
|
192
|
+
|
|
193
|
+
El contenido audiovisual debe ser accesible para personas sordas o con baja audición.
|
|
194
|
+
|
|
195
|
+
- Todo video con audio debe tener **subtítulos** (captions) sincronizados.
|
|
196
|
+
Los subtítulos automáticos de YouTube no son suficientes — deben revisarse y corregirse.
|
|
197
|
+
- Los videos informativos (no solo decorativos) deben tener también una **transcripción**
|
|
198
|
+
de texto completa disponible en la página.
|
|
199
|
+
- El audio solo (podcasts, grabaciones) debe tener transcripción de texto.
|
|
200
|
+
- El contenido de video puramente visual (sin audio relevante) debe tener
|
|
201
|
+
**descripción de audio** (audiodescripción) que narre el contenido visual.
|
|
202
|
+
- Los GIFs animados y videos que reproducen automáticamente deben tener opción
|
|
203
|
+
de pausa. NUNCA reproducir audio de forma automática sin interacción del usuario.
|
|
204
|
+
- Si se usan imágenes informativas, el atributo `alt` debe describir la información
|
|
205
|
+
que comunica la imagen, no solo su aspecto visual.
|
|
206
|
+
Imágenes decorativas: `alt=""` (alt vacío, no omitir el atributo).
|
|
207
|
+
|
|
208
|
+
---
|
|
209
|
+
|
|
210
|
+
## Validación automatizada con axe-core o pa11y
|
|
211
|
+
|
|
212
|
+
La revisión manual no es suficiente. Automatizar la detección de errores básicos.
|
|
213
|
+
|
|
214
|
+
- Integrar **axe-core** o **pa11y** en el pipeline de CI/CD.
|
|
215
|
+
Fallo en la pipeline si se detectan violaciones de nivel A o AA de WCAG 2.1.
|
|
216
|
+
- Configuración mínima para pa11y en CI:
|
|
217
|
+
```bash
|
|
218
|
+
npx pa11y --standard WCAG2AA [url]
|
|
219
|
+
```
|
|
220
|
+
- Para Angular: usar `@axe-core/angular` en el entorno de desarrollo:
|
|
221
|
+
```typescript
|
|
222
|
+
// main.ts — solo en development
|
|
223
|
+
if (!environment.production) {
|
|
224
|
+
import('@axe-core/angular').then(axe => {
|
|
225
|
+
axe.default(React, ReactDOM, 1000);
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
```
|
|
229
|
+
- La validación automatizada detecta aproximadamente 30-40% de los problemas
|
|
230
|
+
de accesibilidad. El resto requiere prueba manual y con lectores de pantalla.
|
|
231
|
+
- Prueba mensual con lector de pantalla: NVDA (Windows) o VoiceOver (Mac/iOS).
|
|
232
|
+
- Los errores de accesibilidad detectados por axe/pa11y tienen la misma prioridad
|
|
233
|
+
que los bugs funcionales — no se difieren indefinidamente.
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Formularios accesibles
|
|
238
|
+
|
|
239
|
+
Los formularios son uno de los puntos más críticos de accesibilidad.
|
|
240
|
+
|
|
241
|
+
- Cada campo de formulario DEBE tener un `<label>` asociado mediante `for`/`id`
|
|
242
|
+
o estar envuelto en un `<label>`.
|
|
243
|
+
NUNCA usar `placeholder` como único label — desaparece al escribir.
|
|
244
|
+
- Los mensajes de error deben:
|
|
245
|
+
- Aparecer junto al campo que los causó, no solo arriba del formulario
|
|
246
|
+
- Ser descriptivos: "El correo electrónico no tiene formato válido" no "Error"
|
|
247
|
+
- Estar asociados al campo con `aria-describedby`
|
|
248
|
+
- Notificarse al lector de pantalla con `aria-live` o `role="alert"`
|
|
249
|
+
- Los campos obligatorios se marcan con `aria-required="true"` y visualmente
|
|
250
|
+
(asterisco u otro indicador con leyenda explicativa).
|
|
251
|
+
- Los grupos de campos relacionados (radios, checkboxes) se agrupan en `<fieldset>`
|
|
252
|
+
con `<legend>` descriptiva.
|
|
253
|
+
- En Angular Material: `mat-form-field` + `mat-error` maneja la mayoría de estos
|
|
254
|
+
requisitos automáticamente si se usa correctamente.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Checklist antes de entregar cualquier feature de UI
|
|
259
|
+
|
|
260
|
+
- [ ] Todos los elementos interactivos son alcanzables y operables con teclado
|
|
261
|
+
- [ ] El indicador de foco es visible en todos los elementos interactivos
|
|
262
|
+
- [ ] Los contrastes de color cumplen WCAG 2.1 AA (4.5:1 texto normal, 3:1 texto grande)
|
|
263
|
+
- [ ] Todos los inputs tienen `<label>` o `aria-label`
|
|
264
|
+
- [ ] Los modales tienen focus trap y regresan el foco al cerrarse
|
|
265
|
+
- [ ] Los botones con solo ícono tienen `aria-label`
|
|
266
|
+
- [ ] Las imágenes tienen `alt` apropiado (descriptivo o vacío si decorativas)
|
|
267
|
+
- [ ] No hay `outline: none` sin reemplazo visible
|
|
268
|
+
- [ ] La validación automatizada con axe pasa sin errores de nivel A/AA
|
|
269
|
+
- [ ] Se probó la funcionalidad básica a 200% de zoom
|