@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,487 @@
1
+ # CI/CD Pipelines — Pipelines Completos de Referencia
2
+
3
+ Ejemplos completos de pipelines para GitHub Actions y GitLab CI.
4
+
5
+ ---
6
+
7
+ ## GitHub Actions — Pipeline Python/FastAPI Completo
8
+
9
+ ```yaml
10
+ # .github/workflows/ci.yml
11
+ name: CI Pipeline
12
+
13
+ on:
14
+ push:
15
+ branches: [main, develop]
16
+ pull_request:
17
+ branches: [main, develop]
18
+
19
+ concurrency:
20
+ group: ${{ github.workflow }}-${{ github.ref }}
21
+ cancel-in-progress: true
22
+
23
+ env:
24
+ PYTHON_VERSION: "3.12"
25
+ REGISTRY: ghcr.io
26
+ IMAGE_NAME: ${{ github.repository }}
27
+
28
+ jobs:
29
+ lint:
30
+ name: Lint y Type Check
31
+ runs-on: ubuntu-latest
32
+ steps:
33
+ - uses: actions/checkout@v4
34
+ - uses: actions/setup-python@v5
35
+ with:
36
+ python-version: ${{ env.PYTHON_VERSION }}
37
+ cache: pip
38
+ - name: Instalar herramientas de lint
39
+ run: pip install ruff mypy
40
+ - name: Ruff — linting
41
+ run: ruff check . --output-format=github
42
+ - name: Ruff — formato
43
+ run: ruff format --check .
44
+ - name: MyPy — type checking
45
+ run: mypy app/ --ignore-missing-imports
46
+
47
+ test:
48
+ name: Tests (${{ matrix.python-version }})
49
+ runs-on: ubuntu-latest
50
+ needs: lint
51
+ strategy:
52
+ matrix:
53
+ python-version: ["3.11", "3.12"]
54
+ fail-fast: false
55
+ services:
56
+ postgres:
57
+ image: postgres:15-alpine
58
+ env:
59
+ POSTGRES_DB: test_db
60
+ POSTGRES_USER: test
61
+ POSTGRES_PASSWORD: test
62
+ options: >-
63
+ --health-cmd pg_isready
64
+ --health-interval 10s
65
+ --health-timeout 5s
66
+ --health-retries 5
67
+ ports:
68
+ - 5432:5432
69
+ redis:
70
+ image: redis:7-alpine
71
+ options: >-
72
+ --health-cmd "redis-cli ping"
73
+ --health-interval 10s
74
+ --health-timeout 5s
75
+ --health-retries 5
76
+ ports:
77
+ - 6379:6379
78
+ env:
79
+ DATABASE_URL: postgresql+asyncpg://test:test@localhost:5432/test_db
80
+ REDIS_URL: redis://localhost:6379/0
81
+ SECRET_KEY: test-secret-key-no-usar-en-produccion
82
+ steps:
83
+ - uses: actions/checkout@v4
84
+ - uses: actions/setup-python@v5
85
+ with:
86
+ python-version: ${{ matrix.python-version }}
87
+ cache: pip
88
+ - name: Instalar dependencias
89
+ run: pip install -r requirements-dev.txt
90
+ - name: Ejecutar migraciones
91
+ run: alembic upgrade head
92
+ - name: Pytest con cobertura
93
+ run: |
94
+ pytest \
95
+ --cov=app \
96
+ --cov-report=xml \
97
+ --cov-report=term-missing \
98
+ --cov-fail-under=80 \
99
+ --junit-xml=test-results.xml \
100
+ -v
101
+ - name: Subir cobertura a Codecov
102
+ uses: codecov/codecov-action@v4
103
+ with:
104
+ file: ./coverage.xml
105
+ flags: python-${{ matrix.python-version }}
106
+ - name: Publicar resultados de tests
107
+ uses: dorny/test-reporter@v1
108
+ if: always()
109
+ with:
110
+ name: Tests Python ${{ matrix.python-version }}
111
+ path: test-results.xml
112
+ reporter: java-junit
113
+
114
+ security:
115
+ name: Security Scan
116
+ runs-on: ubuntu-latest
117
+ needs: lint
118
+ permissions:
119
+ security-events: write
120
+ steps:
121
+ - uses: actions/checkout@v4
122
+ - name: Bandit — vulnerabilidades en código Python
123
+ uses: PyCQA/bandit-action@v1
124
+ with:
125
+ targets: app/
126
+ level: medium
127
+ - name: pip-audit — vulnerabilidades en dependencias
128
+ run: |
129
+ pip install pip-audit
130
+ pip-audit -r requirements.txt --format=json > audit.json
131
+ cat audit.json
132
+ - name: Trivy — escaneo del repositorio
133
+ uses: aquasecurity/trivy-action@master
134
+ with:
135
+ scan-type: fs
136
+ format: sarif
137
+ output: trivy.sarif
138
+ severity: CRITICAL,HIGH
139
+ - name: Subir resultados de seguridad
140
+ uses: github/codeql-action/upload-sarif@v3
141
+ with:
142
+ sarif_file: trivy.sarif
143
+
144
+ build:
145
+ name: Build Docker Image
146
+ runs-on: ubuntu-latest
147
+ needs: [test, security]
148
+ if: github.ref == 'refs/heads/main' || github.ref == 'refs/heads/develop'
149
+ permissions:
150
+ contents: read
151
+ packages: write
152
+ outputs:
153
+ image-digest: ${{ steps.build.outputs.digest }}
154
+ image-tag: ${{ steps.meta.outputs.tags }}
155
+ steps:
156
+ - uses: actions/checkout@v4
157
+ - name: Docker meta
158
+ id: meta
159
+ uses: docker/metadata-action@v5
160
+ with:
161
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
162
+ tags: |
163
+ type=semver,pattern={{version}}
164
+ type=sha,prefix=sha-
165
+ type=raw,value=latest,enable=${{ github.ref == 'refs/heads/main' }}
166
+ - name: Set up Docker Buildx
167
+ uses: docker/setup-buildx-action@v3
168
+ - name: Login a GitHub Container Registry
169
+ uses: docker/login-action@v3
170
+ with:
171
+ registry: ${{ env.REGISTRY }}
172
+ username: ${{ github.actor }}
173
+ password: ${{ secrets.GITHUB_TOKEN }}
174
+ - name: Build y Push
175
+ id: build
176
+ uses: docker/build-push-action@v5
177
+ with:
178
+ context: .
179
+ push: true
180
+ tags: ${{ steps.meta.outputs.tags }}
181
+ labels: ${{ steps.meta.outputs.labels }}
182
+ cache-from: type=gha
183
+ cache-to: type=gha,mode=max
184
+ platforms: linux/amd64,linux/arm64
185
+
186
+ deploy-staging:
187
+ name: Deploy a Staging
188
+ runs-on: ubuntu-latest
189
+ needs: build
190
+ if: github.ref == 'refs/heads/develop'
191
+ environment:
192
+ name: staging
193
+ url: https://staging-api.empresa.com.mx
194
+ steps:
195
+ - name: Deploy a Kubernetes (staging)
196
+ uses: azure/k8s-deploy@v4
197
+ with:
198
+ namespace: staging
199
+ images: ${{ needs.build.outputs.image-tag }}
200
+ manifests: k8s/staging/
201
+ - name: Smoke tests en staging
202
+ run: |
203
+ sleep 30
204
+ curl -f https://staging-api.empresa.com.mx/health
205
+
206
+ deploy-production:
207
+ name: Deploy a Producción
208
+ runs-on: ubuntu-latest
209
+ needs: build
210
+ if: github.ref == 'refs/heads/main'
211
+ environment:
212
+ name: production
213
+ url: https://api.empresa.com.mx
214
+ steps:
215
+ - name: Deploy a Kubernetes (producción)
216
+ uses: azure/k8s-deploy@v4
217
+ with:
218
+ namespace: produccion
219
+ images: ${{ needs.build.outputs.image-tag }}
220
+ manifests: k8s/production/
221
+ strategy: canary
222
+ percentage: 20
223
+ ```
224
+
225
+ ---
226
+
227
+ ## GitLab CI — Equivalente
228
+
229
+ ```yaml
230
+ # .gitlab-ci.yml
231
+ stages:
232
+ - lint
233
+ - test
234
+ - security
235
+ - build
236
+ - deploy-staging
237
+ - deploy-production
238
+
239
+ variables:
240
+ PYTHON_VERSION: "3.12"
241
+ PIP_CACHE_DIR: "$CI_PROJECT_DIR/.cache/pip"
242
+ DOCKER_BUILDKIT: "1"
243
+
244
+ .python-cache: &python-cache
245
+ cache:
246
+ key:
247
+ files:
248
+ - requirements*.txt
249
+ paths:
250
+ - .cache/pip
251
+ - venv/
252
+ policy: pull-push
253
+
254
+ lint:ruff:
255
+ stage: lint
256
+ image: python:3.12-slim
257
+ <<: *python-cache
258
+ script:
259
+ - pip install ruff
260
+ - ruff check . --output-format=gitlab
261
+ - ruff format --check .
262
+ rules:
263
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event"
264
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
265
+
266
+ test:unit:
267
+ stage: test
268
+ image: python:3.12-slim
269
+ <<: *python-cache
270
+ services:
271
+ - name: postgres:15-alpine
272
+ alias: postgres
273
+ variables:
274
+ POSTGRES_DB: test_db
275
+ POSTGRES_USER: test
276
+ POSTGRES_PASSWORD: test
277
+ variables:
278
+ DATABASE_URL: "postgresql+asyncpg://test:test@postgres:5432/test_db"
279
+ script:
280
+ - pip install -r requirements-dev.txt
281
+ - pytest --cov=app --cov-report=xml --cov-fail-under=80
282
+ coverage: '/TOTAL.*\s+(\d+%)$/'
283
+ artifacts:
284
+ reports:
285
+ coverage_report:
286
+ coverage_format: cobertura
287
+ path: coverage.xml
288
+ junit: test-results.xml
289
+ expire_in: 1 week
290
+
291
+ build:image:
292
+ stage: build
293
+ image: docker:24
294
+ services:
295
+ - docker:24-dind
296
+ script:
297
+ - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
298
+ - |
299
+ docker build \
300
+ --cache-from $CI_REGISTRY_IMAGE:latest \
301
+ --build-arg BUILDKIT_INLINE_CACHE=1 \
302
+ --tag $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA \
303
+ --tag $CI_REGISTRY_IMAGE:latest \
304
+ .
305
+ - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA
306
+ - docker push $CI_REGISTRY_IMAGE:latest
307
+ rules:
308
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
309
+ ```
310
+
311
+ ---
312
+
313
+ ## Caching Efectivo
314
+
315
+ ```yaml
316
+ # GitHub Actions — caché de dependencias Python
317
+ - uses: actions/setup-python@v5
318
+ with:
319
+ python-version: "3.12"
320
+ cache: pip
321
+
322
+ # Caché manual para casos especiales
323
+ - uses: actions/cache@v4
324
+ with:
325
+ path: |
326
+ ~/.cache/pip
327
+ .venv
328
+ key: ${{ runner.os }}-pip-${{ hashFiles('**/requirements*.txt') }}
329
+ restore-keys: |
330
+ ${{ runner.os }}-pip-
331
+
332
+ # Docker layer cache con GitHub Actions
333
+ - uses: docker/build-push-action@v5
334
+ with:
335
+ cache-from: type=gha
336
+ cache-to: type=gha,mode=max
337
+ ```
338
+
339
+ ---
340
+
341
+ ## Matrix Builds — Múltiples Configuraciones
342
+
343
+ ```yaml
344
+ test:
345
+ strategy:
346
+ matrix:
347
+ os: [ubuntu-latest, macos-latest, windows-latest]
348
+ python: ["3.11", "3.12"]
349
+ exclude:
350
+ - os: windows-latest
351
+ python: "3.11"
352
+ include:
353
+ - os: ubuntu-latest
354
+ python: "3.12"
355
+ coverage: true
356
+ fail-fast: false
357
+ runs-on: ${{ matrix.os }}
358
+ steps:
359
+ - name: Cobertura (solo en ubuntu+3.12)
360
+ if: matrix.coverage == true
361
+ run: pytest --cov=app
362
+ ```
363
+
364
+ ---
365
+
366
+ ## Gestión de Secrets
367
+
368
+ ```yaml
369
+ # GitHub Actions — secrets del repositorio
370
+ - name: Deploy
371
+ env:
372
+ DATABASE_URL: ${{ secrets.DATABASE_URL }}
373
+ API_KEY: ${{ secrets.PROD_API_KEY }}
374
+ run: ./scripts/deploy.sh
375
+
376
+ # Environment-scoped secrets
377
+ jobs:
378
+ deploy:
379
+ environment: production
380
+ steps:
381
+ - run: echo ${{ secrets.DEPLOY_KEY }}
382
+ ```
383
+
384
+ ```bash
385
+ # Agregar secrets via CLI de GitHub
386
+ gh secret set DATABASE_URL --body "postgresql://..." --env production
387
+ gh secret set DATABASE_URL --body "postgresql://..." --env staging
388
+ ```
389
+
390
+ ---
391
+
392
+ ## Pipeline para Monorepo
393
+
394
+ ```yaml
395
+ name: Monorepo CI
396
+
397
+ on:
398
+ push:
399
+ branches: [main]
400
+ pull_request:
401
+
402
+ jobs:
403
+ changes:
404
+ runs-on: ubuntu-latest
405
+ outputs:
406
+ api: ${{ steps.filter.outputs.api }}
407
+ frontend: ${{ steps.filter.outputs.frontend }}
408
+ infra: ${{ steps.filter.outputs.infra }}
409
+ steps:
410
+ - uses: actions/checkout@v4
411
+ - uses: dorny/paths-filter@v3
412
+ id: filter
413
+ with:
414
+ filters: |
415
+ api:
416
+ - 'apps/api/**'
417
+ - 'packages/shared/**'
418
+ frontend:
419
+ - 'apps/frontend/**'
420
+ - 'packages/shared/**'
421
+ infra:
422
+ - 'infra/**'
423
+ - 'k8s/**'
424
+
425
+ test-api:
426
+ needs: changes
427
+ if: ${{ needs.changes.outputs.api == 'true' }}
428
+ uses: ./.github/workflows/api-test.yml
429
+
430
+ test-frontend:
431
+ needs: changes
432
+ if: ${{ needs.changes.outputs.frontend == 'true' }}
433
+ uses: ./.github/workflows/frontend-test.yml
434
+
435
+ deploy-infra:
436
+ needs: changes
437
+ if: ${{ needs.changes.outputs.infra == 'true' && github.ref == 'refs/heads/main' }}
438
+ uses: ./.github/workflows/infra-deploy.yml
439
+ ```
440
+
441
+ ---
442
+
443
+ ## Notificaciones y Reportes
444
+
445
+ ```yaml
446
+ - name: Notificar fallo en Slack
447
+ if: failure() && github.ref == 'refs/heads/main'
448
+ uses: slackapi/slack-github-action@v1.26.0
449
+ with:
450
+ channel-id: alertas-deploy
451
+ slack-message: |
452
+ *Pipeline fallido en main* :red_circle:
453
+ Repositorio: ${{ github.repository }}
454
+ Commit: ${{ github.sha }}
455
+ Autor: ${{ github.actor }}
456
+ <${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|Ver pipeline>
457
+ env:
458
+ SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
459
+ ```
460
+
461
+ ---
462
+
463
+ ## Uso en CI del Sistema SWL
464
+
465
+ ```yaml
466
+ # .github/workflows/validate-system.yml
467
+ name: Validar integridad del sistema SWL
468
+
469
+ on:
470
+ push:
471
+ branches: [main]
472
+ pull_request:
473
+
474
+ jobs:
475
+ validate:
476
+ runs-on: ubuntu-latest
477
+ steps:
478
+ - uses: actions/checkout@v4
479
+ - uses: actions/setup-node@v4
480
+ with: { node-version: '20' }
481
+ - run: npm ci
482
+ - run: npm run validate:catalog
483
+ - uses: actions/upload-artifact@v4
484
+ with:
485
+ name: catalogo-sistema
486
+ path: .claude/catalogo.json
487
+ ```
@@ -0,0 +1,142 @@
1
+ ---
2
+ name: cloud-aws
3
+ description: Mejores prácticas de AWS. EC2, S3, RDS, Lambda, ECS/EKS, CloudFront, IAM, VPC, SQS/SNS, DynamoDB. Well-Architected Framework, optimización de costos, patrones serverless vs containers.
4
+ version: "1.0.0"
5
+ herramientasPermitidas: [Read, Grep]
6
+ evolvable: true # default para skill estandar
7
+ exclusiones:
8
+ - "No cargar para despliegues en Azure o GCP — para Azure cargar `azure-cloud`, para GCP cargar `gcp-cloud`."
9
+ - "No cargar para configurar servicios AWS de machine learning (SageMaker, Bedrock, Rekognition) sin relación con arquitectura de aplicación — para ML en AWS usar la documentación del servicio directamente."
10
+ - "No cargar para auditoría de costos detallada o reservas de instancias Reserved/Savings Plans — para optimización de costos avanzada usar AWS Cost Explorer y Trusted Advisor directamente."
11
+ - "No cargar para configuración de AWS Organizations, Control Tower o multi-account strategy — para governance multi-cuenta consultar la documentación de AWS Organizations directamente."
12
+ ---
13
+ # AWS — Mejores Prácticas de Nube
14
+
15
+ ## Cuándo NO cargar
16
+
17
+ - La tarea es desplegar en Azure: cargar `azure-cloud`.
18
+ - La tarea es desplegar en GCP: cargar `gcp-cloud`.
19
+ - La tarea es configurar SageMaker, Bedrock o servicios de ML de AWS: usar la documentación del servicio directamente.
20
+ - La tarea es auditoría de costos avanzada o multi-account strategy: usar AWS Cost Explorer y Organizations directamente.
21
+
22
+
23
+ Este skill cubre decisiones de arquitectura, seguridad y costos en AWS para sistemas
24
+ de producción. Los ejemplos usan Python (boto3) y configuración de infraestructura.
25
+
26
+ ---
27
+
28
+ ## 1. Well-Architected Framework — 6 Pilares
29
+
30
+ | Pilar | Pregunta clave |
31
+ |-------|---------------|
32
+ | **Excelencia operativa** | Puedes operar y mejorar continuamente? |
33
+ | **Seguridad** | Proteges la información y los sistemas? |
34
+ | **Confiabilidad** | Recuperas de fallos automáticamente? |
35
+ | **Eficiencia de desempeño** | Usas recursos eficientemente? |
36
+ | **Optimización de costos** | Pagas solo por lo que usas? |
37
+ | **Sostenibilidad** | Minimizas impacto ambiental? |
38
+
39
+ ---
40
+
41
+ ## 2. IAM — Mínimo Privilegio Siempre
42
+
43
+ ```json
44
+ // BIEN: solo lo que necesita la función
45
+ {
46
+ "Version": "2012-10-17",
47
+ "Statement": [
48
+ {
49
+ "Sid": "LeerBucketNomina",
50
+ "Effect": "Allow",
51
+ "Action": ["s3:GetObject", "s3:ListBucket"],
52
+ "Resource": [
53
+ "arn:aws:s3:::empresa-nomina-prod",
54
+ "arn:aws:s3:::empresa-nomina-prod/*"
55
+ ]
56
+ }
57
+ ]
58
+ }
59
+ ```
60
+
61
+ NUNCA usar `"Action": "*"` ni `"Resource": "*"` en políticas IAM de producción.
62
+
63
+ ```python
64
+ # NUNCA hardcodear credenciales AWS
65
+ # BIEN: usar IAM roles (en EC2/ECS/Lambda automático)
66
+ cliente_s3 = boto3.client('s3', region_name='us-east-1')
67
+ ```
68
+
69
+ ---
70
+
71
+ ## 3. VPC — Red Segura
72
+
73
+ ```
74
+ VPC: 10.0.0.0/16
75
+ ├── Public Subnets (2 AZs) — ALB, NAT Gateway, Bastion
76
+ │ ├── 10.0.1.0/24 (us-east-1a)
77
+ │ └── 10.0.2.0/24 (us-east-1b)
78
+ ├── Private App Subnets (2 AZs) — ECS Tasks, EC2 App servers
79
+ │ ├── 10.0.11.0/24 (us-east-1a)
80
+ │ └── 10.0.12.0/24 (us-east-1b)
81
+ └── Private Data Subnets (2 AZs) — RDS, ElastiCache
82
+ ├── 10.0.21.0/24 (us-east-1a)
83
+ └── 10.0.22.0/24 (us-east-1b)
84
+
85
+ Reglas:
86
+ - Internet → ALB (80, 443) OK
87
+ - ALB → App Servers (8000) OK
88
+ - App Servers → RDS (5432) OK
89
+ - RDS → Internet NUNCA
90
+ ```
91
+
92
+ ---
93
+
94
+ ## Servicios Detallados
95
+
96
+ Para implementaciones completas de S3 (cifrado, lifecycle), RDS (configuración producción),
97
+ Lambda (handlers, partial batch), ECS Fargate (task definitions), SQS/SNS (mensajería),
98
+ CloudFront (CDN) y optimización de costos, ver
99
+ [recursos/servicios-aws-referencia.md](recursos/servicios-aws-referencia.md).
100
+
101
+ ---
102
+
103
+ ## Checklist de Arquitectura AWS
104
+
105
+ ### Seguridad
106
+ - [ ] Sin credenciales hardcodeadas — IAM roles siempre
107
+ - [ ] MFA activado en cuenta root y usuarios IAM admin
108
+ - [ ] CloudTrail habilitado en todas las regiones
109
+ - [ ] Config Rules para compliance
110
+ - [ ] GuardDuty habilitado para detección de amenazas
111
+
112
+ ### Confiabilidad
113
+ - [ ] Multi-AZ en RDS, ElastiCache, ALB
114
+ - [ ] Auto Scaling Groups con mínimo 2 instancias
115
+ - [ ] Health checks en ALB y ECS
116
+ - [ ] Backups automatizados con retención mínima 7 días
117
+ - [ ] Runbooks documentados para fallos comunes
118
+
119
+ ### Costos
120
+ - [ ] Budget alerts configuradas ($X USD/mes)
121
+ - [ ] Lifecycle policies en S3
122
+ - [ ] Snapshots de RDS/EBS con retención limitada
123
+ - [ ] Recursos de dev/staging apagados fuera de horario laboral
124
+ - [ ] Reserved instances para carga base predecible
125
+
126
+ ### Desempeño
127
+ - [ ] CloudFront para assets estáticos
128
+ - [ ] ElastiCache para queries frecuentes
129
+ - [ ] Connection pooling en aplicación
130
+ - [ ] Read replicas para reportes pesados
131
+
132
+ ---
133
+
134
+ ## Gotchas / Errores comunes no obvios
135
+
136
+ **Una política IAM con `"Effect": "Allow"` en todas las acciones S3 sobre el bucket pero sin el ARN del bucket con `/*` al final no permite operar sobre los objetos del bucket — solo sobre el bucket mismo**: la política `"Resource": "arn:aws:s3:::mi-bucket"` permite `ListBucket` pero no `GetObject`, `PutObject` ni `DeleteObject` porque estas operaciones actúan sobre objetos (`mi-bucket/*`), no sobre el bucket. Causa: en IAM, el recurso bucket y el recurso objeto son ARNs distintos; `s3:GetObject` requiere `arn:aws:s3:::mi-bucket/*`. Fix: para permisos completos sobre un bucket, siempre incluir ambos ARNs en el array `Resource`: `["arn:aws:s3:::mi-bucket", "arn:aws:s3:::mi-bucket/*"]`. `ListBucket` va al ARN del bucket; `GetObject`/`PutObject`/`DeleteObject` van al ARN de objetos.
137
+
138
+ **ECS Fargate con `awsvpc` network mode asigna una IP privada al task que cambia en cada deployment, y el Security Group que permite tráfico del task al RDS por IP no funciona después de un redeploy porque la IP cambió**: el Security Group del RDS tiene una inbound rule de `10.0.11.45/32` (la IP anterior del task) pero el task nuevo tiene `10.0.11.67/32`. La aplicación no puede conectarse a RDS hasta que alguien actualiza la regla manualmente. Causa: con `awsvpc`, cada task tiene su propia Elastic Network Interface con IP dinámica; confiar en IPs fijas para Security Groups es un anti-patrón. Fix: en el Security Group del RDS, usar el Security Group del ECS task como source en lugar de una IP: `aws ec2 authorize-security-group-ingress --group-id sg-rds --protocol tcp --port 5432 --source-group sg-ecs-tasks`. Los Security Groups como source se actualizan automáticamente cuando cambian las IPs.
139
+
140
+ **`boto3.client('s3').upload_file()` en Lambda con un archivo de más de 5GB falla con `EntityTooLarge` porque S3 requiere multipart upload para objetos mayores a 5GB pero `upload_file()` usa multipart automático solo para objetos mayores al `multipart_threshold` del `TransferConfig` (por defecto 8MB)**: la Lambda que procesa exportaciones grandes funciona para archivos de 500MB pero falla esporádicamente para archivos de 7GB. Causa: `upload_file()` usa multipart cuando el archivo supera `multipart_threshold`, pero hay un límite absoluto de S3 de 5GB para single-part PUT. Para archivos entre 8MB y 5GB, el comportamiento es correcto; para mayores de 5GB, `upload_file()` intenta single-part y S3 rechaza. Fix: siempre usar `config=TransferConfig(multipart_threshold=1024*25, multipart_chunksize=1024*25)` (25MB) para uploads desde Lambda con archivos de tamaño variable. El multipart threshold bajo garantiza multipart independientemente del tamaño.
141
+
142
+ **CloudWatch Logs Insights cobra por el volumen de datos escaneado en cada query, y las queries sin filtro de tiempo ejecutadas por el equipo en modo debug durante un incidente pueden generar costos de $50-200 USD en una sola sesión**: una query `fields @message | filter @message like 'ERROR'` sin `| limit 100` sobre un log group de 50GB de los últimos 90 días escanea los 50GB y puede costar $12.50 (a $0.005/GB escaneado en us-east-1). Varios ingenieros ejecutando queries similares durante un incidente de 2 horas puede acumular $100+. Causa: CloudWatch Insights cobra por GB escaneado, no por número de queries ni por resultado. Fix: siempre incluir filtro de tiempo en las queries de Insights: `filter @timestamp > datefloor(@timestamp, 1h)` o seleccionar el rango de tiempo en la UI antes de ejecutar. Para debugging frecuente, exportar logs a S3 + Athena que cobra $5/TB escaneado (40x más barato que Insights).