@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,369 @@
1
+ ---
2
+ name: build-errors-typescript
3
+ description: >
4
+ Resolución de errores de compilación TypeScript: tsc, tsconfig.json, errores de
5
+ tipos, generics, declaration files y bundlers (Vite, esbuild, webpack). Cargar
6
+ cuando un build TypeScript falle, tsc reporte errores de tipos, o haya problemas
7
+ con la configuración del compilador o del bundler.
8
+ version: "1.0.0"
9
+ herramientasPermitidas: [Read, Bash, Grep]
10
+ exclusiones:
11
+ - "No cargar para errores de lógica o comportamiento en runtime JavaScript — si el código compila pero falla en ejecución (undefined is not a function, Promise sin await), no es un error de compilación TypeScript."
12
+ - "No cargar para errores específicos de frameworks sobre TypeScript (Angular TS2xxx en templates, NestJS decorators) — esos tienen contexto adicional de framework; cargar `angular-moderno`, `nestjs-experto` o `build-errors-nextjs`."
13
+ - "No cargar para decidir la configuración óptima de tsconfig desde cero en un proyecto nuevo — eso es diseño de stack; cargar `typescript-avanzado` para configuración y patrones generales."
14
+ - "No cargar cuando el error es de ESLint o Prettier (no de tsc) — los errores de style/lint no son errores de compilación TypeScript."
15
+ evolvable: true # default para skill estandar
16
+ ---
17
+ # Build Errors TypeScript — Diagnóstico y Solución
18
+
19
+ ## Cuándo NO cargar
20
+
21
+ - El error ocurre en runtime JavaScript (no en `tsc`) — si el build pasa pero el navegador/Node lanza errores, no es un problema de TypeScript.
22
+ - El error viene de un framework encima de TypeScript (Angular, NestJS) — cargar el skill específico del framework porque el error puede tener semántica adicional.
23
+ - La pregunta es cómo configurar tsconfig para un proyecto nuevo — para diseño de configuración cargar `typescript-avanzado`.
24
+
25
+ ## Cuándo cargar
26
+
27
+ - `tsc` falla con errores de tipos, generics o declaration files
28
+ - `npm run build` o `yarn build` falla en la etapa de type-checking
29
+ - Errores de `tsconfig.json` (paths, module resolution, strict mode)
30
+ - Problemas con `@types/*` (conflictos, tipos faltantes, versiones incompatibles)
31
+ - Errores de bundlers (Vite, esbuild, webpack) relacionados con TypeScript
32
+ - Errores de ESM vs CommonJS en proyectos TypeScript
33
+
34
+ ---
35
+
36
+ ## Errores de tsc — tipos y asignación
37
+
38
+ ### `TS2322: Type 'X' is not assignable to type 'Y'`
39
+
40
+ **Causa**: asignación de un valor cuyo tipo no coincide con el esperado.
41
+
42
+ ```typescript
43
+ // MAL
44
+ const edad: number = "25"; // string no es number
45
+
46
+ // BIEN — verificar el tipo real del valor
47
+ const edad: number = parseInt("25", 10);
48
+
49
+ // Caso frecuente: respuestas de API
50
+ interface Usuario { id: number; nombre: string }
51
+ // La API puede devolver id como string — validar en runtime
52
+ const usuario: Usuario = await api.get("/users/1"); // puede fallar si id viene como "1"
53
+ ```
54
+
55
+ **Gotcha con unions y narrowing**:
56
+ ```typescript
57
+ // MAL — TS no sabe cuál es el tipo dentro de la union
58
+ function procesar(valor: string | number) {
59
+ return valor.toFixed(2); // TS2339: toFixed no existe en string
60
+ }
61
+
62
+ // BIEN — narrowing con typeof
63
+ function procesar(valor: string | number) {
64
+ if (typeof valor === "number") {
65
+ return valor.toFixed(2);
66
+ }
67
+ return parseFloat(valor).toFixed(2);
68
+ }
69
+ ```
70
+
71
+ ### `TS2345: Argument of type 'X' is not assignable to parameter of type 'Y'`
72
+
73
+ **Causa frecuente**: pasar `null` o `undefined` donde se espera un tipo definido.
74
+
75
+ ```typescript
76
+ // MAL — strictNullChecks detecta que find() puede retornar undefined
77
+ const usuarios: Usuario[] = [];
78
+ const admin: Usuario = usuarios.find(u => u.rol === "admin");
79
+ // TS2322: Type 'Usuario | undefined' is not assignable to type 'Usuario'
80
+
81
+ // BIEN — manejar el caso undefined
82
+ const admin = usuarios.find(u => u.rol === "admin");
83
+ if (!admin) throw new Error("Admin no encontrado");
84
+ // Después de la guarda, TS sabe que admin es Usuario
85
+ ```
86
+
87
+ ### `TS2339: Property 'X' does not exist on type 'Y'`
88
+
89
+ **Causas comunes**:
90
+ 1. Typo en el nombre de la propiedad
91
+ 2. El tipo no tiene esa propiedad (usar `interface` correcta)
92
+ 3. Acceso a propiedad opcional sin optional chaining
93
+
94
+ ```typescript
95
+ // MAL
96
+ const nombre = usuario.nombe; // typo: "nombe" vs "nombre"
97
+
98
+ // Caso con tipos de API externa
99
+ const data: unknown = await fetch("/api").then(r => r.json());
100
+ console.log(data.nombre); // TS2339: unknown no tiene propiedades
101
+
102
+ // BIEN — validar con type guard o Zod
103
+ import { z } from "zod";
104
+ const UsuarioSchema = z.object({ nombre: z.string() });
105
+ const usuario = UsuarioSchema.parse(data);
106
+ console.log(usuario.nombre); // ok: tipo inferido por Zod
107
+ ```
108
+
109
+ ---
110
+
111
+ ## Errores de tsconfig.json
112
+
113
+ ### `Cannot find module 'X' or its corresponding type declarations` (TS2307)
114
+
115
+ **Diagnóstico**:
116
+ ```bash
117
+ # ¿Existe el paquete?
118
+ npm ls nombre-paquete
119
+
120
+ # ¿Existen los tipos?
121
+ npm ls @types/nombre-paquete
122
+
123
+ # ¿moduleResolution es correcto?
124
+ grep moduleResolution tsconfig.json
125
+ ```
126
+
127
+ **Soluciones**:
128
+ 1. Instalar tipos: `npm install -D @types/nombre-paquete`
129
+ 2. Si no hay `@types/*`, crear declaración local:
130
+ ```typescript
131
+ // src/types/nombre-paquete.d.ts
132
+ declare module "nombre-paquete" {
133
+ export function metodo(): void;
134
+ }
135
+ ```
136
+ 3. Verificar `moduleResolution` en tsconfig:
137
+ ```json
138
+ {
139
+ "compilerOptions": {
140
+ "moduleResolution": "bundler" // para Vite/esbuild
141
+ // o "node16" para Node.js puro
142
+ // NUNCA "node" en proyectos nuevos (legacy)
143
+ }
144
+ }
145
+ ```
146
+
147
+ ### Path aliases no resuelven (`@app/`, `@shared/`)
148
+
149
+ ```json
150
+ {
151
+ "compilerOptions": {
152
+ "baseUrl": ".",
153
+ "paths": {
154
+ "@app/*": ["src/app/*"],
155
+ "@shared/*": ["src/shared/*"]
156
+ }
157
+ }
158
+ }
159
+ ```
160
+
161
+ **Gotcha**: `tsc` resuelve los paths pero NO los transforma en el output.
162
+ El bundler (Vite, webpack) o `tsc-alias` deben resolver los paths en runtime.
163
+
164
+ ```bash
165
+ # Para Vite — agregar resolve.alias en vite.config.ts
166
+ # Para Jest — agregar moduleNameMapper en jest.config.ts
167
+ # Para Node.js — usar tsc-alias como post-build step
168
+ npx tsc && npx tsc-alias
169
+ ```
170
+
171
+ ### `TS5023: Unknown compiler option 'X'`
172
+
173
+ **Causa**: opción de una versión más nueva de TypeScript en tsconfig.
174
+
175
+ ```bash
176
+ # Verificar versión de TypeScript
177
+ npx tsc --version
178
+
179
+ # Opciones por versión:
180
+ # verbatimModuleSyntax — TS 5.0+
181
+ # moduleResolution: "bundler" — TS 5.0+
182
+ # resolvePackageJsonExports — TS 5.0+
183
+ ```
184
+
185
+ **Solución**: actualizar TypeScript o quitar la opción incompatible.
186
+
187
+ ---
188
+
189
+ ## Errores de generics
190
+
191
+ ### `TS2344: Type 'X' does not satisfy the constraint 'Y'`
192
+
193
+ ```typescript
194
+ // MAL — el generic está restringido pero el tipo pasado no cumple
195
+ function primero<T extends { id: number }>(items: T[]): T {
196
+ return items[0];
197
+ }
198
+ primero([{ nombre: "Ana" }]); // error: falta 'id'
199
+
200
+ // BIEN
201
+ primero([{ id: 1, nombre: "Ana" }]);
202
+ ```
203
+
204
+ ### `TS2558: Expected 0 type arguments, but got 1`
205
+
206
+ **Causa**: pasar generics a una función que no los acepta.
207
+
208
+ ```typescript
209
+ // MAL — useState ya infiere el tipo del valor inicial
210
+ const [count, setCount] = useState<number>(0); // redundante pero válido
211
+
212
+ // Esto falla si la función no tiene parámetro de tipo:
213
+ fetch<Response>("/api"); // TS2558: fetch no acepta type arguments
214
+ ```
215
+
216
+ ---
217
+
218
+ ## Errores de ESM vs CommonJS
219
+
220
+ ### `ERR_REQUIRE_ESM: require() of ES Module not supported`
221
+
222
+ **Causa**: importar un paquete ESM-only desde un proyecto CommonJS.
223
+
224
+ ```bash
225
+ # Diagnóstico: ver si el paquete es ESM-only
226
+ node -e "console.log(require.resolve('nombre-paquete'))"
227
+ # Si falla con ERR_REQUIRE_ESM, el paquete es ESM-only
228
+ ```
229
+
230
+ **Soluciones**:
231
+ 1. Migrar el proyecto a ESM (`"type": "module"` en package.json)
232
+ 2. Usar `import()` dinámico en vez de `require()`:
233
+ ```typescript
234
+ const modulo = await import("paquete-esm");
235
+ ```
236
+ 3. Usar una versión anterior del paquete que soporte CJS (último recurso)
237
+
238
+ ### `TS1479: ... resolves to an ESM-only module` con `moduleResolution: "node16"`
239
+
240
+ ```json
241
+ {
242
+ "compilerOptions": {
243
+ "module": "node16",
244
+ "moduleResolution": "node16"
245
+ }
246
+ }
247
+ ```
248
+
249
+ **Solución**: cambiar a `"moduleResolution": "bundler"` si usas Vite/esbuild,
250
+ o usar `import()` dinámico para paquetes ESM-only.
251
+
252
+ ---
253
+
254
+ ## Errores de bundlers (Vite, esbuild, webpack)
255
+
256
+ ### Vite: `[plugin:vite:import-analysis] Failed to resolve import`
257
+
258
+ **Causas**:
259
+ 1. Path alias no configurado en `vite.config.ts`
260
+ 2. Extensión faltante en el import (Vite requiere extensión para CSS/assets)
261
+
262
+ ```typescript
263
+ // vite.config.ts
264
+ import { defineConfig } from "vite";
265
+ import { resolve } from "path";
266
+
267
+ export default defineConfig({
268
+ resolve: {
269
+ alias: {
270
+ "@": resolve(__dirname, "./src"),
271
+ },
272
+ },
273
+ });
274
+ ```
275
+
276
+ ### webpack: `Module not found: Error: Can't resolve 'X'`
277
+
278
+ ```bash
279
+ # Diagnóstico
280
+ npx webpack --stats-error-details
281
+
282
+ # Soluciones comunes:
283
+ # 1. Agregar extensión a resolve.extensions en webpack.config
284
+ # 2. Agregar alias a resolve.alias
285
+ # 3. Instalar el loader correspondiente (ts-loader, babel-loader)
286
+ ```
287
+
288
+ ### esbuild: `No loader is configured for ".X" files`
289
+
290
+ ```typescript
291
+ // esbuild necesita loaders explícitos para extensiones no estándar
292
+ import * as esbuild from "esbuild";
293
+ await esbuild.build({
294
+ loader: {
295
+ ".svg": "file",
296
+ ".css": "css",
297
+ ".png": "file",
298
+ },
299
+ });
300
+ ```
301
+
302
+ ---
303
+
304
+ ## Errores de declaration files (.d.ts)
305
+
306
+ ### `TS7016: Could not find a declaration file for module 'X'`
307
+
308
+ ```bash
309
+ # Opción 1: instalar tipos del DefinitelyTyped
310
+ npm install -D @types/nombre-paquete
311
+
312
+ # Opción 2: declaración local mínima
313
+ # src/types/nombre-paquete.d.ts
314
+ declare module "nombre-paquete"; # tipado como any — último recurso
315
+
316
+ # Opción 3: skipLibCheck (oculta errores, no los resuelve)
317
+ # tsconfig.json → "skipLibCheck": true
318
+ ```
319
+
320
+ ### Conflictos entre versiones de `@types/*`
321
+
322
+ ```bash
323
+ # Diagnóstico
324
+ npm ls @types/react # ver si hay múltiples versiones
325
+
326
+ # Solución: forzar una sola versión con overrides
327
+ # package.json
328
+ {
329
+ "overrides": {
330
+ "@types/react": "^18.2.0"
331
+ }
332
+ }
333
+ ```
334
+
335
+ ---
336
+
337
+ ## strict mode — errores al activar
338
+
339
+ Al migrar un proyecto a `"strict": true`, los errores más comunes:
340
+
341
+ | Error | Flag específico | Solución rápida |
342
+ |-------|----------------|-----------------|
343
+ | `TS7006: Parameter implicitly has 'any'` | `noImplicitAny` | Agregar tipo al parámetro |
344
+ | `TS2532: Object is possibly 'undefined'` | `strictNullChecks` | Optional chaining `?.` o guarda `if` |
345
+ | `TS2564: Property has no initializer` | `strictPropertyInitialization` | Inicializar o marcar con `!` (non-null assertion) |
346
+ | `TS7053: Element implicitly has 'any'` | `noImplicitAny` | Usar `Record<string, T>` o index signature |
347
+
348
+ **Estrategia de migración incremental**: activar flags uno a uno en vez de `strict: true`
349
+ de golpe. Empezar con `noImplicitAny`, luego `strictNullChecks`, luego el resto.
350
+
351
+ ---
352
+
353
+ ## Gotchas / Errores comunes no obvios
354
+
355
+ - **`tsc --noEmit` pasa localmente pero CI falla con TS2307 en el mismo archivo**: la versión de TypeScript en node_modules local difiere de la versión en CI. Causa: `typescript` está en `devDependencies` con rango `^5.0.0` y npm resolvió versiones distintas en los dos entornos. Solución: fijar la versión exacta en devDependencies (`"typescript": "5.3.3"` sin `^`) o usar `npm ci` con lockfile en CI.
356
+ - **Path alias `@app/*` resuelve en `tsc` pero falla en Jest con `Cannot find module '@app/...'`**: `tsc` maneja los aliases del tsconfig pero el runner de Jest no los conoce por defecto. Causa: Jest no lee `tsconfig.json` para resolución de módulos; necesita `moduleNameMapper` equivalente en `jest.config.ts`. Solución: agregar `moduleNameMapper: {"^@app/(.*)$": "<rootDir>/src/app/$1"}` al jest config, idéntico al paths del tsconfig.
357
+ - **`skipLibCheck: true` oculta errores que rompen el build en el servidor de CI del cliente**: el desarrollador activó `skipLibCheck` para silenciar errores de `@types/*` conflictivos sin resolver el conflicto real. Causa: múltiples versiones del mismo `@types/` paquete en el árbol de dependencias. Solución: usar `npm ls @types/react` para detectar duplicados y resolver con `overrides` en package.json — `skipLibCheck` debe ser temporal, no permanente.
358
+ - **`TS1259: Module can only be default-imported using 'esModuleInterop'`**: importar un módulo CommonJS con `import X from 'x'` cuando `esModuleInterop: false`. Causa: ausencia de `"esModuleInterop": true` en tsconfig. El gotcha es que activarlo solo resuelve el error de tsc pero no garantiza que el bundler produzca el import correcto. Solución: activar `esModuleInterop: true` junto con `allowSyntheticDefaultImports: true` y verificar que el bundler también tiene su equivalente configurado.
359
+
360
+ ## Checklist de diagnóstico
361
+
362
+ - [ ] `npx tsc --version` — ¿versión compatible con las opciones de tsconfig?
363
+ - [ ] `npx tsc --noEmit` — ¿type-check pasa sin emitir?
364
+ - [ ] ¿`moduleResolution` es `bundler` (Vite/esbuild) o `node16` (Node.js)?
365
+ - [ ] ¿Los `@types/*` están instalados para paquetes sin tipos propios?
366
+ - [ ] ¿Path aliases configurados en tsconfig Y en el bundler/runner?
367
+ - [ ] ¿El proyecto es ESM (`"type": "module"`) o CJS? ¿Consistente con tsconfig?
368
+ - [ ] `npm ls --all | grep "deduped"` — ¿conflictos de versiones de tipos?
369
+ - [ ] Para errores de strict: ¿el flag específico que causa el error está identificado?
@@ -0,0 +1,271 @@
1
+ ---
2
+ name: checklist-calidad
3
+ description: Evaluación de calidad del trabajo entregado con 7 métricas ponderadas — bugs encontrados, cobertura de tests, conformidad con spec, alucinaciones de código, DRY, seguridad SIGAF y arquitectura. Score ponderado mínimo de 9.0 sobre 10 para aprobar. Produce un reporte con score y plan de mejora.
4
+ version: "1.0.0"
5
+ herramientasPermitidas: [Read, Grep]
6
+ evolvable: true # default para skill estandar
7
+ exclusiones:
8
+ - "No cargar para revisión de seguridad en profundidad (OWASP, CVEs, vulnerabilidades) — para seguridad cargar `checklist-seguridad`."
9
+ - "No cargar para auditoría de dependencias (licencias, CVEs en paquetes) — para dependencias cargar `dependencias-auditoria`."
10
+ - "No cargar para revisión de código por lenguaje específico (Python, TypeScript, SQL) — para revisión por stack cargar el skill del lenguaje correspondiente."
11
+ - "No cargar durante la implementación — se activa AL TERMINAR una fase, no durante el desarrollo."
12
+ ---
13
+ # Habilidad: Checklist de Calidad del Trabajo
14
+
15
+ ## Cuándo NO cargar
16
+
17
+ - La revisión es de seguridad (OWASP, inyección, auth): cargar `checklist-seguridad`.
18
+ - La auditoría es de dependencias (CVEs en paquetes, licencias): cargar `dependencias-auditoria`.
19
+ - La revisión es de código fuente por stack específico: cargar el skill del lenguaje (`patrones-python`, `angular-moderno`, etc.).
20
+ - Se está en medio de la implementación: este skill se activa al terminar una fase, no durante el desarrollo.
21
+
22
+ ## Propósito
23
+
24
+ La calidad no es subjetiva — es medible. Esta habilidad aplica 7 métricas
25
+ concretas al trabajo entregado y produce un score numérico. Un score menor
26
+ a 9.0 bloquea el avance a producción y requiere un plan de mejora explícito.
27
+
28
+ ## Cuándo activar
29
+
30
+ - Al terminar una fase antes de marcar como "completada"
31
+ - Como parte del proceso de revisión de PRs críticos
32
+ - Cuando el usuario pide evaluación de calidad del trabajo
33
+ - Después de correcciones del verificador para re-evaluar
34
+
35
+ ---
36
+
37
+ ## Métrica 1 — Bugs Encontrados (peso: 25%)
38
+
39
+ **Definición**: Número de defectos funcionales encontrados durante la verificación.
40
+
41
+ **Cómo medir**:
42
+ 1. Ejecutar todos los tests: `pytest -v` / `npm test`
43
+ 2. Ejecutar el tipo-checker: `mypy .` / `tsc --noEmit`
44
+ 3. Ejecutar el linter: `ruff check .` / `eslint .`
45
+ 4. Revisión manual de flujos críticos (happy path + edge cases)
46
+
47
+ **Escala de puntuación**:
48
+ | Bugs encontrados | Puntuación |
49
+ |-----------------|-----------|
50
+ | 0 bugs | 10.0 |
51
+ | 1-2 bugs menores | 8.5 |
52
+ | 3-5 bugs menores | 7.0 |
53
+ | 1 bug mayor | 5.0 |
54
+ | 2+ bugs mayores | 0.0 |
55
+
56
+ **Bug menor**: no bloquea flujo principal, workaround disponible.
57
+ **Bug mayor**: bloquea flujo principal o corrompe datos.
58
+
59
+ ---
60
+
61
+ ## Métrica 2 — Cobertura de Tests (peso: 20%)
62
+
63
+ **Definición**: Porcentaje de líneas/branches cubiertos por tests automáticos.
64
+
65
+ **Cómo medir**:
66
+ ```bash
67
+ # Python
68
+ pytest --cov=. --cov-report=term-missing --cov-report=html
69
+
70
+ # TypeScript/Angular
71
+ npx jest --coverage
72
+ ```
73
+
74
+ **Escala de puntuación**:
75
+ | Cobertura | Puntuación |
76
+ |-----------|-----------|
77
+ | ≥90% | 10.0 |
78
+ | 80-89% | 8.5 |
79
+ | 70-79% | 7.0 |
80
+ | 60-69% | 5.0 |
81
+ | <60% | 3.0 |
82
+ | Sin tests | 0.0 |
83
+
84
+ **Nota**: La cobertura de líneas es necesaria pero no suficiente. Verificar
85
+ también que los tests tienen assertions reales (ver habilidad `verificar-trabajo`
86
+ nivel SUSTANTIVO para tests).
87
+
88
+ ---
89
+
90
+ ## Métrica 3 — Conformidad con Spec (peso: 20%)
91
+
92
+ **Definición**: Porcentaje de requerimientos del PLAN.md / CONTEXT.md implementados
93
+ correctamente.
94
+
95
+ **Cómo medir**:
96
+ 1. Listar todos los criterios de aceptación del CONTEXT.md
97
+ 2. Para cada uno, verificar si está implementado (PASS/FAIL)
98
+ 3. Score = (criterios PASS / total criterios) * 10
99
+
100
+ **Puntos de penalización adicional**:
101
+ - -1.0: Feature implementada de forma diferente a la spec sin notificación
102
+ - -0.5: Feature parcialmente implementada sin documentar qué falta
103
+ - -1.5: Feature de seguridad omitida (RBAC, validación, etc.)
104
+
105
+ ---
106
+
107
+ ## Métrica 4 — Alucinaciones de Código (peso: 15%)
108
+
109
+ **Definición**: Código que parece correcto pero introduce lógica incorrecta,
110
+ usa APIs inexistentes o hace suposiciones falsas sobre el sistema.
111
+
112
+ **Señales a buscar**:
113
+ - [ ] Imports de módulos que no existen en el proyecto
114
+ - [ ] Llamadas a métodos con firmas incorrectas
115
+ - [ ] Variables de entorno asumidas que no están en `.env.example`
116
+ - [ ] Endpoints referenciados que no existen en el router
117
+ - [ ] Lógica de negocio que contradice los requerimientos documentados
118
+ - [ ] Valores hardcodeados que deberían venir de configuración
119
+ - [ ] Schemas Pydantic con campos que no existen en el modelo ORM
120
+
121
+ **Cómo detectar**:
122
+ ```bash
123
+ # Importaciones que no resuelven
124
+ mypy . 2>&1 | grep "Cannot find\|Module.*has no attribute"
125
+
126
+ # Variables de entorno sin documentar
127
+ grep -rn "os\.getenv\|os\.environ" --include="*.py" | \
128
+ awk '{print $2}' | sort | uniq > env_usados.txt
129
+ grep -rn "^[A-Z_]*=" .env.example | awk -F= '{print $1}' | sort > env_documentados.txt
130
+ diff env_usados.txt env_documentados.txt
131
+ ```
132
+
133
+ **Escala de puntuación**:
134
+ | Alucinaciones | Puntuación |
135
+ |--------------|-----------|
136
+ | 0 | 10.0 |
137
+ | 1-2 menores (import inexistente, typo) | 7.0 |
138
+ | 1 mayor (lógica incorrecta) | 4.0 |
139
+ | 2+ mayores | 0.0 |
140
+
141
+ ---
142
+
143
+ ## Métrica 5 — Principio DRY (peso: 10%)
144
+
145
+ **Definición**: No repetición innecesaria de lógica o código.
146
+
147
+ **Cómo medir** — buscar duplicación:
148
+ ```bash
149
+ # Funciones similares (Python)
150
+ # Herramienta: pylint, sonarqube o revisión manual
151
+ grep -rn "def " --include="*.py" | awk -F: '{print $3}' | sort | uniq -d | head -20
152
+
153
+ # Bloques de código > 10 líneas idénticos
154
+ # Revisión manual de services y utils
155
+ ```
156
+
157
+ **Items a verificar**:
158
+ - [ ] Sin funciones duplicadas entre módulos
159
+ - [ ] Sin queries SQL duplicadas que deberían ser un helper
160
+ - [ ] Sin lógica de validación repetida que debería estar en un validator
161
+ - [ ] Sin constantes definidas en múltiples lugares
162
+ - [ ] Sin componentes Angular que hacen lo mismo con diferente nombre
163
+
164
+ **Escala**:
165
+ | DRY violations | Puntuación |
166
+ |---------------|-----------|
167
+ | 0 | 10.0 |
168
+ | 1-2 menores | 8.0 |
169
+ | 3-5 | 6.0 |
170
+ | 5+ o duplicación de lógica crítica | 3.0 |
171
+
172
+ ---
173
+
174
+ ## Métrica 6 — Seguridad SIGAF (peso: 5%)
175
+
176
+ **Definición**: Cumplimiento de las reglas anti-error SIGAF documentadas en el
177
+ sistema. Esta métrica es binaria por categoría.
178
+
179
+ **Checklist SIGAF**:
180
+ - [ ] selectinload en todas las relaciones accedidas en serialización
181
+ - [ ] lazy="selectin" en relaciones a Usuario
182
+ - [ ] Services no hacen db.commit()
183
+ - [ ] Literal[] en campos enum en schemas Pydantic
184
+ - [ ] RBAC en todos los POST/PUT/DELETE
185
+ - [ ] get_current_user explícito en todos los endpoints
186
+ - [ ] Filtros de datos del JWT, no de query params
187
+ - [ ] @if/@for en Angular (no *ngIf/*ngFor)
188
+ - [ ] computed() para derivaciones en templates
189
+
190
+ **Escala**:
191
+ | Items fallidos | Puntuación |
192
+ |---------------|-----------|
193
+ | 0 | 10.0 |
194
+ | 1 | 7.0 |
195
+ | 2 | 4.0 |
196
+ | 3+ | 0.0 |
197
+
198
+ ---
199
+
200
+ ## Métrica 7 — Arquitectura (peso: 5%)
201
+
202
+ **Definición**: El código nuevo respeta las capas y convenciones del proyecto.
203
+
204
+ **Items a verificar**:
205
+ - [ ] Services no importan directamente modelos de otros dominios (bypassing capas)
206
+ - [ ] Endpoints no tienen lógica de negocio incrustada (lógica en services)
207
+ - [ ] Componentes Angular no hacen llamadas HTTP directamente (usan services)
208
+ - [ ] Modelos ORM no tienen lógica de negocio compleja (en services)
209
+ - [ ] No se introdujeron nuevas dependencias sin justificación documentada
210
+
211
+ ---
212
+
213
+ ## Gotchas / Errores comunes no obvios
214
+
215
+ **La Métrica 2 (cobertura) pasa al 85% pero todos los tests son de happy path**: la cobertura de líneas no detecta que los tests omiten los casos de error, los inputs nulos y los edge cases. Causa: es más fácil alcanzar 80% cubriendo el flujo principal que cubriendo los branches de validación. Fix: complementar el porcentaje de cobertura con revisión manual de qué branches están sin cubrir — `pytest --cov-branch` reporta cobertura de branches, no solo de líneas. Un 80% de branch coverage es más significativo que un 90% de line coverage.
216
+
217
+ **La Métrica 4 (alucinaciones) pasa porque `mypy` no detecta errores, pero hay lógica incorrecta**: `mypy` verifica tipos, no semántica de negocio. Un endpoint que siempre devuelve `200 OK` aunque la operación falle, o una función que suma precios en lugar de multiplicar, pasa todos los type checks. Causa: las alucinaciones semánticas son invisibles para el análisis estático. Fix: la Métrica 4 requiere revisión manual del flujo de negocio crítico, no solo ejecutar herramientas automáticas. Verificar que la lógica implementada coincide con los criterios de aceptación del PLAN.md.
218
+
219
+ **El score final es 9.2 pero hay un item de seguridad SIGAF fallido con "penalización mínima"**: la Métrica 6 tiene peso solo del 5%, por lo que un RBAC faltante baja el score de 10 a 9.5 — por encima del umbral de 9.0. Causa: el sistema de pesos numéricos permite que un defecto de seguridad crítico quede diluido por buenas métricas en otras categorías. Fix: los ítems de la Métrica 6 son veto independiente del score: si algún ítem de RBAC, selectinload o get_current_user falla, el veredicto es RECHAZADO independientemente del score ponderado.
220
+
221
+ **La Métrica 3 (conformidad con spec) puntúa 10/10 porque el implementador revisó su propia spec**: el agente que implementó el código también evalúa si cumple los criterios que él mismo escribió. Causa: la Métrica 3 requiere contrastar el código contra criterios externos, no autoevaluación. Fix: la conformidad con spec debe verificarse contra el PLAN.md aprobado, no contra la memoria del implementador. Leer el PLAN.md antes de puntuar la Métrica 3 y citar el número de criterio de aceptación que cada ítem satisface.
222
+
223
+ ## Cálculo del score final
224
+
225
+ ```
226
+ Score = (M1 * 0.25) + (M2 * 0.20) + (M3 * 0.20) + (M4 * 0.15)
227
+ + (M5 * 0.10) + (M6 * 0.05) + (M7 * 0.05)
228
+ ```
229
+
230
+ | Score | Veredicto |
231
+ |-------|-----------|
232
+ | 9.0 - 10.0 | APROBADO |
233
+ | 7.0 - 8.9 | APROBADO CON OBSERVACIONES (debe mejorarse antes de siguiente fase) |
234
+ | 5.0 - 6.9 | RECHAZADO — requiere trabajo de corrección |
235
+ | < 5.0 | RECHAZADO CRÍTICO — requiere reescritura parcial |
236
+
237
+ ---
238
+
239
+ ## Plantilla de reporte: `QUALITY-REPORT.md`
240
+
241
+ ```markdown
242
+ # QUALITY-REPORT.md — Fase [N]
243
+ **Fecha**: [fecha] **Evaluador**: [agente/persona]
244
+
245
+ ## Score Final: [X.X / 10.0] — [VEREDICTO]
246
+
247
+ ## Desglose de métricas
248
+ | # | Métrica | Peso | Puntuación | Score ponderado |
249
+ |---|---------|------|-----------|----------------|
250
+ | 1 | Bugs encontrados | 25% | [X]/10 | [X*0.25] |
251
+ | 2 | Cobertura de tests | 20% | [X]/10 | [X*0.20] |
252
+ | 3 | Conformidad con spec | 20% | [X]/10 | [X*0.20] |
253
+ | 4 | Alucinaciones | 15% | [X]/10 | [X*0.15] |
254
+ | 5 | DRY | 10% | [X]/10 | [X*0.10] |
255
+ | 6 | Seguridad SIGAF | 5% | [X]/10 | [X*0.05] |
256
+ | 7 | Arquitectura | 5% | [X]/10 | [X*0.05] |
257
+ | **TOTAL** | | **100%** | | **[SCORE]** |
258
+
259
+ ## Hallazgos por métrica
260
+ [Para cada métrica con puntuación < 9.0, listar los hallazgos específicos]
261
+
262
+ ## Plan de mejora (si score < 9.0)
263
+ | Acción | Impacto en score | Tiempo estimado | Prioridad |
264
+ |--------|----------------|----------------|----------|
265
+ | | | | |
266
+
267
+ ## Decisión
268
+ [ ] Aprobar para siguiente fase
269
+ [ ] Aprobar con compromisos de mejora
270
+ [ ] Rechazar — requiere iteración
271
+ ```