@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,358 +1,358 @@
1
- ---
2
- name: planear-fase
3
- description: Crea el PLAN.md ejecutable para una fase de desarrollo. Descompone la fase en tareas atómicas con dependencias explícitas, las agrupa en oleadas de ejecución paralela cuando es posible, y aplica verificación goal-backward para garantizar que el plan completo satisface los criterios de éxito definidos en CONTEXTO.md.
4
- version: "1.3.3"
5
- herramientasPermitidas: [Read, Write, Edit, Bash, Glob, Grep]
6
- exclusiones:
7
- - "No cargar si no existe CONTEXTO.md para la fase — ejecutar `discutir-fase` primero."
8
- - "No cargar para replanificar una tarea individual dentro de una fase ya en ejecución; eso es desviación moderada, manejar con `ejecutar-fase`."
9
- - "No cargar para generar backlog de producto o roadmap de alto nivel; usar `nuevo-proyecto` o conversar directamente con el usuario."
10
- - "No cargar si el usuario pide 'ajustar' el PLAN.md ya aprobado sin nueva información — cada modificación al plan aprobado debe pasar por discusión primero."
11
- evolvable: true # default para skill estandar
12
- ---
13
- # Habilidad: Planear Fase de Desarrollo
14
-
15
- ## Propósito
16
-
17
- Un plan ejecutable no es una lista de tareas — es un grafo de dependencias con
18
- criterios de verificación por tarea. Esta habilidad transforma el CONTEXTO.md de
19
- una fase en un PLAN.md que el agente ejecutor puede seguir sin ambigüedad y sin
20
- interrumpir al usuario para pedir aclaraciones.
21
-
22
- ## Cuándo activar
23
-
24
- - Después de ejecutar `discutir-fase` y tener CONTEXTO.md listo
25
- - Cuando el usuario pide "planear la fase N"
26
- - Cuando un plan existente necesita revisión o replanificación
27
-
28
- ## Cuándo NO cargar
29
-
30
- - No existe `.planning/fases/0N-CONTEXTO.md`; en ese caso usar `discutir-fase` antes. Un PLAN.md sin contexto es un plan con suposiciones implícitas.
31
- - El usuario pide ajustar el PLAN.md aprobado solo porque cambia de opinión en mitad de la ejecución — eso es desviación mayor que requiere pausa en `ejecutar-fase`, no re-planificación completa.
32
- - Se quiere generar únicamente un listado de tareas sin grafo de dependencias ni oleadas; ese backlog plano no es el producto de esta habilidad.
33
- - La fase ya completó todos sus slices y se busca solo actualizar HOJA-RUTA.md — eso lo hace `ejecutar-fase` al cerrar.
34
-
35
- ## Prerrequisito obligatorio
36
-
37
- Leer `.planning/fases/0N-CONTEXTO.md` antes de generar cualquier tarea. Si no existe,
38
- activar primero `discutir-fase`.
39
-
40
- ---
41
-
42
- ## Principios de descomposición
43
-
44
- ### 1. Atomicidad
45
-
46
- Una tarea es atómica si:
47
- - Puede completarse en una sola sesión de trabajo (< 2 horas de desarrollo)
48
- - Tiene un único criterio de verificación binario (funciona / no funciona)
49
- - Puede hacerse commit de forma independiente sin romper el sistema
50
-
51
- Si una tarea viola alguna de estas condiciones, subdividirla.
52
-
53
- ### 2. Dependencias explícitas
54
-
55
- Cada tarea declara sus dependencias en formato `[T-XX, T-YY]`. Una tarea sin
56
- dependencias puede ejecutarse en la primera oleada. El grafo NO puede tener ciclos.
57
-
58
- ### 3. Clasificación AFK / HITL
59
-
60
- | Tipo | Definición |
61
- |------|-----------|
62
- | AFK (autónoma) | El agente puede completarla sin intervención humana |
63
- | HITL (human-in-the-loop) | Requiere decisión, revisión o input del usuario |
64
-
65
- Las tareas HITL son puntos de parada obligatoria en la ejecución.
66
-
67
- ### 4. Oleadas de ejecución
68
-
69
- Agrupa tareas sin dependencias mutuas en la misma oleada. Las tareas de una
70
- oleada pueden ejecutarse en paralelo (o en secuencia rápida si el contexto lo
71
- requiere).
72
-
73
- ### 5. Estimación de commits — bloques funcionales, no archivos
74
-
75
- Al estimar la cantidad de commits que requerirá una fase, contar **bloques
76
- funcionales atómicos** (1 bloque = 1 commit), no archivos modificados. Un
77
- refactor que toca 25 archivos pero implementa 7 bloques funcionales coherentes
78
- genera 7 commits, no 25.
79
-
80
- **Heurística**:
81
-
82
- - Cada Bn (B1, B2, B3...) del plan = 1 commit atómico (incluye código + tests + manifests asociados)
83
- - Modificaciones cross-archivo en el MISMO bloque funcional van al MISMO commit
84
- - Tests del bloque van CON el bloque, no en commit separado (excepto TDD estricto)
85
- - Bump de versión + docs + CHANGELOG = 1 commit final aparte (B-final)
86
-
87
- **Anti-patrón observado** (sesión 2026-05-10, ADR-0016): estimación inicial
88
- "~12 commits, ~25 archivos" para Opción C completa. Resultado real: 7 commits,
89
- 25 archivos (1.7× sobreestimación de commits). La cuenta de archivos fue
90
- correcta; la de commits estaba inflada por contar "1 archivo nuevo = 1 commit"
91
- en vez de "1 bloque funcional = 1 commit".
92
-
93
- ---
94
-
95
- ## Algoritmo de construcción del plan
96
-
97
- **Paso 0 — Recopilar inteligencia del codebase (obligatorio)**
98
- ANTES de planear, investigar el código existente para que el plan sea auto-contenido:
99
-
100
- 1. Ejecutar `Grep` y `Glob` para encontrar archivos relacionados con la feature
101
- 2. Leer los archivos encontrados y extraer:
102
- - Patrones de implementación reales (con `archivo:línea`)
103
- - Convenciones de naming, imports, estructura de archivos
104
- - Tests existentes como referencia de estilo
105
- 3. Documentar en el PLAN.md bajo `## Inteligencia del codebase`:
106
- - **Patrones a imitar**: snippets reales del código existente con `archivo:línea`
107
- - **Archivos a modificar**: lista con propósito de cada cambio
108
- - **Dependencias relevantes**: versiones y APIs que se usarán
109
- - **Convenciones observadas**: naming, estructura, error handling del proyecto
110
-
111
- > El plan debe ser auto-contenido: el implementador puede ejecutar cada tarea
112
- > sin investigar el codebase por su cuenta ni tomar decisiones de diseño.
113
-
114
- **Paso 1 — Listar entregables**
115
- Del CONTEXTO.md, extraer todos los entregables (features, endpoints, componentes,
116
- migraciones, documentos).
117
-
118
- **Paso 2 — Identificar capas**
119
- Para cada entregable de software, descomponerlo en capas estándar:
120
- - Tipos e interfaces / esquemas
121
- - Modelos de datos y migraciones
122
- - Lógica de negocio (services)
123
- - Interfaz externa (endpoints / componentes UI)
124
- - Tests
125
- - Documentación
126
-
127
- **Paso 3 — Asignar dependencias**
128
- Aplicar regla: una capa no puede implementarse sin las capas de las que depende.
129
- Orden típico: tipos → modelos → services → endpoints → UI → tests.
130
-
131
- **Paso 4 — Agrupar en oleadas**
132
- Usar topological sort mental: la Oleada N contiene todas las tareas cuyas
133
- dependencias están en oleadas anteriores.
134
-
135
- **Paso 5 — Verificación goal-backward (matriz REQ×T)**
136
- Cuando el CONTEXTO.md tiene criterios con ID `REQ-NN:` (fases 10-11) o
137
- `REQ-<fase>-NN:` (namespaceados por fase, fases ≥12 — DT-IDS-NAMESPACE), el
138
- goal-backward deja de ser pregunta abierta y se vuelve **matriz verificable**:
139
-
140
- 1. Cada tarea declara `**Verifica REQ**: REQ-XX[, REQ-YY]` (qué criterios cubre).
141
- 2. El PLAN incluye la sección `## Matriz REQ×T` (tabla REQ → tareas que lo verifican).
142
- 3. **Todo REQ sin tarea = plan NO apto para aprobación** — agregar la tarea faltante
143
- o pedir al usuario retirar el REQ del CONTEXTO. `/swl:aprobar-plan` rechaza
144
- planes con REQ huérfanos.
145
- 4. Tareas sin REQ son válidas (infraestructura, refactor habilitante) pero la matriz
146
- las hace visibles.
147
- 5. **REQ verificable por inspección (config, CI, lint, docs) DEBE llevar la marca
148
- literal `(verificación: inspección)` en su criterio del CONTEXTO.** Sin esa
149
- marca, `verificar-trazabilidad.js` aplica el método por defecto (`test`) y exige
150
- un test con marker `verifica: REQ-NN`; un REQ satisfecho por ruff/CI/prosa pero
151
- sin esa anotación se reporta como **huérfano (REQ sin test)** aunque esté
152
- genuinamente cubierto. Si detectas un REQ de este tipo sin la marca, agrégala al
153
- CONTEXTO (`0N-CONTEXTO.md`) antes de construir la matriz — no inventes un test
154
- artificial para satisfacer al verificador.
155
-
156
- En CONTEXTOs legacy sin REQ-IDs (fases 01-09): aplicar la pregunta abierta clásica
157
- ("¿el criterio de éxito queda satisfecho?") — cláusula de gracia, sin matriz.
158
-
159
- **Formato de header de tarea — dos puntos, no em-dash.** Cada tarea se escribe
160
- `### T-NN:` (2-4 `#`, dos puntos tras el ID). `verificar-trazabilidad.js` parsea la
161
- matriz con `/^#{2,4}\s*T-\d{1,3}\s*:/`; un header `#### T-01 — Foo` (em-dash) deja
162
- la tarea **invisible** y sus REQ huérfanos sin causa aparente. El verificador emite
163
- un WARN explicando esto, pero el plan debe nacer con el separador correcto.
164
-
165
- ---
166
-
167
- ## Estructura del PLAN.md
168
-
169
- ```markdown
170
- # PLAN.md — Fase [N]: [Nombre]
171
- **Generado**: [fecha]
172
- **Basado en**: 0N-CONTEXTO.md
173
- **Criterio de éxito**: [copiado del CONTEXTO.md]
174
-
175
- ## Resumen del plan
176
- - Total de tareas: N
177
- - Oleadas: M
178
- - Tareas HITL: K (paradas de revisión)
179
- - Duración estimada: X horas / Y días
180
-
181
- ## Matriz REQ×T (si el CONTEXTO tiene REQ-IDs)
182
-
183
- | REQ | Tareas que lo verifican |
184
- |-----|------------------------|
185
- | REQ-01 | T-01, T-03 |
186
- | REQ-02 | T-02 |
187
-
188
- Todo REQ del CONTEXTO tiene ≥1 tarea. ✓
189
-
190
- ---
191
-
192
- ## Inteligencia del codebase
193
-
194
- ### Patrones a imitar
195
- | Patrón | Archivo:línea | Ejemplo |
196
- |--------|-------------|---------|
197
- | [nombre del patrón] | `src/services/ejemplo.py:42` | [snippet real del código] |
198
-
199
- ### Archivos a modificar
200
- | Archivo | Propósito del cambio |
201
- |---------|---------------------|
202
- | `src/...` | [qué se agrega/modifica y por qué] |
203
-
204
- ### Dependencias relevantes
205
- | Dependencia | Versión | API que se usa |
206
- |------------|---------|---------------|
207
- | [nombre] | [versión] | [funciones/clases] |
208
-
209
- ### Convenciones observadas
210
- - Naming: [convención real del proyecto]
211
- - Imports: [orden y estilo]
212
- - Error handling: [patrón usado]
213
- - Tests: [framework, estructura, naming]
214
-
215
- ---
216
-
217
- ## Oleada 1 — Fundamentos (sin dependencias)
218
-
219
- ### T-01: [Nombre de la tarea]
220
- - **Tipo**: AFK
221
- - **Verifica REQ**: REQ-01[, REQ-03 — omitir el campo solo en CONTEXTOs legacy sin REQ-IDs]
222
- - **Descripción**: [Qué hacer, sin ambigüedad. Incluir nombres de archivos si aplica.]
223
- - **Entregable verificable**: [Qué existe cuando está completa]
224
- - **Criterio de verificación**: [Comando de verificación o descripción observable]
225
- - **Dependencias**: ninguna
226
- - **Tiempo estimado**: 30 min
227
-
228
- ### T-02: [Nombre]
229
- - **Tipo**: AFK
230
- - **Descripción**:
231
- - **Entregable verificable**:
232
- - **Criterio de verificación**:
233
- - **Dependencias**: ninguna
234
- - **Tiempo estimado**:
235
-
236
- ---
237
-
238
- ## Oleada 2 — [Nombre conceptual]
239
-
240
- ### T-03: [Nombre]
241
- - **Tipo**: AFK
242
- - **Descripción**:
243
- - **Entregable verificable**:
244
- - **Criterio de verificación**:
245
- - **Dependencias**: [T-01, T-02]
246
- - **Tiempo estimado**:
247
-
248
- ---
249
-
250
- ## Oleada N — Verificación y cierre
251
-
252
- ### T-NN: Verificación goal-backward
253
- - **Tipo**: HITL
254
- - **Descripción**: Revisar que todos los criterios de éxito del CONTEXTO.md estén
255
- satisfechos. Presentar evidencia al usuario.
256
- - **Entregable verificable**: Reporte de verificación firmado
257
- - **Criterio de verificación**: Usuario confirma aprobación
258
- - **Dependencias**: [todas las tareas anteriores]
259
- - **Tiempo estimado**: 30 min
260
-
261
- ---
262
-
263
- ## Matriz de riesgos del plan
264
-
265
- | Tarea | Riesgo | Probabilidad | Mitigación |
266
- |-------|--------|-------------|-----------|
267
- | | | | |
268
-
269
- ## Tareas excluidas explícitamente
270
- - [Feature X]: diferida a siguiente fase por [razón]
271
-
272
- ## Notas de diseño del plan
273
- [Decisiones tomadas durante la planeación que el ejecutor debe conocer]
274
- ```
275
-
276
- ---
277
-
278
- ## Anti-patrones a evitar en el plan
279
-
280
- - **Tarea "Implementar módulo X"**: demasiado vaga, no atómica
281
- - **Dependencias circulares**: T-03 depende de T-05 que depende de T-03
282
- - **Tarea sin criterio de verificación**: no se puede saber si está hecha
283
- - **Plan sin oleada de verificación final**: el plan puede estar completo pero
284
- los criterios de éxito sin satisfacer
285
- - **Mezclar implementación y tests en una sola tarea**: deben ser tareas separadas
286
- - **Prosa narrativa que contradice el criterio de verificación de la tarea**:
287
- cuando la descripción dice una cosa y el criterio verificable dice otra,
288
- **el criterio manda** — es la autoridad más específica y comprobable [caso
289
- real F22·T-06, 2026-07-10: la prosa decía "un no-op puede spawnear" y el
290
- criterio exigía "no-op → detector NO corre"; el implementador resolvió a
291
- favor del criterio y documentó la ambigüedad]. El autor del plan debe
292
- auto-revisar esta consistencia; el ejecutor que la detecte resuelve por el
293
- criterio y registra la desviación — nunca elige en silencio
294
-
295
- ---
296
-
297
- ## Convivencia con placeholders previos del roadmap
298
-
299
- Si al iniciar la planeación de la Fase N existe un archivo legado tipo
300
- `PLAN-fase-N.md` (placeholder breve generado al definir el roadmap original),
301
- NO coexistir con el `0N-PLAN.md` recién generado. La presencia de dos archivos
302
- con scopes potencialmente contradictorios confunde a futuros lectores y agentes
303
- (observado en SIGM mayo 2026: placeholder de Fase 5 describía "Portal CMS" del
304
- roadmap v3.0 mientras `05-PLAN.md` ya describía "Complementarios" del roadmap v5.4).
305
-
306
- Acciones obligatorias al generar `0N-PLAN.md`:
307
-
308
- 1. Verificar si existe `PLAN-fase-N.md` placeholder en `.planning/fases/`.
309
- 2. Si existe y su scope coincide con el plan nuevo: eliminarlo (`git rm`) ya que
310
- `0N-PLAN.md` lo supersede con detalle real.
311
- 3. Si existe y su scope difiere del roadmap actual (señal de renumeración previa):
312
- eliminarlo y notificar al usuario que el placeholder estaba desincronizado.
313
- 4. Reportar en el output: "Placeholder previo eliminado: `PLAN-fase-N.md`" o
314
- "Sin placeholder previo detectado".
315
-
316
- Esto previene la deuda silenciosa de placeholders viejos coexistiendo con planes
317
- reales — patrón confirmado en auditoría de gaps SIGM 2026-05-09 que detectó 3
318
- placeholders desactualizados (`PLAN-fase-3/4/5.md`).
319
-
320
- ---
321
-
322
- ## Checklist antes de entregar el PLAN.md
323
-
324
- - [ ] Todas las tareas son atómicas (< 2 horas)
325
- - [ ] Todas las dependencias forman un DAG (sin ciclos)
326
- - [ ] Cada tarea tiene criterio de verificación binario
327
- - [ ] Las tareas HITL están identificadas y justificadas
328
- - [ ] La verificación goal-backward confirma que el plan satisface CONTEXTO.md
329
- - [ ] El plan está guardado en `.planning/fases/0N-PLAN.md`
330
-
331
- ---
332
-
333
- ## Gotchas / Errores comunes no obvios
334
-
335
- - **Plan sin Paso 0 (inteligencia del codebase)**: el agente genera tareas basadas en supuestos de estructura de archivos sin leer el codebase real. Causa: se omite el Paso 0 por urgencia. Solución: ejecutar `Grep` y `Glob` sobre los módulos que la fase tocará antes de escribir la primera tarea; los nombres de archivos en el PLAN.md deben ser rutas reales, no inventadas.
336
- - **Ciclo en el DAG de dependencias**: T-03 depende de T-05 que depende de T-03, imposibilitando cualquier oleada de inicio. Causa: se asignan dependencias sin verificar acyclicidad. Solución: hacer topological sort mental tras asignar dependencias; si aparece un ciclo, extraer la interfaz compartida como una tarea T-00 sin dependencias.
337
- - **Oleada de verificación final mezclada con implementación**: la tarea de verificación goal-backward se agrupa en la misma oleada que la última tarea de implementación, permitiendo que el ejecutor la omita. Causa: se trata la verificación como un paso más, no como una oleada separada. Solución: la oleada de verificación siempre es la última, con dependencias de todas las oleadas anteriores.
338
- - **Criterio de verificación observable por el ejecutor, no por el usuario**: el criterio dice "que funcione correctamente" en lugar de un comando ejecutable. Causa: redacción laxa. Solución: el criterio debe ser un comando concreto (`pytest tests/modulo/ -v`, `curl http://localhost:8000/endpoint`) o una observación binaria ("la tabla X aparece en alembic history").
339
- - **PLAN.md aprobado sin estado: aprobado en frontmatter**: el ejecutor inicia sin verificar que el plan está aprobado, lo que puede llevar a ejecutar un plan en borrador. Causa: el frontmatter no incluye `estado: aprobado`. Solución: agregar `estado: aprobado` al frontmatter antes de entregar al ejecutor, ya que `seguridad-agentes.md` exige esta verificación.
340
-
341
- ## Reglas anti-placeholder (obligatorio)
342
-
343
- Un plan con placeholders es un defecto. El implementador debe poder ejecutar cada tarea
344
- sin tomar decisiones de diseno ni pedir aclaraciones.
345
-
346
- ### Placeholders prohibidos
347
- - `TBD`, `PENDIENTE`, `por definir`, `implementar despues`
348
- - "agregar manejo de errores" (debe decir QUE errores y COMO)
349
- - "agregar validacion" (debe decir CUAL validacion con CUAL regla)
350
- - "similar a la tarea N" (debe repetir el contenido relevante)
351
- - "agregar tests apropiados" (debe especificar QUE tests con QUE escenarios)
352
- - Referencias a tipos/funciones no definidos en el plan
353
-
354
- ### Auto-revision antes de entregar
355
- 1. `grep -rni "TBD\|PENDIENTE\|por definir\|implementar despues" PLAN.md`
356
- 2. Cada tarea: el implementador puede ejecutarla sin preguntas?
357
- 3. Interfaces entre tareas: tipos y nombres consistentes?
358
- 4. Cada requisito tiene al menos una tarea?
1
+ ---
2
+ name: planear-fase
3
+ description: Crea el PLAN.md ejecutable para una fase de desarrollo. Descompone la fase en tareas atómicas con dependencias explícitas, las agrupa en oleadas de ejecución paralela cuando es posible, y aplica verificación goal-backward para garantizar que el plan completo satisface los criterios de éxito definidos en CONTEXTO.md.
4
+ version: "1.3.3"
5
+ herramientasPermitidas: [Read, Write, Edit, Bash, Glob, Grep]
6
+ exclusiones:
7
+ - "No cargar si no existe CONTEXTO.md para la fase — ejecutar `discutir-fase` primero."
8
+ - "No cargar para replanificar una tarea individual dentro de una fase ya en ejecución; eso es desviación moderada, manejar con `ejecutar-fase`."
9
+ - "No cargar para generar backlog de producto o roadmap de alto nivel; usar `nuevo-proyecto` o conversar directamente con el usuario."
10
+ - "No cargar si el usuario pide 'ajustar' el PLAN.md ya aprobado sin nueva información — cada modificación al plan aprobado debe pasar por discusión primero."
11
+ evolvable: true # default para skill estandar
12
+ ---
13
+ # Habilidad: Planear Fase de Desarrollo
14
+
15
+ ## Propósito
16
+
17
+ Un plan ejecutable no es una lista de tareas — es un grafo de dependencias con
18
+ criterios de verificación por tarea. Esta habilidad transforma el CONTEXTO.md de
19
+ una fase en un PLAN.md que el agente ejecutor puede seguir sin ambigüedad y sin
20
+ interrumpir al usuario para pedir aclaraciones.
21
+
22
+ ## Cuándo activar
23
+
24
+ - Después de ejecutar `discutir-fase` y tener CONTEXTO.md listo
25
+ - Cuando el usuario pide "planear la fase N"
26
+ - Cuando un plan existente necesita revisión o replanificación
27
+
28
+ ## Cuándo NO cargar
29
+
30
+ - No existe `.planning/fases/0N-CONTEXTO.md`; en ese caso usar `discutir-fase` antes. Un PLAN.md sin contexto es un plan con suposiciones implícitas.
31
+ - El usuario pide ajustar el PLAN.md aprobado solo porque cambia de opinión en mitad de la ejecución — eso es desviación mayor que requiere pausa en `ejecutar-fase`, no re-planificación completa.
32
+ - Se quiere generar únicamente un listado de tareas sin grafo de dependencias ni oleadas; ese backlog plano no es el producto de esta habilidad.
33
+ - La fase ya completó todos sus slices y se busca solo actualizar HOJA-RUTA.md — eso lo hace `ejecutar-fase` al cerrar.
34
+
35
+ ## Prerrequisito obligatorio
36
+
37
+ Leer `.planning/fases/0N-CONTEXTO.md` antes de generar cualquier tarea. Si no existe,
38
+ activar primero `discutir-fase`.
39
+
40
+ ---
41
+
42
+ ## Principios de descomposición
43
+
44
+ ### 1. Atomicidad
45
+
46
+ Una tarea es atómica si:
47
+ - Puede completarse en una sola sesión de trabajo (< 2 horas de desarrollo)
48
+ - Tiene un único criterio de verificación binario (funciona / no funciona)
49
+ - Puede hacerse commit de forma independiente sin romper el sistema
50
+
51
+ Si una tarea viola alguna de estas condiciones, subdividirla.
52
+
53
+ ### 2. Dependencias explícitas
54
+
55
+ Cada tarea declara sus dependencias en formato `[T-XX, T-YY]`. Una tarea sin
56
+ dependencias puede ejecutarse en la primera oleada. El grafo NO puede tener ciclos.
57
+
58
+ ### 3. Clasificación AFK / HITL
59
+
60
+ | Tipo | Definición |
61
+ |------|-----------|
62
+ | AFK (autónoma) | El agente puede completarla sin intervención humana |
63
+ | HITL (human-in-the-loop) | Requiere decisión, revisión o input del usuario |
64
+
65
+ Las tareas HITL son puntos de parada obligatoria en la ejecución.
66
+
67
+ ### 4. Oleadas de ejecución
68
+
69
+ Agrupa tareas sin dependencias mutuas en la misma oleada. Las tareas de una
70
+ oleada pueden ejecutarse en paralelo (o en secuencia rápida si el contexto lo
71
+ requiere).
72
+
73
+ ### 5. Estimación de commits — bloques funcionales, no archivos
74
+
75
+ Al estimar la cantidad de commits que requerirá una fase, contar **bloques
76
+ funcionales atómicos** (1 bloque = 1 commit), no archivos modificados. Un
77
+ refactor que toca 25 archivos pero implementa 7 bloques funcionales coherentes
78
+ genera 7 commits, no 25.
79
+
80
+ **Heurística**:
81
+
82
+ - Cada Bn (B1, B2, B3...) del plan = 1 commit atómico (incluye código + tests + manifests asociados)
83
+ - Modificaciones cross-archivo en el MISMO bloque funcional van al MISMO commit
84
+ - Tests del bloque van CON el bloque, no en commit separado (excepto TDD estricto)
85
+ - Bump de versión + docs + CHANGELOG = 1 commit final aparte (B-final)
86
+
87
+ **Anti-patrón observado** (sesión 2026-05-10, ADR-0016): estimación inicial
88
+ "~12 commits, ~25 archivos" para Opción C completa. Resultado real: 7 commits,
89
+ 25 archivos (1.7× sobreestimación de commits). La cuenta de archivos fue
90
+ correcta; la de commits estaba inflada por contar "1 archivo nuevo = 1 commit"
91
+ en vez de "1 bloque funcional = 1 commit".
92
+
93
+ ---
94
+
95
+ ## Algoritmo de construcción del plan
96
+
97
+ **Paso 0 — Recopilar inteligencia del codebase (obligatorio)**
98
+ ANTES de planear, investigar el código existente para que el plan sea auto-contenido:
99
+
100
+ 1. Ejecutar `Grep` y `Glob` para encontrar archivos relacionados con la feature
101
+ 2. Leer los archivos encontrados y extraer:
102
+ - Patrones de implementación reales (con `archivo:línea`)
103
+ - Convenciones de naming, imports, estructura de archivos
104
+ - Tests existentes como referencia de estilo
105
+ 3. Documentar en el PLAN.md bajo `## Inteligencia del codebase`:
106
+ - **Patrones a imitar**: snippets reales del código existente con `archivo:línea`
107
+ - **Archivos a modificar**: lista con propósito de cada cambio
108
+ - **Dependencias relevantes**: versiones y APIs que se usarán
109
+ - **Convenciones observadas**: naming, estructura, error handling del proyecto
110
+
111
+ > El plan debe ser auto-contenido: el implementador puede ejecutar cada tarea
112
+ > sin investigar el codebase por su cuenta ni tomar decisiones de diseño.
113
+
114
+ **Paso 1 — Listar entregables**
115
+ Del CONTEXTO.md, extraer todos los entregables (features, endpoints, componentes,
116
+ migraciones, documentos).
117
+
118
+ **Paso 2 — Identificar capas**
119
+ Para cada entregable de software, descomponerlo en capas estándar:
120
+ - Tipos e interfaces / esquemas
121
+ - Modelos de datos y migraciones
122
+ - Lógica de negocio (services)
123
+ - Interfaz externa (endpoints / componentes UI)
124
+ - Tests
125
+ - Documentación
126
+
127
+ **Paso 3 — Asignar dependencias**
128
+ Aplicar regla: una capa no puede implementarse sin las capas de las que depende.
129
+ Orden típico: tipos → modelos → services → endpoints → UI → tests.
130
+
131
+ **Paso 4 — Agrupar en oleadas**
132
+ Usar topological sort mental: la Oleada N contiene todas las tareas cuyas
133
+ dependencias están en oleadas anteriores.
134
+
135
+ **Paso 5 — Verificación goal-backward (matriz REQ×T)**
136
+ Cuando el CONTEXTO.md tiene criterios con ID `REQ-NN:` (fases 10-11) o
137
+ `REQ-<fase>-NN:` (namespaceados por fase, fases ≥12 — DT-IDS-NAMESPACE), el
138
+ goal-backward deja de ser pregunta abierta y se vuelve **matriz verificable**:
139
+
140
+ 1. Cada tarea declara `**Verifica REQ**: REQ-XX[, REQ-YY]` (qué criterios cubre).
141
+ 2. El PLAN incluye la sección `## Matriz REQ×T` (tabla REQ → tareas que lo verifican).
142
+ 3. **Todo REQ sin tarea = plan NO apto para aprobación** — agregar la tarea faltante
143
+ o pedir al usuario retirar el REQ del CONTEXTO. `/swl:aprobar-plan` rechaza
144
+ planes con REQ huérfanos.
145
+ 4. Tareas sin REQ son válidas (infraestructura, refactor habilitante) pero la matriz
146
+ las hace visibles.
147
+ 5. **REQ verificable por inspección (config, CI, lint, docs) DEBE llevar la marca
148
+ literal `(verificación: inspección)` en su criterio del CONTEXTO.** Sin esa
149
+ marca, `verificar-trazabilidad.js` aplica el método por defecto (`test`) y exige
150
+ un test con marker `verifica: REQ-NN`; un REQ satisfecho por ruff/CI/prosa pero
151
+ sin esa anotación se reporta como **huérfano (REQ sin test)** aunque esté
152
+ genuinamente cubierto. Si detectas un REQ de este tipo sin la marca, agrégala al
153
+ CONTEXTO (`0N-CONTEXTO.md`) antes de construir la matriz — no inventes un test
154
+ artificial para satisfacer al verificador.
155
+
156
+ En CONTEXTOs legacy sin REQ-IDs (fases 01-09): aplicar la pregunta abierta clásica
157
+ ("¿el criterio de éxito queda satisfecho?") — cláusula de gracia, sin matriz.
158
+
159
+ **Formato de header de tarea — dos puntos, no em-dash.** Cada tarea se escribe
160
+ `### T-NN:` (2-4 `#`, dos puntos tras el ID). `verificar-trazabilidad.js` parsea la
161
+ matriz con `/^#{2,4}\s*T-\d{1,3}\s*:/`; un header `#### T-01 — Foo` (em-dash) deja
162
+ la tarea **invisible** y sus REQ huérfanos sin causa aparente. El verificador emite
163
+ un WARN explicando esto, pero el plan debe nacer con el separador correcto.
164
+
165
+ ---
166
+
167
+ ## Estructura del PLAN.md
168
+
169
+ ```markdown
170
+ # PLAN.md — Fase [N]: [Nombre]
171
+ **Generado**: [fecha]
172
+ **Basado en**: 0N-CONTEXTO.md
173
+ **Criterio de éxito**: [copiado del CONTEXTO.md]
174
+
175
+ ## Resumen del plan
176
+ - Total de tareas: N
177
+ - Oleadas: M
178
+ - Tareas HITL: K (paradas de revisión)
179
+ - Duración estimada: X horas / Y días
180
+
181
+ ## Matriz REQ×T (si el CONTEXTO tiene REQ-IDs)
182
+
183
+ | REQ | Tareas que lo verifican |
184
+ |-----|------------------------|
185
+ | REQ-01 | T-01, T-03 |
186
+ | REQ-02 | T-02 |
187
+
188
+ Todo REQ del CONTEXTO tiene ≥1 tarea. ✓
189
+
190
+ ---
191
+
192
+ ## Inteligencia del codebase
193
+
194
+ ### Patrones a imitar
195
+ | Patrón | Archivo:línea | Ejemplo |
196
+ |--------|-------------|---------|
197
+ | [nombre del patrón] | `src/services/ejemplo.py:42` | [snippet real del código] |
198
+
199
+ ### Archivos a modificar
200
+ | Archivo | Propósito del cambio |
201
+ |---------|---------------------|
202
+ | `src/...` | [qué se agrega/modifica y por qué] |
203
+
204
+ ### Dependencias relevantes
205
+ | Dependencia | Versión | API que se usa |
206
+ |------------|---------|---------------|
207
+ | [nombre] | [versión] | [funciones/clases] |
208
+
209
+ ### Convenciones observadas
210
+ - Naming: [convención real del proyecto]
211
+ - Imports: [orden y estilo]
212
+ - Error handling: [patrón usado]
213
+ - Tests: [framework, estructura, naming]
214
+
215
+ ---
216
+
217
+ ## Oleada 1 — Fundamentos (sin dependencias)
218
+
219
+ ### T-01: [Nombre de la tarea]
220
+ - **Tipo**: AFK
221
+ - **Verifica REQ**: REQ-01[, REQ-03 — omitir el campo solo en CONTEXTOs legacy sin REQ-IDs]
222
+ - **Descripción**: [Qué hacer, sin ambigüedad. Incluir nombres de archivos si aplica.]
223
+ - **Entregable verificable**: [Qué existe cuando está completa]
224
+ - **Criterio de verificación**: [Comando de verificación o descripción observable]
225
+ - **Dependencias**: ninguna
226
+ - **Tiempo estimado**: 30 min
227
+
228
+ ### T-02: [Nombre]
229
+ - **Tipo**: AFK
230
+ - **Descripción**:
231
+ - **Entregable verificable**:
232
+ - **Criterio de verificación**:
233
+ - **Dependencias**: ninguna
234
+ - **Tiempo estimado**:
235
+
236
+ ---
237
+
238
+ ## Oleada 2 — [Nombre conceptual]
239
+
240
+ ### T-03: [Nombre]
241
+ - **Tipo**: AFK
242
+ - **Descripción**:
243
+ - **Entregable verificable**:
244
+ - **Criterio de verificación**:
245
+ - **Dependencias**: [T-01, T-02]
246
+ - **Tiempo estimado**:
247
+
248
+ ---
249
+
250
+ ## Oleada N — Verificación y cierre
251
+
252
+ ### T-NN: Verificación goal-backward
253
+ - **Tipo**: HITL
254
+ - **Descripción**: Revisar que todos los criterios de éxito del CONTEXTO.md estén
255
+ satisfechos. Presentar evidencia al usuario.
256
+ - **Entregable verificable**: Reporte de verificación firmado
257
+ - **Criterio de verificación**: Usuario confirma aprobación
258
+ - **Dependencias**: [todas las tareas anteriores]
259
+ - **Tiempo estimado**: 30 min
260
+
261
+ ---
262
+
263
+ ## Matriz de riesgos del plan
264
+
265
+ | Tarea | Riesgo | Probabilidad | Mitigación |
266
+ |-------|--------|-------------|-----------|
267
+ | | | | |
268
+
269
+ ## Tareas excluidas explícitamente
270
+ - [Feature X]: diferida a siguiente fase por [razón]
271
+
272
+ ## Notas de diseño del plan
273
+ [Decisiones tomadas durante la planeación que el ejecutor debe conocer]
274
+ ```
275
+
276
+ ---
277
+
278
+ ## Anti-patrones a evitar en el plan
279
+
280
+ - **Tarea "Implementar módulo X"**: demasiado vaga, no atómica
281
+ - **Dependencias circulares**: T-03 depende de T-05 que depende de T-03
282
+ - **Tarea sin criterio de verificación**: no se puede saber si está hecha
283
+ - **Plan sin oleada de verificación final**: el plan puede estar completo pero
284
+ los criterios de éxito sin satisfacer
285
+ - **Mezclar implementación y tests en una sola tarea**: deben ser tareas separadas
286
+ - **Prosa narrativa que contradice el criterio de verificación de la tarea**:
287
+ cuando la descripción dice una cosa y el criterio verificable dice otra,
288
+ **el criterio manda** — es la autoridad más específica y comprobable [caso
289
+ real F22·T-06, 2026-07-10: la prosa decía "un no-op puede spawnear" y el
290
+ criterio exigía "no-op → detector NO corre"; el implementador resolvió a
291
+ favor del criterio y documentó la ambigüedad]. El autor del plan debe
292
+ auto-revisar esta consistencia; el ejecutor que la detecte resuelve por el
293
+ criterio y registra la desviación — nunca elige en silencio
294
+
295
+ ---
296
+
297
+ ## Convivencia con placeholders previos del roadmap
298
+
299
+ Si al iniciar la planeación de la Fase N existe un archivo legado tipo
300
+ `PLAN-fase-N.md` (placeholder breve generado al definir el roadmap original),
301
+ NO coexistir con el `0N-PLAN.md` recién generado. La presencia de dos archivos
302
+ con scopes potencialmente contradictorios confunde a futuros lectores y agentes
303
+ (observado en SIGM mayo 2026: placeholder de Fase 5 describía "Portal CMS" del
304
+ roadmap v3.0 mientras `05-PLAN.md` ya describía "Complementarios" del roadmap v5.4).
305
+
306
+ Acciones obligatorias al generar `0N-PLAN.md`:
307
+
308
+ 1. Verificar si existe `PLAN-fase-N.md` placeholder en `.planning/fases/`.
309
+ 2. Si existe y su scope coincide con el plan nuevo: eliminarlo (`git rm`) ya que
310
+ `0N-PLAN.md` lo supersede con detalle real.
311
+ 3. Si existe y su scope difiere del roadmap actual (señal de renumeración previa):
312
+ eliminarlo y notificar al usuario que el placeholder estaba desincronizado.
313
+ 4. Reportar en el output: "Placeholder previo eliminado: `PLAN-fase-N.md`" o
314
+ "Sin placeholder previo detectado".
315
+
316
+ Esto previene la deuda silenciosa de placeholders viejos coexistiendo con planes
317
+ reales — patrón confirmado en auditoría de gaps SIGM 2026-05-09 que detectó 3
318
+ placeholders desactualizados (`PLAN-fase-3/4/5.md`).
319
+
320
+ ---
321
+
322
+ ## Checklist antes de entregar el PLAN.md
323
+
324
+ - [ ] Todas las tareas son atómicas (< 2 horas)
325
+ - [ ] Todas las dependencias forman un DAG (sin ciclos)
326
+ - [ ] Cada tarea tiene criterio de verificación binario
327
+ - [ ] Las tareas HITL están identificadas y justificadas
328
+ - [ ] La verificación goal-backward confirma que el plan satisface CONTEXTO.md
329
+ - [ ] El plan está guardado en `.planning/fases/0N-PLAN.md`
330
+
331
+ ---
332
+
333
+ ## Gotchas / Errores comunes no obvios
334
+
335
+ - **Plan sin Paso 0 (inteligencia del codebase)**: el agente genera tareas basadas en supuestos de estructura de archivos sin leer el codebase real. Causa: se omite el Paso 0 por urgencia. Solución: ejecutar `Grep` y `Glob` sobre los módulos que la fase tocará antes de escribir la primera tarea; los nombres de archivos en el PLAN.md deben ser rutas reales, no inventadas.
336
+ - **Ciclo en el DAG de dependencias**: T-03 depende de T-05 que depende de T-03, imposibilitando cualquier oleada de inicio. Causa: se asignan dependencias sin verificar acyclicidad. Solución: hacer topological sort mental tras asignar dependencias; si aparece un ciclo, extraer la interfaz compartida como una tarea T-00 sin dependencias.
337
+ - **Oleada de verificación final mezclada con implementación**: la tarea de verificación goal-backward se agrupa en la misma oleada que la última tarea de implementación, permitiendo que el ejecutor la omita. Causa: se trata la verificación como un paso más, no como una oleada separada. Solución: la oleada de verificación siempre es la última, con dependencias de todas las oleadas anteriores.
338
+ - **Criterio de verificación observable por el ejecutor, no por el usuario**: el criterio dice "que funcione correctamente" en lugar de un comando ejecutable. Causa: redacción laxa. Solución: el criterio debe ser un comando concreto (`pytest tests/modulo/ -v`, `curl http://localhost:8000/endpoint`) o una observación binaria ("la tabla X aparece en alembic history").
339
+ - **PLAN.md aprobado sin estado: aprobado en frontmatter**: el ejecutor inicia sin verificar que el plan está aprobado, lo que puede llevar a ejecutar un plan en borrador. Causa: el frontmatter no incluye `estado: aprobado`. Solución: agregar `estado: aprobado` al frontmatter antes de entregar al ejecutor, ya que `seguridad-agentes.md` exige esta verificación.
340
+
341
+ ## Reglas anti-placeholder (obligatorio)
342
+
343
+ Un plan con placeholders es un defecto. El implementador debe poder ejecutar cada tarea
344
+ sin tomar decisiones de diseno ni pedir aclaraciones.
345
+
346
+ ### Placeholders prohibidos
347
+ - `TBD`, `PENDIENTE`, `por definir`, `implementar despues`
348
+ - "agregar manejo de errores" (debe decir QUE errores y COMO)
349
+ - "agregar validacion" (debe decir CUAL validacion con CUAL regla)
350
+ - "similar a la tarea N" (debe repetir el contenido relevante)
351
+ - "agregar tests apropiados" (debe especificar QUE tests con QUE escenarios)
352
+ - Referencias a tipos/funciones no definidos en el plan
353
+
354
+ ### Auto-revision antes de entregar
355
+ 1. `grep -rni "TBD\|PENDIENTE\|por definir\|implementar despues" PLAN.md`
356
+ 2. Cada tarea: el implementador puede ejecutarla sin preguntas?
357
+ 3. Interfaces entre tareas: tipos y nombres consistentes?
358
+ 4. Cada requisito tiene al menos una tarea?