@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
@@ -0,0 +1,513 @@
1
+ ---
2
+ name: typescript-diagnosticos
3
+ description: >
4
+ Guía canónica de códigos de error del compilador TypeScript (TS1xxx–TS7xxx).
5
+ Extraída de diagnosticMessages.json del repositorio microsoft/TypeScript.
6
+ Cubre los errores más frecuentes con causa, fix idiomático y anti-patrón a evitar.
7
+ Cargar cuando se revisa código TypeScript con errores de compilación o cuando
8
+ se necesita identificar la causa raíz de un error TSxxxx.
9
+ version: 1.0.0
10
+ herramientasPermitidas: [Read, Bash, Glob, Grep]
11
+ fuente: temp/TypeScript-main/src/compiler/diagnosticMessages.json
12
+ tags: [typescript, diagnósticos, errores, compilador, type-safety]
13
+ exclusiones:
14
+ - "No cargar para errores de runtime JavaScript que no involucran el compilador TypeScript — si el código compila pero falla en ejecución, no hay código TS#### que diagnosticar."
15
+ - "No cargar para errores de bundlers (Vite, webpack) que no son errores del compilador tsc — los errores de bundler tienen prefijos diferentes y causas de resolución de módulos; cargar `build-errors-typescript`."
16
+ - "No cargar para diseñar tipos avanzados (generics, mapped types, conditional types) — para diseño del sistema de tipos cargar `typescript-avanzado`."
17
+ - "No cargar para errores de ESLint o Prettier en archivos .ts — ESLint/Prettier no generan códigos TS####; sus códigos de error son de sus propias reglas."
18
+ evolvable: true # default para skill estandar
19
+ ---
20
+ # Diagnósticos canónicos del compilador TypeScript
21
+
22
+ Guía de referencia rápida. Fuente: `diagnosticMessages.json` del compilador TypeScript oficial.
23
+
24
+ ## Cuándo NO cargar
25
+
26
+ - La pregunta es sobre errores de runtime JavaScript que no involucran al compilador — si el código compila pero falla en ejecución, no hay código TS#### que diagnosticar.
27
+ - Los errores vienen de bundlers (Vite, webpack) con prefijos distintos a TS#### — esos son errores de resolución de módulos; cargar `build-errors-typescript`.
28
+ - La tarea es diseñar tipos avanzados (generics, mapped types, conditional types) — para diseño del sistema de tipos cargar `typescript-avanzado`.
29
+ - Los errores son de ESLint o Prettier en archivos `.ts` — ESLint/Prettier no generan códigos TS####; sus reglas tienen nombres propios como `@typescript-eslint/no-explicit-any`.
30
+
31
+ ---
32
+
33
+ ## Errores de asignación de tipos (TS2xxx)
34
+
35
+ Los más frecuentes en proyectos con `strict: true`.
36
+
37
+ ### TS2322 — Type '{0}' is not assignable to type '{1}'
38
+
39
+ **Causa:** Tipos incompatibles en asignación directa o retorno de función.
40
+
41
+ ```typescript
42
+ // MAL
43
+ const x: number = "hola"; // TS2322
44
+ function getId(): number { return "abc"; } // TS2322
45
+
46
+ // BIEN
47
+ const x: number = 42;
48
+ function getId(): number { return 123; }
49
+
50
+ // Caso literal — usar as const
51
+ const dir = "ltr" as const; // tipo: "ltr", no string
52
+ ```
53
+
54
+ **Anti-patrón a evitar:** `const x = valor as any` para silenciar el error.
55
+
56
+ ---
57
+
58
+ ### TS2345 — Argument of type '{0}' is not assignable to parameter of type '{1}'
59
+
60
+ **Causa:** Tipo incorrecto al llamar una función.
61
+
62
+ ```typescript
63
+ function procesar(items: string[]) { ... }
64
+ procesar([1, 2, 3]); // TS2345 — number[] no es string[]
65
+
66
+ // BIEN — corregir el tipo del argumento
67
+ procesar(["a", "b"]);
68
+ // o corregir el parámetro si el diseño lo permite
69
+ function procesar(items: Array<string | number>) { ... }
70
+ ```
71
+
72
+ ---
73
+
74
+ ### TS2339 — Property '{0}' does not exist on type '{1}'
75
+
76
+ **Causa:** Acceso a propiedad inexistente en la interfaz/tipo.
77
+
78
+ ```typescript
79
+ interface Usuario { nombre: string; }
80
+ const u: Usuario = { nombre: "Ana" };
81
+ console.log(u.email); // TS2339
82
+
83
+ // BIEN — opción A: agregar al tipo
84
+ interface Usuario { nombre: string; email?: string; }
85
+ // BIEN — opción B: usar acceso indexado tipado
86
+ function getField<T, K extends keyof T>(obj: T, key: K): T[K] {
87
+ return obj[key];
88
+ }
89
+ ```
90
+
91
+ ---
92
+
93
+ ### TS2353 — Object literal may only specify known properties
94
+
95
+ **Causa:** Propiedad extra en object literal (excess property check).
96
+
97
+ ```typescript
98
+ interface Config { host: string; port: number; }
99
+ const cfg: Config = { host: "localhost", port: 3000, debug: true }; // TS2353
100
+
101
+ // BIEN — eliminar o agregar al tipo
102
+ // Nota: el excess property check solo aplica a object literals directos
103
+ const base = { host: "localhost", port: 3000, debug: true };
104
+ const cfg: Config = base; // Válido — asignación indirecta no aplica la regla
105
+ ```
106
+
107
+ ---
108
+
109
+ ### TS2540 — Cannot assign to '{0}' because it is a read-only property
110
+
111
+ **Causa:** Mutación de propiedad `readonly` o de `Readonly<T>`.
112
+
113
+ ```typescript
114
+ interface Config { readonly host: string; }
115
+ const cfg: Config = { host: "localhost" };
116
+ cfg.host = "prod"; // TS2540
117
+
118
+ // BIEN — crear nuevo objeto con spread
119
+ const prodCfg: Config = { ...cfg, host: "prod" };
120
+ ```
121
+
122
+ ---
123
+
124
+ ### TS2739 — Type '{0}' is missing the following properties from type '{1}'
125
+
126
+ **Causa:** Objeto incompleto — faltan propiedades requeridas.
127
+
128
+ ```typescript
129
+ interface Producto { id: number; nombre: string; precio: number; }
130
+ const p: Producto = { id: 1, nombre: "Widget" }; // TS2739 falta precio
131
+
132
+ // BIEN
133
+ const p: Producto = { id: 1, nombre: "Widget", precio: 9.99 };
134
+ // O si la construcción es parcial
135
+ const borrador: Partial<Producto> = { id: 1, nombre: "Widget" };
136
+ ```
137
+
138
+ ---
139
+
140
+ ### TS2741 — Property '{0}' is missing in type '{1}' but required in type '{2}'
141
+
142
+ **Causa:** Al extender o implementar una interfaz, falta implementar una propiedad requerida.
143
+
144
+ ```typescript
145
+ interface Animal { nombre: string; sonido: string; }
146
+ const perro: Animal = { nombre: "Rex" }; // TS2741 falta sonido
147
+
148
+ // BIEN — completar la implementación
149
+ const perro: Animal = { nombre: "Rex", sonido: "Guau" };
150
+ // O hacer la propiedad opcional si el diseño lo permite
151
+ interface Animal { nombre: string; sonido?: string; }
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Errores de null y undefined (TS2532, TS2533, TS2571)
157
+
158
+ Activos con `strictNullChecks: true`.
159
+
160
+ ### TS2532 — Object is possibly 'undefined'
161
+
162
+ **Causa:** Acceso a una propiedad sin verificar que el objeto no sea `undefined`.
163
+
164
+ ```typescript
165
+ function getUser(id: number): User | undefined { ... }
166
+ const user = getUser(1);
167
+ console.log(user.nombre); // TS2532
168
+
169
+ // BIEN — opción A: narrowing explícito
170
+ if (user !== undefined) { console.log(user.nombre); }
171
+
172
+ // BIEN — opción B: optional chaining
173
+ console.log(user?.nombre);
174
+
175
+ // BIEN — opción C: non-null assertion SOLO cuando tienes garantía externa
176
+ console.log(user!.nombre); // Solo si sabes que no puede ser undefined
177
+ ```
178
+
179
+ ---
180
+
181
+ ### TS2533 — Object is possibly 'null' or 'undefined'
182
+
183
+ **Causa:** Acceso sin verificar que no sea ni `null` ni `undefined`.
184
+
185
+ ```typescript
186
+ const el = document.getElementById("app");
187
+ el.innerHTML = "hola"; // TS2533
188
+
189
+ // BIEN
190
+ if (el !== null) { el.innerHTML = "hola"; }
191
+ // O
192
+ el?.innerHTML; // Silencioso si el es null — cuidado con efectos secundarios
193
+ ```
194
+
195
+ ---
196
+
197
+ ### TS2571 — Object is of type 'unknown'
198
+
199
+ **Causa:** Intento de usar una variable de tipo `unknown` sin narrowing.
200
+
201
+ ```typescript
202
+ async function fetchData(): Promise<unknown> { ... }
203
+ const data = await fetchData();
204
+ console.log(data.nombre); // TS2571
205
+
206
+ // BIEN — type guard
207
+ function isUsuario(x: unknown): x is Usuario {
208
+ return typeof x === "object" && x !== null && "nombre" in x;
209
+ }
210
+ if (isUsuario(data)) { console.log(data.nombre); }
211
+
212
+ // BIEN — instanceof
213
+ try { ... } catch (e: unknown) {
214
+ if (e instanceof Error) { console.error(e.message); }
215
+ }
216
+ ```
217
+
218
+ ---
219
+
220
+ ## Errores de módulo (TS2304, TS2305, TS2307)
221
+
222
+ ### TS2304 — Cannot find name '{0}'
223
+
224
+ **Causa:** Variable, tipo o función no importado o no declarado.
225
+
226
+ ```typescript
227
+ const resultado = calcular(5); // TS2304 si calcular no está importado
228
+
229
+ // BIEN
230
+ import { calcular } from "./utils/calcular";
231
+ ```
232
+
233
+ ---
234
+
235
+ ### TS2305 — Module '{0}' has no exported member '{1}'
236
+
237
+ **Causa:** Import de algo que no está exportado en el módulo de origen.
238
+
239
+ ```typescript
240
+ import { calcular, formatear } from "./utils"; // TS2305 si formatear no se exporta
241
+
242
+ // Verificar que el módulo lo exporta
243
+ export function formatear(n: number): string { ... }
244
+ ```
245
+
246
+ ---
247
+
248
+ ### TS2307 — Cannot find module '{0}' or its corresponding type declarations
249
+
250
+ **Causa:** Módulo sin declaraciones de tipos o ruta incorrecta.
251
+
252
+ ```typescript
253
+ import express from "express"; // TS2307 si @types/express no está instalado
254
+ import { algo } from "./ruta-inexistente"; // TS2307
255
+
256
+ // BIEN — instalar tipos
257
+ // npm install --save-dev @types/express
258
+
259
+ // BIEN — declaración manual para módulos sin @types
260
+ declare module "nombre-del-modulo" {
261
+ export function fn(): void;
262
+ }
263
+ ```
264
+
265
+ ---
266
+
267
+ ## Errores de implicit any (TS7xxx)
268
+
269
+ Activos con `noImplicitAny: true` (incluido en `strict: true`).
270
+
271
+ ### TS7006 — Parameter '{0}' implicitly has an '{1}' type
272
+
273
+ **Causa:** Parámetro de función sin anotación de tipo.
274
+
275
+ ```typescript
276
+ // MAL
277
+ function duplicar(n) { return n * 2; } // TS7006
278
+
279
+ // BIEN
280
+ function duplicar(n: number): number { return n * 2; }
281
+ ```
282
+
283
+ ---
284
+
285
+ ### TS7010 — '{0}', which lacks return-type annotation, implicitly has an '{1}' return type
286
+
287
+ **Causa:** Función cuyo tipo de retorno no puede inferirse claramente.
288
+
289
+ ```typescript
290
+ // MAL — TypeScript infiere 'any' en casos ambiguos
291
+ function cargar(url) { return fetch(url).then(r => r.json()); }
292
+
293
+ // BIEN
294
+ async function cargar(url: string): Promise<unknown> {
295
+ const resp = await fetch(url);
296
+ return resp.json() as unknown;
297
+ }
298
+ ```
299
+
300
+ ---
301
+
302
+ ### TS7016 — Could not find a declaration file for module '{0}'
303
+
304
+ **Causa:** Módulo npm sin `@types/` ni declaraciones propias.
305
+
306
+ ```typescript
307
+ import algo from "libreria-sin-tipos"; // TS7016
308
+
309
+ // Solución A — instalar tipos comunitarios
310
+ // npm install --save-dev @types/libreria-sin-tipos
311
+
312
+ // Solución B — declaración mínima en src/types/libreria-sin-tipos.d.ts
313
+ declare module "libreria-sin-tipos" {
314
+ const value: unknown;
315
+ export default value;
316
+ }
317
+
318
+ // Solución C — skipLibCheck (solo en casos excepcionales, documenta por qué)
319
+ // tsconfig.json: { "compilerOptions": { "skipLibCheck": true } }
320
+ ```
321
+
322
+ ---
323
+
324
+ ### TS7017 — Element implicitly has an 'any' type because type '{0}' has no index signature
325
+
326
+ **Causa:** Acceso con key dinámica a un objeto sin index signature.
327
+
328
+ ```typescript
329
+ const config = { host: "localhost", port: 3000 };
330
+ const key = "host";
331
+ const value = config[key]; // TS7017
332
+
333
+ // BIEN — opción A: keyof
334
+ function getConfig<K extends keyof typeof config>(key: K): typeof config[K] {
335
+ return config[key];
336
+ }
337
+
338
+ // BIEN — opción B: Map con tipo explícito
339
+ const configMap = new Map<string, string | number>();
340
+ configMap.set("host", "localhost");
341
+
342
+ // BIEN — opción C: Record si los valores son homogéneos
343
+ const config: Record<string, string> = { host: "localhost" };
344
+ ```
345
+
346
+ ---
347
+
348
+ ### TS7031 — Binding element '{0}' implicitly has an '{1}' type
349
+
350
+ **Causa:** Destructuring de parámetro sin anotación.
351
+
352
+ ```typescript
353
+ // MAL
354
+ function render({ nombre, edad }) { ... } // TS7031
355
+
356
+ // BIEN
357
+ interface Props { nombre: string; edad: number; }
358
+ function render({ nombre, edad }: Props) { ... }
359
+ ```
360
+
361
+ ---
362
+
363
+ ## Errores de función y callable (TS2349, TS2355, TS2554, TS2769)
364
+
365
+ ### TS2349 — This expression is not callable
366
+
367
+ **Causa:** Intentar llamar algo que no es una función según los tipos.
368
+
369
+ ```typescript
370
+ const handler: string | (() => void) = "texto";
371
+ handler(); // TS2349 — podría ser string
372
+
373
+ // BIEN
374
+ if (typeof handler === "function") { handler(); }
375
+ ```
376
+
377
+ ---
378
+
379
+ ### TS2355 — A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value
380
+
381
+ **Causa:** No todos los branches de la función retornan un valor.
382
+
383
+ ```typescript
384
+ function dividir(a: number, b: number): number {
385
+ if (b !== 0) { return a / b; }
386
+ // TS2355 — no hay return en el else
387
+ }
388
+
389
+ // BIEN
390
+ function dividir(a: number, b: number): number {
391
+ if (b === 0) throw new Error("División por cero");
392
+ return a / b;
393
+ }
394
+ ```
395
+
396
+ ---
397
+
398
+ ### TS2554 — Expected {0} arguments, but got {1}
399
+
400
+ **Causa:** Número incorrecto de argumentos al llamar una función.
401
+
402
+ ```typescript
403
+ function sumar(a: number, b: number): number { return a + b; }
404
+ sumar(1); // TS2554 — faltan argumentos
405
+ sumar(1, 2, 3); // TS2554 — argumentos de más
406
+
407
+ // BIEN — si el tercer argumento es opcional
408
+ function sumar(a: number, b: number, c?: number): number {
409
+ return a + b + (c ?? 0);
410
+ }
411
+ ```
412
+
413
+ ---
414
+
415
+ ### TS2769 — No overload matches this call
416
+
417
+ **Causa:** Ninguna de las sobrecargas de una función acepta los tipos de argumentos dados.
418
+
419
+ ```typescript
420
+ // Función con sobrecargas
421
+ function procesar(x: string): string;
422
+ function procesar(x: number): number;
423
+ function procesar(x: string | number): string | number { return x; }
424
+
425
+ procesar(true); // TS2769 — boolean no coincide con ninguna sobrecarga
426
+
427
+ // BIEN — verificar qué sobrecargas existen y pasar el tipo correcto
428
+ procesar("texto"); // OK
429
+ procesar(42); // OK
430
+ ```
431
+
432
+ ---
433
+
434
+ ## Errores de cast (TS2352, TS2693)
435
+
436
+ ### TS2352 — Conversion of type '{0}' to type '{1}' may be a mistake
437
+
438
+ **Causa:** Cast (`as`) entre tipos sin superposición de propiedades.
439
+
440
+ ```typescript
441
+ const n = 42;
442
+ const s = n as string; // TS2352 — number y string no se superponen
443
+
444
+ // Anti-patrón — doble cast para evadir el error
445
+ const s = n as unknown as string; // Compila pero es inseguro
446
+
447
+ // BIEN — convertir correctamente
448
+ const s = String(n);
449
+ ```
450
+
451
+ ---
452
+
453
+ ### TS2693 — '{0}' only refers to a type, but is being used as a value here
454
+
455
+ **Causa:** Usar una interfaz o tipo como valor en runtime.
456
+
457
+ ```typescript
458
+ interface Config { host: string; }
459
+ if (x instanceof Config) { ... } // TS2693 — interfaces no existen en runtime
460
+
461
+ // BIEN — usar type guard con validación de propiedades
462
+ function isConfig(x: unknown): x is Config {
463
+ return typeof x === "object" && x !== null && "host" in x;
464
+ }
465
+ ```
466
+
467
+ ---
468
+
469
+ ## Referencia rápida — códigos por categoría
470
+
471
+ | Categoría | Códigos frecuentes |
472
+ |-----------|-------------------|
473
+ | Asignación de tipos | TS2322, TS2345, TS2739, TS2741 |
474
+ | Null/undefined | TS2532, TS2533, TS2571 |
475
+ | Propiedades | TS2339, TS2353, TS2540 |
476
+ | Módulos | TS2304, TS2305, TS2307 |
477
+ | Implicit any | TS7006, TS7010, TS7016, TS7017, TS7031 |
478
+ | Función/callable | TS2349, TS2355, TS2554, TS2769 |
479
+ | Cast | TS2352, TS2693 |
480
+
481
+ ## Comandos de diagnóstico
482
+
483
+ ```bash
484
+ # Ver todos los errores del proyecto agrupados por código
485
+ npx tsc --noEmit 2>&1 | grep -oP 'TS\d+' | sort | uniq -c | sort -rn
486
+
487
+ # Ver el detalle de los primeros 20 errores
488
+ npx tsc --noEmit 2>&1 | head -60
489
+
490
+ # Buscar supresiones en el código fuente
491
+ grep -rn "@ts-ignore\|@ts-expect-error\|as any\|as unknown as" \
492
+ --include="*.ts" --include="*.tsx" \
493
+ --exclude-dir=node_modules --exclude-dir=dist | head -30
494
+
495
+ # Verificar strict mode activo
496
+ cat tsconfig.json | grep -E '"strict"|"noImplicitAny"|"strictNullChecks"'
497
+ ```
498
+
499
+ ## Gotchas / Errores comunes no obvios
500
+
501
+ **TS2339 en código correcto después de actualizar TypeScript**: un upgrade de TS 4.x a 5.x puede revelar TS2339 en código que antes compilaba porque las definiciones de tipo de `@types/node` o librerías cambiaron. Causa: librerías como `express` o `mongoose` actualizan sus `@types/*` con definiciones más estrictas — una propiedad que era `any` ahora tiene tipo concreto. Fix: actualizar las dependencias `@types/*` junto con TypeScript, no solo el compilador.
502
+
503
+ **TS2590 "Expression produces a union type that is too complex to represent"**: ocurre al hacer operaciones sobre uniones grandes (más de ~25 miembros) como `Partial<A & B & C>` donde A, B, C son interfaces con muchos campos. Causa: TypeScript tiene un límite interno de complejidad en la representación de tipos. Fix: dividir la unión en tipos intermedios nombrados, o usar `interface` con `extends` en lugar de intersección `&` para reducir la profundidad de evaluación.
504
+
505
+ **`// @ts-ignore` suprime el error siguiente pero también errores reales en la misma línea**: si una línea tiene dos errores y se pone `@ts-ignore`, ambos se suprimen — incluyendo uno legítimo que debería corregirse. Fix: preferir `// @ts-expect-error` que falla en CI si el error desaparece (señal de que la supresión ya no es necesaria), y anotar el código TS#### específico en el comentario.
506
+
507
+ **TS7031 en callbacks de arrays sin anotación de contexto**: `[1, 2, 3].reduce((acc, val) => acc + val)` falla con TS7031 "Binding element 'acc' implicitly has an 'any' type" si `noImplicitAny: true` y TypeScript no puede inferir el tipo inicial del acumulador. Fix: anotar el valor inicial explícitamente: `.reduce((acc, val) => acc + val, 0)` — el tipo del acumulador se infiere del valor inicial, no del callback.
508
+
509
+ ## Fuente
510
+
511
+ - `temp/TypeScript-main/src/compiler/diagnosticMessages.json` — 8,559 líneas, fuente primaria
512
+ - Compilador TypeScript oficial: `microsoft/TypeScript` (modo mantenimiento; TS 7.0 se reescribe en Go)
513
+ - Documentación oficial: https://www.typescriptlang.org/tsconfig
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: ux-diseno
3
+ description: Principios de UX design para desarrolladores. Heurísticas de Nielsen, Fitts's Law, Ley de Miller, Gestalt, jerarquía visual, micro-interacciones, feedback visual, estados vacíos, error states, loading states.
4
+ version: "1.0.0"
5
+ herramientasPermitidas: [Read, Grep]
6
+ exclusiones:
7
+ - "No cargar para accesibilidad técnica (ARIA, contraste WCAG, navegación por teclado, lectores de pantalla) — para accesibilidad cargar `accesibilidad-a11y`."
8
+ - "No cargar para implementación CSS/Tailwind de los diseños — los principios aquí son conceptuales; para implementación cargar `css-moderno` o `tailwind-experto`."
9
+ - "No cargar para investigación de usuario, entrevistas o user research — este skill cubre decisiones de diseño de implementación, no metodología de research."
10
+ - "No cargar para diseño de sistemas de diseño (Design Tokens, Storybook, Figma) — este skill cubre principios UX aplicados al código, no herramientas de diseño."
11
+ evolvable: true # default para skill estandar
12
+ ---
13
+ # UX Design para Desarrolladores
14
+
15
+ ## Cuándo NO cargar
16
+
17
+ - La tarea es accesibilidad técnica: ARIA correcta, contraste WCAG 2.1, focus trap, lectores de pantalla — cargar `accesibilidad-a11y`.
18
+ - La implementación concreta es en CSS o Tailwind — los principios aquí son conceptuales; para implementación cargar `css-moderno` o `tailwind-experto`.
19
+ - La tarea es investigación de usuario, entrevistas o user testing — este skill cubre decisiones de diseño en el código, no metodología de research.
20
+ - El tema es sistemas de diseño: Design Tokens, Storybook, integración Figma — este skill cubre principios UX, no herramientas de diseño.
21
+
22
+ Un desarrollador que entiende UX toma mejores decisiones de implementación sin necesitar
23
+ validación en cada detalle visual. Estos principios reducen fricción y aumentan la usabilidad
24
+ sin depender de un diseñador para cada componente.
25
+
26
+ ---
27
+
28
+ ## 1. Las 10 Heurísticas de Nielsen (resumen activo)
29
+
30
+ - **H1 — Visibilidad del estado**: Feedback inmediato. Loading states: skeleton > spinner > texto.
31
+ - **H2 — Match con el mundo real**: Hablar el idioma del usuario, no del desarrollador. NUNCA mostrar "Error 500" o UUIDs.
32
+ - **H3 — Control y libertad**: Botón "Cancelar", "Deshacer", confirmación antes de eliminar, breadcrumbs.
33
+ - **H4 — Consistencia**: Mismas convenciones siempre. Azul subrayado = enlace. Logo = inicio. X = cerrar. Escape = cancelar.
34
+ - **H5 — Prevención de errores**: Deshabilitar botón hasta formulario válido. Máscaras de input. Confirmar acciones peligrosas.
35
+ - **H6 — Reconocimiento antes que recuerdo**: Mostrar contexto entre pasos. Autocompletar. Progreso visible.
36
+ - **H7 — Flexibilidad**: Keyboard shortcuts, acciones en masa, filtros guardados.
37
+ - **H8 — Diseño minimalista**: Eliminar texto que nadie lee, campos que nadie llena, iconos sin texto.
38
+ - **H9 — Recuperación de errores**: Mensaje = Qué pasó + Por qué + Qué hacer. Ejemplo: "El RFC debe tener 13 caracteres. Ejemplo: PEGJ850101GR5".
39
+ - **H10 — Ayuda**: Tooltips en campos técnicos, links a artículos, ejemplos reales en errores.
40
+
41
+ ---
42
+
43
+ ## 2. Ley de Fitts — Tamaño y Distancia
44
+
45
+ Objetivos más grandes y más cercanos son más fáciles de alcanzar.
46
+
47
+ - Botones de acción principal: mínimo 44x44px de área táctil (estándar de accesibilidad)
48
+ - Acciones destructivas ALEJADAS de las primarias y con menor prominencia visual
49
+ - Acción principal prominente y a la derecha en formularios
50
+
51
+ ---
52
+
53
+ ## 3. Ley de Miller — 7 más o menos 2
54
+
55
+ - Menú de navegación: máximo 7 opciones de primer nivel
56
+ - Pasos de wizard: máximo 5-7 pasos
57
+ - Columnas en tabla: máximo 7 visibles sin scroll
58
+ - Opciones en dropdown: si hay más de 7, agregar búsqueda
59
+ - Formulario: agrupar campos en secciones (máximo 7 por sección)
60
+
61
+ ---
62
+
63
+ ## 4. Principios Gestalt
64
+
65
+ - **Proximidad**: Elementos cercanos parecen relacionados. Poco espacio dentro del grupo, mucho entre secciones.
66
+ - **Similitud**: Mismo color + estilo = misma función. NUNCA mismo color para funciones distintas.
67
+ - **Continuidad**: Alineación para guiar al ojo. Labels alineados, columnas numéricas a la derecha.
68
+
69
+ ---
70
+
71
+ ## 5. Estados que Toda UI Debe Manejar
72
+
73
+ Toda pantalla con datos debe implementar estos 4 estados:
74
+
75
+ 1. **Loading**: Skeleton loader para listas, spinner inline para acciones puntuales
76
+ 2. **Empty state**: Contexto + acción ("No hay expedientes. Crear expediente")
77
+ 3. **Error state**: Qué pasó + qué hacer + botón reintentar
78
+ 4. **Success/Data**: El estado normal con datos
79
+
80
+ ---
81
+
82
+ ## 6. Checklist Pre-Entrega de UI
83
+
84
+ Antes de marcar cualquier feature de UI como terminada, verificar cada punto con
85
+ valores operativos concretos — no con criterios subjetivos como "se ve bien":
86
+
87
+ | Aspecto | Requisito operativo | Anti-patrón a evitar |
88
+ |---------|--------------------|-----------------------|
89
+ | **Iconos** | SVG de librería consistente (Heroicons, Lucide, Material Symbols). Un solo set por proyecto | Emojis como iconos funcionales — no se renderizan igual entre plataformas |
90
+ | **Cursores** | `cursor: pointer` en todo elemento clicable: botones, enlaces, toggles, tabs, cards clicables | Elementos clicables con cursor default — el usuario no sabe que puede interactuar |
91
+ | **Hover/Active** | Transición de 150–300ms. Hover muestra cambio visual; active muestra feedback de presión | Transiciones > 500ms (se sienten lentas) o 0ms (se sienten rotas) |
92
+ | **Contraste** | Texto normal 4.5:1, texto grande 3:1, componentes de UI 3:1 (WCAG 2.1 AA) | Texto gris claro sobre fondo blanco — falla contraste en todos los monitores |
93
+ | **Foco teclado** | `focus-visible` con anillo de 2px de contraste 3:1 contra el fondo. Tab order lógico | `outline: none` sin reemplazo — invisible para usuarios de teclado |
94
+ | **Movimiento** | `@media (prefers-reduced-motion: reduce)` desactiva animaciones no esenciales | Animaciones sin escape — usuarios con vértigo o epilepsia fotosensible |
95
+ | **Breakpoints** | Verificar en 375px (móvil), 768px (tablet), 1024px (laptop), 1440px (desktop) | Solo probar en 1 resolución — se rompe en el dispositivo del usuario |
96
+ | **Estados** | Loading (skeleton), empty, error (qué pasó + qué hacer), success — los 4 siempre | Solo el happy path — la primera interacción del usuario suele ser el empty state |
97
+ | **Touch targets** | Mínimo 44×44px de área táctil en móvil. Separación mínima de 8px entre targets | Botones de 24px — imposibles de presionar con precisión en pantalla táctil |
98
+
99
+ ---
100
+
101
+ ## Patrones de Referencia Completos
102
+
103
+ Para implementaciones de jerarquía visual (escala tipográfica), estados de UI
104
+ con código HTML/CSS, micro-interacciones, formularios UX, mobile first, y tabla
105
+ completa de anti-patrones UX, ver
106
+ [recursos/patrones-ux-referencia.md](recursos/patrones-ux-referencia.md).
107
+
108
+ ## Gotchas / Errores comunes no obvios
109
+
110
+ **Los skeleton loaders que no coinciden con el layout real crean un "layout shift" perceptible al resolver**: si el skeleton muestra 3 líneas horizontales pero el contenido real es una tarjeta con imagen y botones, el usuario percibe un salto visual brusco al cargar. Causa: el skeleton debe ser una aproximación fiel del contenido real. Fix: construir el skeleton usando los mismos contenedores y proporciones del componente real, solo reemplazando el contenido con barras animadas — usar las mismas clases de grid/flex del componente original.
111
+
112
+ **Deshabilitar el botón de submit durante la validación de formulario frustran a usuarios mobile**: en dispositivos táctiles con teclado virtual, el usuario cierra el teclado y toca el botón — si el botón está deshabilitado porque el campo no pasó validación, el usuario no recibe feedback de por qué. Causa: la validación inline (campo por campo) no siempre es visible cuando el teclado oculta parte del formulario. Fix: permitir el submit siempre, mostrar todos los errores inline al enviar, y enfocar automáticamente el primer campo con error (`scrollIntoView()` + `focus()`).
113
+
114
+ **Mensajes de error genéricos ("Algo salió mal") bloquean al usuario más que los técnicos**: en producción es tentador mostrar mensajes genéricos para no exponer internos, pero el usuario no puede resolver un error sin saber qué hacer. Causa: confundir privacidad de implementación con utilidad del mensaje de error. Fix: separar el mensaje visible del usuario (qué pasó en términos de negocio + qué puede hacer) del log interno (detalles técnicos). El mensaje de error debe responder: ¿Qué pasó? + ¿Por qué? + ¿Qué hago ahora?
115
+
116
+ **El estado vacío (empty state) con solo texto "No hay resultados" no guía al usuario al siguiente paso**: el empty state es frecuentemente la primera pantalla que ve un usuario nuevo — si solo dice "No tienes facturas" sin una CTA clara, el usuario no sabe cómo empezar. Causa: el empty state se diseña como excepción en lugar de como estado de onboarding. Fix: el empty state debe tener: ícono/ilustración que contextualice, texto que explique qué puede hacer aquí, y un botón de acción primaria que lleve al siguiente paso ("Crear primera factura").
@@ -0,0 +1,43 @@
1
+ {
2
+ "$schema": "../../../schemas/skill-evals.schema.json",
3
+ "skill_name": "ux-diseno",
4
+ "artifact_type": "skill",
5
+ "schema_version": 1,
6
+ "description": "Evals para ux-diseno — principios de diseño de interacción, jerarquía, affordances.",
7
+ "evals": [
8
+ {
9
+ "id": 0,
10
+ "prompt": "Un formulario tiene 15 campos y el usuario lo abandona. ¿Primer heurística a revisar?",
11
+ "files": [],
12
+ "expectations": [
13
+ "Reducir campos a los estrictamente necesarios.",
14
+ "La respuesta menciona que cada campo añade fricción medible.",
15
+ "Sugiere: progressive disclosure, auto-fill, valores por defecto razonables."
16
+ ],
17
+ "tags": ["forms"]
18
+ },
19
+ {
20
+ "id": "anti-modal-abuse",
21
+ "prompt": "La app tiene modal tras modal — ¿bien o mal?",
22
+ "files": [],
23
+ "expectations": [
24
+ "Anti-patrón — los modales interrumpen el flujo.",
25
+ "Reglas: reservar para confirmaciones críticas/bloqueantes o información focus-requerida.",
26
+ "Alternativas: drawer lateral, inline editing, toast."
27
+ ],
28
+ "grading_guidance": "Failure si justifica modales sin restricciones.",
29
+ "tags": ["anti-pattern"]
30
+ },
31
+ {
32
+ "id": "feedback",
33
+ "prompt": "Usuario presiona botón de submit y no pasa nada visible por 2 segundos. ¿Qué le falta?",
34
+ "files": [],
35
+ "expectations": [
36
+ "Feedback inmediato (<100ms): cambio de estado del botón (disabled, loading spinner).",
37
+ "La respuesta menciona que sin feedback el usuario vuelve a clickar → double submit.",
38
+ "Cita umbrales de percepción (100ms instantáneo, 1s tolerable)."
39
+ ],
40
+ "tags": ["feedback"]
41
+ }
42
+ ]
43
+ }