@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,179 @@
1
+ ---
2
+ name: drift-detection
3
+ version: 1.0.0
4
+ herramientasPermitidas: [Read]
5
+ description: "Detección de drift de métricas de agentes/skills via ventana deslizante (7d) vs baseline (4 semanas). Integrado al operador Reflect del ciclo AGP."
6
+ exclusiones:
7
+ - "No cargar para detectar drift en código de aplicación (regressions de negocio); este skill detecta drift en métricas de uso de agentes/skills del sistema SWL."
8
+ - "No cargar si hay menos de 7 días de trazas en `.planning/traces/`; el baseline de 4 semanas no existirá y los resultados serán estadísticamente inválidos."
9
+ - "No cargar para observabilidad de la aplicación en producción; usar `monitoring-alertas` para eso."
10
+ - "No cargar manualmente cuando el ciclo AGP ya ejecuta `ejecutarDriftAutomatico()` en cada SubagentStop — invocarlo dos veces dobla el trabajo sin beneficio."
11
+ author: swl-ses
12
+ evolvable: true
13
+ evolvable_scope: [content, examples]
14
+ domain: ingeniería-de-software
15
+ tags: [agp, observabilidad, drift, métricas, ciclo-agp]
16
+ ---
17
+ # drift-detection — Detección de drift para el ciclo AGP
18
+
19
+ Algoritmo de ventana deslizante que compara métricas recientes (últimos 7 días)
20
+ contra un baseline histórico (4 semanas previas) para detectar degradación de
21
+ skills y agentes antes de que el health score lo refleje.
22
+
23
+ Adaptado de `runDriftCheck`/`getDriftTimeline` en mission-control-main (MIT).
24
+
25
+ ## Módulo principal
26
+
27
+ `scripts/lib/drift-detector.js` — zero-deps, Node stdlib únicamente.
28
+
29
+ ## Cuándo se activa
30
+
31
+ - Manual: desde cualquier script o agente que necesite análisis de degradación.
32
+ - Automático (vía `hooks/auto-evolucion.js`): el hook ejecuta `ejecutarDriftAutomatico()`
33
+ en cada `SubagentStop` con un throttle de 24 h (configurable con `SWL_DRIFT_THROTTLE_H`).
34
+ Se evalúan los últimos 5 archivos JSONL de trazas. Opt-out total con `SWL_DRIFT_DISABLED=1`.
35
+ - Automático (vía ciclo AGP): `hooks/lib/reflect-classifier.js` expone
36
+ `ejecutarDriftReflect(rutaJsonl, nombreAgente)` como punto de extensión alternativo.
37
+ - Las trazas de agentes viven en `.planning/traces/YYYY-MM-DD.jsonl`.
38
+
39
+ ## Exports del módulo
40
+
41
+ ```js
42
+ const { detectarDrift, generarLineaTemporal } = require('./scripts/lib/drift-detector');
43
+ ```
44
+
45
+ ### `detectarDrift(opts)`
46
+
47
+ ```js
48
+ detectarDrift({
49
+ rutaJsonl: '/ruta/a/traces.jsonl',
50
+ ventanaDias: 7, // default
51
+ baselineSemanasBase: 4, // default
52
+ umbralPct: 10, // warn si |drift| > 10%
53
+ metricas: ['tokens_promedio_por_sesion', 'tasa_exito_tool', 'tasa_finalizacion_tarea'],
54
+ agente: 'backend-python-swl', // para nudges
55
+ })
56
+ ```
57
+
58
+ **Retorna:**
59
+
60
+ ```json
61
+ {
62
+ "drifts": [
63
+ {
64
+ "metrica": "tokens_promedio_por_sesion",
65
+ "baseline": 1000,
66
+ "reciente": 2100,
67
+ "driftPct": 110.0,
68
+ "estado": "critico"
69
+ },
70
+ {
71
+ "metrica": "tasa_exito_tool",
72
+ "baseline": 0.9,
73
+ "reciente": 0.85,
74
+ "driftPct": -5.56,
75
+ "estado": "ok"
76
+ }
77
+ ],
78
+ "timestamp": "2026-04-19T12:00:00.000Z",
79
+ "estado_global": "critico"
80
+ }
81
+ ```
82
+
83
+ **Estados por métrica:**
84
+
85
+ | Condición | Estado |
86
+ |-----------|--------|
87
+ | `abs(driftPct) <= umbralPct` | `ok` |
88
+ | `abs(driftPct) > umbralPct` | `warn` |
89
+ | `abs(driftPct) > umbralPct * 2` | `critico` |
90
+
91
+ **Estado global:** el peor estado entre todas las métricas.
92
+
93
+ ### `generarLineaTemporal(opts)`
94
+
95
+ ```js
96
+ generarLineaTemporal({
97
+ rutaJsonl: '/ruta/a/traces.jsonl',
98
+ dias: 30, // default
99
+ })
100
+ // → [{ fecha: '2026-04-19', tokens: 3200, exitos: 12, fallos: 1 }, ...]
101
+ ```
102
+
103
+ Retorna un array de longitud `dias`, uno por día, para visualización en
104
+ el dashboard o en reportes de salud.
105
+
106
+ ## Estructura de eventos esperada en el JSONL
107
+
108
+ El módulo es permisivo: extrae métricas de cualquier campo que coincida.
109
+
110
+ | Métrica | Campos aceptados en el evento |
111
+ |---------|-------------------------------|
112
+ | Tokens | `atributos.tokens_totales`, `tokens`, `total_tokens` |
113
+ | Éxito de tool | `success`, `exito`, `atributos.success` |
114
+ | Finalización de tarea | `estado`, `status`, `atributos.estado` (valores: `OK`, `done`, `completado`) |
115
+ | Timestamp | `timestamp`, `ts`, `inicio`, `created_at` |
116
+
117
+ Formato nativo de `.planning/traces/YYYY-MM-DD.jsonl`:
118
+
119
+ ```json
120
+ {"traceId":"...","nombre":"agent:backend-python-swl","inicio":"2026-04-19T10:00:00.000Z","estado":"OK","atributos":{"tokens_totales":1500}}
121
+ ```
122
+
123
+ ## Integración con el ciclo AGP
124
+
125
+ El operador Reflect (`hooks/lib/reflect-classifier.js`) expone:
126
+
127
+ ```js
128
+ const { ejecutarDriftReflect } = require('./hooks/lib/reflect-classifier');
129
+
130
+ const resultado = ejecutarDriftReflect(
131
+ '.planning/traces/2026-04-19.jsonl',
132
+ 'backend-python-swl'
133
+ );
134
+ // resultado: { drifts, timestamp, estado_global } o null si módulo no disponible
135
+ ```
136
+
137
+ Cuando `estado_global === 'critico'`, el módulo emite automáticamente un nudge
138
+ a `.planning/evolucion/nudges.jsonl`:
139
+
140
+ ```json
141
+ {
142
+ "timestamp": "2026-04-19T12:00:00.000Z",
143
+ "tipo": "drift-detectado",
144
+ "agente_o_skill": "backend-python-swl",
145
+ "metrica": "tokens_promedio_por_sesion",
146
+ "drift_pct": 110.0,
147
+ "estado": "critico"
148
+ }
149
+ ```
150
+
151
+ El agente `auto-evolucion-swl` consume estos nudges para proponer mejoras.
152
+
153
+ ## Cómo interpretar los resultados
154
+
155
+ - **`ok`**: métricas estables. Sin acción requerida.
156
+ - **`warn`**: degradación moderada. Revisar en el próximo ciclo de evolución.
157
+ - **`critico`**: degradación severa. Invocar `/swl:evolucionar` con el agente
158
+ identificado. El nudge ya fue emitido — aparecerá en `/swl:salud`.
159
+
160
+ ## Cuándo NO cargar
161
+
162
+ - Se busca detectar regresiones en el código de la aplicación (tests fallando, performance degradada); para eso usar `monitoring-alertas` o el revisor de código correspondiente.
163
+ - El proyecto tiene menos de 7 días de trazas — el baseline de 4 semanas no puede calcularse y `detectarDrift` retornará resultados sin significado estadístico.
164
+ - El ciclo AGP ya tiene configurado el throttle automático de 24 h; invocar el drift manualmente en el mismo intervalo produce el mismo nudge dos veces sin nuevo valor.
165
+
166
+ ## Gotchas / Errores comunes no obvios
167
+
168
+ - **Timestamps inválidos en eventos JSONL provocan líneas ignoradas silenciosamente**: el módulo es permisivo con los campos pero si ningún campo de timestamp (`timestamp`, `ts`, `inicio`, `created_at`) tiene una fecha ISO válida, el evento se descarta del cálculo. Causa: eventos generados con timestamps de formato local (ej. `"19/04/2026"`) no pasan la validación. Solución: verificar que todos los eventos JSONL del trace tengan al menos un campo de timestamp en formato ISO 8601 — si el baseline aparece como 0, es el primer síntoma de eventos descartados.
169
+ - **Estado `critico` emitido por baseline con muy pocos eventos**: si el baseline de 4 semanas tiene solo 3 eventos y la ventana de 7 días tiene 8, el `driftPct` de tokens se dispara al 166% cuando en realidad el agente está más activo, no degradado. Causa: el módulo no valida que el baseline tenga suficientes eventos para ser estadísticamente válido. Solución: antes de interpretar un estado `critico`, verificar que el baseline tiene al menos 20 eventos — si no, marcar el resultado como `insufficient-data` en lugar de accionar.
170
+ - **Nudge duplicado en `.planning/evolucion/nudges.jsonl` por falta de deduplicación**: el hook se ejecuta dos veces en el mismo `SubagentStop` (por bug de throttle) y emite el mismo nudge dos veces. Causa: el throttle `SWL_DRIFT_THROTTLE_H` no validó correctamente el timestamp del último run. Solución: el archivo `nudges.jsonl` es append-only — antes de emitir un nudge, verificar si el último evento del mismo `agente_o_skill` y `metrica` tiene un timestamp dentro de la ventana de throttle.
171
+ - **`atomicWriteJSON` usado para escribir en nudges.jsonl**: escribir el archivo completo en lugar de hacer append corrompe el historial de nudges previos. Causa: confusión entre archivos de estado mutable (usan `atomicWriteJSON`) y archivos de eventos de alta frecuencia (usan `fs.appendFileSync`). Solución: `nudges.jsonl` es un JSONL de alta frecuencia — siempre usar `fs.appendFileSync(ruta, JSON.stringify(nudge) + '\n')`, nunca reescribir el archivo completo.
172
+
173
+ ## Referencia cruzada
174
+
175
+ - Módulo: `scripts/lib/drift-detector.js`
176
+ - Tests: `tests/lib/drift-detector.test.js`
177
+ - Operador Reflect: `hooks/lib/reflect-classifier.js`
178
+ - Ciclo AGP: `.planning/evolucion/nudges.jsonl`
179
+ - Origen (adaptado de): `temp/mission-control-main/src/lib/agent-evals.ts` — MIT
@@ -0,0 +1,468 @@
1
+ ---
2
+ name: ejecutar-fase
3
+ description: Ejecuta el PLAN.md de una fase con commits atómicos por tarea. Aplica reglas de desviación, maneja checkpoints HITL, soporta TDD opcional, y mantiene ESTADO.md y HOJA-RUTA.md actualizados tras cada tarea completada.
4
+ version: "1.1.0"
5
+ herramientasPermitidas: [Read, Write, Edit, Bash, Glob, Grep]
6
+ exclusiones:
7
+ - "No cargar si no existe PLAN.md con `estado: aprobado` — ejecutar `planear-fase` primero."
8
+ - "No cargar para ejecutar tareas ad-hoc sin plan formal; si no hay oleadas ni criterios de verificación, no hay fase que ejecutar."
9
+ - "No cargar para retomar una sesión pausada en checkpoint `decision` o `human-action` sin resolverlo primero — el agente no debe avanzar pasando por alto una decisión pendiente del usuario."
10
+ - "No cargar solo para verificar el trabajo ya hecho; en ese caso usar `verificar-trabajo`."
11
+ # Nota: este skill supera el límite estándar de 380 líneas (406 líneas en v1.1.0).
12
+ # Excepción aprobada: las secciones Phase Gates y Dev↔QA Loop formal aportan
13
+ # protocolos de calidad de alto valor que no pueden condensarse sin perder
14
+ # precisión operativa. No eliminar contenido para ajustar al límite.
15
+ evolvable: true # default para skill estandar
16
+ ---
17
+ # Habilidad: Ejecutar Fase de Desarrollo
18
+
19
+ ## Propósito
20
+
21
+ La ejecución es donde el plan se convierte en código. Esta habilidad convierte
22
+ el PLAN.md en cambios reales, verificables y atómicamente comprometidos, con
23
+ trazabilidad completa entre cada tarea y su commit correspondiente. Evita el
24
+ antipatrón de acumular cambios sin verificar y commitear "todo de golpe".
25
+
26
+ ## Cuándo activar
27
+
28
+ - Existe un PLAN.md válido en `.planning/`
29
+ - El usuario dice "ejecuta la fase" o "ejecuta el plan"
30
+ - Se retoma una fase interrumpida (ESTADO.md indica progreso parcial)
31
+
32
+ ## Cuándo NO cargar
33
+
34
+ - No hay PLAN.md o el plan tiene `estado: propuesto` (no aprobado) — ejecutar `planear-fase` y obtener aprobación primero.
35
+ - El objetivo es solo verificar calidad del trabajo ya implementado; usar `verificar-trabajo`.
36
+ - Hay un checkpoint `decision` o `human-action` sin resolver en ESTADO.md — resolver el checkpoint antes de continuar la ejecución.
37
+ - Se quiere ejecutar solo una sub-tarea fuera de la secuencia de oleadas del plan; hacerlo rompe el grafo de dependencias y el estado en ESTADO.md.
38
+
39
+ ## Prerrequisito obligatorio
40
+
41
+ Leer `.planning/fases/0N-PLAN.md` y `.planning/ESTADO.md` (si existe) antes de
42
+ ejecutar la primera tarea.
43
+
44
+ ---
45
+
46
+ ## Protocolo de ejecución por tarea
47
+
48
+ ### Para cada tarea del plan, en orden de oleadas:
49
+
50
+ ```
51
+ 1. Leer la descripción completa de la tarea
52
+ 2. Verificar que las dependencias estén marcadas como COMPLETADA en ESTADO.md
53
+ 3. Ejecutar la implementación
54
+ 4. Ejecutar el criterio de verificación de la tarea
55
+ 5. Si pasa: hacer commit atómico + actualizar ESTADO.md
56
+ 6. Si falla: aplicar retry con backoff exponencial (ver abajo)
57
+ 7. Si agota reintentos: marcar como BLOQUEADA y reportar al usuario
58
+ ```
59
+
60
+ ### Protocolo de retry con backoff exponencial
61
+
62
+ Cuando una tarea falla verificacion:
63
+
64
+ | Intento | Delay | Accion |
65
+ |---------|-------|--------|
66
+ | 1 (original) | — | Ejecutar normalmente |
67
+ | 2 | 0s | Leer error, diagnosticar, corregir UNA cosa, re-verificar |
68
+ | 3 | 5s | Repensar enfoque, corregir, re-verificar |
69
+ | 4 (final) | 15s | Ultimo intento con enfoque diferente |
70
+
71
+ Reglas:
72
+ - `maxRetries`: 3 (configurable por tarea en el plan)
73
+ - Si el error es identico en 2 intentos: abortar (loop detectado)
74
+ - Si el error es tipo STOP (Regla 4): no reintentar, reportar
75
+ - Registrar en ESTADO.md: `intentos: N, ultimo_error: "desc"`
76
+
77
+ ## Dev↔QA Loop formal
78
+
79
+ Cuando el plan incluye tareas de implementación seguidas de tareas de verificación
80
+ (patrón `T-NN impl → T-NN+1 verify`), aplicar el loop formal de calidad:
81
+
82
+ ```
83
+ implementador → tdd-qa-swl → [PASS] → siguiente tarea
84
+ ↘ [FAIL] → implementador (intento 2)
85
+ → tdd-qa-swl → [PASS]
86
+ ↘ [FAIL] → implementador (intento 3)
87
+ → tdd-qa-swl → [PASS]
88
+ ↘ [FAIL] → ESCALAR
89
+ ```
90
+
91
+ ### Reglas del loop
92
+
93
+ - **Máximo 3 ciclos** Dev→QA por tarea. En el ciclo 3, el agente implementador
94
+ DEBE cambiar de enfoque completamente, no hacer el mismo fix.
95
+ - **Loop detectado** (mismo error dos veces seguidas): abortar y escalar a
96
+ `arquitecto-swl` con el diagnóstico completo.
97
+ - **Criterio de PASS**: todos los niveles de validación (1–4) deben pasar,
98
+ no solo los tests.
99
+ - **Criterio de FAIL**: cualquier nivel de validación falla o el criterio de
100
+ aceptación de la tarea no se cumple.
101
+
102
+ ### Cómo registrar en ESTADO.md
103
+
104
+ ```markdown
105
+ | T-05 | Crear endpoint /pagos | EN_PROGRESO | — | Ciclo QA: 2/3 |
106
+ ```
107
+
108
+ ### Cuándo escalar (Regla 4 del loop)
109
+
110
+ Si después de 3 ciclos la tarea sigue fallando:
111
+
112
+ ```
113
+ ALERTA: Loop Dev↔QA agotado — T-[NN]: [nombre de la tarea]
114
+
115
+ Ciclos intentados: 3
116
+ Último error: [descripción exacta]
117
+ Archivos involucrados: [lista]
118
+
119
+ Escalando a arquitecto-swl para revisión de enfoque.
120
+ NO hacer más intentos de implementación hasta recibir dirección.
121
+ ```
122
+
123
+ ### Niveles de validación estructurada (después de cada tarea)
124
+
125
+ Ejecutar validaciones en orden ascendente. Si un nivel falla, NO avanzar al siguiente:
126
+
127
+ | Nivel | Qué valida | Ejemplo de comandos |
128
+ |-------|-----------|-------------------|
129
+ | 1. Sintaxis y estilo | Código compila, linter pasa | `ruff check .`, `npx tsc --noEmit`, `cargo clippy`, `go vet ./...` |
130
+ | 2. Tests unitarios | Lógica de negocio correcta | `pytest -x`, `npm test`, `cargo test`, `go test ./...` |
131
+ | 3. Tests de integración | Componentes conectados | `pytest tests/integration/`, `playwright test`, curl a endpoints |
132
+ | 4. Validación de aceptación | Criterio del plan satisfecho | Criterio de verificación específico de la tarea en PLAN.md |
133
+
134
+ Reglas:
135
+ - Nivel 1 se ejecuta SIEMPRE, incluso en tareas triviales
136
+ - Nivel 2 se ejecuta si existen tests en el proyecto
137
+ - Nivel 3 se ejecuta si la tarea toca integración entre componentes
138
+ - Nivel 4 se ejecuta siempre (es el criterio de verificación de la tarea)
139
+ - Si la validación falla: corregir inmediatamente. NUNCA acumular estado roto
140
+
141
+ ### Formato de commit atómico
142
+
143
+ ```
144
+ [T-NN] tipo(scope): descripción en imperativo
145
+
146
+ - Detalle adicional si es necesario
147
+ - Referencia a la tarea del plan
148
+
149
+ Co-Authored-By: SWL Agent <noreply@swl.dev>
150
+ ```
151
+
152
+ Tipos de commit válidos: `feat`, `fix`, `test`, `refactor`, `docs`, `chore`, `migration`
153
+
154
+ ---
155
+
156
+ ## Modo Pipeline: acumulación de resultados entre tareas
157
+
158
+ Cuando el PLAN.md tiene **7 o más tareas con dependencias encadenadas**, activar
159
+ el modo pipeline para pasar contexto filtrado entre tareas en lugar del contexto
160
+ completo de la conversación.
161
+
162
+ ### Cómo funciona
163
+
164
+ Al completar cada tarea, generar un `stepResult` compacto:
165
+
166
+ ```json
167
+ {
168
+ "step": 3,
169
+ "agentName": "backend-python-swl",
170
+ "output": {
171
+ "filesCreated": ["src/models/user.py", "db/migrations/001_users.sql"],
172
+ "endpointsAdded": ["POST /users", "GET /users/{id}"],
173
+ "keyDecisions": ["usé async SQLAlchemy con session factory"]
174
+ },
175
+ "status": "completed"
176
+ }
177
+ ```
178
+
179
+ Al delegar la siguiente tarea a un agente, construir el `TaskDelegationContext`
180
+ (schema en `manifiestos/handoff-context.json`) incluyendo **solo los stepResults
181
+ que la tarea siguiente necesita** — no el array completo:
182
+
183
+ ```
184
+ TaskDelegationContext:
185
+ reason: "task_delegation"
186
+ parentAgent: "orquestador-swl"
187
+ transferCount: [incrementar desde handoff previo]
188
+ taskId: "T-04"
189
+ taskDescription: "[descripción exacta del PLAN.md — self-contained]"
190
+ verificationCriteria: "[criterio de verificación del plan]"
191
+ relevantFiles: ["src/models/user.py:1", "db/migrations/001_users.sql"]
192
+ previousTaskOutputs:
193
+ - { taskId: "T-03", output: { endpointsAdded: [...] } }
194
+ ```
195
+
196
+ ### Beneficio
197
+
198
+ Un pipeline de 7 tareas pasa ~60% menos contexto a cada agente especializado
199
+ versus pasar el historial completo de la conversación.
200
+
201
+ ### Límite de transferCount
202
+
203
+ Si `transferCount >= 10`, reportar al usuario:
204
+ ```
205
+ ALERTA: Cadena de delegaciones muy larga (transferCount = N).
206
+ Posible loop de agentes. Revisar el PLAN.md y continuar manualmente.
207
+ ```
208
+
209
+ ---
210
+
211
+ ## Reglas de desviación
212
+
213
+ Una desviación ocurre cuando la implementación difiere del plan. Hay tres tipos:
214
+
215
+ ### Desviación Menor (continuar y registrar)
216
+ - Un nombre de función o archivo difiere del plan
217
+ - Se añade un helper que no estaba planificado pero no cambia el alcance
218
+ - El tiempo real es diferente al estimado
219
+
220
+ **Acción**: Continuar. Registrar en ESTADO.md bajo `## Desviaciones`.
221
+
222
+ ### Desviación Moderada (notificar y continuar)
223
+ - Se descubre que una tarea requiere subdivisión en el momento de ejecutar
224
+ - Se encuentra código existente que cubre parcialmente la tarea
225
+ - Una dependencia no funciona como se esperaba
226
+
227
+ **Acción**: Notificar al usuario en el mismo mensaje donde reportas avance.
228
+ Registrar decisión tomada en ESTADO.md.
229
+
230
+ ### Desviación Mayor (STOP — requiere replanificación)
231
+ - La tarea no puede completarse sin cambiar el diseño de otra tarea ya completada
232
+ - Se descubre un requerimiento que invalida 2+ tareas del plan
233
+ - La implementación requeriría romper la compatibilidad con código existente
234
+
235
+ **Acción**: PARAR. No hacer commit. Reportar al usuario con:
236
+ 1. Qué se encontró
237
+ 2. Qué tareas están afectadas
238
+ 3. Opciones de resolución propuestas
239
+
240
+ ---
241
+
242
+ ## Manejo de tareas HITL
243
+
244
+ Cuando el plan llega a una tarea marcada `HITL`:
245
+
246
+ 1. Presentar al usuario el resultado del trabajo previo
247
+ 2. Describir exactamente qué decisión o revisión se necesita
248
+ 3. Esperar confirmación explícita antes de continuar
249
+ 4. Registrar la respuesta del usuario en ESTADO.md
250
+
251
+ Formato de presentación de checkpoint:
252
+
253
+ ```
254
+ CHECKPOINT HITL — T-[NN]: [Nombre]
255
+
256
+ Estado actual: [descripción de lo implementado hasta aquí]
257
+
258
+ Se necesita tu revisión/decisión:
259
+ [descripción precisa de qué revisar o decidir]
260
+
261
+ Opciones (si aplica):
262
+ A) [opción A]
263
+ B) [opción B]
264
+
265
+ ¿Cómo procedo?
266
+ ```
267
+
268
+ ---
269
+
270
+ ## TDD opcional (activar si el CONTEXTO.md lo requiere)
271
+
272
+ Cuando el CONTEXTO.md indica que la fase requiere TDD:
273
+
274
+ ### Ciclo RED → GREEN → REFACTOR por tarea
275
+
276
+ **RED**: Escribir el test que describe el comportamiento esperado.
277
+ El test DEBE fallar. Verificar que falla por la razón correcta, no por error
278
+ de sintaxis o configuración.
279
+
280
+ **GREEN**: Escribir la implementación mínima que hace pasar el test.
281
+ "Mínima" significa: no implementar más de lo que el test exige. Resistir la
282
+ tentación de añadir casos no cubiertos por tests.
283
+
284
+ **REFACTOR**: Limpiar el código sin cambiar el comportamiento.
285
+ El test DEBE seguir pasando después del refactor. Hacer commit solo en este paso.
286
+
287
+ ### Cobertura mínima en modo TDD
288
+
289
+ - Toda función pública tiene al menos 1 test de camino feliz
290
+ - Toda función con branches tiene tests de cada rama relevante
291
+ - Toda función que puede lanzar excepción tiene test del caso de error
292
+
293
+ ---
294
+
295
+ ## Estado de ejecución serializable con execution-state.js
296
+
297
+ Para planes multi-agente complejos, usar `hooks/lib/execution-state.js` para
298
+ mantener el estado de ejecución serializable y recuperable entre sesiones:
299
+
300
+ ### API disponible
301
+
302
+ - `nuevo(dir, { planId, tareas })` → inicializa estado de ejecución
303
+ - `leer(dir)` → lee el estado actual (devuelve `null` si no existe)
304
+ - `iniciarAgente(dir, { agente, tareaId })` → marca agente como activo
305
+ - `completarAgente(dir, { agente, tareaId, resultado })` → registra completación
306
+ - `establecerProximo(dir, { agente, tareaId })` → define el siguiente paso
307
+ - `actualizarContexto(dir, datos)` → actualiza contexto compartido entre agentes
308
+ - `formatearResumen(dir)` → resumen legible del estado actual
309
+ - `limpiar(dir)` → elimina el archivo de estado
310
+
311
+ ### Integración con el protocolo de ejecución
312
+
313
+ Antes de cada tarea:
314
+ ```
315
+ estado = leer(dir)
316
+ iniciarAgente(dir, { agente: "backend-python-swl", tareaId: "T-03" })
317
+ ```
318
+
319
+ Después de cada tarea completada:
320
+ ```
321
+ completarAgente(dir, { agente: "backend-python-swl", tareaId: "T-03", resultado: { ... } })
322
+ establecerProximo(dir, { agente: "tdd-qa-swl", tareaId: "T-04" })
323
+ ```
324
+
325
+ ### Persistencia
326
+
327
+ El estado se persiste en `.planning/execution-state.json`. Al retomar una sesión
328
+ interrumpida, `leer()` recupera el estado exacto donde se detuvo.
329
+
330
+ ---
331
+
332
+ ## Actualización de ESTADO.md
333
+
334
+ Actualizar ESTADO.md después de cada tarea (no al final de la oleada):
335
+
336
+ ```markdown
337
+ # ESTADO.md — Fase [N]: [Nombre]
338
+ **Última actualización**: [fecha y hora]
339
+
340
+ ## Progreso
341
+ - Tareas totales: N
342
+ - Completadas: M
343
+ - Bloqueadas: K
344
+ - Pendientes: N-M-K
345
+
346
+ ## Estado por tarea
347
+ | ID | Nombre | Estado | Commit | Notas |
348
+ |------|--------|--------|--------|-------|
349
+ | T-01 | [nombre] | COMPLETADA | abc1234 | |
350
+ | T-02 | [nombre] | COMPLETADA | def5678 | |
351
+ | T-03 | [nombre] | EN_PROGRESO | — | |
352
+ | T-04 | [nombre] | PENDIENTE | — | depende T-03 |
353
+ | T-05 | [nombre] | BLOQUEADA | — | [descripción del bloqueo] |
354
+
355
+ ## Desviaciones registradas
356
+ | Tarea | Tipo | Descripción | Resolución |
357
+ |-------|------|-------------|-----------|
358
+ | | | | |
359
+
360
+ ## Decisiones HITL tomadas
361
+ | Tarea | Pregunta | Respuesta del usuario | Fecha |
362
+ |-------|---------|----------------------|-------|
363
+ | | | | |
364
+
365
+ ## Próxima acción
366
+ [Qué se ejecuta a continuación y por qué]
367
+ ```
368
+
369
+ ---
370
+
371
+ ## Actualización de HOJA-RUTA.md al completar la fase
372
+
373
+ Al completar todas las tareas del plan:
374
+
375
+ 1. Marcar la fase como completada en HOJA-RUTA.md
376
+ 2. Actualizar la fecha real de completación
377
+ 3. Añadir nota de desviaciones si las hubo
378
+ 4. Marcar la siguiente fase como "lista para discutir"
379
+
380
+ ---
381
+
382
+ ## Modo Ralph: ejecución autónoma hasta completar
383
+
384
+ Cuando el usuario dice "ejecuta hasta terminar", "modo autónomo" o "modo Ralph":
385
+
386
+ 1. Ejecutar TODAS las tareas del plan en secuencia de oleadas
387
+ 2. Después de cada tarea: ejecutar los 4 niveles de validación
388
+ 3. Si una validación falla: corregir y re-validar inmediatamente
389
+ 4. Si después de 3 intentos no se resuelve: marcar como BLOQUEADA y continuar con la siguiente tarea que no dependa de ella
390
+ 5. Al terminar todas las tareas: ejecutar validación completa del proyecto
391
+ 6. Si todo pasa: reportar éxito con resumen de lo completado
392
+ 7. Si hay tareas bloqueadas: reportar cuáles y por qué
393
+
394
+ Reglas del modo Ralph:
395
+ - NUNCA preguntar al usuario durante la ejecución (excepto tareas HITL)
396
+ - Registrar CADA decisión tomada en ESTADO.md bajo `## Decisiones autónomas`
397
+ - Si se detecta loop (mismo error 2 veces): abortar esa tarea, NO el modo
398
+ - Al finalizar, producir resumen: tareas completadas, bloqueadas, decisiones tomadas
399
+ - El modo Ralph NO salta el protocolo de retry ni los niveles de validación
400
+
401
+ ---
402
+
403
+ ## Phase Gates — criterios para cambiar de fase
404
+
405
+ Un Phase Gate es una verificación formal antes de declarar una fase completa
406
+ y comenzar la siguiente. NO avanzar si algún criterio falla.
407
+
408
+ ### Gate de Implementación → Calidad
409
+
410
+ Antes de invocar al equipo de calidad (tdd-qa-swl, revisor-codigo-swl):
411
+
412
+ - [ ] Todas las tareas del plan en estado COMPLETADA o BLOQUEADA documentada
413
+ - [ ] Nivel 1 (linter/tipado) pasa en todo el código nuevo: `ruff`, `tsc --noEmit`, `clippy`
414
+ - [ ] Tests existentes siguen pasando (no hay regresiones)
415
+ - [ ] No hay secrets ni hardcodeos detectados por el hook escaneo-secretos
416
+
417
+ ### Gate de Calidad → Deploy
418
+
419
+ Antes de invocar deploy o release:
420
+
421
+ - [ ] Score de revisión de código ≥ 9.0/10 (revisor-codigo-swl)
422
+ - [ ] 0 findings críticos de seguridad (revisor-seguridad-swl)
423
+ - [ ] Cobertura de tests ≥ 80% en código nuevo (tdd-qa-swl)
424
+ - [ ] Validación de accesibilidad si hay cambios de UI (accesibilidad-wcag-swl)
425
+ - [ ] Performance sin regresión: p95 ≤ baseline + 20% (si aplica rendimiento-swl)
426
+
427
+ ### Gate de Deploy → Producción
428
+
429
+ Antes de declarar la fase completa en producción:
430
+
431
+ - [ ] Runbook de rollback documentado
432
+ - [ ] Alertas de monitoreo configuradas para la nueva funcionalidad
433
+ - [ ] Feature flag listo si el cambio es de alto riesgo
434
+ - [ ] Release notes actualizadas
435
+
436
+ ### Cómo reportar un Gate fallido
437
+
438
+ ```
439
+ PHASE GATE FALLIDO — Gate: [Calidad → Deploy]
440
+
441
+ Criterio no cumplido: Score de revisión 7.8/10 (mínimo 9.0)
442
+ Findings pendientes:
443
+ - [CRITICO] Validación de input en endpoint /usuarios/perfil
444
+ - [ALTO] N+1 query en listado de facturas
445
+
446
+ Acción requerida: corregir findings antes de continuar.
447
+ NO proceder con el deploy hasta aprobar este gate.
448
+ ```
449
+
450
+ ---
451
+
452
+ ## Gotchas / Errores comunes no obvios
453
+
454
+ - **Dos agentes escriben al mismo archivo en paralelo**: en modo pipeline con oleadas paralelas, dos agentes distintos reciben tareas que tocan el mismo archivo (ej: `ESTADO.md` o un service compartido). Causa: las tareas no tenían dependencia explícita entre sí pero sí tenían acoplamiento de escritura. Solución: en el plan, si dos tareas modifican el mismo archivo, deben estar en oleadas distintas (secuencial), no paralelas.
455
+ - **Commit acumulado al final de la oleada, no por tarea**: el agente ejecuta 3 tareas y hace un solo commit grande al terminar la oleada. Causa: interpretación laxa del protocolo. Solución: el commit se hace inmediatamente después de pasar la verificación de cada tarea individual — si la sesión se interrumpe, el trabajo de las tareas completadas está protegido.
456
+ - **Loop Dev↔QA silencioso**: el mismo error aparece en el ciclo 2 y el ciclo 3 y el agente sigue intentando el mismo fix. Causa: no se detectó que el error era idéntico. Solución: comparar el mensaje de error exacto entre ciclos — si coincide en 2 intentos consecutivos, declarar loop y escalar a `arquitecto-swl`.
457
+ - **ESTADO.md no actualizado tras una tarea completada**: el agente completa T-03 pero no actualiza ESTADO.md antes de iniciar T-04. Causa: se omitió el paso 5 del protocolo. Solución: la actualización de ESTADO.md es parte del protocolo de cada tarea, no opcional — sin ella el estado de ejecución es inconsistente y la reanudación falla.
458
+ - **`transferCount` no incrementado en delegaciones encadenadas**: el orquestador delega 10 tareas sin incrementar el contador, superando el umbral sin alerta. Causa: se olvida actualizar el campo en el `TaskDelegationContext`. Solución: verificar y actualizar `transferCount` antes de cada delegación de tarea; si supera 10, reportar al usuario antes de continuar.
459
+
460
+ ## Checklist de cierre de fase
461
+
462
+ - [ ] Todas las tareas en ESTADO.md con estado COMPLETADA o documentadas como BLOQUEADA
463
+ - [ ] Todos los commits hechos y referenciados en ESTADO.md
464
+ - [ ] HOJA-RUTA.md actualizado con la fase completada
465
+ - [ ] Desviaciones documentadas
466
+ - [ ] Decisiones HITL registradas con respuesta del usuario
467
+ - [ ] Tests pasan en el estado final del código
468
+ - [ ] No hay `console.log`, `print()` de debug ni pendientes sin ticket en el código nuevo