@saulwade/swl-ses 2.6.0 → 2.8.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 (435) hide show
  1. package/CLAUDE.md +209 -197
  2. package/README.md +647 -600
  3. package/agentes/accesibilidad-wcag-swl.md +690 -690
  4. package/agentes/arquitecto-swl.md +267 -267
  5. package/agentes/auto-evolucion-swl.md +932 -932
  6. package/agentes/backend-csharp-swl.md +420 -420
  7. package/agentes/backend-go-swl.md +390 -390
  8. package/agentes/backend-java-swl.md +281 -281
  9. package/agentes/backend-rust-swl.md +364 -364
  10. package/agentes/backend-workers-swl.md +482 -482
  11. package/agentes/cloud-infra-swl.md +509 -509
  12. package/agentes/consolidador-swl.md +541 -541
  13. package/agentes/depurador-swl.md +352 -352
  14. package/agentes/devops-ci-swl.md +400 -400
  15. package/agentes/disenador-ui-swl.md +569 -569
  16. package/agentes/documentador-swl.md +345 -345
  17. package/agentes/frontend-angular-swl.md +621 -621
  18. package/agentes/frontend-css-swl.md +716 -716
  19. package/agentes/frontend-react-swl.md +692 -692
  20. package/agentes/frontend-swl.md +496 -496
  21. package/agentes/frontend-tailwind-swl.md +826 -826
  22. package/agentes/investigador-swl.md +432 -432
  23. package/agentes/investigador-ux-swl.md +505 -505
  24. package/agentes/migrador-swl.md +442 -442
  25. package/agentes/mobile-android-swl.md +511 -511
  26. package/agentes/mobile-cross-swl.md +541 -541
  27. package/agentes/mobile-ios-swl.md +502 -502
  28. package/agentes/mobile-testing-swl.md +302 -302
  29. package/agentes/nemesis-auditor-swl.md +285 -285
  30. package/agentes/observabilidad-swl.md +438 -438
  31. package/agentes/pagos-swl.md +310 -310
  32. package/agentes/perfilador-usuario-swl.md +321 -321
  33. package/agentes/planificador-swl.md +399 -399
  34. package/agentes/producto-prd-swl.md +589 -589
  35. package/agentes/red-team-swl.md +218 -218
  36. package/agentes/release-manager-swl.md +590 -590
  37. package/agentes/rendimiento-swl.md +713 -713
  38. package/agentes/revisor-angular-swl.md +278 -278
  39. package/agentes/revisor-csharp-swl.md +264 -264
  40. package/agentes/revisor-go-swl.md +259 -259
  41. package/agentes/revisor-java-swl.md +257 -257
  42. package/agentes/revisor-kotlin-swl.md +273 -273
  43. package/agentes/revisor-nextjs-swl.md +281 -281
  44. package/agentes/revisor-php-swl.md +271 -271
  45. package/agentes/revisor-react-swl.md +278 -278
  46. package/agentes/revisor-rust-swl.md +346 -346
  47. package/agentes/revisor-seguridad-swl.md +399 -399
  48. package/agentes/revisor-swift-swl.md +268 -268
  49. package/agentes/revisor-typescript-swl.md +346 -346
  50. package/agentes/tdd-qa-swl.md +393 -393
  51. package/bin/swl-ses.js +10 -0
  52. package/comandos/swl/actualizar.md +174 -174
  53. package/comandos/swl/adoptar-proyecto.md +265 -265
  54. package/comandos/swl/aprender.md +836 -836
  55. package/comandos/swl/aprobar-plan.md +146 -146
  56. package/comandos/swl/auditar-deps.md +134 -134
  57. package/comandos/swl/autoresearch.md +264 -264
  58. package/comandos/swl/ayuda.md +224 -224
  59. package/comandos/swl/brainstorm.md +52 -51
  60. package/comandos/swl/checkpoint.md +325 -325
  61. package/comandos/swl/claudemd.md +234 -234
  62. package/comandos/swl/compactar.md +310 -310
  63. package/comandos/swl/configurar-ci.md +235 -235
  64. package/comandos/swl/contexto.md +110 -110
  65. package/comandos/swl/crear-skill.md +292 -292
  66. package/comandos/swl/cron.md +194 -194
  67. package/comandos/swl/deuda-codigo.md +97 -97
  68. package/comandos/swl/discutir-fase.md +169 -169
  69. package/comandos/swl/ejecutar-fase.md +233 -233
  70. package/comandos/swl/evaluar-skill.md +520 -520
  71. package/comandos/swl/evolucion-continua.md +73 -73
  72. package/comandos/swl/evolucionar.md +267 -267
  73. package/comandos/swl/exportar-vault.md +583 -583
  74. package/comandos/swl/fix.md +118 -118
  75. package/comandos/swl/gateway.md +158 -158
  76. package/comandos/swl/inbox.md +116 -116
  77. package/comandos/swl/instalar.md +220 -220
  78. package/comandos/swl/instintos.md +86 -86
  79. package/comandos/swl/mapear-codebase.md +312 -312
  80. package/comandos/swl/mcp-status.md +176 -175
  81. package/comandos/swl/modelo.md +100 -100
  82. package/comandos/swl/nemesis.md +433 -433
  83. package/comandos/swl/notificaciones.md +299 -299
  84. package/comandos/swl/nuevo-proyecto.md +251 -251
  85. package/comandos/swl/planear-fase.md +263 -263
  86. package/comandos/swl/plugins.md +256 -256
  87. package/comandos/swl/predecir.md +169 -169
  88. package/comandos/swl/reflect-skills.md +125 -125
  89. package/comandos/swl/release.md +450 -450
  90. package/comandos/swl/revisar-impacto.md +201 -201
  91. package/comandos/swl/revisar.md +330 -330
  92. package/comandos/swl/seguridad.md +189 -189
  93. package/comandos/swl/sesiones.md +200 -200
  94. package/comandos/swl/skill-search.md +113 -113
  95. package/comandos/swl/status.md +345 -345
  96. package/comandos/swl/verificar.md +817 -817
  97. package/comandos/swl/wiki.md +620 -620
  98. package/gateway/cron/jobs.example.json +12 -12
  99. package/gateway/lib/event-channel.js +191 -191
  100. package/habilidades/agent-deep-links/SKILL.md +148 -148
  101. package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -294
  102. package/habilidades/backend-async-postgres-testing/SKILL.md +216 -215
  103. package/habilidades/backend-error-design/SKILL.md +221 -221
  104. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  105. package/habilidades/calidad-anti-patrones-universales/SKILL.md +105 -1
  106. package/habilidades/calidad-contract-testing/SKILL.md +165 -165
  107. package/habilidades/calidad-mutation-testing/SKILL.md +25 -1
  108. package/habilidades/changelog-generator/SKILL.md +174 -174
  109. package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
  110. package/habilidades/ci-cd-pipelines/SKILL.md +5 -1
  111. package/habilidades/compactacion-contexto/SKILL.md +2 -1
  112. package/habilidades/contenedores-docker/SKILL.md +4 -2
  113. package/habilidades/css-moderno/SKILL.md +7 -1
  114. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  115. package/habilidades/doubt-driven-review/SKILL.md +207 -207
  116. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  117. package/habilidades/drift-detection/SKILL.md +1 -1
  118. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
  119. package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
  120. package/habilidades/extractor-de-aprendizajes/SKILL.md +12 -2
  121. package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
  122. package/habilidades/git-worktrees-paralelo/SKILL.md +19 -1
  123. package/habilidades/harness-claude-code/SKILL.md +315 -314
  124. package/habilidades/instalar-sistema/SKILL.md +227 -227
  125. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  126. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  127. package/habilidades/perfil-usuario/SKILL.md +200 -200
  128. package/habilidades/planear-fase/SKILL.md +358 -358
  129. package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
  130. package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
  131. package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
  132. package/habilidades/proceso-dynamic-workflows/SKILL.md +60 -0
  133. package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -65
  134. package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -65
  135. package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -147
  136. package/habilidades/proceso-intent-engineering/SKILL.md +269 -269
  137. package/habilidades/proceso-modular-split/SKILL.md +256 -256
  138. package/habilidades/release-semver/SKILL.md +2 -2
  139. package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
  140. package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -83
  141. package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -85
  142. package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -94
  143. package/habilidades/tdd-workflow/SKILL.md +749 -749
  144. package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
  145. package/hooks/agente-lifecycle.js +1 -1
  146. package/hooks/audit-trail.js +1 -1
  147. package/hooks/auto-consolidacion.js +1 -1
  148. package/hooks/calidad-pre-commit.js +159 -10
  149. package/hooks/captura-acciones-post.js +1 -1
  150. package/hooks/captura-acciones-session.js +1 -1
  151. package/hooks/captura-feedback-usuario.js +1 -1
  152. package/hooks/ciclo-evolucion-subagente.js +26 -26
  153. package/hooks/ciclo-evolucion.js +26 -26
  154. package/hooks/contexto-iteracion.js +1 -1
  155. package/hooks/degradacion-instintos.js +1 -1
  156. package/hooks/grafo-contexto.js +1 -1
  157. package/hooks/guardrail-modelo.js +1 -1
  158. package/hooks/inbox-aviso.js +1 -1
  159. package/hooks/inyeccion-contexto.js +1 -1
  160. package/hooks/lib/agent-matcher.js +1 -1
  161. package/hooks/lib/agent-routing.js +1 -1
  162. package/hooks/lib/auto-consolidator.js +335 -335
  163. package/hooks/lib/captura-acciones.js +1 -1
  164. package/hooks/lib/ciclo-evolucion.js +47 -47
  165. package/hooks/lib/deep-links.js +185 -185
  166. package/hooks/lib/error-classifier.js +308 -308
  167. package/hooks/lib/etapa-metricas.js +1 -1
  168. package/hooks/lib/evolution-tracker.js +1 -1
  169. package/hooks/lib/gateway-notify.js +193 -193
  170. package/hooks/lib/mcp-health.js +1 -1
  171. package/hooks/lib/notificacion-formato.js +92 -0
  172. package/hooks/lib/nudge-tracker.js +1 -1
  173. package/hooks/lib/otlp-exporter.js +1 -1
  174. package/hooks/lib/propose-step.js +1 -1
  175. package/hooks/lib/provenance-tracker.js +191 -191
  176. package/hooks/lib/raiz-proyecto.js +158 -102
  177. package/hooks/lib/resource-quota.js +122 -122
  178. package/hooks/lib/retry-jitter.js +165 -165
  179. package/hooks/lib/run-log.js +1 -1
  180. package/hooks/lib/security-net.js +201 -201
  181. package/hooks/lib/singleton-guard.js +20 -13
  182. package/hooks/lib/skill-auditor.js +588 -588
  183. package/hooks/lib/sync-status.js +228 -228
  184. package/hooks/lib/taint-tracker.js +107 -107
  185. package/hooks/lib/telegram-cliente.js +11 -3
  186. package/hooks/lib/text-similarity.js +241 -241
  187. package/hooks/lib/toon-compressor.js +245 -245
  188. package/hooks/notificacion-telegram.js +17 -13
  189. package/hooks/preservar-estado-pre-compact.js +1 -1
  190. package/hooks/registro-turnos.js +1 -1
  191. package/hooks/resumen-sesion.js +1 -1
  192. package/hooks/risk-scoring.js +1 -1
  193. package/hooks/session-briefing.js +13 -5
  194. package/hooks/spec-gate.js +1 -1
  195. package/hooks/sugerir-regenerar-inventario.js +1 -1
  196. package/hooks/tdd-gate.js +1 -1
  197. package/hooks/telemetria-agentes.js +1 -1
  198. package/hooks/telemetria-skill-routing.js +1 -1
  199. package/hooks/tracking-costos.js +1 -1
  200. package/hooks/validar-formato-post-subagente.js +1 -1
  201. package/hooks/validar-intent-spec.js +1 -1
  202. package/hooks/validar-planning-paths.js +1 -1
  203. package/instintos/autonomia.yaml +27 -27
  204. package/instintos/prompt-appendices.yaml +57 -57
  205. package/llms.txt +29 -29
  206. package/manifiestos/agent-output-schemas.json +57 -57
  207. package/manifiestos/canonical-hashes.json +6250 -5257
  208. package/manifiestos/harness-ir.json +47536 -0
  209. package/manifiestos/modulos.json +1429 -1428
  210. package/manifiestos/policy-bundle.json +2065 -0
  211. package/manifiestos/policy-corpus-w2.json +3926 -0
  212. package/manifiestos/runtime-adapters-core3.json +208 -0
  213. package/manifiestos/runtime-conformance.json +139 -0
  214. package/manifiestos/skills-lock.json +1275 -1275
  215. package/package.json +94 -94
  216. package/plantillas/auditor-veto-template.md +105 -105
  217. package/plantillas/github-workflows/release-please.yml +44 -44
  218. package/plantillas/github-workflows/swl-ci.yml +107 -107
  219. package/plantillas/github-workflows/swl-security.yml +51 -51
  220. package/plugin.json +369 -369
  221. package/reglas/accesibilidad.md +10 -10
  222. package/reglas/auditorias-documentales-estructurales.md +7 -7
  223. package/reglas/cloud-infra.md +8 -8
  224. package/reglas/consultar-vault-primero.md +195 -195
  225. package/reglas/git-workflow.md +1 -0
  226. package/reglas/hooks.md +6 -6
  227. package/reglas/intent-engineering.md +218 -218
  228. package/reglas/markitdown.md +8 -8
  229. package/reglas/monitor-ci.md +12 -0
  230. package/reglas/patrones.md +6 -6
  231. package/reglas/testing.md +7 -7
  232. package/reglas/tests-cleanup.md +224 -224
  233. package/schemas/agent-message.schema.json +73 -73
  234. package/schemas/agent-output-implementacion.schema.json +114 -114
  235. package/schemas/agent-output-planificacion.schema.json +150 -150
  236. package/schemas/agent-output-review.schema.json +98 -98
  237. package/schemas/diary-entry.schema.json +112 -112
  238. package/schemas/gate-state.schema.json +76 -0
  239. package/schemas/harness-ir.schema.json +369 -0
  240. package/schemas/hook-profiles.schema.json +54 -54
  241. package/schemas/hooks-config.schema.json +89 -89
  242. package/schemas/legacy-gates.schema.json +45 -0
  243. package/schemas/modulos.schema.json +38 -38
  244. package/schemas/perfiles.schema.json +36 -36
  245. package/schemas/plugin.schema.json +77 -77
  246. package/schemas/policy-bundle.schema.json +140 -0
  247. package/schemas/policy-enforcement.schema.json +117 -0
  248. package/schemas/policy-operation.schema.json +261 -0
  249. package/schemas/runtime-adapter.schema.json +176 -0
  250. package/schemas/runtime-build-attestation.schema.json +100 -0
  251. package/schemas/runtime-conformance.schema.json +239 -0
  252. package/schemas/runtime-diagnostic.schema.json +395 -0
  253. package/schemas/skill-evals.schema.json +119 -119
  254. package/schemas/skill-frontmatter.schema.json +245 -245
  255. package/schemas/w4-certification-request.schema.json +72 -0
  256. package/schemas/w4-certification-verdict.schema.json +224 -0
  257. package/schemas/w4-corpus.schema.json +172 -0
  258. package/schemas/w4-mutation-report.schema.json +116 -0
  259. package/schemas/w4-replay-result.schema.json +164 -0
  260. package/schemas/w4-scoring-report.schema.json +89 -0
  261. package/scripts/audit-tools/audit-history.js +330 -330
  262. package/scripts/audit-tools/bundle-tracker.js +290 -290
  263. package/scripts/audit-tools/canary-monitor.js +352 -352
  264. package/scripts/audit-tools/code-profiler.js +605 -605
  265. package/scripts/audit-tools/dep-doctor.js +320 -320
  266. package/scripts/audit-tools/env-validator.js +206 -206
  267. package/scripts/audit-tools/lib/fs-walk.js +48 -48
  268. package/scripts/audit-tools/lib/output.js +23 -23
  269. package/scripts/audit-tools/migration-checker.js +392 -392
  270. package/scripts/audit-tools/pentest-scanner.js +1436 -1436
  271. package/scripts/auditar-clases-conocidas.js +134 -134
  272. package/scripts/bootstrap-instintos.js +88 -14
  273. package/scripts/canario-hooks.js +166 -166
  274. package/scripts/cli/aprobar-plan.js +73 -73
  275. package/scripts/cli/autonomia.js +23 -23
  276. package/scripts/cli/benchmark-memoria.js +37 -37
  277. package/scripts/cli/briefing.js +23 -23
  278. package/scripts/cli/ciclo-autonomo.js +73 -73
  279. package/scripts/cli/ciclo-evolucion.js +26 -26
  280. package/scripts/cli/ciclo-fase-b.js +102 -102
  281. package/scripts/cli/derivar-feature-list.js +25 -25
  282. package/scripts/cli/detectar-host.js +27 -27
  283. package/scripts/cli/diary-entry.js +69 -69
  284. package/scripts/cli/execution-state.js +18 -18
  285. package/scripts/cli/gateway-notify.js +41 -41
  286. package/scripts/cli/guardrail-metrics.js +39 -39
  287. package/scripts/cli/liberar-fase.js +42 -42
  288. package/scripts/cli/mark-evolved.js +56 -56
  289. package/scripts/cli/memoria-search.js +69 -69
  290. package/scripts/cli/metricas-dora.js +26 -26
  291. package/scripts/cli/near-duplicate.js +55 -55
  292. package/scripts/cli/notificaciones.js +123 -123
  293. package/scripts/cli/nudge-accionar.js +39 -39
  294. package/scripts/cli/propose-step.js +29 -29
  295. package/scripts/cli/run-eval.js +38 -38
  296. package/scripts/cli/schedule-parse.js +19 -19
  297. package/scripts/cli/sugerir-modelo.js +20 -20
  298. package/scripts/cli/verificar-plan.js +36 -36
  299. package/scripts/cli/verificar-trazabilidad.js +35 -35
  300. package/scripts/comandos/install-asistido.js +8 -7
  301. package/scripts/configurar-branch-protection.js +418 -418
  302. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  303. package/scripts/doctor.js +61 -13
  304. package/scripts/evidencia-valor.js +101 -101
  305. package/scripts/field-report.js +16 -16
  306. package/scripts/generar-checklists-consolidados.js +273 -273
  307. package/scripts/generar-claims-runtime.js +1342 -0
  308. package/scripts/generar-harness-ir.js +257 -0
  309. package/scripts/generar-inventario.js +52 -54
  310. package/scripts/generar-policy-bundle.js +202 -0
  311. package/scripts/instalador.js +39 -7
  312. package/scripts/lib/activar-hooks-proyecto.js +116 -116
  313. package/scripts/lib/approval-receipts.js +190 -0
  314. package/scripts/lib/artefactos-python.js +43 -43
  315. package/scripts/lib/benchmark-metrics.js +160 -160
  316. package/scripts/lib/budget-enforcer.js +252 -252
  317. package/scripts/lib/certificacion-loop-state.js +421 -0
  318. package/scripts/lib/ci-reader.js +193 -193
  319. package/scripts/lib/ciclo-autonomo/candidatos.js +174 -174
  320. package/scripts/lib/ciclo-autonomo/config.js +165 -165
  321. package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -174
  322. package/scripts/lib/ciclo-autonomo/fallback.js +77 -77
  323. package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -139
  324. package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -112
  325. package/scripts/lib/ciclo-autonomo/index.js +301 -301
  326. package/scripts/lib/ciclo-autonomo/lock.js +124 -124
  327. package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -122
  328. package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -240
  329. package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -248
  330. package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -190
  331. package/scripts/lib/ciclo-autonomo/yaml-instintos.js +591 -535
  332. package/scripts/lib/clasificar-directorio.js +92 -0
  333. package/scripts/lib/contadores-inventario.js +217 -217
  334. package/scripts/lib/detectar-host-swl.js +175 -175
  335. package/scripts/lib/detectar-runtime.js +29 -20
  336. package/scripts/lib/detectar-stack-detallado.js +307 -307
  337. package/scripts/lib/detector-autoduplicacion-intra-archivo.js +234 -234
  338. package/scripts/lib/detector-reglas-duplicadas.js +220 -220
  339. package/scripts/lib/eval-metrics-store.js +218 -218
  340. package/scripts/lib/eval-quality.js +171 -171
  341. package/scripts/lib/eval-schemas.js +144 -144
  342. package/scripts/lib/eval-self-correct.js +106 -106
  343. package/scripts/lib/eval-validator.js +185 -185
  344. package/scripts/lib/evidence-verifier.js +192 -0
  345. package/scripts/lib/evidencia-release.js +322 -322
  346. package/scripts/lib/evidencia-valor.js +228 -228
  347. package/scripts/lib/expandir-targets.js +71 -71
  348. package/scripts/lib/frontmatter-canonico.js +509 -0
  349. package/scripts/lib/gate-engine.js +871 -0
  350. package/scripts/lib/gate-hooks-requires.js +249 -249
  351. package/scripts/lib/gate-licencias.js +212 -212
  352. package/scripts/lib/git-config-preflight.js +48 -0
  353. package/scripts/lib/git-metricas.js +257 -257
  354. package/scripts/lib/harness-ir.js +778 -0
  355. package/scripts/lib/harness-source-snapshot.js +309 -0
  356. package/scripts/lib/integrity-ledger.js +1147 -0
  357. package/scripts/lib/jaccard-similarity.js +98 -98
  358. package/scripts/lib/legacy-gate-migration.js +324 -0
  359. package/scripts/lib/limpiar-basura-global.js +204 -0
  360. package/scripts/lib/longmemeval-runner.js +125 -125
  361. package/scripts/lib/metricas-dora.js +204 -204
  362. package/scripts/lib/notificaciones-telegram.js +1 -0
  363. package/scripts/lib/npm-version.js +1 -0
  364. package/scripts/lib/paquetes-conocidos.js +50 -50
  365. package/scripts/lib/plan-lock.js +61 -13
  366. package/scripts/lib/policy-broker.js +338 -0
  367. package/scripts/lib/policy-bundle.js +342 -0
  368. package/scripts/lib/policy-context-provider.js +310 -0
  369. package/scripts/lib/policy-contract.js +479 -0
  370. package/scripts/lib/policy-verifier-utils.js +65 -0
  371. package/scripts/lib/pr-analyzer.js +399 -399
  372. package/scripts/lib/principal-verifier.js +178 -0
  373. package/scripts/lib/prompt-builder.js +264 -264
  374. package/scripts/lib/resolver-plan-fase.js +37 -37
  375. package/scripts/lib/rrf-fusion.js +175 -175
  376. package/scripts/lib/runtime-adapter-contract.js +267 -0
  377. package/scripts/lib/runtime-artifact-verifier.js +426 -0
  378. package/scripts/lib/runtime-build-attestation.js +127 -0
  379. package/scripts/lib/runtime-bundle-installer.js +586 -0
  380. package/scripts/lib/runtime-compiler.js +327 -0
  381. package/scripts/lib/runtime-conformance.js +202 -0
  382. package/scripts/lib/runtime-doctor-core3.js +567 -0
  383. package/scripts/lib/runtime-doctor-input.js +59 -0
  384. package/scripts/lib/runtime-operation-adapter.js +267 -0
  385. package/scripts/lib/schema-version.js +164 -164
  386. package/scripts/lib/semantic-search.js +252 -252
  387. package/scripts/lib/signed-envelope.js +545 -0
  388. package/scripts/lib/single-use-store.js +359 -0
  389. package/scripts/lib/skills-externas.js +31 -0
  390. package/scripts/lib/toml-merge.js +204 -204
  391. package/scripts/lib/transformadores/codex.js +15 -8
  392. package/scripts/lib/transformadores/gemini.js +79 -5
  393. package/scripts/lib/w4-attestation-adapter.js +158 -0
  394. package/scripts/lib/w4-canario.js +337 -0
  395. package/scripts/lib/w4-claims.js +182 -0
  396. package/scripts/lib/w4-corpus-generador.js +542 -0
  397. package/scripts/lib/w4-gate-c5.js +115 -0
  398. package/scripts/lib/w4-harness-bajo-prueba.js +155 -0
  399. package/scripts/lib/w4-matriz-combos.js +55 -0
  400. package/scripts/lib/w4-motor-mutacion.js +1348 -0
  401. package/scripts/lib/w4-motor-replay.js +735 -0
  402. package/scripts/lib/w4-pin-origen.js +54 -0
  403. package/scripts/lib/w4-publicar-request.js +132 -0
  404. package/scripts/lib/w4-revocacion.js +62 -0
  405. package/scripts/lib/w4-runtimes-core3.js +38 -0
  406. package/scripts/lib/w4-scorer-certificacion.js +692 -0
  407. package/scripts/lib/w4-superficie-candidato.js +49 -0
  408. package/scripts/lib/w4-veredicto.js +452 -0
  409. package/scripts/lib/w4-verificar-veredicto.js +302 -0
  410. package/scripts/limpiar-artefactos-python.js +131 -131
  411. package/scripts/mcp-server/auth.js +105 -105
  412. package/scripts/mcp-server/cache.js +106 -106
  413. package/scripts/migrar-csv-a-array.js +168 -168
  414. package/scripts/migrar-fase-dominio.js +200 -200
  415. package/scripts/migrar-gates-legacy.js +108 -0
  416. package/scripts/publicar-certification-request.js +115 -0
  417. package/scripts/runtime-doctor.js +107 -0
  418. package/scripts/tui/componentes/selector-multi.js +189 -189
  419. package/scripts/tui/componentes/selector-unico.js +158 -158
  420. package/scripts/tui/ejecutores.js +375 -375
  421. package/scripts/tui/lib/colores.js +129 -129
  422. package/scripts/tui/lib/render.js +264 -264
  423. package/scripts/tui/lib/teclas.js +113 -113
  424. package/scripts/tui/pantallas/install-wizard.js +408 -403
  425. package/scripts/tui/pantallas/menu-principal.js +52 -52
  426. package/scripts/tui/pantallas/progreso.js +274 -274
  427. package/scripts/tui/pantallas/resumen.js +132 -132
  428. package/scripts/validar-userland-vacio.js +110 -110
  429. package/scripts/verificar-aislamiento-swl-eval.js +87 -0
  430. package/scripts/verificar-empaquetado-downstream.js +375 -0
  431. package/scripts/verificar-loop-constructor.js +215 -0
  432. package/scripts/verificar-trazabilidad.js +13 -6
  433. package/scripts/verificar-veredicto-real.js +84 -0
  434. package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +0 -53
  435. package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +0 -372
@@ -1,174 +1,174 @@
1
- ---
2
- name: changelog-generator
3
- description: >
4
- Generador automático de entradas CHANGELOG.md en formato Keep a Changelog
5
- desde commits Conventional Commits. Parser determinista que clasifica feat/
6
- fix/perf/refactor/docs/etc. en categorías user-facing en español, detecta
7
- breaking changes (marca '!' o trailer 'BREAKING CHANGE:') y reporta nivel
8
- de conformidad para decidir fallback manual. Cargar en /swl:release Paso 7
9
- cuando hay commits Conventional, o manualmente para previsualizar el
10
- changelog antes de un release.
11
- version: 1.1.1
12
- nivelRiesgo: BAJO
13
- herramientasPermitidas: [Read, Bash]
14
- skillsInvocables: [release-semver]
15
- exclusiones:
16
- - "No invocar para generar release notes con marketing copy o anuncios para usuarios finales — este skill produce listado técnico-legible, no narrativa."
17
- - "No invocar si el repo no usa Conventional Commits — el parser detecta <80% conformidad y el caller debe abortar a flujo manual de release-semver."
18
- - "No invocar para reescribir CHANGELOG histórico — solo agrega entrada de la próxima versión al inicio."
19
- ---
20
-
21
- # /habilidades/changelog-generator — CHANGELOG automático desde Conventional Commits
22
-
23
- ## Cuándo cargar
24
-
25
- - Durante `/swl:release` Paso 7 (Generar CHANGELOG), cuando el flujo automático
26
- está disponible y los commits del rango siguen Conventional Commits.
27
- - Para previsualizar el changelog candidato antes de bumpear versión:
28
- `node habilidades/changelog-generator/scripts/parse-commits.js --version X`
29
- - Cuando un colaborador pide un resumen legible de cambios entre dos refs
30
- arbitrarias del repo.
31
-
32
- ## Cuándo NO cargar
33
-
34
- - Repo sin Conventional Commits (<80% de conformidad): el parser detecta y
35
- reporta; el caller debe usar `Skill("release-semver")` flujo manual.
36
- - Generación de **release notes** (texto narrativo con contexto de producto):
37
- este skill produce CHANGELOG técnico-legible; las release notes con marketing
38
- son tarea aparte (`documentador-swl` con plantilla específica).
39
- - Reescritura histórica del CHANGELOG (squash de varias versiones, corrección
40
- de entradas antiguas): solo se agrega entrada de la versión nueva al inicio.
41
-
42
- ## Qué hace el skill
43
-
44
- 1. **Lee commits** desde la última tag (o entre dos refs arbitrarias) con
45
- `git log --format=...` usando un separador único para parsear subject + body
46
- sin colisiones.
47
- 2. **Parsea con Conventional Commits 1.0.0**: regex que captura tipo, scope,
48
- marca `!`, descripción. Soporta tipos extendidos del proyecto SWL:
49
- `evolucion` (cambios de skills/agentes), además de `feat/fix/perf/refactor/
50
- docs/style/test/ci/build/chore/revert`. Tolera el prefijo opcional de
51
- trazabilidad `[T-NN]` / `[REQ-NN]` de la convención de `ejecutar-fase`
52
- (no altera la semántica CC — el tipo+scope+descripción siguen presentes).
53
- 3. **Detecta breaking changes** por marca `!` después del tipo o trailer
54
- `BREAKING CHANGE:` en el body. Los breaking siempre van al inicio del
55
- release, sin importar el tipo original.
56
- 4. **Transforma descripción técnica → legible**:
57
- - Elimina referencias a issues al final (`(#123)`, `Refs #456`).
58
- - Capitaliza primera letra.
59
- - Elimina punto final (Keep a Changelog usa bullets sin punto).
60
- 5. **Agrupa en categorías** con orden canónico:
61
- 1. Breaking changes
62
- 2. Nuevas funcionalidades (feat)
63
- 3. Correcciones (fix)
64
- 4. Mejoras de rendimiento (perf)
65
- 5. Cambios internos (refactor)
66
- 6. Reversiones (revert)
67
- 7. Evoluciones de skills/agentes (evolucion — SWL-specific)
68
- 8. Mantenimiento (docs/style/test/ci/build/chore — colapsadas)
69
- 9. Otros (commits sin prefijo CC válido)
70
- 6. **Reporta conformidad**: ratio commits conformes / total. Si <80%, el
71
- caller debe decidir si abortar o seguir manualmente.
72
-
73
- ## Helper programático
74
-
75
- ```js
76
- const {
77
- parsearCommits,
78
- leerCommitsGit,
79
- generarChangelog,
80
- } = require('./habilidades/changelog-generator/scripts/parse-commits');
81
-
82
- // 1. Leer commits desde la última tag hasta HEAD
83
- const commits = leerCommitsGit({ to: 'HEAD' });
84
-
85
- // 2. Parsear y clasificar
86
- const { categorias, conformidad, totalCommits, conformes } = parsearCommits(commits);
87
-
88
- // 3. Si conformidad < 0.8, abortar o avisar al usuario
89
- if (conformidad < 0.8) {
90
- console.warn(`Conformidad CC: ${conformes}/${totalCommits}. Revisar "Otros".`);
91
- }
92
-
93
- // 4. Generar markdown listo para insertar en CHANGELOG.md
94
- const md = generarChangelog(categorias, {
95
- version: '1.6.5',
96
- fecha: '2026-05-22', // opcional, default = hoy
97
- incluirHash: true, // muestra hash corto al inicio de cada bullet
98
- });
99
- ```
100
-
101
- ## Uso CLI
102
-
103
- Previsualizar changelog candidato sin escribir nada:
104
-
105
- ```bash
106
- node habilidades/changelog-generator/scripts/parse-commits.js \
107
- --version 1.6.5 \
108
- --format markdown
109
- ```
110
-
111
- Filtrar por rango específico:
112
-
113
- ```bash
114
- node habilidades/changelog-generator/scripts/parse-commits.js \
115
- --from v1.6.4 \
116
- --to HEAD \
117
- --version 1.6.5
118
- ```
119
-
120
- Salida JSON estructurado para post-procesamiento:
121
-
122
- ```bash
123
- node habilidades/changelog-generator/scripts/parse-commits.js \
124
- --from v1.6.4 \
125
- --format json > /tmp/changelog-candidato.json
126
- ```
127
-
128
- ## Reglas de uso desde /swl:release
129
-
130
- 1. Llamar a `leerCommitsGit` con la última tag detectada en el Paso 1 del
131
- release.
132
- 2. Verificar `conformidad >= 0.8`. Si menor, presentar al usuario los commits
133
- bajo "Otros" y pedir decisión: (a) continuar con el changelog, (b) abortar
134
- y reescribir commits, (c) editar manualmente la categoría "Otros".
135
- 3. Si `--dry-run` está activo en `/swl:release`, mostrar el output de
136
- `generarChangelog` sin escribir a disco.
137
- 4. Si conformidad OK: leer CHANGELOG.md actual, insertar el bloque generado
138
- al inicio después del header `# Changelog`, escribir atómicamente.
139
- 5. NO hacer commit aquí — eso lo hace el Paso 8 de `/swl:release`.
140
-
141
- ## Gotchas observables
142
-
143
- - **Conventional Commits sin scope son válidos**: `fix: corregir X` parsea
144
- igual que `fix(modulo): corregir X`. El parser no exige scope.
145
- - **El subject debe ir en una sola línea**: si un commit usa newline en el
146
- subject, el parser lo trata como completo pero `git log %s` ya lo trunca.
147
- - **Tipos no estándar van a "Otros"**: si un equipo usa `mejora:`, `cambio:`,
148
- el parser los marca como no conformes. El usuario debe ajustar la lista
149
- `CATEGORIAS` en `parse-commits.js` o adoptar tipos estándar.
150
- - **El skill NO escribe a disco directamente**: solo retorna markdown. El
151
- caller (`/swl:release` Paso 7) es responsable de leer el CHANGELOG actual,
152
- insertar al inicio y escribir atómicamente.
153
- - **Commits revert vienen del propio git**: `git revert` genera mensajes
154
- `Revert "Subject original"` que el parser categoriza correctamente bajo
155
- Reversiones (regex matchea `revert:` sin que el usuario lo escriba si usa
156
- `git revert -e` para editar el mensaje al formato CC).
157
- - **El hash corto se trunca a 7 chars**: alineado con el formato `git log
158
- --oneline` estándar.
159
-
160
- ## Origen
161
-
162
- Adaptado del skill `changelog-generator` de
163
- `temp/awesome-codex-skills-master/changelog-generator/` (ComposioHQ, MIT) con:
164
-
165
- - Frontmatter al estándar SWL (es-MX, `nivelRiesgo: BAJO`, `exclusiones`).
166
- - Parser determinista en Node.js (`parse-commits.js`) — el origen es solo
167
- documentación; este skill agrega la implementación ejecutable.
168
- - Tipo `evolucion:` específico de SWL agregado al parser.
169
- - Soporte para breaking changes `!` y trailer `BREAKING CHANGE:` (origen
170
- solo menciona el segundo).
171
- - Reporte de conformidad <80% como gate explícita para fallback manual.
172
- - Integración con `/swl:release` Paso 7 documentada en `comandos/swl/release.md`.
173
-
174
- Documentado en ADR-0029 (integración parcial awesome-codex-skills, Opción B).
1
+ ---
2
+ name: changelog-generator
3
+ description: >
4
+ Generador automático de entradas CHANGELOG.md en formato Keep a Changelog
5
+ desde commits Conventional Commits. Parser determinista que clasifica feat/
6
+ fix/perf/refactor/docs/etc. en categorías user-facing en español, detecta
7
+ breaking changes (marca '!' o trailer 'BREAKING CHANGE:') y reporta nivel
8
+ de conformidad para decidir fallback manual. Cargar en /swl:release Paso 7
9
+ cuando hay commits Conventional, o manualmente para previsualizar el
10
+ changelog antes de un release.
11
+ version: 1.1.1
12
+ nivelRiesgo: BAJO
13
+ herramientasPermitidas: [Read, Bash]
14
+ skillsInvocables: [release-semver]
15
+ exclusiones:
16
+ - "No invocar para generar release notes con marketing copy o anuncios para usuarios finales — este skill produce listado técnico-legible, no narrativa."
17
+ - "No invocar si el repo no usa Conventional Commits — el parser detecta <80% conformidad y el caller debe abortar a flujo manual de release-semver."
18
+ - "No invocar para reescribir CHANGELOG histórico — solo agrega entrada de la próxima versión al inicio."
19
+ ---
20
+
21
+ # /habilidades/changelog-generator — CHANGELOG automático desde Conventional Commits
22
+
23
+ ## Cuándo cargar
24
+
25
+ - Durante `/swl:release` Paso 7 (Generar CHANGELOG), cuando el flujo automático
26
+ está disponible y los commits del rango siguen Conventional Commits.
27
+ - Para previsualizar el changelog candidato antes de bumpear versión:
28
+ `node habilidades/changelog-generator/scripts/parse-commits.js --version X`
29
+ - Cuando un colaborador pide un resumen legible de cambios entre dos refs
30
+ arbitrarias del repo.
31
+
32
+ ## Cuándo NO cargar
33
+
34
+ - Repo sin Conventional Commits (<80% de conformidad): el parser detecta y
35
+ reporta; el caller debe usar `Skill("release-semver")` flujo manual.
36
+ - Generación de **release notes** (texto narrativo con contexto de producto):
37
+ este skill produce CHANGELOG técnico-legible; las release notes con marketing
38
+ son tarea aparte (`documentador-swl` con plantilla específica).
39
+ - Reescritura histórica del CHANGELOG (squash de varias versiones, corrección
40
+ de entradas antiguas): solo se agrega entrada de la versión nueva al inicio.
41
+
42
+ ## Qué hace el skill
43
+
44
+ 1. **Lee commits** desde la última tag (o entre dos refs arbitrarias) con
45
+ `git log --format=...` usando un separador único para parsear subject + body
46
+ sin colisiones.
47
+ 2. **Parsea con Conventional Commits 1.0.0**: regex que captura tipo, scope,
48
+ marca `!`, descripción. Soporta tipos extendidos del proyecto SWL:
49
+ `evolucion` (cambios de skills/agentes), además de `feat/fix/perf/refactor/
50
+ docs/style/test/ci/build/chore/revert`. Tolera el prefijo opcional de
51
+ trazabilidad `[T-NN]` / `[REQ-NN]` de la convención de `ejecutar-fase`
52
+ (no altera la semántica CC — el tipo+scope+descripción siguen presentes).
53
+ 3. **Detecta breaking changes** por marca `!` después del tipo o trailer
54
+ `BREAKING CHANGE:` en el body. Los breaking siempre van al inicio del
55
+ release, sin importar el tipo original.
56
+ 4. **Transforma descripción técnica → legible**:
57
+ - Elimina referencias a issues al final (`(#123)`, `Refs #456`).
58
+ - Capitaliza primera letra.
59
+ - Elimina punto final (Keep a Changelog usa bullets sin punto).
60
+ 5. **Agrupa en categorías** con orden canónico:
61
+ 1. Breaking changes
62
+ 2. Nuevas funcionalidades (feat)
63
+ 3. Correcciones (fix)
64
+ 4. Mejoras de rendimiento (perf)
65
+ 5. Cambios internos (refactor)
66
+ 6. Reversiones (revert)
67
+ 7. Evoluciones de skills/agentes (evolucion — SWL-specific)
68
+ 8. Mantenimiento (docs/style/test/ci/build/chore — colapsadas)
69
+ 9. Otros (commits sin prefijo CC válido)
70
+ 6. **Reporta conformidad**: ratio commits conformes / total. Si <80%, el
71
+ caller debe decidir si abortar o seguir manualmente.
72
+
73
+ ## Helper programático
74
+
75
+ ```js
76
+ const {
77
+ parsearCommits,
78
+ leerCommitsGit,
79
+ generarChangelog,
80
+ } = require('./habilidades/changelog-generator/scripts/parse-commits');
81
+
82
+ // 1. Leer commits desde la última tag hasta HEAD
83
+ const commits = leerCommitsGit({ to: 'HEAD' });
84
+
85
+ // 2. Parsear y clasificar
86
+ const { categorias, conformidad, totalCommits, conformes } = parsearCommits(commits);
87
+
88
+ // 3. Si conformidad < 0.8, abortar o avisar al usuario
89
+ if (conformidad < 0.8) {
90
+ console.warn(`Conformidad CC: ${conformes}/${totalCommits}. Revisar "Otros".`);
91
+ }
92
+
93
+ // 4. Generar markdown listo para insertar en CHANGELOG.md
94
+ const md = generarChangelog(categorias, {
95
+ version: '1.6.5',
96
+ fecha: '2026-05-22', // opcional, default = hoy
97
+ incluirHash: true, // muestra hash corto al inicio de cada bullet
98
+ });
99
+ ```
100
+
101
+ ## Uso CLI
102
+
103
+ Previsualizar changelog candidato sin escribir nada:
104
+
105
+ ```bash
106
+ node habilidades/changelog-generator/scripts/parse-commits.js \
107
+ --version 1.6.5 \
108
+ --format markdown
109
+ ```
110
+
111
+ Filtrar por rango específico:
112
+
113
+ ```bash
114
+ node habilidades/changelog-generator/scripts/parse-commits.js \
115
+ --from v1.6.4 \
116
+ --to HEAD \
117
+ --version 1.6.5
118
+ ```
119
+
120
+ Salida JSON estructurado para post-procesamiento:
121
+
122
+ ```bash
123
+ node habilidades/changelog-generator/scripts/parse-commits.js \
124
+ --from v1.6.4 \
125
+ --format json > /tmp/changelog-candidato.json
126
+ ```
127
+
128
+ ## Reglas de uso desde /swl:release
129
+
130
+ 1. Llamar a `leerCommitsGit` con la última tag detectada en el Paso 1 del
131
+ release.
132
+ 2. Verificar `conformidad >= 0.8`. Si menor, presentar al usuario los commits
133
+ bajo "Otros" y pedir decisión: (a) continuar con el changelog, (b) abortar
134
+ y reescribir commits, (c) editar manualmente la categoría "Otros".
135
+ 3. Si `--dry-run` está activo en `/swl:release`, mostrar el output de
136
+ `generarChangelog` sin escribir a disco.
137
+ 4. Si conformidad OK: leer CHANGELOG.md actual, insertar el bloque generado
138
+ al inicio después del header `# Changelog`, escribir atómicamente.
139
+ 5. NO hacer commit aquí — eso lo hace el Paso 8 de `/swl:release`.
140
+
141
+ ## Gotchas observables
142
+
143
+ - **Conventional Commits sin scope son válidos**: `fix: corregir X` parsea
144
+ igual que `fix(modulo): corregir X`. El parser no exige scope.
145
+ - **El subject debe ir en una sola línea**: si un commit usa newline en el
146
+ subject, el parser lo trata como completo pero `git log %s` ya lo trunca.
147
+ - **Tipos no estándar van a "Otros"**: si un equipo usa `mejora:`, `cambio:`,
148
+ el parser los marca como no conformes. El usuario debe ajustar la lista
149
+ `CATEGORIAS` en `parse-commits.js` o adoptar tipos estándar.
150
+ - **El skill NO escribe a disco directamente**: solo retorna markdown. El
151
+ caller (`/swl:release` Paso 7) es responsable de leer el CHANGELOG actual,
152
+ insertar al inicio y escribir atómicamente.
153
+ - **Commits revert vienen del propio git**: `git revert` genera mensajes
154
+ `Revert "Subject original"` que el parser categoriza correctamente bajo
155
+ Reversiones (regex matchea `revert:` sin que el usuario lo escriba si usa
156
+ `git revert -e` para editar el mensaje al formato CC).
157
+ - **El hash corto se trunca a 7 chars**: alineado con el formato `git log
158
+ --oneline` estándar.
159
+
160
+ ## Origen
161
+
162
+ Adaptado del skill `changelog-generator` de
163
+ `temp/awesome-codex-skills-master/changelog-generator/` (ComposioHQ, MIT) con:
164
+
165
+ - Frontmatter al estándar SWL (es-MX, `nivelRiesgo: BAJO`, `exclusiones`).
166
+ - Parser determinista en Node.js (`parse-commits.js`) — el origen es solo
167
+ documentación; este skill agrega la implementación ejecutable.
168
+ - Tipo `evolucion:` específico de SWL agregado al parser.
169
+ - Soporte para breaking changes `!` y trailer `BREAKING CHANGE:` (origen
170
+ solo menciona el segundo).
171
+ - Reporte de conformidad <80% como gate explícita para fallback manual.
172
+ - Integración con `/swl:release` Paso 7 documentada en `comandos/swl/release.md`.
173
+
174
+ Documentado en ADR-0029 (integración parcial awesome-codex-skills, Opción B).
@@ -1,60 +1,60 @@
1
- # STRIDE — modelo de amenazas para el modo cobertura
2
-
3
- Complemento del checklist OWASP de `SKILL.md`. STRIDE clasifica por **tipo de
4
- amenaza** (qué quiere lograr el atacante); OWASP por **tipo de debilidad**
5
- (qué error del código lo permite). Auditar con ambas taxonomías cierra los
6
- huecos que cada una deja sola: repudio y DoS casi no aparecen en OWASP Top 10;
7
- componentes desactualizados (A06) no mapean limpio a STRIDE.
8
-
9
- ## Las 6 categorías
10
-
11
- | Letra | Amenaza | Qué buscar | OWASP relacionadas |
12
- |-------|---------|-----------|--------------------|
13
- | **S**poofing | Suplantación de identidad | Auth débil, tokens predecibles, session fixation, falta de MFA | A07 |
14
- | **T**ampering | Modificación de datos | Input sin validar, falta de checks de integridad, inyección SQL/NoSQL, deserialización insegura | A03, A08 |
15
- | **R**epudiation | Acciones negables | Audit logs faltantes, transacciones sin firma, logs mutables, cambios de privilegio sin registro | A09 |
16
- | **I**nformation Disclosure | Fuga de información | Stack traces al cliente, logging verboso con PII, env vars expuestas, mensajes de error que revelan existencia de recursos | A01, A02, A05 |
17
- | **D**enial of Service | Ataques a disponibilidad | Queries sin cota ni paginación, rate limits faltantes, regex DoS (ReDoS), uploads sin límite de tamaño | A04 |
18
- | **E**levation of Privilege | Acceso no autorizado | Checks de authz faltantes, IDOR, rutas de escalación admin, confusión autenticación/autorización | A01, A04 |
19
-
20
- ## Protocolo de auditoría iterativa con cobertura
21
-
22
- 1. **Reconocimiento (una vez)**: mapear superficie de ataque — manifest de
23
- dependencias, `.env.example`, Dockerfile, rutas de API, módulos de auth,
24
- schemas de BD, configuración de CI/CD. Producir threat model inicial:
25
- qué activos, qué trust boundaries, qué entry points.
26
- 2. **Por iteración**: elegir el vector MENOS cubierto (OWASP sin auditar →
27
- STRIDE sin auditar → profundizar en hallazgos existentes). Adoptar la
28
- persona red-team que corresponde al vector (rotación: Adversario de
29
- Seguridad → Supply Chain → Insider → Infraestructura — definiciones en
30
- `habilidades/proceso-debate-adversarial/recursos/personas.md`).
31
- 3. **Validar cada hallazgo**: evidencia archivo:línea + escenario de ataque
32
- concreto + reproducción. Sin escenario de ataque no es hallazgo, es
33
- especulación (regla `verificar-citas-normativas.md § Familia 2`).
34
- 4. **Registrar**: fila en la corrida de `loop-telemetry` (columnas sugeridas:
35
- `iteracion, timestamp, hallazgo, severidad, owasp, stride, archivo_linea`)
36
- y recalcular el score compuesto.
37
- 5. **Salida**: OWASP 10/10 + STRIDE 6/6 cubiertos, o max iteraciones (default
38
- 15), o plateau de hallazgos (3 iteraciones sin hallazgo nuevo).
39
-
40
- ## Formato de hallazgo (obligatorio, 7 campos)
41
-
42
- ```markdown
43
- ### [Título de una línea]
44
- - **Severidad**: Crítico | Alto | Medio | Bajo | Informativo
45
- - **OWASP**: A01-A10
46
- - **STRIDE**: S | T | R | I | D | E
47
- - **Evidencia**: archivo:línea + escenario de ataque (sin especulación teórica)
48
- - **Reproducción**: pasos para disparar el problema
49
- - **Remediación**: fix concreto para ESTE código
50
- ```
51
-
52
- ## Severidad — criterios
53
-
54
- | Severidad | Criterio | Ejemplos |
55
- |-----------|----------|----------|
56
- | Crítico | Explotable remoto, sin auth, brecha de datos | RCE, SQL injection, bypass de auth |
57
- | Alto | Requiere algún acceso, impacto severo | XSS almacenado, IDOR, escalación de privilegios |
58
- | Medio | Impacto limitado o requiere interacción | CSRF, XSS reflejado, divulgación de info |
59
- | Bajo | Impacto mínimo | Headers faltantes, errores verbosos |
60
- | Informativo | Recomendación de hardening | Defensa en profundidad |
1
+ # STRIDE — modelo de amenazas para el modo cobertura
2
+
3
+ Complemento del checklist OWASP de `SKILL.md`. STRIDE clasifica por **tipo de
4
+ amenaza** (qué quiere lograr el atacante); OWASP por **tipo de debilidad**
5
+ (qué error del código lo permite). Auditar con ambas taxonomías cierra los
6
+ huecos que cada una deja sola: repudio y DoS casi no aparecen en OWASP Top 10;
7
+ componentes desactualizados (A06) no mapean limpio a STRIDE.
8
+
9
+ ## Las 6 categorías
10
+
11
+ | Letra | Amenaza | Qué buscar | OWASP relacionadas |
12
+ |-------|---------|-----------|--------------------|
13
+ | **S**poofing | Suplantación de identidad | Auth débil, tokens predecibles, session fixation, falta de MFA | A07 |
14
+ | **T**ampering | Modificación de datos | Input sin validar, falta de checks de integridad, inyección SQL/NoSQL, deserialización insegura | A03, A08 |
15
+ | **R**epudiation | Acciones negables | Audit logs faltantes, transacciones sin firma, logs mutables, cambios de privilegio sin registro | A09 |
16
+ | **I**nformation Disclosure | Fuga de información | Stack traces al cliente, logging verboso con PII, env vars expuestas, mensajes de error que revelan existencia de recursos | A01, A02, A05 |
17
+ | **D**enial of Service | Ataques a disponibilidad | Queries sin cota ni paginación, rate limits faltantes, regex DoS (ReDoS), uploads sin límite de tamaño | A04 |
18
+ | **E**levation of Privilege | Acceso no autorizado | Checks de authz faltantes, IDOR, rutas de escalación admin, confusión autenticación/autorización | A01, A04 |
19
+
20
+ ## Protocolo de auditoría iterativa con cobertura
21
+
22
+ 1. **Reconocimiento (una vez)**: mapear superficie de ataque — manifest de
23
+ dependencias, `.env.example`, Dockerfile, rutas de API, módulos de auth,
24
+ schemas de BD, configuración de CI/CD. Producir threat model inicial:
25
+ qué activos, qué trust boundaries, qué entry points.
26
+ 2. **Por iteración**: elegir el vector MENOS cubierto (OWASP sin auditar →
27
+ STRIDE sin auditar → profundizar en hallazgos existentes). Adoptar la
28
+ persona red-team que corresponde al vector (rotación: Adversario de
29
+ Seguridad → Supply Chain → Insider → Infraestructura — definiciones en
30
+ `habilidades/proceso-debate-adversarial/recursos/personas.md`).
31
+ 3. **Validar cada hallazgo**: evidencia archivo:línea + escenario de ataque
32
+ concreto + reproducción. Sin escenario de ataque no es hallazgo, es
33
+ especulación (regla `verificar-citas-normativas.md § Familia 2`).
34
+ 4. **Registrar**: fila en la corrida de `loop-telemetry` (columnas sugeridas:
35
+ `iteracion, timestamp, hallazgo, severidad, owasp, stride, archivo_linea`)
36
+ y recalcular el score compuesto.
37
+ 5. **Salida**: OWASP 10/10 + STRIDE 6/6 cubiertos, o max iteraciones (default
38
+ 15), o plateau de hallazgos (3 iteraciones sin hallazgo nuevo).
39
+
40
+ ## Formato de hallazgo (obligatorio, 7 campos)
41
+
42
+ ```markdown
43
+ ### [Título de una línea]
44
+ - **Severidad**: Crítico | Alto | Medio | Bajo | Informativo
45
+ - **OWASP**: A01-A10
46
+ - **STRIDE**: S | T | R | I | D | E
47
+ - **Evidencia**: archivo:línea + escenario de ataque (sin especulación teórica)
48
+ - **Reproducción**: pasos para disparar el problema
49
+ - **Remediación**: fix concreto para ESTE código
50
+ ```
51
+
52
+ ## Severidad — criterios
53
+
54
+ | Severidad | Criterio | Ejemplos |
55
+ |-----------|----------|----------|
56
+ | Crítico | Explotable remoto, sin auth, brecha de datos | RCE, SQL injection, bypass de auth |
57
+ | Alto | Requiere algún acceso, impacto severo | XSS almacenado, IDOR, escalación de privilegios |
58
+ | Medio | Impacto limitado o requiere interacción | CSRF, XSS reflejado, divulgación de info |
59
+ | Bajo | Impacto mínimo | Headers faltantes, errores verbosos |
60
+ | Informativo | Recomendación de hardening | Defensa en profundidad |
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ci-cd-pipelines
3
3
  description: CI/CD con GitHub Actions y GitLab CI. Stages de lint, test, build, deploy. Caching, artifacts, matrix builds, secrets management, deployment strategies, monorepos y quality gates.
4
- version: "1.0.0"
4
+ version: "1.0.2"
5
5
  herramientasPermitidas: [Read, Bash]
6
6
  exclusiones:
7
7
  - "No cargar para Kubernetes Deployments o Helm releases — para Kubernetes cargar `kubernetes-orquestacion`."
@@ -155,3 +155,7 @@ Para template de GitHub Actions reutilizable, ver [recursos/github-actions-templ
155
155
  **Secrets definidos en GitHub Actions no están disponibles en workflows de forks en PRs externas**: los workflows disparados por un PR de un fork (contribuidor externo) no tienen acceso a los secrets del repositorio por seguridad. Causa: prevención de exfiltración de secrets a forks maliciosos. Fix: usar el evento `pull_request_target` con cuidado para acceder a secrets en PRs de forks, pero solo para jobs que no ejecutan código del PR — los jobs de lint/test pueden correr sin secrets; los de deploy sí necesitan el evento `push` al branch base.
156
156
 
157
157
  **`docker/build-push-action` con `cache-from: type=gha` puede hacer el build más lento si el cache es muy grande**: el cache de GitHub Actions (10GB límite) se llena con layers de Docker — si se usan imágenes base grandes y muchos stages, el cache puede alcanzar el límite y las layers más antiguas se evictan, causando rebuilds completos. Causa: el cache de GHA tiene límite de 10GB por repositorio. Fix: usar `cache-from: type=registry,ref=ghcr.io/org/app:cache` con un registro de contenedores para cache ilimitado, o usar `mode=min` en el cache para solo guardar las layers finales en lugar de todas las intermedias.
158
+
159
+ **Un script que monitorea `gh pr checks`/`gh run list` canalizando su `--json` a `jq` externo puede fallar en silencio para siempre si `jq` no está instalado** [CONFIRMADO x2 — SIGM 2026-06-21 y 2026-07-18]: en Windows con Git Bash, `jq` frecuentemente NO está en el PATH (`which jq` → not found). Un loop de polling tipo `s=$(gh pr checks N --json ... 2>/dev/null); cur=$(echo "$s" | jq -r '...' 2>/dev/null)` con stderr suprimido en ambos comandos nunca produce error visible: `cur` queda siempre vacío, la condición de salida (`jq -e '...'`) siempre falla, y el loop de polling corre indefinidamente sin emitir NINGÚN evento — 0 bytes de output, indistinguible de "todavía no hay novedades". Causa: dos supresiones de error (`2>/dev/null`) apiladas ocultan que el binario no existe. Fix confirmado: usar el flag `--jq` PROPIO de `gh` (`gh pr checks N --json name,bucket --jq '.[] | select(...)'`) — es JSON processor vendored dentro del propio binario `gh`, no depende de `jq` externo, y acepta la misma sintaxis de filtro. Antes de confiar en que un monitor de CI sigue "esperando sin novedad", verificar con `TaskOutput(block:false)` que el output acumulado no sea 0 KB tras varios minutos — 0 KB sostenido es señal de este bug, no de que aún no hay nada que reportar.
160
+
161
+ **Suprimir un fingerprint específico de `gitleaks` en `.gitleaks.toml` bajo `[allowlist] fingerprints = [...]` no funciona en gitleaks ≥8.25** [CONFIRMADO, SIGM 2026-07-19]: desde esa versión gitleaks migró de `[allowlist]` (tabla singular) a `[[allowlists]]` (array de tablas), y el campo `fingerprints` NO existe en NINGUNA de las dos variantes del TOML — solo soporta `paths`/`regexes`/`commits`/`stopwords`/`condition`/`regexTarget`. Un `fingerprints = [...]` agregado al TOML se ignora en silencio (sin error de parseo, sin warning) y el hallazgo sigue reportándose sin cambio. Fix real: los fingerprints se suprimen en un archivo SEPARADO `.gitleaksignore` en la raíz del repo (una línea por fingerprint, texto EXACTO tal como lo imprime `gitleaks detect` en su campo `Fingerprint:`). Verificar el fix localmente ANTES de reintentar en CI: descargar el mismo binario/tag que usa el workflow (`curl -sSL -o gitleaks.zip https://github.com/gitleaks/gitleaks/releases/download/v<TAG>/gitleaks_<TAG>_windows_x64.zip` en Windows, o el tarball `linux_x64` si se prueba en WSL/Linux) y correr `gitleaks detect --source . --no-git --redact -v --config .gitleaks.toml` — el finding suprimido debe desaparecer del output antes de pushear, ahorrando una ronda completa de CI.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: compactacion-contexto
3
3
  description: Anti-context-rot. Detectar cuándo compactar el contexto, guardar estado antes de compactar, técnicas de resumen progresivo y handoff limpio entre contextos. Recalibrado para el tokenizer de Opus 4.8 (+15-30% tokens vs 4.6).
4
- version: "1.1.0"
4
+ version: "1.1.1"
5
5
  herramientasPermitidas: [Read]
6
6
  exclusiones:
7
7
  - "No cargar si el contexto está por debajo del 50% y no hay señales cualitativas de degradación — compactar sin necesidad solo interrumpe el flujo."
@@ -235,6 +235,7 @@ instrucción más conservadora o compactar por secciones individuales.
235
235
  - **Invariante de headings violada silenciosamente**: el contexto compactado pierde dos secciones `##` del original porque el modelo resumió párrafos en lugar de preservar la estructura. Causa: no se ejecutó la validación post-compactación. Solución: antes de descartar el contexto original, contar `#` en ambos con regex y comparar — tolerancia 0% para headings perdidos.
236
236
  - **Compactar todo el codebase al inicio de sesión**: el agente lee 20 archivos en el nuevo contexto "para orientarse" y los compacta de inmediato. Causa: se interpretó "cargar contexto fresco" como cargar y compactar todo. Solución: en el contexto entrante, cargar ESTADO.md + DECISIONS.md + 3 últimos commits, y solo los archivos de la tarea inmediata — no más.
237
237
  - **Umbral de 70% sin recalibrar para Opus 4.8**: en proyectos que migraron de Opus 4.6 a 4.7, el umbral de compactación sigue configurado al 70% del contexto cuando debe ser 50%. Causa: el tokenizer de 4.7 produce 1.0-1.35× más tokens y el umbral efectivo llega antes. Solución: al actualizar modelo, ajustar el umbral de compactación a 50% como documenta este skill en su sección de señales cuantitativas.
238
+ - **Análisis forense de un transcript JSONL gigante = digest determinista + lectores paralelos, nunca `Read` directo** [VALIDADO 2026-07-11, sesión de 61.6 MB / 24,862 líneas cubierta al 100%]: para analizar la sesión de otro agente (post-mortem, auditoría, extracción de decisiones), (1) script Node línea-por-línea que emite SOLO el contenido conversacional — mensajes de usuario íntegros, texto del asistente, tool calls como `>> Tool: args` de una línea, tool_results truncados a 200-400 chars (1,200 si `is_error`), resúmenes de compactación completos — en chunks de ~350 KB; (2) un agente por chunk con mandato de leer el 100% (Read con offset/limit hasta cubrir) y reporte estructurado fijo (cronología, intervenciones del usuario con cita+línea, bugs con estado, deudas, hallazgos QA/adversarial, pendientes, problemas de proceso); (3) el driver verifica las citas críticas de cada reporte antes de usarlas. Gotcha descubierto: **los mensajes del usuario que solo sobreviven dentro de un resumen de compactación NO son diálogo crudo** — el digest debe marcarlos como "cobertura parcial" y el análisis debe declararlo en vez de citarlos como verbatim; en la sesión analizada, 3 de 6 instrucciones del usuario del tramo final solo existían en resúmenes de compactación.
238
239
 
239
240
  ## Anti-patrones a evitar
240
241
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: contenedores-docker
3
3
  description: Docker y containerización. Dockerfiles optimizados con multi-stage builds, docker-compose, volúmenes, networking, health checks, security scanning, build caching, distroless images. Anti-patrones comunes.
4
- version: "1.0.3"
4
+ version: "1.0.4"
5
5
  herramientasPermitidas: [Read]
6
6
  exclusiones:
7
7
  - "No cargar para orquestación Kubernetes (Deployments, Services, Helm, HPA) — para Kubernetes cargar `kubernetes-orquestacion`."
@@ -140,4 +140,6 @@ Para ejemplos completos de multi-stage Node.js/Angular, .dockerignore, docker-co
140
140
 
141
141
  **Proxy de desarrollo del frontend (Angular CLI, Vite, webpack-dev-server) con target hardcodeado a `localhost` es deuda invisible hasta el primer `docker compose up`**: en local todo funciona porque frontend y backend comparten host; en cuanto corren en contenedores separados, `localhost` dentro del contenedor del frontend apunta a sí mismo — el proxy devuelve 500/ECONNREFUSED en cada llamada a la API (síntoma típico: el login falla solo en Docker). Causa: el target del proxy es configuración de entorno, no constante del repo. Fix: usar `proxy.conf.js` (no `.json`) que lea `process.env.BACKEND_URL || 'http://localhost:8000'` y pasar `BACKEND_URL=http://backend:8000` (nombre del servicio de compose) vía `environment:` del servicio frontend. Origen: SIGAF 2026-07-02.
142
142
 
143
- **`docker exec ... psql` lanzado en background contra una BD donde el rol no autentica cuelga y congestiona el subsistema `docker exec` de Docker Desktop (Windows)**: lanzar en background (`run_in_background`/`&`) un `docker exec <contenedor> psql -U rol -d db -c "..."` donde el rol no puede autenticar deja la sesión `exec` colgada esperando; varias de esas sesiones huérfanas **saturan el subsistema de `docker exec`** y luego TODO `docker exec` (incluso `echo`) y hasta `docker restart` hacen timeout, aunque `docker ps`/`version` sigan respondiendo. Causa: cada `exec` abre una sesión que no termina; el daemon las acumula. Síntoma distintivo: `docker ps` responde pero cualquier `docker exec` cuelga. Fix: `docker restart <contenedor>` mata las sesiones `exec` huérfanas y destraba el daemon — detener el bash local con TaskStop NO mata el `psql` que corre dentro del contenedor. Prevención: NUNCA lanzar `docker exec ... psql` en background contra una BD/rol cuya autenticación no esté confirmada; correrlo en foreground con timeout corto y verificar el `psql` interactivo primero. En Git Bash (Windows), pasar `MSYS_NO_PATHCONV=1` cuando el comando lleva rutas POSIX (`/tmp/...`) a `docker exec`/`docker cp` para que MSYS no las convierta.
143
+ **`docker exec ... psql` lanzado en background contra una BD donde el rol no autentica cuelga y congestiona el subsistema `docker exec` de Docker Desktop (Windows)**: lanzar en background (`run_in_background`/`&`) un `docker exec <contenedor> psql -U rol -d db -c "..."` donde el rol no puede autenticar deja la sesión `exec` colgada esperando; varias de esas sesiones huérfanas **saturan el subsistema de `docker exec`** y luego TODO `docker exec` (incluso `echo`) y hasta `docker restart` hacen timeout, aunque `docker ps`/`version` sigan respondiendo. Causa: cada `exec` abre una sesión que no termina; el daemon las acumula. Síntoma distintivo: `docker ps` responde pero cualquier `docker exec` cuelga. Fix: `docker restart <contenedor>` mata las sesiones `exec` huérfanas y destraba el daemon — detener el bash local con TaskStop NO mata el `psql` que corre dentro del contenedor. Prevención: NUNCA lanzar `docker exec ... psql` en background contra una BD/rol cuya autenticación no esté confirmada; correrlo en foreground con timeout corto y verificar el `psql` interactivo primero. En Git Bash (Windows), pasar `MSYS_NO_PATHCONV=1` cuando el comando lleva rutas POSIX (`/tmp/...`) a `docker exec`/`docker cp` para que MSYS no las convierta [CONFIRMADO x2 — aplica igual de necesario a `docker cp` que a `docker exec`, no solo al segundo].
144
+
145
+ **`docker cp <dir-local> contenedor:<dir-remoto>` cuando `<dir-remoto>` YA EXISTE dentro del contenedor NO reemplaza su contenido — lo anida un nivel más profundo** [CONFIRMADO]: un segundo `docker cp database/tests contenedor:/tmp/verify/database/tests` sobre un `/tmp/verify/database/tests/` ya poblado por una corrida anterior crea `/tmp/verify/database/tests/tests/` con los archivos actualizados, mientras el path original sigue con los archivos VIEJOS — silenciosamente, sin error. Causa real de confusión de debugging: un fix a un `.sql` de test parece "no surtir efecto" porque el script verificador (`find /tmp/verify/database/tests -name "*.sql"`) sigue recogiendo la copia vieja en el path esperado; la copia nueva, correcta, queda un nivel más abajo sin que nada la use. Fix: SIEMPRE `docker exec <contenedor> rm -rf <dir-remoto>` inmediatamente antes de cada `docker cp` hacia ese mismo destino — nunca asumir semántica de overwrite en `docker cp` de directorios.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: css-moderno
3
3
  description: CSS moderno 2024+. Cubre Container Queries, CSS Layers (@layer), Nesting nativo, Custom Properties avanzadas, funciones min/max/clamp/color-mix, propiedades lógicas (block/inline), View Transitions API, animaciones performantes solo-compositor, dark mode patterns y anti-patrones críticos.
4
- version: "1.1.0"
4
+ version: "1.1.1"
5
5
  herramientasPermitidas: [Read, Grep]
6
6
  exclusiones:
7
7
  - "No cargar para Tailwind CSS (clases utilitarias, @theme, cva, responsive) — para Tailwind cargar `tailwind-experto`."
@@ -166,3 +166,9 @@ Para ejemplos completos de Container Queries, CSS Layers, Nesting, Custom Proper
166
166
  **`clamp()` con `vw` en la función intermedia no escala correctamente en pantallas muy anchas si no se acota con `max()`**: `font-size: clamp(1rem, 2vw, 2rem)` en un monitor de 2560px da `2vw = 51.2px`, que es mayor que el máximo de `2rem = 32px` — el clamp lo atrapa pero el cálculo puede ser confuso al depurar. Causa: el valor de `vw` crece sin límite. Fix: entender que `clamp(min, preferido, max)` garantiza que el resultado siempre está entre min y max — el valor preferido puede ser cualquier expresión, incluso mayor que max, y el clamp simplemente retorna max en ese caso. Verificar los tres valores en los tamaños de viewport objetivo.
167
167
 
168
168
  **`var(--token)` NO resuelve cuando el valor lo consume JavaScript pintando a `<canvas>`**: las librerías que renderizan a canvas (Chart.js, OpenLayers, three.js/WebGL, o `ctx.fillStyle`/`strokeStyle`/`ctx.font` directos) NO reciben el contexto CSS del documento → el color sale negro o invisible **sin error en consola**. Causa: el canvas es un buffer de píxeles fuera del árbol CSS; la cascada y `getComputedStyle` no aplican al contexto 2D/WebGL — `var()` queda como string literal que el motor de canvas no interpreta. La frontera es: un color es `var(--x)` SOLO si lo consume CSS (`.css`/`.module.scss` o `style={{}}` sobre HTML); si lo consume JS pintando a canvas, debe ser hex/rgb concreto. Fix: pasar hex/rgb literal a esos objetos, con comentario anti-recurrencia (`// canvas: NO resuelve var()`). Si el color debe ser theme-aware, resolverlo primero en JS — `getComputedStyle(document.documentElement).getPropertyValue('--color-x').trim()` — y pasar el valor ya resuelto al canvas, re-leyéndolo al cambiar de tema.
169
+
170
+ **El atributo HTML `hidden` NO oculta un elemento con `display:flex/grid`** [CONFIRMADO x4]: togglear el atributo `hidden` sobre un elemento con `.clase{display:flex}` no lo oculta, **sin error en consola**. Causa: la regla de user-agent `[hidden]{display:none}` tiene menor especificidad que cualquier regla de clase con `display` explícito → la clase gana en la cascada y el elemento sigue visible. Fix: para todo elemento colapsable con `display` distinto de `block`, agregar una regla explícita `.clase[hidden]{display:none}`. Aplica a acordeones, drawers, toggles, tabs — cualquier patrón que dependa del atributo `hidden` para colapsar. Evidencia: 4 instancias en una sola sesión (proyecto convertidor-md, 2026-07-20).
171
+
172
+ **Items flex/grid-column bajo un contenedor `max-height` + `overflow` se COMPRIMEN y recortan en vez de scrollear**: en `display:flex;flex-direction:column;max-height:N;overflow-y:auto`, los hijos con `flex-shrink:1` (default) se encogen cuando el contenido excede la altura — y si tienen `overflow:hidden`, su contenido se corta — en lugar de que el contenedor haga scroll. Causa: `flex-shrink:1` autoriza al algoritmo flex a reducir los ítems para caber en el contenedor acotado, antes de recurrir al scroll. Fix: `flex-shrink:0` (o `flex:none`) en los hijos que deben conservar su altura natural; entonces el contenedor scrollea correctamente. Síntoma típico: encabezados de acordeón "recortados a rebanadas" cuando uno se expande.
173
+
174
+ **Redefinir un nombre de clase ya usado re-estiliza el componente original en silencio**: dos reglas con el mismo selector de clase (`.chip {…}` … `.chip {…}`) en la misma hoja mezclan propiedades por cascada — la segunda definición altera el primer componente sin error. Causa: CSS no tiene scoping por defecto; el nombre de clase es global a la hoja. Fix: antes de reusar un nombre de clase para un componente nuevo, `grep` la hoja de estilos; namespacea la clase del componente nuevo (p. ej. `.grp-chip` en vez de reusar `.cfdi-chip`).