@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,363 @@
1
+ # Design Tokens — Tokens Completos y Configuración de Referencia
2
+
3
+ Definiciones completas de tokens primitivos, semánticos, temas, Style Dictionary e integraciones.
4
+
5
+ ---
6
+
7
+ ## Tokens Primitivos Completos
8
+
9
+ ```json
10
+ {
11
+ "color": {
12
+ "azul": {
13
+ "50": { "value": "#eff6ff" },
14
+ "100": { "value": "#dbeafe" },
15
+ "200": { "value": "#bfdbfe" },
16
+ "300": { "value": "#93c5fd" },
17
+ "400": { "value": "#60a5fa" },
18
+ "500": { "value": "#3b82f6" },
19
+ "600": { "value": "#2563eb" },
20
+ "700": { "value": "#1d4ed8" },
21
+ "800": { "value": "#1e40af" },
22
+ "900": { "value": "#1e3a8a" }
23
+ },
24
+ "gris": {
25
+ "50": { "value": "#f8fafc" },
26
+ "100": { "value": "#f1f5f9" },
27
+ "900": { "value": "#0f172a" }
28
+ }
29
+ },
30
+ "espacio": {
31
+ "1": { "value": "4px" },
32
+ "2": { "value": "8px" },
33
+ "3": { "value": "12px" },
34
+ "4": { "value": "16px" },
35
+ "6": { "value": "24px" },
36
+ "8": { "value": "32px" },
37
+ "12": { "value": "48px" },
38
+ "16": { "value": "64px" }
39
+ },
40
+ "fuente": {
41
+ "sans": { "value": "'Inter', system-ui, -apple-system, sans-serif" },
42
+ "mono": { "value": "'JetBrains Mono', 'Fira Code', monospace" }
43
+ },
44
+ "tamano": {
45
+ "xs": { "value": "12px" },
46
+ "sm": { "value": "14px" },
47
+ "base": { "value": "16px" },
48
+ "lg": { "value": "18px" },
49
+ "xl": { "value": "20px" },
50
+ "2xl": { "value": "24px" },
51
+ "3xl": { "value": "30px" },
52
+ "4xl": { "value": "36px" }
53
+ }
54
+ }
55
+ ```
56
+
57
+ ---
58
+
59
+ ## Tokens Semánticos Completos
60
+
61
+ ```json
62
+ {
63
+ "color": {
64
+ "fondo": {
65
+ "pagina": { "value": "{color.gris.50}" },
66
+ "superficie": { "value": "{color.blanco}" },
67
+ "elevado": { "value": "{color.blanco}" }
68
+ },
69
+ "texto": {
70
+ "primario": { "value": "{color.gris.900}" },
71
+ "secundario": { "value": "{color.gris.600}" },
72
+ "deshabilitado": { "value": "{color.gris.400}" },
73
+ "inverso": { "value": "{color.blanco}" }
74
+ },
75
+ "borde": {
76
+ "sutil": { "value": "{color.gris.200}" },
77
+ "normal": { "value": "{color.gris.300}" },
78
+ "fuerte": { "value": "{color.gris.500}" }
79
+ },
80
+ "marca": {
81
+ "primario": { "value": "{color.azul.600}" },
82
+ "primario-hover": { "value": "{color.azul.700}" },
83
+ "primario-texto": { "value": "{color.blanco}" }
84
+ },
85
+ "estado": {
86
+ "exito": { "value": "{color.verde.600}" },
87
+ "error": { "value": "{color.rojo.600}" },
88
+ "advertencia": { "value": "{color.ambar.500}" },
89
+ "info": { "value": "{color.azul.600}" }
90
+ }
91
+ },
92
+ "espacio": {
93
+ "componente": {
94
+ "padding-sm": { "value": "{espacio.2}" },
95
+ "padding-md": { "value": "{espacio.4}" },
96
+ "padding-lg": { "value": "{espacio.6}" },
97
+ "gap-sm": { "value": "{espacio.2}" },
98
+ "gap-md": { "value": "{espacio.4}" }
99
+ },
100
+ "layout": {
101
+ "contenedor-max": { "value": "1280px" },
102
+ "sidebar-ancho": { "value": "256px" },
103
+ "header-alto": { "value": "64px" }
104
+ }
105
+ },
106
+ "tipografia": {
107
+ "cuerpo": {
108
+ "familia": { "value": "{fuente.sans}" },
109
+ "tamano": { "value": "{tamano.base}" },
110
+ "altura-linea": { "value": "1.5" }
111
+ },
112
+ "encabezado": {
113
+ "familia": { "value": "{fuente.sans}" },
114
+ "peso": { "value": "700" }
115
+ }
116
+ },
117
+ "borde": {
118
+ "radio": {
119
+ "sm": { "value": "4px" },
120
+ "md": { "value": "8px" },
121
+ "lg": { "value": "12px" },
122
+ "xl": { "value": "16px" },
123
+ "full": { "value": "9999px" }
124
+ }
125
+ },
126
+ "sombra": {
127
+ "sm": { "value": "0 1px 2px 0 rgb(0 0 0 / 0.05)" },
128
+ "md": { "value": "0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)" },
129
+ "lg": { "value": "0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)" }
130
+ }
131
+ }
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Formato W3C Design Tokens
137
+
138
+ ```json
139
+ {
140
+ "$schema": "https://design-tokens.org/schema/draft-8",
141
+ "color": {
142
+ "$type": "color",
143
+ "marca": {
144
+ "primario": {
145
+ "$value": "#3b82f6",
146
+ "$description": "Color primario de marca, usar para CTAs principales",
147
+ "$extensions": {
148
+ "figma": { "collectionId": "VariableCollectionId:1:1" }
149
+ }
150
+ }
151
+ }
152
+ }
153
+ }
154
+ ```
155
+
156
+ ---
157
+
158
+ ## Temas: Light / Dark / Brand
159
+
160
+ ### Tema claro
161
+
162
+ ```json
163
+ {
164
+ "color": {
165
+ "fondo": {
166
+ "pagina": { "value": "#f8fafc" },
167
+ "superficie": { "value": "#ffffff" }
168
+ },
169
+ "texto": {
170
+ "primario": { "value": "#0f172a" },
171
+ "secundario": { "value": "#475569" }
172
+ }
173
+ }
174
+ }
175
+ ```
176
+
177
+ ### Tema oscuro
178
+
179
+ ```json
180
+ {
181
+ "color": {
182
+ "fondo": {
183
+ "pagina": { "value": "#0f172a" },
184
+ "superficie": { "value": "#1e293b" }
185
+ },
186
+ "texto": {
187
+ "primario": { "value": "#f1f5f9" },
188
+ "secundario": { "value": "#94a3b8" }
189
+ }
190
+ }
191
+ }
192
+ ```
193
+
194
+ ### CSS de temas
195
+
196
+ ```css
197
+ :root, [data-tema="claro"] {
198
+ --color-fondo-pagina: #f8fafc;
199
+ --color-texto-primario: #0f172a;
200
+ }
201
+ [data-tema="oscuro"] {
202
+ --color-fondo-pagina: #0f172a;
203
+ --color-texto-primario: #f1f5f9;
204
+ }
205
+ @media (prefers-color-scheme: dark) {
206
+ :root:not([data-tema]) {
207
+ --color-fondo-pagina: #0f172a;
208
+ --color-texto-primario: #f1f5f9;
209
+ }
210
+ }
211
+ ```
212
+
213
+ ### Multi-tenant
214
+
215
+ ```json
216
+ // tokens/marcas/empresa-a.json
217
+ { "color": { "marca": { "primario": { "value": "#6366f1" } } } }
218
+
219
+ // tokens/marcas/empresa-b.json
220
+ { "color": { "marca": { "primario": { "value": "#10b981" } } } }
221
+ ```
222
+
223
+ ---
224
+
225
+ ## Style Dictionary — Configuración Completa
226
+
227
+ ```javascript
228
+ // style-dictionary.config.js
229
+ import StyleDictionary from 'style-dictionary';
230
+
231
+ export default {
232
+ source: ['tokens/**/*.json'],
233
+ platforms: {
234
+ css: {
235
+ transformGroup: 'css',
236
+ prefix: '',
237
+ buildPath: 'dist/css/',
238
+ files: [{
239
+ destination: 'tokens.css',
240
+ format: 'css/variables',
241
+ options: { selector: ':root' },
242
+ }],
243
+ },
244
+ js: {
245
+ transformGroup: 'js',
246
+ buildPath: 'dist/js/',
247
+ files: [
248
+ { destination: 'tokens.js', format: 'javascript/es6' },
249
+ { destination: 'tokens.d.ts', format: 'typescript/es6-declarations' },
250
+ ],
251
+ },
252
+ android: {
253
+ transformGroup: 'android',
254
+ buildPath: 'dist/android/',
255
+ files: [{
256
+ destination: 'colors.xml',
257
+ format: 'android/colors',
258
+ filter: { type: 'color' },
259
+ }],
260
+ },
261
+ ios_swift: {
262
+ transformGroup: 'ios-swift',
263
+ buildPath: 'dist/ios/',
264
+ files: [{
265
+ destination: 'DesignTokens.swift',
266
+ format: 'ios-swift/class.swift',
267
+ }],
268
+ },
269
+ },
270
+ };
271
+ ```
272
+
273
+ ---
274
+
275
+ ## Integraciones con Frameworks
276
+
277
+ ### Tailwind CSS v4
278
+
279
+ ```css
280
+ @import "tailwindcss";
281
+ @import "./dist/css/tokens.css";
282
+
283
+ @theme {
284
+ --color-primario: var(--color-marca-primario);
285
+ --color-superficie: var(--color-fondo-superficie);
286
+ --font-sans: var(--fuente-sans);
287
+ --radius-md: var(--borde-radio-md);
288
+ }
289
+ ```
290
+
291
+ ### Angular Material
292
+
293
+ ```scss
294
+ @use '@angular/material' as mat;
295
+
296
+ $paleta-primaria: mat.define-palette((
297
+ 50: #eff6ff, 100: #dbeafe, 500: #3b82f6, 600: #2563eb, 700: #1d4ed8,
298
+ contrast: (500: white, 600: white, 700: white)
299
+ ));
300
+
301
+ $tema: mat.define-light-theme((
302
+ color: (primary: $paleta-primaria, accent: $paleta-acento),
303
+ typography: mat.define-typography-config($font-family: var(--fuente-sans)),
304
+ ));
305
+
306
+ @include mat.all-component-themes($tema);
307
+ ```
308
+
309
+ ### CSS-in-JS (Emotion/Styled Components)
310
+
311
+ ```typescript
312
+ export const tema = {
313
+ colores: {
314
+ marca: {
315
+ primario: 'var(--color-marca-primario)',
316
+ primarioHover: 'var(--color-marca-primario-hover)',
317
+ },
318
+ texto: {
319
+ primario: 'var(--color-texto-primario)',
320
+ secundario: 'var(--color-texto-secundario)',
321
+ },
322
+ },
323
+ espacio: { sm: 'var(--espacio-2)', md: 'var(--espacio-4)', lg: 'var(--espacio-6)' },
324
+ radio: { md: 'var(--borde-radio-md)', lg: 'var(--borde-radio-lg)' },
325
+ } as const;
326
+ ```
327
+
328
+ ---
329
+
330
+ ## Versionado — CHANGELOG de Tokens
331
+
332
+ ```markdown
333
+ ## [2.1.0] — 2024-03-20
334
+
335
+ ### Agregado
336
+ - `color.estado.advertencia-suave` para alertas inline
337
+ - `espacio.layout.contenedor-ancho-xl` para layouts anchos
338
+
339
+ ### Cambiado
340
+ - `color.marca.primario` de `#3b82f6` a `#2563eb` (mayor contraste WCAG AA)
341
+
342
+ ## [2.0.0] — 2024-02-01
343
+
344
+ ### BREAKING
345
+ - Renombrado `color.principal.*` -> `color.marca.*`
346
+ - Eliminado `espacio.legacy.*`
347
+ ```
348
+
349
+ ### Deprecated tokens
350
+
351
+ ```json
352
+ {
353
+ "color": {
354
+ "principal": {
355
+ "primario": {
356
+ "value": "{color.marca.primario}",
357
+ "$deprecated": true,
358
+ "$description": "Deprecated en v2.0. Usar color.marca.primario"
359
+ }
360
+ }
361
+ }
362
+ }
363
+ ```
@@ -0,0 +1,309 @@
1
+ ---
2
+ name: devsecops-pipeline-security
3
+ description: Integración de gates de seguridad en el pipeline CI/CD. Cubre SAST (CodeQL, Semgrep con reglas custom, output SARIF), DAST (OWASP ZAP baseline + autenticado), secret scanning (gitleaks pre-commit + CI), container scanning (Trivy para imágenes y SBOM), supply chain (dependency review, license checks), y diseño de quality gates en PR (bloquear por severidad, no por hallazgos totales). Consolida los 5 controles defensivos que deben existir en todo pipeline productivo. Cargar al diseñar CI/CD para un proyecto nuevo, al auditar seguridad del pipeline existente, o al reforzar una release con controles antes de producción.
4
+ version: "1.0.0"
5
+ herramientasPermitidas: [Read, Bash, Grep]
6
+ evolvable: true # default para skill estandar
7
+ nist_csf: [ID.RA-01, GV.SC-07, PR.PS-01, PR.PS-06, DE.CM-09, RS.MI-01]
8
+ nist_ai_rmf: [MAP-1.6]
9
+ attack_techniques: [T1195.002, T1190, T1552.001]
10
+ exclusiones:
11
+ - "No cargar para revisión manual de código buscando vulnerabilidades (OWASP Top 10 en un endpoint concreto) — para revisión dirigida cargar `checklist-seguridad` o el skill de revisión del lenguaje."
12
+ - "No cargar para hardening de runtime de aplicaciones (WAF, rate limiting, configuración TLS en load balancer) — este skill cubre gates pre-deploy, no runtime en producción. Para runtime ver skills de cloud-aws/azure-cloud/gcp-cloud."
13
+ - "No cargar para respuesta a incidentes o análisis forense post-breach — este skill es preventivo en el pipeline, no investigación. Ese dominio está fuera del scope de swl-ses."
14
+ - "No cargar para pentesting ofensivo o red teaming — el foco es defensa automatizada del pipeline, no evaluación adversaria activa con autorización formal."
15
+ ---
16
+
17
+ # DevSecOps — Gates de Seguridad en Pipeline CI/CD
18
+
19
+ Integración sistemática de controles de seguridad antes del despliegue. Cinco
20
+ gates que toda aplicación productiva debe tener, con el trade-off de que
21
+ implementarlos mal genera ruido y fatiga de alertas — y los equipos los
22
+ desactivan en lugar de arreglarlos.
23
+
24
+ ## Cuándo cargar
25
+
26
+ - Al diseñar el CI/CD para un proyecto nuevo (fase de scaffolding)
27
+ - Al auditar la seguridad del pipeline existente y encontrar gaps (ej: sin SAST, sin scanning de contenedores)
28
+ - Al preparar una release con requerimientos de compliance (SOC 2, ISO 27001, PCI-DSS exigen la mayoría de estos controles)
29
+ - Al configurar gates de PR que bloqueen merge por severidad de hallazgos
30
+ - Al incorporar un proyecto externo al sistema y validar que su pipeline cumple el estándar mínimo
31
+
32
+ ## Cuándo NO cargar
33
+
34
+ - La tarea es revisión manual de código para un endpoint específico: usar `checklist-seguridad` o el skill del lenguaje
35
+ - La tarea es hardening de runtime en producción (WAF, TLS en load balancer): usar skills de cloud
36
+ - La tarea es respuesta a incidentes o forensia: fuera del scope de swl-ses
37
+ - La tarea es pentesting ofensivo con autorización formal: fuera del scope (dominio red team)
38
+
39
+ ## Los 5 gates obligatorios
40
+
41
+ El pipeline productivo mínimo tiene estos 5 gates en el orden siguiente:
42
+
43
+ | # | Gate | Momento | Herramienta recomendada | Bloqueo |
44
+ |---|------|---------|-------------------------|---------|
45
+ | 1 | Secrets scanning | Pre-commit + CI | gitleaks | Sí — cualquier secret detectado |
46
+ | 2 | SAST | PR en CI | Semgrep + CodeQL | Condicional — solo CRITICAL/HIGH |
47
+ | 3 | Dependency audit | PR en CI | pip-audit / npm audit / osv-scanner | Condicional — CVE ≥ HIGH sin fix |
48
+ | 4 | Container scanning | Post-build | Trivy | Condicional — CRITICAL sin workaround |
49
+ | 5 | DAST (baseline) | Post-deploy a staging | OWASP ZAP | Condicional — new HIGH findings |
50
+
51
+ ## Gate 1 — Secret scanning
52
+
53
+ ### Herramienta base: gitleaks
54
+
55
+ Detección de credenciales hardcodeadas, API keys, tokens, claves privadas.
56
+
57
+ **Pre-commit hook** (ejecuta localmente antes del push):
58
+
59
+ ```bash
60
+ # .pre-commit-config.yaml
61
+ repos:
62
+ - repo: https://github.com/gitleaks/gitleaks
63
+ rev: v8.18.0
64
+ hooks:
65
+ - id: gitleaks
66
+ ```
67
+
68
+ **CI gate** (GitHub Actions):
69
+
70
+ ```yaml
71
+ - name: Secret scan (gitleaks)
72
+ uses: gitleaks/gitleaks-action@v2
73
+ env:
74
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
75
+ GITLEAKS_LICENSE: ${{ secrets.GITLEAKS_LICENSE }}
76
+ ```
77
+
78
+ **Configuración**: `.gitleaks.toml` con reglas custom del dominio (ej: detectar patrones de tokens internos que no están en el default de gitleaks).
79
+
80
+ **Decisión de bloqueo**: SÍ — cualquier secret detectado. Sin excepción. Si aparece un falso positivo, documentarlo en `.gitleaksignore` con justificación comentada.
81
+
82
+ ## Gate 2 — SAST (Static Application Security Testing)
83
+
84
+ ### Herramienta base: Semgrep + CodeQL (complementarios)
85
+
86
+ - **Semgrep**: rápido, reglas custom en YAML, cobertura amplia de lenguajes, comunidad activa con rule packs (r2c, OWASP)
87
+ - **CodeQL** (GitHub): análisis profundo, data flow taint tracking, mejor para C/C++/Java. Viene gratis con GitHub public repos.
88
+
89
+ **Workflow recomendado** (GitHub Actions):
90
+
91
+ ```yaml
92
+ jobs:
93
+ sast:
94
+ runs-on: ubuntu-latest
95
+ permissions:
96
+ security-events: write # para SARIF upload
97
+ steps:
98
+ - uses: actions/checkout@v4
99
+
100
+ - name: Semgrep
101
+ uses: semgrep/semgrep-action@v1
102
+ with:
103
+ config: >-
104
+ p/security-audit
105
+ p/owasp-top-ten
106
+ p/secrets
107
+ .semgrep/custom-rules/
108
+ generateSarif: true
109
+
110
+ - name: Upload SARIF
111
+ uses: github/codeql-action/upload-sarif@v3
112
+ with:
113
+ sarif_file: semgrep.sarif
114
+
115
+ - name: CodeQL init
116
+ uses: github/codeql-action/init@v3
117
+ - name: CodeQL analyze
118
+ uses: github/codeql-action/analyze@v3
119
+ ```
120
+
121
+ **Reglas custom**: mantener en `.semgrep/custom-rules/` con reglas específicas del dominio (ej: prohibir `eval()` en Node, prohibir `shell=True` en Python subprocess, detectar patrones de inyección propios).
122
+
123
+ **Decisión de bloqueo**: CRITICAL y HIGH → bloquear PR. MEDIUM y LOW → comentario en PR pero no bloquean. INFO → solo dashboard.
124
+
125
+ ## Gate 3 — Dependency audit (supply chain)
126
+
127
+ ### Herramientas por ecosistema
128
+
129
+ | Lenguaje | Herramienta | Comando |
130
+ |----------|-------------|---------|
131
+ | Python | pip-audit | `pip-audit --format json --output audit.json` |
132
+ | Node.js | npm audit / osv-scanner | `npm audit --audit-level=high --json` |
133
+ | Java | OWASP Dependency-Check | Maven/Gradle plugin |
134
+ | Go | govulncheck | `govulncheck ./...` |
135
+ | Rust | cargo-audit | `cargo audit --format json` |
136
+ | Cross-lang | osv-scanner (Google) | `osv-scanner --lockfile=X -r .` |
137
+
138
+ **Política**: dependencia con CVE HIGH/CRITICAL sin fix disponible → bloquear
139
+ merge hasta mitigación documentada; con fix disponible → autofix por Dependabot/Renovate.
140
+
141
+ **License compliance**: complementar con checker de licencias. Incompatibles
142
+ con el uso del proyecto (GPL en código cerrado) → bloquear.
143
+
144
+ **Decisión de bloqueo**: CVE HIGH/CRITICAL sin workaround documentado →
145
+ bloquear. Licencia incompatible → bloquear sin excepción.
146
+
147
+ ## Gate 4 — Container scanning
148
+
149
+ ### Herramienta base: Trivy
150
+
151
+ Escáner gratuito de contenedores con cobertura OS packages + dependencies +
152
+ IaC + secrets.
153
+
154
+ **Integración en build** (GitHub Actions):
155
+
156
+ ```yaml
157
+ - name: Build image
158
+ run: docker build -t app:$GITHUB_SHA .
159
+
160
+ - name: Trivy scan
161
+ uses: aquasecurity/trivy-action@master
162
+ with:
163
+ image-ref: app:${{ github.sha }}
164
+ format: sarif
165
+ output: trivy-results.sarif
166
+ severity: CRITICAL,HIGH
167
+ exit-code: 1 # falla el job si encuentra CRITICAL/HIGH
168
+
169
+ - name: Upload SARIF
170
+ uses: github/codeql-action/upload-sarif@v3
171
+ with:
172
+ sarif_file: trivy-results.sarif
173
+ ```
174
+
175
+ **SBOM generation**: Trivy también genera SBOM (SPDX o CycloneDX) útil para
176
+ compliance:
177
+
178
+ ```bash
179
+ trivy image --format cyclonedx --output sbom.json app:latest
180
+ ```
181
+
182
+ **Política**: CRITICAL sin workaround → bloquear push a registry. HIGH con
183
+ workaround documentado en issue → permitir con TODO.
184
+
185
+ ## Gate 5 — DAST en staging
186
+
187
+ ### Herramienta base: OWASP ZAP
188
+
189
+ Análisis dinámico sobre la aplicación desplegada en staging (no producción).
190
+
191
+ **Baseline scan** (pasivo, rápido):
192
+
193
+ ```yaml
194
+ - name: ZAP Baseline Scan
195
+ uses: zaproxy/action-baseline@v0.10.0
196
+ with:
197
+ target: 'https://staging.example.com'
198
+ fail_action: true
199
+ cmd_options: '-a -j -l WARN'
200
+ ```
201
+
202
+ **Full scan** (activo, lento — solo en release):
203
+
204
+ ```yaml
205
+ - name: ZAP Full Scan
206
+ uses: zaproxy/action-full-scan@v0.10.0
207
+ with:
208
+ target: 'https://staging.example.com'
209
+ cmd_options: '-z "-config api.key=${{ secrets.ZAP_API_KEY }}"'
210
+ ```
211
+
212
+ **Autenticación**: configurar ZAP con session token o flujo de auth para
213
+ scanear endpoints protegidos. Sin auth configurada, solo se cubre la capa
214
+ pública.
215
+
216
+ **Decisión de bloqueo**: NEW HIGH findings (no regresiones conocidas) →
217
+ bloquear promoción a producción. Los hallazgos conocidos deben tener
218
+ excepciones documentadas con fecha de revisión.
219
+
220
+ ## Diseño de quality gates en PR
221
+
222
+ ### Principio: bloquear por severidad, no por cantidad
223
+
224
+ Un PR con 50 hallazgos INFO y 0 HIGH es aceptable. Un PR con 1 CRITICAL es
225
+ bloqueante.
226
+
227
+ ### Thresholds recomendados
228
+
229
+ ```yaml
230
+ # .github/workflows/security-gates.yml
231
+ - name: Check severity
232
+ run: |
233
+ critical=$(jq '[.runs[].results[] | select(.level=="error" and .properties.severity=="critical")] | length' results.sarif)
234
+ if [ "$critical" -gt 0 ]; then
235
+ echo "FAIL: $critical critical findings"
236
+ exit 1
237
+ fi
238
+ ```
239
+
240
+ ### Fatigue avoidance
241
+
242
+ - Suppresiones deben tener fecha de revisión y justificación en commit message
243
+ - Dashboard de tendencias de hallazgos (no solo gates) para visibilidad a largo plazo
244
+ - Alertas solo en hallazgos NEW, no en los ya conocidos; los conocidos van a backlog
245
+ - Rotación periódica de reglas personalizadas para eliminar las que nunca disparan o siempre lo hacen en falso positivo
246
+
247
+ ## Integración incremental para un proyecto existente
248
+
249
+ Adoptar los 5 gates de golpe genera parálisis. Orden sugerido:
250
+
251
+ 1. **Semana 1** — Gate 1 (secrets): pre-commit + CI con gitleaks. Alto ROI, bajo esfuerzo.
252
+ 2. **Semana 2** — Gate 3 (deps): auto-audit del ecosistema del proyecto. Dependabot/Renovate.
253
+ 3. **Semana 3-4** — Gate 2 (SAST): Semgrep con reglas comunitarias; reglas custom más tarde.
254
+ 4. **Semana 5-6** — Gate 4 (containers): Trivy solo en imágenes de producción.
255
+ 5. **Semana 8+** — Gate 5 (DAST): ZAP baseline una vez que staging es estable.
256
+
257
+ Cada gate activado en modo "observación" (no bloquea) 2-3 semanas antes de
258
+ volverse bloqueante. Durante observación, limpiar falsos positivos.
259
+
260
+ ## Gotchas / Errores comunes no obvios
261
+
262
+ - **Activar todos los gates como bloqueantes desde día 1**: genera fatiga de alertas masiva, suppresiones indiscriminadas y eventualmente desactivación del pipeline. Causa: sin dataset de falsos positivos del dominio específico, las reglas genéricas generan ruido insoportable. Solución: cada gate arranca en modo observación (no bloquea); calibrar 2-3 semanas; luego volverse bloqueante. Si un gate siempre genera más de 20 hallazgos por PR, la señal está rota.
263
+ - **Suppresiones sin fecha de revisión**: agregar `# nosemgrep` o `.gitleaksignore` permanente sin revisarlo convierte el gate en teatro. Causa: las suppresiones acumuladas dejan de ser excepciones y se vuelven la regla. Solución: exigir comentario en toda suppresión con fecha de revisión (ej: `# nosemgrep: justificado 2026-04-20, revisar 2026-10-20`); script mensual que lista suppresiones vencidas.
264
+ - **DAST sin autenticación configurada**: scanear solo la capa pública no detecta vulnerabilidades en endpoints autenticados — donde está la mayoría de datos sensibles. Causa: configurar auth en ZAP requiere trabajo adicional y se salta. Solución: no declarar DAST "hecho" hasta que cubra endpoints autenticados; si el proyecto no tiene auth, documentarlo explícitamente como excepción.
265
+ - **Confiar en SARIF upload como sustituto de revisión humana**: SARIF al GitHub Security tab es útil para visibilidad pero no genera acción si nadie lo revisa. Causa: los dashboards aumentan la sensación de cobertura sin necesariamente mejorar la respuesta. Solución: complementar SARIF con alertas activas a un canal (Slack/email) para hallazgos NEW de severidad alta; no confundir "upload exitoso" con "hallazgo atendido".
266
+ - **Escanear contenedores solo en prod, no en dev**: los entornos de desarrollo tienen dependencias más permisivas y sirven de superficie de ataque si se despliegan accidentalmente. Causa: los equipos asumen que "solo prod importa" y pasan por alto staging/dev. Solución: aplicar Trivy a todas las imágenes que se suben a un registry — dev, staging, prod. El criterio de bloqueo puede ser más laxo en dev, pero el gate debe existir.
267
+ - **Dependabot/Renovate sin merge automático bajo condiciones**: los PRs de bump acumulan sin merge, y cuando se necesitan todos a la vez, romper cosas se vuelve inevitable. Causa: revisar cada bump manualmente es alta fricción; sin automatización los PRs se estancan. Solución: auto-merge bump de patch + tests pasando; bump de minor/major requiere revisión; bump de security → auto-merge si CVE HIGH/CRITICAL independiente del tipo.
268
+ - **Reglas custom de Semgrep sin tests**: escribir una regla custom sin fixtures positivas y negativas genera detecciones incorrectas. Causa: los patrones AST son sutiles; un regex mal calibrado atrapa casos irrelevantes. Solución: toda regla custom incluye archivo `rule-test.yml` con casos positivos (debe detectar) y negativos (no debe detectar); Semgrep tiene `semgrep --test` para validación automática.
269
+ - **Reportar DAST findings como críticos sin verificar explotabilidad**: ZAP marca "High" por patrones que pueden no ser explotables en el contexto real (ej: header missing que la app no usa). Causa: los scanners son conservadores por diseño. Solución: triage de findings HIGH con verificación de explotabilidad antes de bloquear; los hallazgos con "Information Disclosure" raramente justifican bloqueo de release sin contexto adicional.
270
+
271
+ ## Integración con skills SWL existentes
272
+
273
+ | Skill SWL | Relación con este skill |
274
+ |-----------|-------------------------|
275
+ | `checklist-seguridad` | Revisión manual; este skill automatiza parte del checklist en CI |
276
+ | `dependencias-auditoria` | Gate 3; este skill lo integra en pipeline con política de bloqueo |
277
+ | `iam-secretos` | Gate 1; este skill implementa detección automatizada de secrets |
278
+ | `ci-cd-pipelines` | Este skill complementa con capa de seguridad sobre el pipeline genérico |
279
+ | `contenedores-docker` | Gate 4; este skill agrega capa de scanning |
280
+ | `ai-runtime-security` | Skill hermano — runtime security (post-deploy) vs pipeline security (pre-deploy) |
281
+
282
+ ## Referencias
283
+
284
+ - NIST CSF 2.0 PR.PS (Platform Security): https://www.nist.gov/cyberframework
285
+ - OWASP DevSecOps Maturity Model: https://owasp.org/www-project-devsecops-maturity-model/
286
+ - Semgrep rule registry: https://semgrep.dev/explore
287
+ - CodeQL (GitHub): https://codeql.github.com/
288
+ - OWASP ZAP: https://www.zaproxy.org/
289
+ - Trivy (Aqua Security): https://aquasecurity.github.io/trivy/
290
+ - gitleaks: https://github.com/gitleaks/gitleaks
291
+ - Skills origen (Apache 2.0) en `temp/Anthropic-Cybersecurity-Skills-main/skills/`:
292
+ - `integrating-sast-into-github-actions-pipeline/`
293
+ - `implementing-semgrep-for-custom-sast-rules/`
294
+ - `integrating-dast-with-owasp-zap-in-pipeline/`
295
+ - `implementing-secret-scanning-with-gitleaks/`
296
+ - `scanning-containers-with-trivy-in-cicd/`
297
+
298
+ ## Checklist de verificación
299
+
300
+ - [ ] Gate 1 (secrets) activo en pre-commit + CI
301
+ - [ ] Gate 2 (SAST) con Semgrep + CodeQL, SARIF upload a GitHub Security
302
+ - [ ] Gate 3 (deps) con scanner del ecosistema + Dependabot/Renovate + license check
303
+ - [ ] Gate 4 (containers) con Trivy en todas las imágenes (dev/staging/prod)
304
+ - [ ] Gate 5 (DAST) con ZAP baseline en staging, autenticación configurada
305
+ - [ ] Quality gates bloquean por severidad (CRITICAL/HIGH), no por cantidad total
306
+ - [ ] Reglas custom de Semgrep con fixtures positivas y negativas verificables con `semgrep --test`
307
+ - [ ] Suppresiones con fecha de revisión y justificación
308
+ - [ ] Dashboard de tendencias (no solo gates) para visibilidad a largo plazo
309
+ - [ ] Alertas activas de hallazgos NEW (no solo dashboards pasivos)