@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.
Files changed (702) hide show
  1. package/CLAUDE.md +238 -0
  2. package/README.md +560 -0
  3. package/_userland/agentes/.gitkeep +0 -0
  4. package/_userland/habilidades/.gitkeep +0 -0
  5. package/agentes/.evolved.json +9 -0
  6. package/agentes/accesibilidad-wcag-swl.md +692 -0
  7. package/agentes/arquitecto-swl.md +238 -0
  8. package/agentes/auto-evolucion-swl.md +854 -0
  9. package/agentes/backend-api-swl.md +470 -0
  10. package/agentes/backend-csharp-swl.md +418 -0
  11. package/agentes/backend-go-swl.md +388 -0
  12. package/agentes/backend-java-swl.md +279 -0
  13. package/agentes/backend-node-swl.md +477 -0
  14. package/agentes/backend-python-swl.md +608 -0
  15. package/agentes/backend-rust-swl.md +362 -0
  16. package/agentes/backend-workers-swl.md +480 -0
  17. package/agentes/cloud-infra-swl.md +485 -0
  18. package/agentes/consolidador-swl.md +539 -0
  19. package/agentes/datos-swl.md +584 -0
  20. package/agentes/depurador-swl.md +349 -0
  21. package/agentes/devops-ci-swl.md +374 -0
  22. package/agentes/disenador-ui-swl.md +558 -0
  23. package/agentes/documentador-swl.md +343 -0
  24. package/agentes/evals/arquitecto-swl.evals.json +56 -0
  25. package/agentes/evals/auto-evolucion-swl.evals.json +68 -0
  26. package/agentes/evals/implementador-swl.evals.json +56 -0
  27. package/agentes/evals/orquestador-swl.evals.json +60 -0
  28. package/agentes/evals/perfilador-usuario-swl.evals.json +60 -0
  29. package/agentes/evals/red-team-swl.evals.json +59 -0
  30. package/agentes/evals/revisor-codigo-swl.evals.json +59 -0
  31. package/agentes/frontend-angular-swl.md +627 -0
  32. package/agentes/frontend-css-swl.md +720 -0
  33. package/agentes/frontend-react-swl.md +696 -0
  34. package/agentes/frontend-swl.md +500 -0
  35. package/agentes/frontend-tailwind-swl.md +830 -0
  36. package/agentes/implementador-swl.md +328 -0
  37. package/agentes/investigador-swl.md +430 -0
  38. package/agentes/investigador-ux-swl.md +500 -0
  39. package/agentes/llm-apps-swl.md +276 -0
  40. package/agentes/migrador-swl.md +417 -0
  41. package/agentes/mobile-android-swl.md +509 -0
  42. package/agentes/mobile-cross-swl.md +539 -0
  43. package/agentes/mobile-ios-swl.md +500 -0
  44. package/agentes/mobile-testing-swl.md +300 -0
  45. package/agentes/notificador-swl.md +916 -0
  46. package/agentes/observabilidad-swl.md +436 -0
  47. package/agentes/orquestador-swl.md +884 -0
  48. package/agentes/pagos-swl.md +283 -0
  49. package/agentes/perfilador-usuario-swl.md +306 -0
  50. package/agentes/planificador-swl.md +402 -0
  51. package/agentes/producto-prd-swl.md +587 -0
  52. package/agentes/red-team-swl.md +216 -0
  53. package/agentes/release-manager-swl.md +568 -0
  54. package/agentes/rendimiento-swl.md +714 -0
  55. package/agentes/resolutor-build-swl.md +243 -0
  56. package/agentes/revisor-angular-swl.md +276 -0
  57. package/agentes/revisor-codigo-swl.md +348 -0
  58. package/agentes/revisor-csharp-swl.md +262 -0
  59. package/agentes/revisor-go-swl.md +257 -0
  60. package/agentes/revisor-java-swl.md +255 -0
  61. package/agentes/revisor-kotlin-swl.md +271 -0
  62. package/agentes/revisor-nextjs-swl.md +279 -0
  63. package/agentes/revisor-php-swl.md +269 -0
  64. package/agentes/revisor-react-swl.md +276 -0
  65. package/agentes/revisor-rust-swl.md +344 -0
  66. package/agentes/revisor-seguridad-swl.md +390 -0
  67. package/agentes/revisor-swift-swl.md +266 -0
  68. package/agentes/revisor-typescript-swl.md +344 -0
  69. package/agentes/sre-swl.md +265 -0
  70. package/agentes/tdd-qa-swl.md +354 -0
  71. package/agentes/ux-disenador-swl.md +501 -0
  72. package/bin/lib/bot-comandos.js +1030 -0
  73. package/bin/lib/bot-discovery.js +182 -0
  74. package/bin/lib/bot-git.js +142 -0
  75. package/bin/swl-ses.js +325 -0
  76. package/bin/swl-telegram-bot.js +442 -0
  77. package/bin/swl-telegram-bot.plist +21 -0
  78. package/bin/swl-telegram-bot.service +14 -0
  79. package/comandos/swl/.evolved.json +23 -0
  80. package/comandos/swl/actualizar.md +174 -0
  81. package/comandos/swl/adoptar-proyecto.md +207 -0
  82. package/comandos/swl/aprender.md +701 -0
  83. package/comandos/swl/auditar-deps.md +134 -0
  84. package/comandos/swl/autoresearch.md +170 -0
  85. package/comandos/swl/ayuda.md +224 -0
  86. package/comandos/swl/brainstorm.md +50 -0
  87. package/comandos/swl/checkpoint.md +330 -0
  88. package/comandos/swl/compactar.md +283 -0
  89. package/comandos/swl/configurar-ci.md +227 -0
  90. package/comandos/swl/contexto.md +112 -0
  91. package/comandos/swl/contribuir.md +233 -0
  92. package/comandos/swl/crear-skill.md +292 -0
  93. package/comandos/swl/cron.md +196 -0
  94. package/comandos/swl/dashboard.md +146 -0
  95. package/comandos/swl/discutir-fase.md +230 -0
  96. package/comandos/swl/ejecutar-fase.md +135 -0
  97. package/comandos/swl/evaluar-skill.md +487 -0
  98. package/comandos/swl/evolucion-estado.md +142 -0
  99. package/comandos/swl/evolucionar.md +259 -0
  100. package/comandos/swl/exportar-vault.md +189 -0
  101. package/comandos/swl/gateway.md +158 -0
  102. package/comandos/swl/inbox.md +116 -0
  103. package/comandos/swl/instalar.md +220 -0
  104. package/comandos/swl/instintos.md +86 -0
  105. package/comandos/swl/mapear-codebase.md +312 -0
  106. package/comandos/swl/mcp-status.md +175 -0
  107. package/comandos/swl/metricas.md +270 -0
  108. package/comandos/swl/modelo.md +102 -0
  109. package/comandos/swl/notificaciones.md +396 -0
  110. package/comandos/swl/nuevo-proyecto.md +154 -0
  111. package/comandos/swl/planear-fase.md +221 -0
  112. package/comandos/swl/plugins.md +256 -0
  113. package/comandos/swl/reflect-skills.md +125 -0
  114. package/comandos/swl/release.md +217 -0
  115. package/comandos/swl/revisar-impacto.md +206 -0
  116. package/comandos/swl/revisar.md +330 -0
  117. package/comandos/swl/salud.md +363 -0
  118. package/comandos/swl/sesiones.md +200 -0
  119. package/comandos/swl/skill-search.md +113 -0
  120. package/comandos/swl/verificar.md +585 -0
  121. package/comandos/swl/wiki.md +620 -0
  122. package/contextos/dev.md +32 -0
  123. package/contextos/research.md +30 -0
  124. package/contextos/review.md +31 -0
  125. package/habilidades/accesibilidad-a11y/SKILL.md +201 -0
  126. package/habilidades/accesibilidad-a11y/evals/evals.json +56 -0
  127. package/habilidades/accesibilidad-a11y/recursos/ejemplos-y-checklist-completo.md +441 -0
  128. package/habilidades/agent-browser/SKILL.md +218 -0
  129. package/habilidades/agentes-como-servicio/SKILL.md +218 -0
  130. package/habilidades/ai-runtime-security/SKILL.md +273 -0
  131. package/habilidades/angular-avanzado/SKILL.md +164 -0
  132. package/habilidades/angular-avanzado/recursos/ejemplos-avanzados.md +219 -0
  133. package/habilidades/angular-moderno/SKILL.md +186 -0
  134. package/habilidades/angular-moderno/evals/evals.json +45 -0
  135. package/habilidades/angular-moderno/recursos/ejemplos-avanzados.md +106 -0
  136. package/habilidades/api-rest-diseno/SKILL.md +191 -0
  137. package/habilidades/api-rest-diseno/recursos/openapi-template.yaml +506 -0
  138. package/habilidades/api-rest-diseno/recursos/referencia-api.md +140 -0
  139. package/habilidades/aprendizaje-continuo/SKILL.md +151 -0
  140. package/habilidades/aprendizaje-continuo/evals/evals.json +53 -0
  141. package/habilidades/aprendizaje-continuo/recursos/referencia-instintos.md +290 -0
  142. package/habilidades/async-python/SKILL.md +149 -0
  143. package/habilidades/async-python/evals/evals.json +47 -0
  144. package/habilidades/async-python/recursos/patrones-y-ejemplos-completos.md +292 -0
  145. package/habilidades/auth-patrones/.evolved.json +9 -0
  146. package/habilidades/auth-patrones/SKILL.md +413 -0
  147. package/habilidades/auth-patrones/recursos/implementaciones-completas.md +229 -0
  148. package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -0
  149. package/habilidades/auto-evolucion-protocolo/evals/evals.json +55 -0
  150. package/habilidades/auto-evolucion-protocolo/recursos/referencia-completa.md +145 -0
  151. package/habilidades/autoresearch/SKILL.md +268 -0
  152. package/habilidades/autoresearch/evals/evals.json +41 -0
  153. package/habilidades/autoresearch/recursos/checklist-template.md +191 -0
  154. package/habilidades/autoresearch/scripts/calcular-score.js +88 -0
  155. package/habilidades/azure-cloud/SKILL.md +308 -0
  156. package/habilidades/azure-cloud/recursos/aks.md +327 -0
  157. package/habilidades/backend-mcp-servidor/SKILL.md +270 -0
  158. package/habilidades/backend-production-resilience/SKILL.md +288 -0
  159. package/habilidades/brainstorming/SKILL.md +295 -0
  160. package/habilidades/brainstorming/recursos/componentes-html.md +247 -0
  161. package/habilidades/build-errors-cpp/SKILL.md +270 -0
  162. package/habilidades/build-errors-csharp/SKILL.md +265 -0
  163. package/habilidades/build-errors-go/SKILL.md +306 -0
  164. package/habilidades/build-errors-java/SKILL.md +278 -0
  165. package/habilidades/build-errors-kotlin/SKILL.md +303 -0
  166. package/habilidades/build-errors-nextjs/SKILL.md +312 -0
  167. package/habilidades/build-errors-php/SKILL.md +270 -0
  168. package/habilidades/build-errors-python/SKILL.md +292 -0
  169. package/habilidades/build-errors-rust/SKILL.md +284 -0
  170. package/habilidades/build-errors-swift/SKILL.md +272 -0
  171. package/habilidades/build-errors-typescript/SKILL.md +369 -0
  172. package/habilidades/checklist-calidad/SKILL.md +271 -0
  173. package/habilidades/checklist-calidad/recursos/quality-report-template.md +148 -0
  174. package/habilidades/checklist-seguridad/SKILL.md +285 -0
  175. package/habilidades/checkpoints-verificacion/SKILL.md +298 -0
  176. package/habilidades/checkpoints-verificacion/recursos/checkpoint-templates.md +360 -0
  177. package/habilidades/ci-cd-pipelines/SKILL.md +157 -0
  178. package/habilidades/ci-cd-pipelines/recursos/github-actions-template.yaml +403 -0
  179. package/habilidades/ci-cd-pipelines/recursos/pipelines-completos.md +487 -0
  180. package/habilidades/cloud-aws/SKILL.md +142 -0
  181. package/habilidades/cloud-aws/recursos/servicios-aws-referencia.md +321 -0
  182. package/habilidades/compactacion-contexto/SKILL.md +247 -0
  183. package/habilidades/contenedores-docker/SKILL.md +137 -0
  184. package/habilidades/contenedores-docker/recursos/dockerfile-template.dockerfile +160 -0
  185. package/habilidades/contenedores-docker/recursos/ejemplos-y-configuraciones.md +327 -0
  186. package/habilidades/context-builder/SKILL.md +170 -0
  187. package/habilidades/control-profundidad/SKILL.md +128 -0
  188. package/habilidades/csharp-experto/SKILL.md +322 -0
  189. package/habilidades/csharp-patrones/SKILL.md +316 -0
  190. package/habilidades/csharp-testing/SKILL.md +286 -0
  191. package/habilidades/css-moderno/SKILL.md +166 -0
  192. package/habilidades/css-moderno/evals/evals.json +43 -0
  193. package/habilidades/css-moderno/recursos/ejemplos-y-patrones-completos.md +337 -0
  194. package/habilidades/datos-etl/SKILL.md +129 -0
  195. package/habilidades/datos-etl/recursos/implementaciones-completas.md +322 -0
  196. package/habilidades/dbml-experto/SKILL.md +339 -0
  197. package/habilidades/dbml-experto/evals/evals.json +56 -0
  198. package/habilidades/dependencias-auditoria/SKILL.md +320 -0
  199. package/habilidades/deprecacion-migracion/SKILL.md +169 -0
  200. package/habilidades/deprecacion-migracion/recursos/implementaciones-completas.md +220 -0
  201. package/habilidades/design-tokens/SKILL.md +158 -0
  202. package/habilidades/design-tokens/recursos/tokens-y-configuracion.md +363 -0
  203. package/habilidades/devsecops-pipeline-security/SKILL.md +309 -0
  204. package/habilidades/diagrama-arquitectura/SKILL.md +165 -0
  205. package/habilidades/diagrama-arquitectura/assets/template.html +276 -0
  206. package/habilidades/discutir-fase/SKILL.md +188 -0
  207. package/habilidades/diseno-herramientas-agente/SKILL.md +199 -0
  208. package/habilidades/diseno-responsivo/SKILL.md +186 -0
  209. package/habilidades/diseno-responsivo/recursos/ejemplos-layouts.md +156 -0
  210. package/habilidades/django-experto/SKILL.md +205 -0
  211. package/habilidades/django-experto/recursos/async-django.md +390 -0
  212. package/habilidades/django-experto/recursos/drf-patrones.md +438 -0
  213. package/habilidades/django-experto/recursos/orm-avanzado.md +382 -0
  214. package/habilidades/django-experto/recursos/referencia-completa.md +188 -0
  215. package/habilidades/django-experto/recursos/testing-django.md +415 -0
  216. package/habilidades/doc-sync/SKILL.md +280 -0
  217. package/habilidades/drift-detection/SKILL.md +179 -0
  218. package/habilidades/ejecutar-fase/SKILL.md +468 -0
  219. package/habilidades/estilo-sin-ai-isms/SKILL.md +775 -0
  220. package/habilidades/estilo-sin-ai-isms/evals/evals.json +63 -0
  221. package/habilidades/estilo-sin-ai-isms/scripts/detectar_aiisms.py +500 -0
  222. package/habilidades/estructura-proyecto-claude/SKILL.md +215 -0
  223. package/habilidades/estructura-proyecto-claude/recursos/claude-md-template.md +261 -0
  224. package/habilidades/estructura-proyecto-claude/recursos/configuracion-y-extensiones.md +176 -0
  225. package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +289 -0
  226. package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +77 -0
  227. package/habilidades/estructura-proyecto-claude/recursos/variantes-por-stack.md +177 -0
  228. package/habilidades/evaluacion-agentes/SKILL.md +314 -0
  229. package/habilidades/event-driven/SKILL.md +153 -0
  230. package/habilidades/event-driven/recursos/implementaciones-completas.md +423 -0
  231. package/habilidades/extraccion-documentos/SKILL.md +221 -0
  232. package/habilidades/extractor-de-aprendizajes/.evolved.json +9 -0
  233. package/habilidades/extractor-de-aprendizajes/SKILL.md +311 -0
  234. package/habilidades/extractor-de-aprendizajes/evals/evals.json +55 -0
  235. package/habilidades/fastapi-experto/SKILL.md +221 -0
  236. package/habilidades/fastapi-experto/recursos/async-patterns.md +438 -0
  237. package/habilidades/fastapi-experto/recursos/dependency-injection.md +330 -0
  238. package/habilidades/fastapi-experto/recursos/referencia-completa.md +79 -0
  239. package/habilidades/fastapi-experto/recursos/testing-httpx.md +420 -0
  240. package/habilidades/filament-admin/SKILL.md +290 -0
  241. package/habilidades/frontend-avanzado/SKILL.md +257 -0
  242. package/habilidades/frontend-avanzado/recursos/apis-nativas-ejemplos.md +341 -0
  243. package/habilidades/gcp-cloud/SKILL.md +260 -0
  244. package/habilidades/gcp-cloud/recursos/gke.md +234 -0
  245. package/habilidades/gcp-cloud/recursos/terraform-gcp.md +307 -0
  246. package/habilidades/generacion-mermaid/SKILL.md +229 -0
  247. package/habilidades/git-worktrees-paralelo/SKILL.md +270 -0
  248. package/habilidades/go-experto/SKILL.md +305 -0
  249. package/habilidades/go-patrones/SKILL.md +299 -0
  250. package/habilidades/go-testing/SKILL.md +291 -0
  251. package/habilidades/graphql-experto/SKILL.md +323 -0
  252. package/habilidades/guardrail-semantico/SKILL.md +282 -0
  253. package/habilidades/harness-claude-code/SKILL.md +299 -0
  254. package/habilidades/iam-secretos/SKILL.md +265 -0
  255. package/habilidades/iam-secretos/recursos/implementaciones-completas.md +356 -0
  256. package/habilidades/infra-github-actions/SKILL.md +166 -0
  257. package/habilidades/instalar-sistema/.evolved.json +9 -0
  258. package/habilidades/instalar-sistema/SKILL.md +221 -0
  259. package/habilidades/java-experto/SKILL.md +290 -0
  260. package/habilidades/java-patrones/SKILL.md +275 -0
  261. package/habilidades/java-testing/SKILL.md +288 -0
  262. package/habilidades/kotlin-compose/SKILL.md +278 -0
  263. package/habilidades/kotlin-compose/recursos/animaciones-performance.md +93 -0
  264. package/habilidades/kotlin-experto/SKILL.md +318 -0
  265. package/habilidades/kotlin-testing/SKILL.md +267 -0
  266. package/habilidades/kotlin-testing/recursos/testing-avanzado.md +74 -0
  267. package/habilidades/kubernetes-orquestacion/SKILL.md +152 -0
  268. package/habilidades/kubernetes-orquestacion/recursos/manifiestos-completos.md +452 -0
  269. package/habilidades/langchain-langraph/SKILL.md +386 -0
  270. package/habilidades/langchain-langraph/recursos/evaluacion-rag.md +321 -0
  271. package/habilidades/langchain-langraph/recursos/rag-maturity-model.md +225 -0
  272. package/habilidades/langchain-langraph/recursos/vectorstores.md +306 -0
  273. package/habilidades/legacy-code-rescue/SKILL.md +267 -0
  274. package/habilidades/likec4-experto/SKILL.md +412 -0
  275. package/habilidades/likec4-experto/evals/evals.json +69 -0
  276. package/habilidades/manejo-errores/.evolved.json +9 -0
  277. package/habilidades/manejo-errores/SKILL.md +407 -0
  278. package/habilidades/manejo-errores/recursos/implementaciones-completas.md +248 -0
  279. package/habilidades/mapear-codebase/SKILL.md +275 -0
  280. package/habilidades/memoria-busqueda/SKILL.md +194 -0
  281. package/habilidades/memoria-busqueda/evals/evals.json +44 -0
  282. package/habilidades/meta-skills-estandar/SKILL.md +298 -0
  283. package/habilidades/meta-skills-estandar/recursos/anti-patrones-y-leyes.md +205 -0
  284. package/habilidades/meta-skills-estandar/recursos/frameworks-seguridad.md +107 -0
  285. package/habilidades/meta-skills-estandar/recursos/idiomas-framework.md +60 -0
  286. package/habilidades/meta-skills-estandar/recursos/skills-as-agents.md +163 -0
  287. package/habilidades/microservicios/SKILL.md +155 -0
  288. package/habilidades/microservicios/recursos/patrones-y-ejemplos-completos.md +325 -0
  289. package/habilidades/mobile-flutter/SKILL.md +199 -0
  290. package/habilidades/mobile-flutter/recursos/ejemplos-completos.md +319 -0
  291. package/habilidades/mobile-react-native/SKILL.md +176 -0
  292. package/habilidades/mobile-react-native/recursos/ejemplos-completos.md +216 -0
  293. package/habilidades/mongodb-experto/SKILL.md +302 -0
  294. package/habilidades/monitoring-alertas/SKILL.md +201 -0
  295. package/habilidades/monitoring-alertas/recursos/instrumentacion-y-alertas.md +301 -0
  296. package/habilidades/nestjs-experto/SKILL.md +307 -0
  297. package/habilidades/nestjs-experto/recursos/guards-interceptors.md +339 -0
  298. package/habilidades/nestjs-experto/recursos/modulos-di.md +287 -0
  299. package/habilidades/nestjs-experto/recursos/testing-nestjs.md +354 -0
  300. package/habilidades/nextjs-experto/SKILL.md +335 -0
  301. package/habilidades/nextjs-patrones/SKILL.md +303 -0
  302. package/habilidades/nextjs-testing/SKILL.md +331 -0
  303. package/habilidades/node-experto/.evolved.json +9 -0
  304. package/habilidades/node-experto/SKILL.md +266 -0
  305. package/habilidades/node-experto/recursos/patrones-completos.md +283 -0
  306. package/habilidades/notificaciones-multicanal/SKILL.md +159 -0
  307. package/habilidades/notificaciones-multicanal/recursos/config-template.json +115 -0
  308. package/habilidades/notificaciones-multicanal/recursos/configuracion-y-templates.md +303 -0
  309. package/habilidades/nuevo-proyecto/SKILL.md +204 -0
  310. package/habilidades/orquestacion-async/SKILL.md +303 -0
  311. package/habilidades/paid-media-tracking/SKILL.md +269 -0
  312. package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +220 -0
  313. package/habilidades/paid-media-tracking/recursos/google-ads-api.md +215 -0
  314. package/habilidades/patrones-python/SKILL.md +228 -0
  315. package/habilidades/patrones-python/evals/evals.json +56 -0
  316. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -0
  317. package/habilidades/patrones-python/recursos/referencia-completa.md +202 -0
  318. package/habilidades/perfil-usuario/SKILL.md +200 -0
  319. package/habilidades/perfil-usuario/evals/evals.json +55 -0
  320. package/habilidades/performance-baseline/SKILL.md +297 -0
  321. package/habilidades/php-experto/SKILL.md +291 -0
  322. package/habilidades/php-patrones/SKILL.md +306 -0
  323. package/habilidades/php-testing/SKILL.md +280 -0
  324. package/habilidades/planear-fase/SKILL.md +269 -0
  325. package/habilidades/postgresql-experto/SKILL.md +151 -0
  326. package/habilidades/postgresql-experto/evals/evals.json +53 -0
  327. package/habilidades/postgresql-experto/recursos/referencia-completa.md +215 -0
  328. package/habilidades/prevencion-racionalizacion/SKILL.md +175 -0
  329. package/habilidades/prevencion-sobreingenieria/SKILL.md +323 -0
  330. package/habilidades/privacy-memoria/SKILL.md +141 -0
  331. package/habilidades/privacy-memoria/evals/evals.json +43 -0
  332. package/habilidades/prompt-engineering/SKILL.md +518 -0
  333. package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +467 -0
  334. package/habilidades/rag-arquitectura/SKILL.md +338 -0
  335. package/habilidades/rails-experto/SKILL.md +237 -0
  336. package/habilidades/rails-experto/recursos/active-record.md +260 -0
  337. package/habilidades/rails-experto/recursos/hotwire-turbo.md +293 -0
  338. package/habilidades/rails-experto/recursos/testing-rspec.md +362 -0
  339. package/habilidades/react-experto/SKILL.md +209 -0
  340. package/habilidades/react-experto/evals/evals.json +55 -0
  341. package/habilidades/react-experto/recursos/patrones-y-ejemplos-completos.md +240 -0
  342. package/habilidades/react-optimizacion/SKILL.md +174 -0
  343. package/habilidades/react-optimizacion/recursos/patrones-avanzados.md +138 -0
  344. package/habilidades/redis-experto/SKILL.md +305 -0
  345. package/habilidades/release-semver/.evolved.json +9 -0
  346. package/habilidades/release-semver/SKILL.md +248 -0
  347. package/habilidades/release-semver/scripts/generar-changelog.sh +238 -0
  348. package/habilidades/rust-experto/SKILL.md +400 -0
  349. package/habilidades/rust-patrones/SKILL.md +296 -0
  350. package/habilidades/rust-testing/SKILL.md +311 -0
  351. package/habilidades/seguridad-skills-ia/SKILL.md +262 -0
  352. package/habilidades/sql-optimizacion/SKILL.md +200 -0
  353. package/habilidades/sql-optimizacion/evals/evals.json +54 -0
  354. package/habilidades/sql-optimizacion/recursos/patrones-sql-avanzados.md +131 -0
  355. package/habilidades/sre-patrones/SKILL.md +333 -0
  356. package/habilidades/sre-patrones/recursos/chaos-engineering.md +241 -0
  357. package/habilidades/sre-patrones/recursos/oncall-design.md +236 -0
  358. package/habilidades/stripe-pagos/SKILL.md +550 -0
  359. package/habilidades/stripe-pagos/recursos/errores-reintentos.md +390 -0
  360. package/habilidades/stripe-pagos/recursos/stripe-connect.md +290 -0
  361. package/habilidades/structured-outputs/SKILL.md +343 -0
  362. package/habilidades/swift-experto/SKILL.md +320 -0
  363. package/habilidades/swift-experto/recursos/keychain-y-wrappers.md +110 -0
  364. package/habilidades/swift-patrones/SKILL.md +313 -0
  365. package/habilidades/swift-patrones/recursos/tca-ejemplo-completo.md +113 -0
  366. package/habilidades/swift-testing/SKILL.md +254 -0
  367. package/habilidades/swift-testing/recursos/xcuitest-planes.md +143 -0
  368. package/habilidades/swl-dashboard/SKILL.md +370 -0
  369. package/habilidades/swl-markitdown/SKILL.md +285 -0
  370. package/habilidades/swl-markitdown/evals/evals.json +52 -0
  371. package/habilidades/swl-revisar-impacto/SKILL.md +233 -0
  372. package/habilidades/tailwind-experto/SKILL.md +240 -0
  373. package/habilidades/tailwind-experto/recursos/referencia-completa.md +184 -0
  374. package/habilidades/tdd-workflow/SKILL.md +293 -0
  375. package/habilidades/terraform-experto/SKILL.md +321 -0
  376. package/habilidades/testing-python/SKILL.md +340 -0
  377. package/habilidades/testing-python/recursos/ejemplos-completos.md +167 -0
  378. package/habilidades/threat-model-lite/SKILL.md +246 -0
  379. package/habilidades/tracing-processor/SKILL.md +212 -0
  380. package/habilidades/tracking-measurement/SKILL.md +239 -0
  381. package/habilidades/tracking-measurement/recursos/consent-mode.md +231 -0
  382. package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +216 -0
  383. package/habilidades/tracking-measurement/recursos/meta-capi.md +262 -0
  384. package/habilidades/typescript-avanzado/SKILL.md +144 -0
  385. package/habilidades/typescript-avanzado/evals/evals.json +55 -0
  386. package/habilidades/typescript-avanzado/recursos/patrones-y-ejemplos-completos.md +298 -0
  387. package/habilidades/typescript-diagnosticos/SKILL.md +513 -0
  388. package/habilidades/ux-diseno/SKILL.md +116 -0
  389. package/habilidades/ux-diseno/evals/evals.json +43 -0
  390. package/habilidades/ux-diseno/recursos/patrones-ux-referencia.md +214 -0
  391. package/habilidades/validacion-ci-sistema/SKILL.md +136 -0
  392. package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +369 -0
  393. package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +286 -0
  394. package/habilidades/verificacion-evidencia/SKILL.md +160 -0
  395. package/habilidades/verificar-trabajo/SKILL.md +303 -0
  396. package/habilidades/verificar-trabajo/recursos/plantilla-verificacion.md +60 -0
  397. package/habilidades/wiki-conocimiento/SKILL.md +276 -0
  398. package/habilidades/wireframes-flujos/SKILL.md +212 -0
  399. package/habilidades/wireframes-flujos/recursos/referencia-completa.md +192 -0
  400. package/habilidades/workflow-claude-code/SKILL.md +260 -0
  401. package/habilidades/workflow-claude-code/recursos/referencia-completa.md +109 -0
  402. package/hooks/_run-hook.sh +57 -0
  403. package/hooks/actualizar-perfil-usuario.js +364 -0
  404. package/hooks/agente-lifecycle.js +71 -0
  405. package/hooks/aiisms-detector.js +173 -0
  406. package/hooks/audit-trail.js +204 -0
  407. package/hooks/auto-background.js +97 -0
  408. package/hooks/auto-consolidacion.js +178 -0
  409. package/hooks/auto-evolucion.js +666 -0
  410. package/hooks/auto-restaurar-settings.js +360 -0
  411. package/hooks/calidad-pre-commit.js +929 -0
  412. package/hooks/calidad-typescript.js +511 -0
  413. package/hooks/captura-feedback-usuario.js +148 -0
  414. package/hooks/check-update.js +211 -0
  415. package/hooks/clasificador-mensajes.js +271 -0
  416. package/hooks/degradacion-instintos.js +272 -0
  417. package/hooks/escaneo-secretos.js +389 -0
  418. package/hooks/extraccion-aprendizajes.js +763 -0
  419. package/hooks/grafo-contexto.js +129 -0
  420. package/hooks/graph-update.js +67 -0
  421. package/hooks/guardrail-modelo.js +247 -0
  422. package/hooks/inbox-aviso.js +75 -0
  423. package/hooks/inyeccion-contexto.js +246 -0
  424. package/hooks/lib/abort-registry.js +214 -0
  425. package/hooks/lib/agent-backend.js +210 -0
  426. package/hooks/lib/agent-comms.js +263 -0
  427. package/hooks/lib/agent-issue-codes.js +284 -0
  428. package/hooks/lib/agent-matcher.js +189 -0
  429. package/hooks/lib/async-hook-registry.js +252 -0
  430. package/hooks/lib/atomic-write.js +130 -0
  431. package/hooks/lib/auto-consolidator.js +335 -0
  432. package/hooks/lib/canary-skills.js +187 -0
  433. package/hooks/lib/consolidation-lock.js +291 -0
  434. package/hooks/lib/context-builder.js +430 -0
  435. package/hooks/lib/context-compressor.js +657 -0
  436. package/hooks/lib/convergence-detector.js +105 -0
  437. package/hooks/lib/delegation-tracker.js +198 -0
  438. package/hooks/lib/detectar-package-manager.js +423 -0
  439. package/hooks/lib/edit-accumulator.js +171 -0
  440. package/hooks/lib/error-classifier.js +308 -0
  441. package/hooks/lib/event-bus.js +112 -0
  442. package/hooks/lib/evolution-tracker.js +442 -0
  443. package/hooks/lib/execution-state.js +316 -0
  444. package/hooks/lib/fingerprint-id.js +135 -0
  445. package/hooks/lib/gateway-notify.js +116 -0
  446. package/hooks/lib/graph-security.js +75 -0
  447. package/hooks/lib/guardrail-metrics.js +202 -0
  448. package/hooks/lib/hook-circuit-breaker.js +206 -0
  449. package/hooks/lib/loop-detector.js +267 -0
  450. package/hooks/lib/mcp-health.js +184 -0
  451. package/hooks/lib/mcp-pool.js +436 -0
  452. package/hooks/lib/memory-search.js +506 -0
  453. package/hooks/lib/merkle-audit.js +96 -0
  454. package/hooks/lib/model-router.js +222 -0
  455. package/hooks/lib/normalize-error.js +324 -0
  456. package/hooks/lib/normalize-input.js +65 -0
  457. package/hooks/lib/nudge-tracker.js +306 -0
  458. package/hooks/lib/otlp-exporter.js +365 -0
  459. package/hooks/lib/performance-marks.js +239 -0
  460. package/hooks/lib/privacy-filter.js +128 -0
  461. package/hooks/lib/prompt-injection-scanner.js +209 -0
  462. package/hooks/lib/provenance-tracker.js +183 -0
  463. package/hooks/lib/rate-limit-tracker.js +253 -0
  464. package/hooks/lib/reflect-classifier.js +164 -0
  465. package/hooks/lib/resource-quota.js +122 -0
  466. package/hooks/lib/retry-jitter.js +165 -0
  467. package/hooks/lib/risk-engine.js +368 -0
  468. package/hooks/lib/run-log.js +408 -0
  469. package/hooks/lib/session-fts.js +379 -0
  470. package/hooks/lib/session-store.js +293 -0
  471. package/hooks/lib/singleton-guard.js +159 -0
  472. package/hooks/lib/skill-auditor.js +588 -0
  473. package/hooks/lib/sync-status.js +228 -0
  474. package/hooks/lib/taint-tracker.js +107 -0
  475. package/hooks/lib/task-service.js +295 -0
  476. package/hooks/lib/tech-skills-map.js +146 -0
  477. package/hooks/lib/telegram-cliente.js +159 -0
  478. package/hooks/lib/telegram-config.js +170 -0
  479. package/hooks/lib/token-budget.js +156 -0
  480. package/hooks/lib/token-estimator.js +420 -0
  481. package/hooks/lib/toon-compressor.js +245 -0
  482. package/hooks/lib/usage-model.js +183 -0
  483. package/hooks/lib/variable-resolver.js +230 -0
  484. package/hooks/linea-estado.js +324 -0
  485. package/hooks/metricas-evolucion.js +209 -0
  486. package/hooks/monitor-contexto.js +325 -0
  487. package/hooks/notificacion-sesion-stop.js +198 -0
  488. package/hooks/notificacion-telegram-notification.js +4 -0
  489. package/hooks/notificacion-telegram-subagent.js +4 -0
  490. package/hooks/notificacion-telegram.js +267 -0
  491. package/hooks/preservar-estado-pre-compact.js +150 -0
  492. package/hooks/proteccion-rutas.js +366 -0
  493. package/hooks/registro-turnos.js +209 -0
  494. package/hooks/resumen-sesion.js +249 -0
  495. package/hooks/risk-scoring.js +323 -0
  496. package/hooks/rotar-audit-auto.js +122 -0
  497. package/hooks/sugerir-regenerar-inventario.js +170 -0
  498. package/hooks/telemetria-agentes.js +167 -0
  499. package/hooks/tracking-costos.js +688 -0
  500. package/instintos/global.yaml +8 -0
  501. package/instintos/perfil-usuario.yaml +53 -0
  502. package/instintos/prompt-appendices.yaml +57 -0
  503. package/instintos/proyecto.yaml +372 -0
  504. package/manifiestos/gateway-config.json +77 -0
  505. package/manifiestos/handoff-context.json +223 -0
  506. package/manifiestos/hook-profiles.json +44 -0
  507. package/manifiestos/hooks-config.json +360 -0
  508. package/manifiestos/modulos.json +1173 -0
  509. package/manifiestos/perfiles.json +404 -0
  510. package/package.json +86 -0
  511. package/plantillas/ESTADO.md +109 -0
  512. package/plantillas/HOJA-RUTA.md +143 -0
  513. package/plantillas/PROYECTO.md +122 -0
  514. package/plantillas/REQUISITOS.md +132 -0
  515. package/plantillas/auditor-veto-template.md +105 -0
  516. package/plantillas/github-workflows/README.md +47 -0
  517. package/plantillas/github-workflows/release-please.yml +44 -0
  518. package/plantillas/github-workflows/swl-ci.yml +107 -0
  519. package/plantillas/github-workflows/swl-security.yml +51 -0
  520. package/plantillas/mcp-mineru.json +13 -0
  521. package/plantillas/research/ARQUITECTURA.md +220 -0
  522. package/plantillas/research/FUNCIONALIDADES.md +175 -0
  523. package/plantillas/research/RESUMEN.md +165 -0
  524. package/plantillas/research/STACK.md +233 -0
  525. package/plantillas/research/TRAMPAS.md +299 -0
  526. package/plantillas/skill-evals-template.json +44 -0
  527. package/plugin.json +343 -0
  528. package/reglas/accesibilidad.md +269 -0
  529. package/reglas/api-diseno.md +400 -0
  530. package/reglas/arquitectura.md +352 -0
  531. package/reglas/brevedad-output.md +124 -0
  532. package/reglas/cloud-infra.md +247 -0
  533. package/reglas/docs.md +245 -0
  534. package/reglas/estilo-codigo.md +201 -0
  535. package/reglas/git-workflow.md +245 -0
  536. package/reglas/gobernanza.md +271 -0
  537. package/reglas/harness-claude-code.md +213 -0
  538. package/reglas/hooks.md +186 -0
  539. package/reglas/lenguajes/csharp/estilo-codigo.md +231 -0
  540. package/reglas/lenguajes/csharp/hooks.md +281 -0
  541. package/reglas/lenguajes/csharp/patrones.md +226 -0
  542. package/reglas/lenguajes/csharp/seguridad.md +258 -0
  543. package/reglas/lenguajes/csharp/testing.md +176 -0
  544. package/reglas/lenguajes/go/estilo-codigo.md +195 -0
  545. package/reglas/lenguajes/go/hooks.md +249 -0
  546. package/reglas/lenguajes/go/patrones.md +249 -0
  547. package/reglas/lenguajes/go/seguridad.md +225 -0
  548. package/reglas/lenguajes/go/testing.md +272 -0
  549. package/reglas/lenguajes/java/estilo-codigo.md +217 -0
  550. package/reglas/lenguajes/java/hooks.md +251 -0
  551. package/reglas/lenguajes/java/patrones.md +226 -0
  552. package/reglas/lenguajes/java/seguridad.md +233 -0
  553. package/reglas/lenguajes/java/testing.md +238 -0
  554. package/reglas/lenguajes/kotlin/estilo-codigo.md +208 -0
  555. package/reglas/lenguajes/kotlin/hooks.md +245 -0
  556. package/reglas/lenguajes/kotlin/patrones.md +201 -0
  557. package/reglas/lenguajes/kotlin/seguridad.md +202 -0
  558. package/reglas/lenguajes/kotlin/testing.md +236 -0
  559. package/reglas/lenguajes/nextjs/estilo-codigo.md +175 -0
  560. package/reglas/lenguajes/nextjs/hooks.md +186 -0
  561. package/reglas/lenguajes/nextjs/patrones.md +225 -0
  562. package/reglas/lenguajes/nextjs/seguridad.md +216 -0
  563. package/reglas/lenguajes/nextjs/testing.md +193 -0
  564. package/reglas/lenguajes/php/estilo-codigo.md +228 -0
  565. package/reglas/lenguajes/php/hooks.md +165 -0
  566. package/reglas/lenguajes/php/patrones.md +233 -0
  567. package/reglas/lenguajes/php/seguridad.md +186 -0
  568. package/reglas/lenguajes/php/testing.md +205 -0
  569. package/reglas/lenguajes/rust/estilo-codigo.md +207 -0
  570. package/reglas/lenguajes/rust/hooks.md +240 -0
  571. package/reglas/lenguajes/rust/patrones.md +250 -0
  572. package/reglas/lenguajes/rust/seguridad.md +221 -0
  573. package/reglas/lenguajes/rust/testing.md +194 -0
  574. package/reglas/lenguajes/swift/estilo-codigo.md +238 -0
  575. package/reglas/lenguajes/swift/hooks.md +257 -0
  576. package/reglas/lenguajes/swift/patrones.md +235 -0
  577. package/reglas/lenguajes/swift/seguridad.md +248 -0
  578. package/reglas/lenguajes/swift/testing.md +242 -0
  579. package/reglas/markitdown.md +60 -0
  580. package/reglas/memoria-consolidada.md +209 -0
  581. package/reglas/patrones.md +225 -0
  582. package/reglas/performance.md +195 -0
  583. package/reglas/pruebas.md +159 -0
  584. package/reglas/seguridad-agentes.md +351 -0
  585. package/reglas/seguridad.md +151 -0
  586. package/reglas/skills-estandar.md +373 -0
  587. package/reglas/testing.md +193 -0
  588. package/schemas/agent-contract.json +176 -0
  589. package/schemas/agent-frontmatter.schema.json +149 -0
  590. package/schemas/agent-message.schema.json +53 -0
  591. package/schemas/agent-output-implementacion.schema.json +85 -0
  592. package/schemas/agent-output-planificacion.schema.json +113 -0
  593. package/schemas/agent-output-review.schema.json +78 -0
  594. package/schemas/diary-entry.schema.json +80 -0
  595. package/schemas/hook-profiles.schema.json +39 -0
  596. package/schemas/hooks-config.schema.json +74 -0
  597. package/schemas/instinct.schema.json +115 -0
  598. package/schemas/modulos.schema.json +29 -0
  599. package/schemas/perfiles.schema.json +28 -0
  600. package/schemas/plugin.schema.json +64 -0
  601. package/schemas/skill-evals.schema.json +95 -0
  602. package/schemas/skill-frontmatter.schema.json +170 -0
  603. package/scripts/actualizar.js +145 -0
  604. package/scripts/audit-skills.sh +78 -0
  605. package/scripts/auditar-agentes-gaps.js +149 -0
  606. package/scripts/auditar-cobertura-frameworks.js +241 -0
  607. package/scripts/auditar-skills-gaps.js +206 -0
  608. package/scripts/bootstrap-instintos.js +259 -0
  609. package/scripts/check-update.js +109 -0
  610. package/scripts/comandos/agents.js +105 -0
  611. package/scripts/comandos/info.js +108 -0
  612. package/scripts/comandos/install-asistido.js +186 -0
  613. package/scripts/comandos/skills.js +211 -0
  614. package/scripts/configurar-branch-protection.js +418 -0
  615. package/scripts/daemon-swl.py +388 -0
  616. package/scripts/desinstalar.js +130 -0
  617. package/scripts/doctor.js +559 -0
  618. package/scripts/field-report.js +199 -0
  619. package/scripts/generar-inventario.js +317 -0
  620. package/scripts/inbox-tmux-inject.js +161 -0
  621. package/scripts/inferir-herramientas-permitidas.js +586 -0
  622. package/scripts/inicializar.js +133 -0
  623. package/scripts/instalador.js +1031 -0
  624. package/scripts/instalar-git-hook.js +122 -0
  625. package/scripts/lib/agp-frontmatter.js +222 -0
  626. package/scripts/lib/append-con-marcadores.js +199 -0
  627. package/scripts/lib/artefactos-python.js +43 -0
  628. package/scripts/lib/audit-query.js +221 -0
  629. package/scripts/lib/autostart-linux.js +347 -0
  630. package/scripts/lib/autostart-macos.js +360 -0
  631. package/scripts/lib/autostart-windows.js +307 -0
  632. package/scripts/lib/budget-enforcer.js +252 -0
  633. package/scripts/lib/claude-sessions.js +285 -0
  634. package/scripts/lib/configurar-ci.js +380 -0
  635. package/scripts/lib/console-span-exporter.js +92 -0
  636. package/scripts/lib/contadores-inventario.js +217 -0
  637. package/scripts/lib/dashboard-widgets.js +290 -0
  638. package/scripts/lib/detectar-runtime.js +279 -0
  639. package/scripts/lib/detectar-stack.js +187 -0
  640. package/scripts/lib/diary-entry.js +234 -0
  641. package/scripts/lib/drift-detector.js +545 -0
  642. package/scripts/lib/estado.js +124 -0
  643. package/scripts/lib/gestor-componentes.js +243 -0
  644. package/scripts/lib/gitignore-manifest.js +305 -0
  645. package/scripts/lib/graph-analyze.py +556 -0
  646. package/scripts/lib/graph-builder.py +485 -0
  647. package/scripts/lib/graph-cluster.py +259 -0
  648. package/scripts/lib/health-row.js +168 -0
  649. package/scripts/lib/hooks-settings.js +789 -0
  650. package/scripts/lib/manifiestos.js +138 -0
  651. package/scripts/lib/mc-client.js +137 -0
  652. package/scripts/lib/notificaciones-telegram.js +1107 -0
  653. package/scripts/lib/npm-version.js +261 -0
  654. package/scripts/lib/paquetes-conocidos.js +50 -0
  655. package/scripts/lib/preservar-usuario.js +586 -0
  656. package/scripts/lib/prompt-builder.js +264 -0
  657. package/scripts/lib/resolver-externo.js +332 -0
  658. package/scripts/lib/schedule-parser.js +305 -0
  659. package/scripts/lib/scoring-instintos.js +240 -0
  660. package/scripts/lib/seguridad.js +160 -0
  661. package/scripts/lib/selector-interactivo.js +152 -0
  662. package/scripts/lib/semantic-search.js +242 -0
  663. package/scripts/lib/skill-discovery.js +234 -0
  664. package/scripts/lib/skill-metrics.js +246 -0
  665. package/scripts/lib/skill-normalizer.js +112 -0
  666. package/scripts/lib/skills-hub.js +340 -0
  667. package/scripts/lib/span-schema.js +134 -0
  668. package/scripts/lib/tool-cost-analyzer.js +255 -0
  669. package/scripts/lib/tracing-processor-interface.js +286 -0
  670. package/scripts/lib/transformadores/base.js +80 -0
  671. package/scripts/lib/transformadores/claude.js +124 -0
  672. package/scripts/lib/transformadores/codex.js +115 -0
  673. package/scripts/lib/transformadores/copilot.js +106 -0
  674. package/scripts/lib/transformadores/gemini.js +74 -0
  675. package/scripts/lib/transformadores/index.js +35 -0
  676. package/scripts/lib/transformadores/opencode.js +75 -0
  677. package/scripts/lib/ui.js +259 -0
  678. package/scripts/limpiar-artefactos-python.js +131 -0
  679. package/scripts/mcp-orchestrator.py +386 -0
  680. package/scripts/mcp-pool-manager.py +352 -0
  681. package/scripts/mcp-telemetry.py +378 -0
  682. package/scripts/poblar-evolvable.js +226 -0
  683. package/scripts/publicar.js +287 -0
  684. package/scripts/reflect-skills.js +403 -0
  685. package/scripts/rotar-audit-logs.js +185 -0
  686. package/scripts/run-skill-evals.js +242 -0
  687. package/scripts/smoke-test.js +374 -0
  688. package/scripts/token-analysis.py +471 -0
  689. package/scripts/validar-manifest.js +195 -0
  690. package/scripts/validar-memoria.js +321 -0
  691. package/scripts/validar-tests-aislamiento.js +184 -0
  692. package/scripts/validar-tokens-test.js +208 -0
  693. package/scripts/validar.js +147 -0
  694. package/scripts/validate-markdown.py +339 -0
  695. package/scripts/validate-skills.py +385 -0
  696. package/scripts/vendor/claude-usage/README.md +116 -0
  697. package/scripts/vendor/claude-usage/cli.py +334 -0
  698. package/scripts/vendor/claude-usage/dashboard.py +795 -0
  699. package/scripts/vendor/claude-usage/scanner.py +467 -0
  700. package/scripts/vendor/markitdown/cli.py +194 -0
  701. package/scripts/verificar-evolucion.js +289 -0
  702. 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