@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,345 +1,345 @@
1
- ---
2
- name: swl:status
3
- description: Comando unificado de observabilidad del sistema y la sesión. Enruta a subcomandos [salud | metricas | loops | evolucion | historico | dashboard | valor] que reportan salud del sistema SWL, métricas de la sesión actual, trayectorias de loops iterativos, estado del ciclo de auto-evolución y dashboard histórico multi-sesión. Reemplaza los comandos previos /swl:salud, /swl:metricas, /swl:dashboard y /swl:evolucion-estado (fusionados en este desde la Fase 09).
4
- allowed_tools: ["Read", "Write", "Bash", "Glob", "Grep"]
5
- ---
6
-
7
- # /swl:status <subcomando> — Observabilidad unificada
8
-
9
- Punto único de observabilidad de swl-ses. Fusiona los cuatro comandos previos de
10
- diagnóstico en un router con subcomandos. Cada subcomando delega exactamente en
11
- la misma lógica (skill o script) que usaba el comando original — sin pérdida de
12
- funcionalidad ni de flags.
13
-
14
- ## Uso
15
-
16
- ```
17
- /swl:status salud — Diagnóstico de salud del sistema SWL (genera SALUD.md)
18
- /swl:status metricas — Métricas de la sesión actual (tokens, costo, herramientas)
19
- /swl:status metricas detalle — Desglose completo por herramienta, agente y timeline
20
- /swl:status metricas fases — Progreso de fases del proyecto (desde feature-list.json)
21
- /swl:status valor — Evidencia de valor del harness en ESTE proyecto (intercepciones, defectos/escapes, DORA/CI, uso — con procedencia por métrica)
22
- /swl:status loops — Trayectorias de loops iterativos (.planning/loops/)
23
- /swl:status evolucion — Estado del ciclo de auto-evolución (health_score, nudges…)
24
- /swl:status evolucion --json — JSON crudo de metricas.json (para pipes)
25
- /swl:status evolucion --dias=N — Regenera métricas con ventana de N días (default 14)
26
- /swl:status evolucion --regenerar — Fuerza recomputo del hook ciclo-evolucion.js (etapa métricas)
27
- /swl:status dora — Métricas DORA del proyecto destino (deploy freq, lead time, CFR, MTTR)
28
- /swl:status dora --dias=N — Ventana de medición de N días (default 30)
29
- /swl:status historico — Dashboard histórico multi-sesión (web, auto-puerto)
30
- /swl:status dashboard — Alias de historico
31
- /swl:status dashboard --port 9090 — Fuerza puerto específico del dashboard
32
- /swl:status dashboard today — Resumen de consumo del día (terminal)
33
- /swl:status dashboard stats — Estadísticas históricas all-time (terminal)
34
- /swl:status dashboard scan — Sincroniza JSONL → SQLite sin abrir el dashboard
35
- ```
36
-
37
- Sin subcomando: pide al usuario cuál quiere, o muestra `salud` + `metricas`
38
- como vista por defecto si el contexto lo sugiere.
39
-
40
- ## Tabla de enrutamiento (delegación 1:1)
41
-
42
- | Subcomando | Delega en | Origen previo |
43
- |------------|-----------|---------------|
44
- | `salud` | `Skill("validacion-ci-sistema")` | `/swl:salud` |
45
- | `metricas` (+ `detalle`, `fases`) | scripts de métricas de sesión + `derivar-feature-list.js` | `/swl:metricas` |
46
- | `loops` | `hooks/lib/loop-telemetry.js` | `/swl:metricas loops` |
47
- | `evolucion` | `hooks/ciclo-evolucion.js` (etapa métricas) + `.planning/evolution/metricas.json` | `/swl:evolucion-estado` |
48
- | `dora` | `scripts/lib/metricas-dora.js` + `.planning/evolution/metricas-dora.json` | nuevo (Fase 15, ADR-0039) |
49
- | `valor` | CLI cross-scope `swl-ses valor` (`scripts/evidencia-valor.js`) — datos 100% locales; frontera y reglas anti-gaming en `docs/evidencia-valor.md` | nuevo (v2.5.1) |
50
- | `historico` / `dashboard` | `Skill("swl-dashboard")` | `/swl:dashboard` |
51
-
52
- ---
53
-
54
- ## Subcomando: `salud`
55
-
56
- Diagnóstico de salud del sistema SWL con **verificaciones deterministas**
57
- (conteos, existencia de campos, sintaxis). Genera `SALUD.md` con score objetivo.
58
- **Solo lectura** — no modifica nada salvo `SALUD.md`. Para corregir problemas,
59
- usar `/swl:evolucionar`.
60
-
61
- **Paso 0 — Detección host vs consumidor (gate determinista, OBLIGATORIO)**:
62
-
63
- `salud` audita los componentes del sistema SWL con un score ponderado. Ese score
64
- solo tiene sentido en el repo que **hospeda** los componentes (swl-ses o un fork).
65
- En un proyecto **consumidor** (usa las convenciones SWL vía `~/.claude/` pero no
66
- aloja `agentes/`, `habilidades/`, `comandos/swl/`, `reglas/`, `hooks/`), el
67
- inventario daría 0 y un score `0/100` sería señal falsa. Esta distinción es
68
- **determinista**, NO juicio del agente:
69
-
70
- ```bash
71
- swl-ses detectar-host --json
72
- ```
73
-
74
- - Si `esHost: true` → continuar con el diagnóstico normal (Carga + pasos siguientes).
75
- - Si `esHost: false` → **NO** calcular score de componentes ni generar `SALUD.md`
76
- con `0/100`. Reportar el campo `razon` y la lista `sugerencias` (subcomandos de
77
- `/swl:status` que sí aplican aquí: `metricas`, `loops`, `evolucion`, `dashboard`).
78
- Ofrecer ejecutar uno de ellos. Terminar sin penalizar el score.
79
-
80
- **Carga**: `Skill("validacion-ci-sistema")` — contiene las reglas de validación
81
- por componente (agentes, skills, hooks, comandos, reglas), la tabla de exit codes
82
- y el checklist de integridad. Toda la lógica de verificación vive en el skill.
83
-
84
- **Cuándo usar**: antes de iniciar proyecto nuevo, tras modificar agentes/skills
85
- manualmente, tras merge/pull, o como mantenimiento mensual.
86
-
87
- **Score global ponderado**:
88
- ```
89
- Score = agentes×0.30 + skills×0.25 + comandos×0.20 + reglas×0.15 + hooks×0.10
90
- 90-100 Excelente · 75-89 Saludable · 60-74 Funcional · <60 Crítico
91
- ```
92
-
93
- **Pasos siempre activos**: inventario determinista, detección de tier del proyecto
94
- (Simple <500 / Standard 500-5000 / Complex >5000 archivos), diagnóstico de los 5
95
- componentes, y calidad de `CLAUDE.md` (ADR-0016):
96
- ```bash
97
- npx -y @saulwade/swl-ses@latest audit-claudemd --json
98
- ```
99
- Umbrales ajustables: `SWL_CLAUDEMD_MAX_LINES` (default 200),
100
- `SWL_CLAUDEMD_MAX_BULLET_CHARS` (default 1000).
101
-
102
- **Auditorías opt-in** (cada una se activa con su variable de entorno; si no está
103
- definida, el paso se omite sin afectar el score — diseño zero-config):
104
-
105
- | Variable | Qué audita | Comando |
106
- |----------|-----------|---------|
107
- | `SWL_AUDIT_SKILLS=1` | Prompt injection, secretos, URLs sospechosas y estructura en SKILL.md | `bash scripts/audit-skills.sh` (requiere `uv`) |
108
- | `SWL_AUDIT_FRAMEWORKS=1` | Cobertura de NIST CSF/AI RMF, MITRE ATLAS/ATT&CK, D3FEND en skills de seguridad | `npx -y @saulwade/swl-ses@latest audit-coverage-frameworks --resumen` |
109
- | `SWL_AUDIT_AGENTES=1` | Agentes sin Exclusion Clause o Gotchas (anti agent-hijacking) | `npx -y @saulwade/swl-ses@latest audit-agents-gaps --resumen` |
110
-
111
- **Verificación de drift de skills** (si existe `manifiestos/skills-lock.json`):
112
- ```bash
113
- npx -y @saulwade/swl-ses@latest generate-skills-lock --check
114
- ```
115
-
116
- **Staleness de skills** (Fase 20): reportar los skills que tuvieron uso y se
117
- **enfriaron** (último uso > `SWL_SKILL_STALE_DIAS`, default 90), leídos de
118
- `.planning/skill-metrics.json`. Es la superficie temporal que los skills no tenían
119
- (los instintos ya decaen). Los skills **nunca** usados NO se listan aquí (eso es
120
- *bloat*, dominio aparte). El mismo aviso aparece de forma proactiva en el briefing
121
- de sesión (recolector `skillsStale`, categoría `skill-stale`, opt-out
122
- `SWL_SKILL_STALE=0`). Acción por skill frío: re-validar con `/swl:evaluar-skill <name>`.
123
- En el repo host, la lista manual sale del subcomando `stale` de la lib de métricas
124
- de skills (`skill-metrics`).
125
-
126
- **Smoke test de MCP** (si hay servers en `.claude/settings.json` o configs globales):
127
- ```bash
128
- python scripts/mcp-orchestrator.py status --json 2>/dev/null
129
- ```
130
- Detecta drift de apiKeys (`40101`), binarios faltantes y `"env": {}` que rompe la
131
- herencia de variables — antes de que fallen en uso interactivo.
132
-
133
- Formato de salida enriquecido vía `scripts/lib/health-row.js` (barras Unicode;
134
- respeta `NO_COLOR` y `SWL_ASCII_SIMPLE=1`). Genera `SALUD.md` con los datos
135
- exactos de los scripts — sin ajustar el score "porque parece sano".
136
-
137
- ---
138
-
139
- ## Subcomando: `metricas`
140
-
141
- Métricas acumuladas de la **sesión actual**: tokens, costo estimado USD, tool
142
- calls y distribución por herramienta, más el estado del presupuesto configurado.
143
-
144
- **Fuentes de datos**:
145
- ```bash
146
- # 1. Bridge de tracking de la sesión (generado por el hook de costos)
147
- ls /tmp/swl-costs-*.json 2>/dev/null | sort -t- -k3 -n | tail -1
148
- # 2. Métricas persistidas del proyecto
149
- cat .planning/METRICAS.md 2>/dev/null || echo "(sin métricas previas)"
150
- # 3. Presupuesto configurado
151
- node -e "const c=require('./manifiestos/hooks-config.json').costBudget||{}; console.log('maxUsd:',c.maxUsd??'no configurado','| maxTokens:',c.maxTokens??'no configurado','| alertAt:',c.alertAt??'no configurado')"
152
- ```
153
-
154
- Construir el resumen con: tool calls totales, tokens, costo estimado, modelo
155
- predominante, estado de presupuesto (`OK`/`ALERTA`/`EXCEDIDO`) y top 5
156
- herramientas por costo. Si el estado es ALERTA (≥ `alertAt`), sugerir
157
- `/swl:compactar`. Si EXCEDIDO, recomendar revisar `manifiestos/hooks-config.json`.
158
-
159
- ### `metricas detalle`
160
-
161
- Desglose completo: tabla por herramienta (calls, tokens entrada/salida, costo),
162
- desglose por agente SWL desde `costePorAgente` del bridge, comparativa histórica
163
- contra `~/.claude/usage.db` (últimos 30 días) y timeline de actividad por bloques
164
- de 5 minutos.
165
-
166
- ### `metricas fases`
167
-
168
- Progreso de fases del proyecto. Regenera primero el JSON derivado de
169
- `HOJA-RUTA.md` (fuente de verdad) y lo lee:
170
- ```bash
171
- swl-ses derivar-feature-list
172
- cat .planning/feature-list.json
173
- ```
174
- Reporta totales por estado canónico (`completado`, `en_progreso`, `pendiente`,
175
- `bloqueado`, `spec_listo`), lista de fases con marca visual y artefactos
176
- presentes (`[PLAN]`/`[RESUMEN]`), y timestamp de generación. Detección de drift:
177
- `node scripts/derivar-feature-list.js --check` (exit 2 si drift).
178
-
179
- ### Notas de precisión
180
-
181
- Los costos son estimaciones según precios publicados de la API de Anthropic. El
182
- real varía por modelo efectivo, caché de prompt y región/plan. Para costos
183
- exactos, el dashboard de Anthropic Console.
184
-
185
- ---
186
-
187
- ## Subcomando: `loops`
188
-
189
- Trayectorias de loops iterativos registradas en `.planning/loops/`. Subcomando
190
- del CLI (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`):
191
- ```bash
192
- swl-ses loop-telemetry listar
193
- # fallback: npx -y @saulwade/swl-ses@latest loop-telemetry listar
194
- ```
195
- Reportar en tabla: corrida, iteraciones, keep/revert rate, métrica inicial →
196
- final, plateau y status. Si una corrida activa muestra plateau, sugerir cerrarla
197
- — iterar sin mejora quema tokens.
198
-
199
- ---
200
-
201
- ## Subcomando: `evolucion`
202
-
203
- Estado del ciclo de auto-evolución en la ventana reciente (default 14 días).
204
- Responde con datos a "¿el sistema está aprendiendo?".
205
-
206
- **Flags**: `--json` (emite el JSON crudo de `metricas.json`), `--dias=N`
207
- (ventana de N días), `--regenerar` (fuerza recomputo del hook).
208
-
209
- **Paso 0 — métricas frescas** (si `--regenerar` o `metricas.json` > 24h).
210
- Subcomando del CLI (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`):
211
- ```bash
212
- swl-ses ciclo-evolucion
213
- # fallback: npx -y @saulwade/swl-ses@latest ciclo-evolucion
214
- ```
215
-
216
- **Paso 1 — cargar**:
217
- ```bash
218
- cat .planning/evolution/metricas.json
219
- ```
220
- Si no existe, ejecutar el regenerado; si sigue sin existir, reportar que el ciclo
221
- no ha corrido aún.
222
-
223
- **Dashboard** (formato humano) con secciones: health_score + badge, NUDGES
224
- (emitidos/accionados/pendientes por tipo), INSTINTOS (proyecto/global/perfil),
225
- AGENTES (runs/fallos/tasa), EVOLUCIONES (aplicadas/revertidas/rollback ratio),
226
- CALIDAD CONDUCTUAL (fallos por tipo, reintentos, latencia), ALERTAS PERSISTENTES
227
- y KERNEL (gobernanza: política evolvable, último ADR kernel, ratio
228
- `evolvable=false`/total).
229
-
230
- **Badges**: ≥90 🏆 Óptimo · ≥75 🥇 Saludable · ≥60 🥈 Parcial · ≥40 🥉 Esqueleto
231
- · <40 ⚠️ Dormido.
232
-
233
- **Recomendaciones contextuales** (máx 3, al final): bootstrap de instintos si
234
- `instintos.proyecto==0` y `aprendizajes>10`; revisar alertas si `tasaAccion<0.3`;
235
- candidatos a `/swl:evolucionar` si `tasaExito<70`; etc.
236
-
237
- **Anti-substitution**: el archivo de métricas es **siempre**
238
- `.planning/evolution/metricas.json` (nunca `.planning/metricas.json` ni variantes);
239
- el hook que regenera es **siempre** `hooks/ciclo-evolucion.js` (etapa métricas, Fase 11); para forzar
240
- regen usar el pipe `echo '{}' | node ...`, nunca `require()` directo.
241
-
242
- **Response discipline**: con `--json`, la respuesta es el contenido crudo del
243
- archivo, sin prosa.
244
-
245
- ---
246
-
247
- ## Subcomando: `dora`
248
-
249
- Métricas DORA (DevOps Research and Assessment) del **proyecto destino** donde SWL
250
- está instalado: deployment frequency, lead time for changes, change failure rate
251
- y MTTR, cada una clasificada en elite/high/medium/low (umbrales DORA Report 2023).
252
- Mide **velocidad de entrega**, ortogonal a la reliability en runtime de
253
- `observabilidad-swl`/`sre-swl`. Solo lectura salvo el JSON de storage.
254
-
255
- **Portabilidad** (D-15-01): deployment frequency + lead time se derivan de git
256
- (tags de release + commits) y están **siempre** disponibles. Change failure rate
257
- + MTTR requieren `gh` (GitHub CLI) autenticado; si `gh` falta, no está autenticado,
258
- o el repo no tiene remoto GitHub, esas dos reportan "no disponible" **sin fallar**.
259
-
260
- **Paso 0 — calcular/regenerar**:
261
- ```bash
262
- swl-ses metricas-dora --json [--dias=N]
263
- ```
264
- Regenera siempre que se invoque el subcomando (la medición es barata) o cuando se
265
- pase `--dias=N` (ventana en días, default 30). El script persiste el informe en
266
- `.planning/evolution/metricas-dora.json` (runtime, gitignored).
267
-
268
- **Paso 1 — render**: presentar las 4 métricas con su valor y clasificación:
269
-
270
- ```
271
- Métricas DORA — ventana de 30 días
272
-
273
- Deployment frequency: 2.30 deploys/semana [high]
274
- Lead time (p50): 18.4 h [high]
275
- Change failure rate: no disponible (gh ausente)
276
- MTTR: no disponible (gh ausente)
277
- ```
278
-
279
- Reglas de render:
280
- - Si una métrica git reporta `sinDatos: true` (proyecto sin tags de release),
281
- mostrar "sin datos" — distinto de "frecuencia baja". El informe NO penaliza:
282
- un proyecto sin releases no es "low", es "sin datos".
283
- - Si `changeFailureRate`/`mttr` traen `disponible: false`, mostrar
284
- "no disponible (gh ausente)" con la `razon` si ayuda — nunca como error.
285
- - Tras el render, si CFR/MTTR no están disponibles, sugerir (1 línea) instalar y
286
- autenticar `gh` para habilitarlas; no es obligatorio.
287
-
288
- **Anti-substitution**: el archivo de storage es **siempre**
289
- `.planning/evolution/metricas-dora.json` (nunca `metricas.json`, que es del ciclo
290
- de evolución); el script es **siempre** `scripts/lib/metricas-dora.js`.
291
-
292
- ---
293
-
294
- ## Subcomando: `historico` / `dashboard`
295
-
296
- Dashboard histórico multi-sesión vía `claude-usage` (vendored). Complementa
297
- `metricas` (sesión actual) con perspectiva multi-sesión y gráficos interactivos.
298
-
299
- **Carga**: `Skill("swl-dashboard")` con el subcomando indicado:
300
- - (vacío) o `historico` → dashboard web (auto-detecta puerto: 8888, 9090, 9191…)
301
- - `--port N` → fuerza un puerto
302
- - `today` → resumen del día en terminal
303
- - `stats` → estadísticas históricas all-time en terminal
304
- - `scan` → solo sincroniza JSONL → SQLite sin abrir el dashboard
305
-
306
- ### Integración con Mission Control (opt-in)
307
-
308
- Dashboard web externo para orquestación de flotas de agentes. **Completamente
309
- opcional** — el dashboard local funciona igual sin configurarlo.
310
-
311
- | Variable | Descripción | Ejemplo |
312
- |----------|-------------|---------|
313
- | `SWL_MC_URL` | URL base de la instancia de MC | `http://localhost:3000` |
314
- | `SWL_MC_TOKEN` | API key de MC (si hay auth) | `mc-key-abc123` |
315
-
316
- - Con `SWL_MC_URL` definida: el comando detecta MC (vía `scripts/lib/mc-client.js`)
317
- y ofrece redirigir al panel web. Si MC no responde en 2s, fallback graceful al
318
- dashboard local con mensaje informativo (sin crash ni degradación silenciosa).
319
- - Sin `SWL_MC_URL`: dashboard local sin cambios (zero-config).
320
-
321
- Instalar MC (opcional): `git clone https://github.com/builderzlabs/mission-control`
322
- → `docker compose up` (requiere Node ≥22, pnpm; genera su API key al primer
323
- arranque). MC expone además un **servidor MCP con ~49 tools** (agentes, memoria,
324
- soul, tareas, sesiones, tokens/costos, skills, cron, runs/evals). swl-ses **NO**
325
- modifica `.claude/settings.json` automáticamente — el registro del MCP es manual.
326
-
327
- **Seguridad**: el MCP de MC incluye tools de **escritura** (`mc_create_task`,
328
- `mc_write_memory`, `mc_write_soul`…). Antes de activarlo, evaluar exposición de
329
- red, permisos mínimos de la API key y confianza en los agentes que lo invocarán.
330
- La regla `seguridad-agentes.md` recomienda documentarlo en
331
- `.planning/MCP_REGISTRY.md`.
332
-
333
- ---
334
-
335
- ## Reglas de comportamiento
336
-
337
- - `salud` y `evolucion` son **solo lectura** (salvo que `salud` genera `SALUD.md`).
338
- Para corregir, usar `/swl:evolucionar`.
339
- - Las verificaciones de `salud` son scripts deterministas — no usar juicio
340
- subjetivo ni ajustar scores "porque parece sano".
341
- - Los reportes opt-in de auditoría (`SWL_AUDIT_SKILLS`, `SWL_AUDIT_FRAMEWORKS`,
342
- `SWL_AUDIT_AGENTES`) nunca bloquean el diagnóstico: si fallan (red,
343
- dependencia, paquete no publicado), el flujo continúa.
344
- - Respetar `--json` como salida cruda sin prosa donde aplique (`evolucion`).
345
- - No reintroducir los comandos eliminados: este comando los reemplaza.
1
+ ---
2
+ name: swl:status
3
+ description: Comando unificado de observabilidad del sistema y la sesión. Enruta a subcomandos [salud | metricas | loops | evolucion | historico | dashboard | valor] que reportan salud del sistema SWL, métricas de la sesión actual, trayectorias de loops iterativos, estado del ciclo de auto-evolución y dashboard histórico multi-sesión. Reemplaza los comandos previos /swl:salud, /swl:metricas, /swl:dashboard y /swl:evolucion-estado (fusionados en este desde la Fase 09).
4
+ allowed_tools: ["Read", "Write", "Bash", "Glob", "Grep"]
5
+ ---
6
+
7
+ # /swl:status <subcomando> — Observabilidad unificada
8
+
9
+ Punto único de observabilidad de swl-ses. Fusiona los cuatro comandos previos de
10
+ diagnóstico en un router con subcomandos. Cada subcomando delega exactamente en
11
+ la misma lógica (skill o script) que usaba el comando original — sin pérdida de
12
+ funcionalidad ni de flags.
13
+
14
+ ## Uso
15
+
16
+ ```
17
+ /swl:status salud — Diagnóstico de salud del sistema SWL (genera SALUD.md)
18
+ /swl:status metricas — Métricas de la sesión actual (tokens, costo, herramientas)
19
+ /swl:status metricas detalle — Desglose completo por herramienta, agente y timeline
20
+ /swl:status metricas fases — Progreso de fases del proyecto (desde feature-list.json)
21
+ /swl:status valor — Evidencia de valor del harness en ESTE proyecto (intercepciones, defectos/escapes, DORA/CI, uso — con procedencia por métrica)
22
+ /swl:status loops — Trayectorias de loops iterativos (.planning/loops/)
23
+ /swl:status evolucion — Estado del ciclo de auto-evolución (health_score, nudges…)
24
+ /swl:status evolucion --json — JSON crudo de metricas.json (para pipes)
25
+ /swl:status evolucion --dias=N — Regenera métricas con ventana de N días (default 14)
26
+ /swl:status evolucion --regenerar — Fuerza recomputo del hook ciclo-evolucion.js (etapa métricas)
27
+ /swl:status dora — Métricas DORA del proyecto destino (deploy freq, lead time, CFR, MTTR)
28
+ /swl:status dora --dias=N — Ventana de medición de N días (default 30)
29
+ /swl:status historico — Dashboard histórico multi-sesión (web, auto-puerto)
30
+ /swl:status dashboard — Alias de historico
31
+ /swl:status dashboard --port 9090 — Fuerza puerto específico del dashboard
32
+ /swl:status dashboard today — Resumen de consumo del día (terminal)
33
+ /swl:status dashboard stats — Estadísticas históricas all-time (terminal)
34
+ /swl:status dashboard scan — Sincroniza JSONL → SQLite sin abrir el dashboard
35
+ ```
36
+
37
+ Sin subcomando: pide al usuario cuál quiere, o muestra `salud` + `metricas`
38
+ como vista por defecto si el contexto lo sugiere.
39
+
40
+ ## Tabla de enrutamiento (delegación 1:1)
41
+
42
+ | Subcomando | Delega en | Origen previo |
43
+ |------------|-----------|---------------|
44
+ | `salud` | `Skill("validacion-ci-sistema")` | `/swl:salud` |
45
+ | `metricas` (+ `detalle`, `fases`) | scripts de métricas de sesión + `derivar-feature-list.js` | `/swl:metricas` |
46
+ | `loops` | `hooks/lib/loop-telemetry.js` | `/swl:metricas loops` |
47
+ | `evolucion` | `hooks/ciclo-evolucion.js` (etapa métricas) + `.planning/evolution/metricas.json` | `/swl:evolucion-estado` |
48
+ | `dora` | `scripts/lib/metricas-dora.js` + `.planning/evolution/metricas-dora.json` | nuevo (Fase 15, ADR-0039) |
49
+ | `valor` | CLI cross-scope `swl-ses valor` (`scripts/evidencia-valor.js`) — datos 100% locales; frontera y reglas anti-gaming en `docs/evidencia-valor.md` | nuevo (v2.5.1) |
50
+ | `historico` / `dashboard` | `Skill("swl-dashboard")` | `/swl:dashboard` |
51
+
52
+ ---
53
+
54
+ ## Subcomando: `salud`
55
+
56
+ Diagnóstico de salud del sistema SWL con **verificaciones deterministas**
57
+ (conteos, existencia de campos, sintaxis). Genera `SALUD.md` con score objetivo.
58
+ **Solo lectura** — no modifica nada salvo `SALUD.md`. Para corregir problemas,
59
+ usar `/swl:evolucionar`.
60
+
61
+ **Paso 0 — Detección host vs consumidor (gate determinista, OBLIGATORIO)**:
62
+
63
+ `salud` audita los componentes del sistema SWL con un score ponderado. Ese score
64
+ solo tiene sentido en el repo que **hospeda** los componentes (swl-ses o un fork).
65
+ En un proyecto **consumidor** (usa las convenciones SWL vía `~/.claude/` pero no
66
+ aloja `agentes/`, `habilidades/`, `comandos/swl/`, `reglas/`, `hooks/`), el
67
+ inventario daría 0 y un score `0/100` sería señal falsa. Esta distinción es
68
+ **determinista**, NO juicio del agente:
69
+
70
+ ```bash
71
+ swl-ses detectar-host --json
72
+ ```
73
+
74
+ - Si `esHost: true` → continuar con el diagnóstico normal (Carga + pasos siguientes).
75
+ - Si `esHost: false` → **NO** calcular score de componentes ni generar `SALUD.md`
76
+ con `0/100`. Reportar el campo `razon` y la lista `sugerencias` (subcomandos de
77
+ `/swl:status` que sí aplican aquí: `metricas`, `loops`, `evolucion`, `dashboard`).
78
+ Ofrecer ejecutar uno de ellos. Terminar sin penalizar el score.
79
+
80
+ **Carga**: `Skill("validacion-ci-sistema")` — contiene las reglas de validación
81
+ por componente (agentes, skills, hooks, comandos, reglas), la tabla de exit codes
82
+ y el checklist de integridad. Toda la lógica de verificación vive en el skill.
83
+
84
+ **Cuándo usar**: antes de iniciar proyecto nuevo, tras modificar agentes/skills
85
+ manualmente, tras merge/pull, o como mantenimiento mensual.
86
+
87
+ **Score global ponderado**:
88
+ ```
89
+ Score = agentes×0.30 + skills×0.25 + comandos×0.20 + reglas×0.15 + hooks×0.10
90
+ 90-100 Excelente · 75-89 Saludable · 60-74 Funcional · <60 Crítico
91
+ ```
92
+
93
+ **Pasos siempre activos**: inventario determinista, detección de tier del proyecto
94
+ (Simple <500 / Standard 500-5000 / Complex >5000 archivos), diagnóstico de los 5
95
+ componentes, y calidad de `CLAUDE.md` (ADR-0016):
96
+ ```bash
97
+ npx -y @saulwade/swl-ses@latest audit-claudemd --json
98
+ ```
99
+ Umbrales ajustables: `SWL_CLAUDEMD_MAX_LINES` (default 200),
100
+ `SWL_CLAUDEMD_MAX_BULLET_CHARS` (default 1000).
101
+
102
+ **Auditorías opt-in** (cada una se activa con su variable de entorno; si no está
103
+ definida, el paso se omite sin afectar el score — diseño zero-config):
104
+
105
+ | Variable | Qué audita | Comando |
106
+ |----------|-----------|---------|
107
+ | `SWL_AUDIT_SKILLS=1` | Prompt injection, secretos, URLs sospechosas y estructura en SKILL.md | `bash scripts/audit-skills.sh` (requiere `uv`) |
108
+ | `SWL_AUDIT_FRAMEWORKS=1` | Cobertura de NIST CSF/AI RMF, MITRE ATLAS/ATT&CK, D3FEND en skills de seguridad | `npx -y @saulwade/swl-ses@latest audit-coverage-frameworks --resumen` |
109
+ | `SWL_AUDIT_AGENTES=1` | Agentes sin Exclusion Clause o Gotchas (anti agent-hijacking) | `npx -y @saulwade/swl-ses@latest audit-agents-gaps --resumen` |
110
+
111
+ **Verificación de drift de skills** (si existe `manifiestos/skills-lock.json`):
112
+ ```bash
113
+ npx -y @saulwade/swl-ses@latest generate-skills-lock --check
114
+ ```
115
+
116
+ **Staleness de skills** (Fase 20): reportar los skills que tuvieron uso y se
117
+ **enfriaron** (último uso > `SWL_SKILL_STALE_DIAS`, default 90), leídos de
118
+ `.planning/skill-metrics.json`. Es la superficie temporal que los skills no tenían
119
+ (los instintos ya decaen). Los skills **nunca** usados NO se listan aquí (eso es
120
+ *bloat*, dominio aparte). El mismo aviso aparece de forma proactiva en el briefing
121
+ de sesión (recolector `skillsStale`, categoría `skill-stale`, opt-out
122
+ `SWL_SKILL_STALE=0`). Acción por skill frío: re-validar con `/swl:evaluar-skill <name>`.
123
+ En el repo host, la lista manual sale del subcomando `stale` de la lib de métricas
124
+ de skills (`skill-metrics`).
125
+
126
+ **Smoke test de MCP** (si hay servers en `.claude/settings.json` o configs globales):
127
+ ```bash
128
+ python scripts/mcp-orchestrator.py status --json 2>/dev/null
129
+ ```
130
+ Detecta drift de apiKeys (`40101`), binarios faltantes y `"env": {}` que rompe la
131
+ herencia de variables — antes de que fallen en uso interactivo.
132
+
133
+ Formato de salida enriquecido vía `scripts/lib/health-row.js` (barras Unicode;
134
+ respeta `NO_COLOR` y `SWL_ASCII_SIMPLE=1`). Genera `SALUD.md` con los datos
135
+ exactos de los scripts — sin ajustar el score "porque parece sano".
136
+
137
+ ---
138
+
139
+ ## Subcomando: `metricas`
140
+
141
+ Métricas acumuladas de la **sesión actual**: tokens, costo estimado USD, tool
142
+ calls y distribución por herramienta, más el estado del presupuesto configurado.
143
+
144
+ **Fuentes de datos**:
145
+ ```bash
146
+ # 1. Bridge de tracking de la sesión (generado por el hook de costos)
147
+ ls /tmp/swl-costs-*.json 2>/dev/null | sort -t- -k3 -n | tail -1
148
+ # 2. Métricas persistidas del proyecto
149
+ cat .planning/METRICAS.md 2>/dev/null || echo "(sin métricas previas)"
150
+ # 3. Presupuesto configurado
151
+ node -e "const c=require('./manifiestos/hooks-config.json').costBudget||{}; console.log('maxUsd:',c.maxUsd??'no configurado','| maxTokens:',c.maxTokens??'no configurado','| alertAt:',c.alertAt??'no configurado')"
152
+ ```
153
+
154
+ Construir el resumen con: tool calls totales, tokens, costo estimado, modelo
155
+ predominante, estado de presupuesto (`OK`/`ALERTA`/`EXCEDIDO`) y top 5
156
+ herramientas por costo. Si el estado es ALERTA (≥ `alertAt`), sugerir
157
+ `/swl:compactar`. Si EXCEDIDO, recomendar revisar `manifiestos/hooks-config.json`.
158
+
159
+ ### `metricas detalle`
160
+
161
+ Desglose completo: tabla por herramienta (calls, tokens entrada/salida, costo),
162
+ desglose por agente SWL desde `costePorAgente` del bridge, comparativa histórica
163
+ contra `~/.claude/usage.db` (últimos 30 días) y timeline de actividad por bloques
164
+ de 5 minutos.
165
+
166
+ ### `metricas fases`
167
+
168
+ Progreso de fases del proyecto. Regenera primero el JSON derivado de
169
+ `HOJA-RUTA.md` (fuente de verdad) y lo lee:
170
+ ```bash
171
+ swl-ses derivar-feature-list
172
+ cat .planning/feature-list.json
173
+ ```
174
+ Reporta totales por estado canónico (`completado`, `en_progreso`, `pendiente`,
175
+ `bloqueado`, `spec_listo`), lista de fases con marca visual y artefactos
176
+ presentes (`[PLAN]`/`[RESUMEN]`), y timestamp de generación. Detección de drift:
177
+ `node scripts/derivar-feature-list.js --check` (exit 2 si drift).
178
+
179
+ ### Notas de precisión
180
+
181
+ Los costos son estimaciones según precios publicados de la API de Anthropic. El
182
+ real varía por modelo efectivo, caché de prompt y región/plan. Para costos
183
+ exactos, el dashboard de Anthropic Console.
184
+
185
+ ---
186
+
187
+ ## Subcomando: `loops`
188
+
189
+ Trayectorias de loops iterativos registradas en `.planning/loops/`. Subcomando
190
+ del CLI (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`):
191
+ ```bash
192
+ swl-ses loop-telemetry listar
193
+ # fallback: npx -y @saulwade/swl-ses@latest loop-telemetry listar
194
+ ```
195
+ Reportar en tabla: corrida, iteraciones, keep/revert rate, métrica inicial →
196
+ final, plateau y status. Si una corrida activa muestra plateau, sugerir cerrarla
197
+ — iterar sin mejora quema tokens.
198
+
199
+ ---
200
+
201
+ ## Subcomando: `evolucion`
202
+
203
+ Estado del ciclo de auto-evolución en la ventana reciente (default 14 días).
204
+ Responde con datos a "¿el sistema está aprendiendo?".
205
+
206
+ **Flags**: `--json` (emite el JSON crudo de `metricas.json`), `--dias=N`
207
+ (ventana de N días), `--regenerar` (fuerza recomputo del hook).
208
+
209
+ **Paso 0 — métricas frescas** (si `--regenerar` o `metricas.json` > 24h).
210
+ Subcomando del CLI (resuelve cross-scope; ver `docs/invocacion-cli-cross-scope.md`):
211
+ ```bash
212
+ swl-ses ciclo-evolucion
213
+ # fallback: npx -y @saulwade/swl-ses@latest ciclo-evolucion
214
+ ```
215
+
216
+ **Paso 1 — cargar**:
217
+ ```bash
218
+ cat .planning/evolution/metricas.json
219
+ ```
220
+ Si no existe, ejecutar el regenerado; si sigue sin existir, reportar que el ciclo
221
+ no ha corrido aún.
222
+
223
+ **Dashboard** (formato humano) con secciones: health_score + badge, NUDGES
224
+ (emitidos/accionados/pendientes por tipo), INSTINTOS (proyecto/global/perfil),
225
+ AGENTES (runs/fallos/tasa), EVOLUCIONES (aplicadas/revertidas/rollback ratio),
226
+ CALIDAD CONDUCTUAL (fallos por tipo, reintentos, latencia), ALERTAS PERSISTENTES
227
+ y KERNEL (gobernanza: política evolvable, último ADR kernel, ratio
228
+ `evolvable=false`/total).
229
+
230
+ **Badges**: ≥90 🏆 Óptimo · ≥75 🥇 Saludable · ≥60 🥈 Parcial · ≥40 🥉 Esqueleto
231
+ · <40 ⚠️ Dormido.
232
+
233
+ **Recomendaciones contextuales** (máx 3, al final): bootstrap de instintos si
234
+ `instintos.proyecto==0` y `aprendizajes>10`; revisar alertas si `tasaAccion<0.3`;
235
+ candidatos a `/swl:evolucionar` si `tasaExito<70`; etc.
236
+
237
+ **Anti-substitution**: el archivo de métricas es **siempre**
238
+ `.planning/evolution/metricas.json` (nunca `.planning/metricas.json` ni variantes);
239
+ el hook que regenera es **siempre** `hooks/ciclo-evolucion.js` (etapa métricas, Fase 11); para forzar
240
+ regen usar el pipe `echo '{}' | node ...`, nunca `require()` directo.
241
+
242
+ **Response discipline**: con `--json`, la respuesta es el contenido crudo del
243
+ archivo, sin prosa.
244
+
245
+ ---
246
+
247
+ ## Subcomando: `dora`
248
+
249
+ Métricas DORA (DevOps Research and Assessment) del **proyecto destino** donde SWL
250
+ está instalado: deployment frequency, lead time for changes, change failure rate
251
+ y MTTR, cada una clasificada en elite/high/medium/low (umbrales DORA Report 2023).
252
+ Mide **velocidad de entrega**, ortogonal a la reliability en runtime de
253
+ `observabilidad-swl`/`sre-swl`. Solo lectura salvo el JSON de storage.
254
+
255
+ **Portabilidad** (D-15-01): deployment frequency + lead time se derivan de git
256
+ (tags de release + commits) y están **siempre** disponibles. Change failure rate
257
+ + MTTR requieren `gh` (GitHub CLI) autenticado; si `gh` falta, no está autenticado,
258
+ o el repo no tiene remoto GitHub, esas dos reportan "no disponible" **sin fallar**.
259
+
260
+ **Paso 0 — calcular/regenerar**:
261
+ ```bash
262
+ swl-ses metricas-dora --json [--dias=N]
263
+ ```
264
+ Regenera siempre que se invoque el subcomando (la medición es barata) o cuando se
265
+ pase `--dias=N` (ventana en días, default 30). El script persiste el informe en
266
+ `.planning/evolution/metricas-dora.json` (runtime, gitignored).
267
+
268
+ **Paso 1 — render**: presentar las 4 métricas con su valor y clasificación:
269
+
270
+ ```
271
+ Métricas DORA — ventana de 30 días
272
+
273
+ Deployment frequency: 2.30 deploys/semana [high]
274
+ Lead time (p50): 18.4 h [high]
275
+ Change failure rate: no disponible (gh ausente)
276
+ MTTR: no disponible (gh ausente)
277
+ ```
278
+
279
+ Reglas de render:
280
+ - Si una métrica git reporta `sinDatos: true` (proyecto sin tags de release),
281
+ mostrar "sin datos" — distinto de "frecuencia baja". El informe NO penaliza:
282
+ un proyecto sin releases no es "low", es "sin datos".
283
+ - Si `changeFailureRate`/`mttr` traen `disponible: false`, mostrar
284
+ "no disponible (gh ausente)" con la `razon` si ayuda — nunca como error.
285
+ - Tras el render, si CFR/MTTR no están disponibles, sugerir (1 línea) instalar y
286
+ autenticar `gh` para habilitarlas; no es obligatorio.
287
+
288
+ **Anti-substitution**: el archivo de storage es **siempre**
289
+ `.planning/evolution/metricas-dora.json` (nunca `metricas.json`, que es del ciclo
290
+ de evolución); el script es **siempre** `scripts/lib/metricas-dora.js`.
291
+
292
+ ---
293
+
294
+ ## Subcomando: `historico` / `dashboard`
295
+
296
+ Dashboard histórico multi-sesión vía `claude-usage` (vendored). Complementa
297
+ `metricas` (sesión actual) con perspectiva multi-sesión y gráficos interactivos.
298
+
299
+ **Carga**: `Skill("swl-dashboard")` con el subcomando indicado:
300
+ - (vacío) o `historico` → dashboard web (auto-detecta puerto: 8888, 9090, 9191…)
301
+ - `--port N` → fuerza un puerto
302
+ - `today` → resumen del día en terminal
303
+ - `stats` → estadísticas históricas all-time en terminal
304
+ - `scan` → solo sincroniza JSONL → SQLite sin abrir el dashboard
305
+
306
+ ### Integración con Mission Control (opt-in)
307
+
308
+ Dashboard web externo para orquestación de flotas de agentes. **Completamente
309
+ opcional** — el dashboard local funciona igual sin configurarlo.
310
+
311
+ | Variable | Descripción | Ejemplo |
312
+ |----------|-------------|---------|
313
+ | `SWL_MC_URL` | URL base de la instancia de MC | `http://localhost:3000` |
314
+ | `SWL_MC_TOKEN` | API key de MC (si hay auth) | `mc-key-abc123` |
315
+
316
+ - Con `SWL_MC_URL` definida: el comando detecta MC (vía `scripts/lib/mc-client.js`)
317
+ y ofrece redirigir al panel web. Si MC no responde en 2s, fallback graceful al
318
+ dashboard local con mensaje informativo (sin crash ni degradación silenciosa).
319
+ - Sin `SWL_MC_URL`: dashboard local sin cambios (zero-config).
320
+
321
+ Instalar MC (opcional): `git clone https://github.com/builderzlabs/mission-control`
322
+ → `docker compose up` (requiere Node ≥22, pnpm; genera su API key al primer
323
+ arranque). MC expone además un **servidor MCP con ~49 tools** (agentes, memoria,
324
+ soul, tareas, sesiones, tokens/costos, skills, cron, runs/evals). swl-ses **NO**
325
+ modifica `.claude/settings.json` automáticamente — el registro del MCP es manual.
326
+
327
+ **Seguridad**: el MCP de MC incluye tools de **escritura** (`mc_create_task`,
328
+ `mc_write_memory`, `mc_write_soul`…). Antes de activarlo, evaluar exposición de
329
+ red, permisos mínimos de la API key y confianza en los agentes que lo invocarán.
330
+ La regla `seguridad-agentes.md` recomienda documentarlo en
331
+ `.planning/MCP_REGISTRY.md`.
332
+
333
+ ---
334
+
335
+ ## Reglas de comportamiento
336
+
337
+ - `salud` y `evolucion` son **solo lectura** (salvo que `salud` genera `SALUD.md`).
338
+ Para corregir, usar `/swl:evolucionar`.
339
+ - Las verificaciones de `salud` son scripts deterministas — no usar juicio
340
+ subjetivo ni ajustar scores "porque parece sano".
341
+ - Los reportes opt-in de auditoría (`SWL_AUDIT_SKILLS`, `SWL_AUDIT_FRAMEWORKS`,
342
+ `SWL_AUDIT_AGENTES`) nunca bloquean el diagnóstico: si fallan (red,
343
+ dependencia, paquete no publicado), el flujo continúa.
344
+ - Respetar `--json` como salida cruda sin prosa donde aplique (`evolucion`).
345
+ - No reintroducir los comandos eliminados: este comando los reemplaza.