@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,321 @@
1
+ # AWS — Referencia Completa de Servicios
2
+
3
+ ## S3 — Almacenamiento Seguro
4
+
5
+ ```python
6
+ import boto3
7
+ from botocore.exceptions import ClientError
8
+
9
+ cliente_s3 = boto3.client('s3')
10
+
11
+ # OBLIGATORIO: cifrado en reposo + versionado + bloquear acceso público
12
+ def configurar_bucket_seguro(nombre_bucket: str) -> None:
13
+ s3 = boto3.client('s3')
14
+
15
+ # Bloquear acceso público (SIEMPRE para datos sensibles)
16
+ s3.put_public_access_block(
17
+ Bucket=nombre_bucket,
18
+ PublicAccessBlockConfiguration={
19
+ 'BlockPublicAcls': True,
20
+ 'IgnorePublicAcls': True,
21
+ 'BlockPublicPolicy': True,
22
+ 'RestrictPublicBuckets': True,
23
+ }
24
+ )
25
+
26
+ # Cifrado AES-256 o KMS
27
+ s3.put_bucket_encryption(
28
+ Bucket=nombre_bucket,
29
+ ServerSideEncryptionConfiguration={
30
+ 'Rules': [{'ApplyServerSideEncryptionByDefault': {
31
+ 'SSEAlgorithm': 'aws:kms',
32
+ 'KMSMasterKeyID': 'arn:aws:kms:...',
33
+ }}]
34
+ }
35
+ )
36
+
37
+ # Versionado (recuperación ante errores)
38
+ s3.put_bucket_versioning(
39
+ Bucket=nombre_bucket,
40
+ VersioningConfiguration={'Status': 'Enabled'}
41
+ )
42
+
43
+ # URLs prefirmadas para descarga sin exponer bucket público
44
+ def generar_url_descarga(bucket: str, clave: str, segundos: int = 3600) -> str:
45
+ return cliente_s3.generate_presigned_url(
46
+ 'get_object',
47
+ Params={'Bucket': bucket, 'Key': clave},
48
+ ExpiresIn=segundos,
49
+ )
50
+
51
+ # Ciclo de vida — bajar costos moviendo a clases más baratas
52
+ lifecycle_policy = {
53
+ 'Rules': [{
54
+ 'ID': 'ArchivarDocumentosViejos',
55
+ 'Status': 'Enabled',
56
+ 'Transitions': [
57
+ {'Days': 30, 'StorageClass': 'STANDARD_IA'},
58
+ {'Days': 90, 'StorageClass': 'GLACIER'},
59
+ {'Days': 365, 'StorageClass': 'DEEP_ARCHIVE'},
60
+ ],
61
+ 'Expiration': {'Days': 2555}, # 7 años
62
+ }]
63
+ }
64
+ ```
65
+
66
+ ---
67
+
68
+ ## RDS — Base de Datos en Producción
69
+
70
+ ```python
71
+ # Configuración recomendada para PostgreSQL en RDS
72
+ rds_config = {
73
+ "DBInstanceClass": "db.t3.medium",
74
+ "Engine": "postgres",
75
+ "EngineVersion": "15.4",
76
+ "MultiAZ": True, # OBLIGATORIO en producción
77
+ "StorageEncrypted": True, # OBLIGATORIO
78
+ "BackupRetentionPeriod": 7,
79
+ "EnablePerformanceInsights": True,
80
+ "PerformanceInsightsRetentionPeriod": 7,
81
+ "MonitoringInterval": 60,
82
+ "DeletionProtection": True,
83
+ "StorageType": "gp3",
84
+ "Iops": 3000,
85
+ }
86
+
87
+ # Connection pool recomendado para Python
88
+ DATABASE_URL = (
89
+ f"postgresql+asyncpg://{usuario}:{password}@{host}:{puerto}/{db}"
90
+ "?ssl=require"
91
+ )
92
+
93
+ # Pool sizing: (núcleos_cpu * 2) + disco_efectivo
94
+ engine = create_async_engine(
95
+ DATABASE_URL,
96
+ pool_size=5,
97
+ max_overflow=10,
98
+ pool_pre_ping=True,
99
+ pool_recycle=3600,
100
+ )
101
+ ```
102
+
103
+ ---
104
+
105
+ ## Lambda — Funciones Serverless
106
+
107
+ ```python
108
+ import json
109
+ import logging
110
+ import os
111
+ from typing import Any
112
+
113
+ logger = logging.getLogger()
114
+ logger.setLevel(logging.INFO)
115
+
116
+ # Inicializar clientes FUERA del handler (reutilización en warm start)
117
+ import boto3
118
+ sqs = boto3.client('sqs')
119
+ s3 = boto3.client('s3')
120
+
121
+ def handler(event: dict, context: Any) -> dict:
122
+ """Lambda handler para procesamiento de eventos SQS."""
123
+ logger.info("Evento recibido: %s registros", len(event.get('Records', [])))
124
+
125
+ errores = []
126
+ for record in event.get('Records', []):
127
+ try:
128
+ body = json.loads(record['body'])
129
+ procesar_registro(body)
130
+ except Exception as e:
131
+ logger.error("Error en record %s: %s", record['messageId'], e)
132
+ errores.append({'itemIdentifier': record['messageId']})
133
+
134
+ # Partial batch response — solo reintentar los que fallaron
135
+ return {'batchItemFailures': errores}
136
+
137
+ # Configuración recomendada
138
+ lambda_config = {
139
+ "timeout": 30,
140
+ "memory_size": 512,
141
+ "reserved_concurrency": 10,
142
+ "environment": {
143
+ "QUEUE_URL": "${ssm:/prod/cola-procesamiento}",
144
+ "LOG_LEVEL": "INFO",
145
+ },
146
+ "layers": ["arn:aws:lambda:us-east-1:...:layer:deps:5"],
147
+ }
148
+ ```
149
+
150
+ ---
151
+
152
+ ## ECS Fargate — Containers Administrados
153
+
154
+ ```yaml
155
+ # task-definition.json
156
+ {
157
+ "family": "api-nomina",
158
+ "networkMode": "awsvpc",
159
+ "requiresCompatibilities": ["FARGATE"],
160
+ "cpu": "512",
161
+ "memory": "1024",
162
+ "executionRoleArn": "arn:aws:iam::...:role/ecsTaskExecutionRole",
163
+ "taskRoleArn": "arn:aws:iam::...:role/ecsTaskRole",
164
+ "containerDefinitions": [{
165
+ "name": "api",
166
+ "image": "123456789.dkr.ecr.us-east-1.amazonaws.com/api-nomina:latest",
167
+ "portMappings": [{"containerPort": 8000, "protocol": "tcp"}],
168
+ "environment": [],
169
+ "secrets": [
170
+ {
171
+ "name": "DATABASE_URL",
172
+ "valueFrom": "arn:aws:secretsmanager:...:secret:prod/db-url"
173
+ }
174
+ ],
175
+ "logConfiguration": {
176
+ "logDriver": "awslogs",
177
+ "options": {
178
+ "awslogs-group": "/ecs/api-nomina",
179
+ "awslogs-region": "us-east-1",
180
+ "awslogs-stream-prefix": "ecs"
181
+ }
182
+ },
183
+ "healthCheck": {
184
+ "command": ["CMD-SHELL", "curl -f http://localhost:8000/health || exit 1"],
185
+ "interval": 30,
186
+ "timeout": 5,
187
+ "retries": 3,
188
+ "startPeriod": 60
189
+ }
190
+ }]
191
+ }
192
+ ```
193
+
194
+ ---
195
+
196
+ ## SQS/SNS — Mensajería Desacoplada
197
+
198
+ ```python
199
+ import boto3
200
+ import json
201
+ from typing import Any
202
+
203
+ sqs = boto3.client('sqs', region_name='us-east-1')
204
+ sns = boto3.client('sns', region_name='us-east-1')
205
+
206
+ QUEUE_URL = os.environ['QUEUE_URL']
207
+
208
+ def enviar_mensaje(payload: dict, grupo_id: str | None = None) -> str:
209
+ """Enviar mensaje a SQS. grupo_id para FIFO queues."""
210
+ kwargs: dict[str, Any] = {
211
+ 'QueueUrl': QUEUE_URL,
212
+ 'MessageBody': json.dumps(payload, ensure_ascii=False),
213
+ 'MessageAttributes': {
214
+ 'ContentType': {
215
+ 'StringValue': 'application/json',
216
+ 'DataType': 'String',
217
+ }
218
+ },
219
+ }
220
+ if grupo_id:
221
+ import uuid
222
+ kwargs['MessageGroupId'] = grupo_id
223
+ kwargs['MessageDeduplicationId'] = str(uuid.uuid4())
224
+
225
+ respuesta = sqs.send_message(**kwargs)
226
+ return respuesta['MessageId']
227
+
228
+ def procesar_mensajes(max_mensajes: int = 10) -> None:
229
+ """Polling de mensajes con visibilidad extendida."""
230
+ mensajes = sqs.receive_message(
231
+ QueueUrl=QUEUE_URL,
232
+ MaxNumberOfMessages=max_mensajes,
233
+ WaitTimeSeconds=20,
234
+ VisibilityTimeout=60,
235
+ AttributeNames=['All'],
236
+ ).get('Messages', [])
237
+
238
+ for msg in mensajes:
239
+ try:
240
+ body = json.loads(msg['Body'])
241
+ procesar(body)
242
+ sqs.delete_message(
243
+ QueueUrl=QUEUE_URL,
244
+ ReceiptHandle=msg['ReceiptHandle'],
245
+ )
246
+ except Exception as e:
247
+ logger.error("Error procesando mensaje %s: %s", msg['MessageId'], e)
248
+
249
+ # Dead Letter Queue — SIEMPRE configurar para auditoría
250
+ dlq_config = {
251
+ 'deadLetterTargetArn': 'arn:aws:sqs:...:cola-nomina-dlq',
252
+ 'maxReceiveCount': '3',
253
+ }
254
+ ```
255
+
256
+ ---
257
+
258
+ ## CloudFront — CDN y Caché
259
+
260
+ ```python
261
+ # Para frontend SPA en S3 + CloudFront
262
+ distribution_config = {
263
+ "Origins": [{
264
+ "DomainName": "mi-bucket.s3.amazonaws.com",
265
+ "S3OriginConfig": {"OriginAccessIdentity": "origin-access-identity/cloudfront/..."},
266
+ }],
267
+ "DefaultCacheBehavior": {
268
+ "ViewerProtocolPolicy": "redirect-to-https",
269
+ "CachePolicyId": "...",
270
+ "ResponseHeadersPolicyId": "...",
271
+ },
272
+ "CustomErrorResponses": [
273
+ {"ErrorCode": 404, "ResponseCode": 200, "ResponsePagePath": "/index.html"},
274
+ {"ErrorCode": 403, "ResponseCode": 200, "ResponsePagePath": "/index.html"},
275
+ ],
276
+ "HttpVersion": "http2and3",
277
+ "PriceClass": "PriceClass_100",
278
+ }
279
+ ```
280
+
281
+ ---
282
+
283
+ ## Optimización de Costos
284
+
285
+ ### Estrategias principales
286
+
287
+ | Servicio | Optimización | Ahorro estimado |
288
+ |----------|-------------|-----------------|
289
+ | EC2/ECS | Spot instances para workers | 60-90% |
290
+ | EC2 | Reserved instances (1-3 años) | 30-60% |
291
+ | RDS | Stop en entornos de dev/staging | 60-70% |
292
+ | S3 | Lifecycle policies | 40-80% en archivos viejos |
293
+ | Lambda | Ajustar memoria (benchmark) | 20-50% |
294
+ | CloudFront | Comprimir respuestas | Reduce transferencia |
295
+ | Data Transfer | Mantener tráfico en misma AZ/región | Evita cargos |
296
+
297
+ ```python
298
+ # AWS Cost Anomaly Detection — alertas automáticas
299
+ import boto3
300
+
301
+ ce = boto3.client('ce', region_name='us-east-1')
302
+
303
+ def crear_monitor_costos(email: str) -> None:
304
+ monitor = ce.create_anomaly_monitor(
305
+ AnomalyMonitor={
306
+ 'MonitorName': 'MonitorGeneral',
307
+ 'MonitorType': 'DIMENSIONAL',
308
+ 'MonitorDimension': 'SERVICE',
309
+ }
310
+ )
311
+
312
+ ce.create_anomaly_subscription(
313
+ AnomalySubscription={
314
+ 'MonitorArnList': [monitor['MonitorArn']],
315
+ 'Subscribers': [{'Address': email, 'Type': 'EMAIL'}],
316
+ 'Threshold': 20.0,
317
+ 'Frequency': 'DAILY',
318
+ 'SubscriptionName': 'AlertasCostoDiario',
319
+ }
320
+ )
321
+ ```
@@ -0,0 +1,247 @@
1
+ ---
2
+ name: compactacion-contexto
3
+ description: Anti-context-rot. Detectar cuándo compactar el contexto, guardar estado antes de compactar, técnicas de resumen progresivo y handoff limpio entre contextos. Recalibrado para el tokenizer de Opus 4.7 (+15-30% tokens vs 4.6).
4
+ version: "1.1.0"
5
+ herramientasPermitidas: [Read]
6
+ exclusiones:
7
+ - "No cargar si el contexto está por debajo del 50% y no hay señales cualitativas de degradación — compactar sin necesidad solo interrumpe el flujo."
8
+ - "No cargar para compactar archivos grandes de código fuente; los archivos se leen bajo demanda con Read, no se mantienen en contexto activo."
9
+ - "No cargar en medio de una tarea atómica que aún no terminó — la compactación debe ocurrir en puntos de completitud, no a mitad de una implementación."
10
+ - "No cargar para gestionar el presupuesto del context-builder entre sesiones; para eso usar `context-builder`."
11
+ evolvable: true # default para skill estandar
12
+ ---
13
+ # Compactación de Contexto
14
+
15
+ ## El problema: context-rot
16
+
17
+ Un contexto largo y sin estructura se degrada con el tiempo:
18
+ - Las instrucciones tempranas quedan enterradas y se olvidan.
19
+ - El modelo pierde el hilo de qué se hizo y qué falta.
20
+ - Las respuestas se vuelven repetitivas o contradictorias.
21
+ - El rendimiento cae porque el contexto útil se diluye en tokens de ruido.
22
+
23
+ **Context-rot** es el fenómeno donde un contexto largo produce peores resultados que
24
+ uno compacto y fresco con el estado correcto cargado.
25
+
26
+ ---
27
+
28
+ ## Señales de que es hora de compactar
29
+
30
+ ### Señales cuantitativas
31
+ - La ventana de contexto está al **50% o más** de su límite.
32
+ (Umbral bajado desde 60% por el tokenizer de Opus 4.7, que produce 1.0–1.35×
33
+ más tokens para el mismo contenido que Opus 4.6. El contexto útil se llena
34
+ antes aunque la conversación tenga el mismo tamaño aparente.)
35
+ - La conversación lleva más de **30 turnos** sobre el mismo proyecto.
36
+ (Bajado desde 40 por la misma razón — el volumen efectivo por turno es mayor.)
37
+ - Se han cargado más de 5 archivos grandes sin eliminar contexto anterior.
38
+
39
+ ### Señales cualitativas
40
+ - El agente empieza a repetir preguntas ya respondidas.
41
+ - El agente olvida decisiones tomadas hace 10+ turnos.
42
+ - Las respuestas son más genéricas y menos específicas al proyecto.
43
+ - El agente contradice algo que él mismo propuso anteriormente.
44
+ - La latencia de respuesta aumenta notablemente.
45
+
46
+ ---
47
+
48
+ ## Protocolo: guardar estado ANTES de compactar
49
+
50
+ Antes de iniciar cualquier compactación, el agente DEBE persistir el estado en archivos.
51
+ El estado en la memoria del contexto desaparece; el estado en disco persiste.
52
+
53
+ ### Archivo ESTADO.md — estado de ejecución
54
+
55
+ ```markdown
56
+ # ESTADO.md — Estado del proyecto al 2026-03-25T14:32:00
57
+
58
+ ## Fase actual
59
+ - Fase: 3 — Implementación de módulo de reportes
60
+ - Sprint: 2 de 3
61
+ - Última tarea completada: Endpoint GET /reportes/{id}
62
+ - Próxima tarea: Endpoint POST /reportes (slice 3.2)
63
+
64
+ ## Decisiones arquitectónicas tomadas
65
+ - Se usa PostgreSQL con JSONB para metadatos de reportes (no MongoDB).
66
+ - Autenticación via JWT con refresh tokens, no sesiones.
67
+ - El frontend es Angular standalone, sin NgModules.
68
+ - Paginación por cursor, no por offset.
69
+
70
+ ## Archivos modificados en esta sesión
71
+ - backend/app/routers/reportes.py (creado)
72
+ - backend/app/schemas/reporte.py (creado)
73
+ - backend/app/models/reporte.py (modificado: campo metadata JSONB)
74
+ - frontend/src/app/reportes/reportes.component.ts (creado)
75
+
76
+ ## Problemas conocidos / deuda técnica
77
+ - El endpoint DELETE /reportes/{id} falta validación de permisos (ticket #47)
78
+ - La migración 003_reportes.py necesita revisión manual antes de producción
79
+
80
+ ## Tests en estado rojo
81
+ - test_reporte_exportar_pdf → falta dependencia wkhtmltopdf en CI
82
+
83
+ ## Contexto del negocio relevante
84
+ - Los reportes son propiedad del usuario que los crea (no del admin).
85
+ - Los reportes tienen un TTL de 30 días, luego se archivan.
86
+ ```
87
+
88
+ ### Archivo DECISIONS.md — registro de decisiones
89
+
90
+ ```markdown
91
+ # DECISIONS.md
92
+
93
+ ## 2026-03-25 — Paginación por cursor
94
+ **Contexto**: El endpoint GET /reportes necesitaba paginación.
95
+ **Opciones evaluadas**: offset/limit, cursor, keyset.
96
+ **Decisión**: Cursor basado en (created_at, id) para estabilidad con datos en tiempo real.
97
+ **Consecuencia**: Los clientes no pueden saltar a página N directamente.
98
+
99
+ ## 2026-03-24 — JSONB para metadatos
100
+ **Contexto**: Los reportes tienen atributos variables por tipo.
101
+ **Decisión**: Un campo `metadata JSONB` en lugar de tabla EAV.
102
+ **Consecuencia**: Queries de metadatos requieren índices GIN.
103
+ ```
104
+
105
+ ---
106
+
107
+ ## Técnicas de resumen progresivo
108
+
109
+ ### Técnica 1: Resumen en capas
110
+
111
+ No resumir todo en un solo párrafo plano. Usar capas de detalle:
112
+
113
+ ```
114
+ Nivel 0 (1 línea): "Construyendo API REST de reportes con FastAPI + PostgreSQL."
115
+ Nivel 1 (5 líneas): qué fases hay, en cuál estamos, cuál es el siguiente paso.
116
+ Nivel 2 (20 líneas): decisiones clave, archivos importantes, problemas abiertos.
117
+ Nivel 3 (archivo completo): ESTADO.md detallado.
118
+ ```
119
+
120
+ Cargar el nivel de detalle apropiado según la tarea a realizar.
121
+
122
+ ### Técnica 2: Resumen por dominios
123
+
124
+ Separar el contexto en dominios independientes:
125
+
126
+ ```markdown
127
+ ## Dominio: Backend API
128
+ - Rutas implementadas: GET/POST/DELETE /reportes
129
+ - Pendiente: PUT /reportes/{id}, webhooks
130
+
131
+ ## Dominio: Frontend Angular
132
+ - Componentes: ReportesListComponent, ReporteDetalleComponent
133
+ - Pendiente: ReporteCrearComponent, filtros de búsqueda
134
+
135
+ ## Dominio: Base de datos
136
+ - Migraciones aplicadas: 001, 002, 003
137
+ - Pendiente: índice GIN en metadata (pendiente de medir impacto)
138
+ ```
139
+
140
+ ### Técnica 3: El "snapshot de trabajo"
141
+
142
+ Antes de compactar, crear un mensaje de handoff en lenguaje natural que un nuevo
143
+ contexto pueda leer y continuar sin perder información:
144
+
145
+ ```
146
+ Proyecto: Sistema de reportes SIGAF
147
+ Estoy implementando el módulo de reportes. Completé los endpoints de lectura
148
+ (GET /reportes y GET /reportes/{id}) con paginación por cursor y RBAC.
149
+
150
+ El siguiente paso ES implementar POST /reportes. El schema ReporteCreate ya está
151
+ en backend/app/schemas/reporte.py. El modelo ORM está en backend/app/models/reporte.py.
152
+ El servicio parcial está en backend/app/services/reporte_service.py (falta el método crear).
153
+
154
+ Importante: los reportes deben asociarse al usuario del JWT, nunca confiar en el
155
+ body del request para el owner_id.
156
+ ```
157
+
158
+ ---
159
+
160
+ ## Protocolo de handoff entre contextos
161
+
162
+ ### El contexto saliente (antes de compactar)
163
+
164
+ 1. Escribir ESTADO.md actualizado con toda la información relevante.
165
+ 2. Hacer commit de todos los cambios pendientes.
166
+ 3. Anotar el hash del último commit en ESTADO.md.
167
+ 4. Escribir el "snapshot de trabajo" como primer mensaje del nuevo contexto.
168
+
169
+ ### El contexto entrante (después de compactar)
170
+
171
+ Protocolo de arranque:
172
+
173
+ ```
174
+ 1. Leer ESTADO.md para entender el estado actual.
175
+ 2. Leer DECISIONS.md para entender las decisiones ya tomadas.
176
+ 3. Revisar los últimos 3 commits para entender qué se hizo recientemente.
177
+ 4. Hacer git status para ver si hay cambios sin commitear.
178
+ 5. Leer ÚNICAMENTE los archivos relevantes para la tarea actual.
179
+ ```
180
+
181
+ Nunca cargar todo el codebase en el nuevo contexto. Cargar solo lo necesario para
182
+ la tarea inmediata.
183
+
184
+ ---
185
+
186
+ ## Estrategias de compactación activa
187
+
188
+ ### Compactación por completitud de tarea
189
+
190
+ Compactar al terminar cada tarea atómica. Una tarea completada = contexto que ya
191
+ no necesita vivir en memoria activa.
192
+
193
+ ### Compactación por fase del proyecto
194
+
195
+ Al pasar de una fase a otra (ej. del diseño a la implementación), compactar toda
196
+ la discusión de diseño y cargar solo las decisiones finales.
197
+
198
+ ### Compactación de archivos grandes
199
+
200
+ Si se leyó un archivo de 500 líneas para extraer 3 funciones relevantes, compactar
201
+ el archivo completo y mantener solo los 3 fragmentos extraídos con sus firmas.
202
+
203
+ ---
204
+
205
+ ## Verificación post-compactación
206
+
207
+ Toda compactación DEBE verificar que no destruyó información crítica. Antes de
208
+ descartar el contexto original, validar estas invariantes:
209
+
210
+ | Invariante | Verificación | Tolerancia |
211
+ |------------|-------------|------------|
212
+ | **Headings** | Contar `#` en original y compactado — deben coincidir exactamente | 0% — cada heading perdido es una sección desaparecida |
213
+ | **Bloques de código** | Contar delimitadores ``` — deben coincidir en pares | 0% — código perdido es irrecuperable |
214
+ | **Rutas de archivo** | Extraer paths (`src/`, `app/`, extensiones `.py`, `.ts`, etc.) — comparar sets | 0% — una ruta perdida rompe la navegabilidad |
215
+ | **URLs** | Extraer `http://` y `https://` — comparar sets | 0% — referencias externas irrecuperables |
216
+ | **Items de lista** | Contar bullets (`-`, `*`, numerados) en secciones críticas | ±15% — la compactación puede fusionar items redundantes |
217
+ | **Decisiones/ADRs** | Verificar que toda decisión del original aparece en el compactado | 0% — decisiones perdidas se re-debaten |
218
+
219
+ **Protocolo de validación**:
220
+
221
+ 1. Extraer invariantes del contexto original ANTES de compactar
222
+ 2. Compactar el contexto
223
+ 3. Extraer las mismas invariantes del resultado
224
+ 4. Comparar — si alguna invariante de tolerancia 0% falla, la compactación se rechaza
225
+ 5. Si los items de lista exceden ±15%, revisar manualmente qué se fusionó
226
+
227
+ Si la compactación falla la validación: no descartar el original. Recompactar con
228
+ instrucción más conservadora o compactar por secciones individuales.
229
+
230
+ ---
231
+
232
+ ## Gotchas / Errores comunes no obvios
233
+
234
+ - **Compactar sin escribir ESTADO.md primero**: el agente ejecuta `/compact` con la información del estado solo en el contexto de la conversación. Tras la compactación, el estado desaparece y la sesión siguiente parte de cero. Causa: se confundió la compactación del contexto con el guardado de estado. Solución: escribir ESTADO.md (y DECISIONS.md si corresponde) en disco ANTES de compactar — el protocolo lo establece en el primer paso.
235
+ - **Invariante de headings violada silenciosamente**: el contexto compactado pierde dos secciones `##` del original porque el modelo resumió párrafos en lugar de preservar la estructura. Causa: no se ejecutó la validación post-compactación. Solución: antes de descartar el contexto original, contar `#` en ambos con regex y comparar — tolerancia 0% para headings perdidos.
236
+ - **Compactar todo el codebase al inicio de sesión**: el agente lee 20 archivos en el nuevo contexto "para orientarse" y los compacta de inmediato. Causa: se interpretó "cargar contexto fresco" como cargar y compactar todo. Solución: en el contexto entrante, cargar ESTADO.md + DECISIONS.md + 3 últimos commits, y solo los archivos de la tarea inmediata — no más.
237
+ - **Umbral de 70% sin recalibrar para Opus 4.7**: en proyectos que migraron de Opus 4.6 a 4.7, el umbral de compactación sigue configurado al 70% del contexto cuando debe ser 50%. Causa: el tokenizer de 4.7 produce 1.0-1.35× más tokens y el umbral efectivo llega antes. Solución: al actualizar modelo, ajustar el umbral de compactación a 50% como documenta este skill en su sección de señales cuantitativas.
238
+
239
+ ## Anti-patrones a evitar
240
+
241
+ - **Compactar sin guardar estado**: El estado debe estar en disco ANTES de compactar.
242
+ - **Cargar todo el codebase al nuevo contexto**: Cargar solo lo necesario para la tarea.
243
+ - **Hacer el handoff en lenguaje ambiguo**: El snapshot debe ser preciso y accionable.
244
+ - **No registrar decisiones tomadas**: Las decisiones no escritas se pierden al compactar.
245
+ - **Compactar en medio de una tarea**: Terminar la unidad atómica de trabajo primero.
246
+ - **Depender de la memoria del contexto para información crítica**: Todo lo crítico va a disco.
247
+ - **Compactar sin verificar invariantes**: Validar headings, código, rutas y URLs post-compactación.