@saulwade/swl-ses 2.2.4 → 2.3.1

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 (325) hide show
  1. package/CLAUDE.md +48 -7
  2. package/README.md +3 -3
  3. package/agentes/accesibilidad-wcag-swl.md +690 -690
  4. package/agentes/arquitecto-swl.md +267 -267
  5. package/agentes/auto-evolucion-swl.md +908 -908
  6. package/agentes/backend-api-swl.md +472 -472
  7. package/agentes/backend-csharp-swl.md +420 -420
  8. package/agentes/backend-go-swl.md +390 -390
  9. package/agentes/backend-java-swl.md +281 -281
  10. package/agentes/backend-node-swl.md +479 -479
  11. package/agentes/backend-python-swl.md +605 -605
  12. package/agentes/backend-rust-swl.md +364 -364
  13. package/agentes/backend-workers-swl.md +482 -482
  14. package/agentes/cloud-infra-swl.md +509 -509
  15. package/agentes/consolidador-swl.md +541 -541
  16. package/agentes/datos-swl.md +605 -605
  17. package/agentes/depurador-swl.md +352 -352
  18. package/agentes/devops-ci-swl.md +400 -400
  19. package/agentes/disenador-ui-swl.md +569 -569
  20. package/agentes/documentador-swl.md +345 -345
  21. package/agentes/frontend-angular-swl.md +621 -621
  22. package/agentes/frontend-css-swl.md +716 -716
  23. package/agentes/frontend-react-swl.md +692 -692
  24. package/agentes/frontend-swl.md +496 -496
  25. package/agentes/frontend-tailwind-swl.md +826 -826
  26. package/agentes/gh-fix-ci-swl.md +2 -2
  27. package/agentes/implementador-swl.md +328 -328
  28. package/agentes/investigador-swl.md +432 -432
  29. package/agentes/investigador-ux-swl.md +505 -505
  30. package/agentes/llm-apps-swl.md +278 -278
  31. package/agentes/migrador-swl.md +442 -442
  32. package/agentes/mobile-android-swl.md +511 -511
  33. package/agentes/mobile-cross-swl.md +541 -541
  34. package/agentes/mobile-ios-swl.md +502 -502
  35. package/agentes/mobile-testing-swl.md +302 -302
  36. package/agentes/nemesis-auditor-swl.md +285 -285
  37. package/agentes/notificador-swl.md +918 -918
  38. package/agentes/observabilidad-swl.md +438 -438
  39. package/agentes/orquestador-swl.md +1026 -1026
  40. package/agentes/pagos-swl.md +310 -310
  41. package/agentes/perfilador-usuario-swl.md +321 -321
  42. package/agentes/planificador-swl.md +399 -399
  43. package/agentes/producto-prd-swl.md +589 -589
  44. package/agentes/red-team-swl.md +1 -1
  45. package/agentes/release-manager-swl.md +590 -590
  46. package/agentes/rendimiento-swl.md +713 -713
  47. package/agentes/resolutor-build-swl.md +245 -245
  48. package/agentes/revisor-angular-swl.md +278 -278
  49. package/agentes/revisor-codigo-swl.md +505 -505
  50. package/agentes/revisor-csharp-swl.md +264 -264
  51. package/agentes/revisor-go-swl.md +259 -259
  52. package/agentes/revisor-java-swl.md +257 -257
  53. package/agentes/revisor-kotlin-swl.md +273 -273
  54. package/agentes/revisor-nextjs-swl.md +281 -281
  55. package/agentes/revisor-php-swl.md +271 -271
  56. package/agentes/revisor-react-swl.md +278 -278
  57. package/agentes/revisor-rust-swl.md +346 -346
  58. package/agentes/revisor-seguridad-swl.md +399 -399
  59. package/agentes/revisor-swift-swl.md +268 -268
  60. package/agentes/revisor-typescript-swl.md +346 -346
  61. package/agentes/sre-swl.md +291 -291
  62. package/agentes/tdd-qa-swl.md +393 -393
  63. package/comandos/swl/aprobar-plan.md +146 -141
  64. package/comandos/swl/briefing.md +119 -119
  65. package/comandos/swl/contribuir.md +233 -233
  66. package/comandos/swl/predecir.md +139 -139
  67. package/comandos/swl/release.md +30 -8
  68. package/comandos/swl/sesiones.md +1 -1
  69. package/comandos/swl/status.md +343 -333
  70. package/gateway/agent-executor.js +1 -1
  71. package/gateway/lib/event-channel.js +191 -191
  72. package/habilidades/agent-deep-links/SKILL.md +148 -148
  73. package/habilidades/agentes-como-servicio/SKILL.md +2 -2
  74. package/habilidades/angular-moderno/SKILL.md +20 -1
  75. package/habilidades/auto-evolucion-protocolo/SKILL.md +276 -276
  76. package/habilidades/backend-async-postgres-testing/SKILL.md +215 -215
  77. package/habilidades/backend-error-design/SKILL.md +221 -221
  78. package/habilidades/backend-production-resilience/SKILL.md +288 -288
  79. package/habilidades/benchmark-memoria/SKILL.md +186 -186
  80. package/habilidades/calidad-anti-patrones-universales/SKILL.md +368 -368
  81. package/habilidades/calidad-contract-testing/SKILL.md +165 -165
  82. package/habilidades/calidad-mutation-testing/SKILL.md +170 -170
  83. package/habilidades/changelog-generator/scripts/parse-commits.js +367 -367
  84. package/habilidades/checklist-seguridad/recursos/stride-cobertura.md +60 -60
  85. package/habilidades/contenedores-docker/SKILL.md +3 -1
  86. package/habilidades/diagrama-arquitectura/assets/template.html +276 -276
  87. package/habilidades/doubt-driven-review/recursos/EXAMPLES.md +130 -130
  88. package/habilidades/drift-detection/SKILL.md +179 -179
  89. package/habilidades/ejecutar-fase/SKILL.md +564 -541
  90. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
  91. package/habilidades/estructura-proyecto-claude/recursos/frontmatter-y-hooks-referencia.md +1 -1
  92. package/habilidades/estructura-proyecto-claude/recursos/mcp-json-template.json +57 -57
  93. package/habilidades/eval-framework/SKILL.md +212 -212
  94. package/habilidades/extractor-de-aprendizajes/SKILL.md +3 -3
  95. package/habilidades/feynman-auditor-swl/recursos/preguntas-language-agnostic.md +108 -108
  96. package/habilidades/harness-claude-code/recursos/disciplina-harness-regla.md +252 -252
  97. package/habilidades/legacy-code-rescue/SKILL.md +267 -267
  98. package/habilidades/meta-skills-estandar/recursos/convencion-examples.md +93 -93
  99. package/habilidades/patrones-python/recursos/patrones-avanzados.md +469 -469
  100. package/habilidades/perfil-usuario/SKILL.md +200 -200
  101. package/habilidades/planear-fase/SKILL.md +15 -1
  102. package/habilidades/prevencion-sobreingenieria/recursos/EXAMPLES.md +580 -580
  103. package/habilidades/proceso-ddia-fundamentos/SKILL.md +255 -255
  104. package/habilidades/proceso-ddia-streaming/SKILL.md +231 -231
  105. package/habilidades/proceso-debate-adversarial/SKILL.md +191 -164
  106. package/habilidades/proceso-debate-adversarial/recursos/personas.md +105 -105
  107. package/habilidades/proceso-discovery-machote/SKILL.md +157 -157
  108. package/habilidades/proceso-dynamic-workflows/SKILL.md +138 -138
  109. package/habilidades/proceso-dynamic-workflows/recursos/template-adversarial-verify.js +65 -65
  110. package/habilidades/proceso-dynamic-workflows/recursos/template-triage.js +65 -65
  111. package/habilidades/proceso-intent-engineering/SKILL.md +269 -269
  112. package/habilidades/proceso-modular-split/SKILL.md +256 -256
  113. package/habilidades/prompt-engineering/recursos/patrones-avanzados.md +2 -2
  114. package/habilidades/state-inconsistency-auditor-swl/recursos/coupled-state-patterns.md +147 -147
  115. package/habilidades/structured-outputs/SKILL.md +2 -2
  116. package/habilidades/swl-claudemd/recursos/contrato-aprender.md +83 -83
  117. package/habilidades/swl-claudemd/recursos/duplicacion-reglas-globales.md +85 -85
  118. package/habilidades/swl-claudemd/recursos/plantillas-init.md +94 -94
  119. package/habilidades/swl-dashboard/SKILL.md +2 -2
  120. package/habilidades/tdd-workflow/SKILL.md +33 -1
  121. package/habilidades/tdd-workflow/recursos/gherkin-bdd.md +111 -111
  122. package/habilidades/validacion-ci-sistema/recursos/validadores-completos.md +1 -1
  123. package/habilidades/validacion-ci-sistema/scripts/validar-sistema.sh +1 -1
  124. package/hooks/captura-acciones-post.js +151 -0
  125. package/hooks/captura-acciones-session.js +155 -0
  126. package/hooks/ciclo-evolucion-subagente.js +26 -26
  127. package/hooks/ciclo-evolucion.js +26 -26
  128. package/hooks/claudemd-bloat-detector.js +161 -161
  129. package/hooks/claudemd-duplicacion-detector.js +170 -170
  130. package/hooks/contexto-iteracion.js +144 -144
  131. package/hooks/guardrail-modelo.js +1 -1
  132. package/hooks/lib/agent-routing.js +107 -107
  133. package/hooks/lib/auto-consolidator.js +335 -335
  134. package/hooks/lib/autonomia.js +208 -208
  135. package/hooks/lib/briefing.js +512 -474
  136. package/hooks/lib/captura-acciones.js +392 -0
  137. package/hooks/lib/ciclo-evolucion.js +47 -47
  138. package/hooks/lib/deep-links.js +185 -185
  139. package/hooks/lib/error-classifier.js +308 -308
  140. package/hooks/lib/etapa-auto-evolucion.js +701 -701
  141. package/hooks/lib/etapa-metricas.js +388 -388
  142. package/hooks/lib/etapa-perfil-usuario.js +376 -376
  143. package/hooks/lib/loop-telemetry.js +321 -321
  144. package/hooks/lib/merkle-audit.js +96 -96
  145. package/hooks/lib/model-router.js +2 -2
  146. package/hooks/lib/propose-step.js +358 -358
  147. package/hooks/lib/provenance-tracker.js +191 -191
  148. package/hooks/lib/rate-limit-tracker.js +253 -253
  149. package/hooks/lib/resource-quota.js +122 -122
  150. package/hooks/lib/retry-jitter.js +165 -165
  151. package/hooks/lib/security-net.js +201 -201
  152. package/hooks/lib/skill-auditor.js +588 -588
  153. package/hooks/lib/sync-status.js +228 -228
  154. package/hooks/lib/taint-tracker.js +107 -107
  155. package/hooks/lib/text-similarity.js +241 -241
  156. package/hooks/lib/token-estimator.js +1 -0
  157. package/hooks/lib/toon-compressor.js +245 -245
  158. package/hooks/lib/usage-model.js +1 -1
  159. package/hooks/linea-estado.js +2 -0
  160. package/hooks/registro-turnos.js +209 -209
  161. package/hooks/session-briefing.js +98 -98
  162. package/hooks/spec-gate.js +211 -211
  163. package/hooks/sugerir-regenerar-inventario.js +170 -170
  164. package/hooks/tdd-gate.js +241 -241
  165. package/hooks/telemetria-skill-routing.js +100 -100
  166. package/hooks/validar-formato-post-subagente.js +140 -140
  167. package/hooks/validar-intent-spec.js +242 -242
  168. package/hooks/validar-memoria-hook.js +218 -218
  169. package/hooks/validar-planning-paths.js +134 -134
  170. package/instintos/autonomia.yaml +27 -27
  171. package/instintos/prompt-appendices.yaml +57 -57
  172. package/llms.txt +2 -2
  173. package/manifiestos/agent-output-schemas.json +57 -57
  174. package/manifiestos/canonical-hashes.json +2291 -1637
  175. package/manifiestos/hooks-config.json +18 -0
  176. package/manifiestos/modulos.json +4 -0
  177. package/manifiestos/planning-paths.json +44 -44
  178. package/manifiestos/skills-lock.json +1282 -1282
  179. package/package.json +2 -2
  180. package/plantillas/auditor-veto-template.md +105 -105
  181. package/plantillas/github-workflows/README.md +47 -47
  182. package/plantillas/github-workflows/release-please.yml +44 -44
  183. package/plantillas/github-workflows/swl-ci.yml +107 -107
  184. package/plantillas/github-workflows/swl-security.yml +51 -51
  185. package/plugin.json +2 -2
  186. package/reglas/accesibilidad.md +10 -10
  187. package/reglas/analisis-previo-tareas-grandes.md +172 -172
  188. package/reglas/api-diseno.md +9 -9
  189. package/reglas/arreglar-al-detectar.md +240 -240
  190. package/reglas/auditorias-documentales-estructurales.md +7 -7
  191. package/reglas/cloud-infra.md +8 -8
  192. package/reglas/consultar-vault-primero.md +195 -195
  193. package/reglas/debatir-antes-de-aceptar.md +158 -158
  194. package/reglas/fragmentos-compartidos.md +183 -183
  195. package/reglas/hooks.md +6 -6
  196. package/reglas/intent-engineering.md +218 -218
  197. package/reglas/markitdown.md +8 -8
  198. package/reglas/memoria-consolidada.md +41 -0
  199. package/reglas/monitor-ci.md +309 -309
  200. package/reglas/patrones.md +6 -6
  201. package/reglas/seguridad-agentes.md +66 -0
  202. package/reglas/sesiones-paralelas.md +180 -180
  203. package/reglas/sin-duplicacion-reglas-globales.md +182 -182
  204. package/reglas/skills-estandar.md +6 -6
  205. package/reglas/testing.md +7 -7
  206. package/reglas/tests-cleanup.md +224 -224
  207. package/reglas/usar-code-review-graph.md +155 -155
  208. package/reglas/usar-context7.md +226 -226
  209. package/reglas/verificar-citas-normativas.md +548 -548
  210. package/schemas/agent-frontmatter.schema.json +3 -3
  211. package/schemas/agent-message.schema.json +73 -73
  212. package/schemas/agent-output-implementacion.schema.json +114 -114
  213. package/schemas/agent-output-planificacion.schema.json +150 -150
  214. package/schemas/agent-output-review.schema.json +98 -98
  215. package/schemas/diary-entry.schema.json +112 -112
  216. package/schemas/hook-profiles.schema.json +54 -54
  217. package/schemas/hooks-config.schema.json +89 -89
  218. package/schemas/instinct.schema.json +161 -152
  219. package/schemas/modulos.schema.json +38 -38
  220. package/schemas/perfiles.schema.json +36 -36
  221. package/schemas/plugin.schema.json +77 -77
  222. package/schemas/skill-evals.schema.json +119 -119
  223. package/schemas/skill-frontmatter.schema.json +245 -245
  224. package/scripts/audit-tools/audit-history.js +330 -330
  225. package/scripts/audit-tools/bundle-tracker.js +290 -290
  226. package/scripts/audit-tools/canary-monitor.js +352 -352
  227. package/scripts/audit-tools/code-profiler.js +605 -605
  228. package/scripts/audit-tools/dep-doctor.js +320 -320
  229. package/scripts/audit-tools/env-validator.js +206 -206
  230. package/scripts/audit-tools/lib/fs-walk.js +48 -48
  231. package/scripts/audit-tools/lib/output.js +23 -23
  232. package/scripts/audit-tools/migration-checker.js +392 -392
  233. package/scripts/audit-tools/pentest-scanner.js +1436 -1436
  234. package/scripts/benchmark-memoria.js +167 -167
  235. package/scripts/bootstrap-instintos.js +25 -7
  236. package/scripts/cli/aprobar-plan.js +73 -73
  237. package/scripts/cli/briefing.js +23 -23
  238. package/scripts/cli/ciclo-evolucion.js +26 -26
  239. package/scripts/cli/configurar-ci.js +40 -40
  240. package/scripts/cli/derivar-feature-list.js +25 -25
  241. package/scripts/cli/detectar-host.js +27 -27
  242. package/scripts/cli/diary-entry.js +69 -69
  243. package/scripts/cli/execution-state.js +18 -18
  244. package/scripts/cli/gateway-notify.js +41 -41
  245. package/scripts/cli/liberar-fase.js +42 -42
  246. package/scripts/cli/loop-telemetry.js +125 -125
  247. package/scripts/cli/mark-evolved.js +56 -56
  248. package/scripts/cli/metricas-dora.js +26 -26
  249. package/scripts/cli/near-duplicate.js +55 -55
  250. package/scripts/cli/notificaciones.js +123 -123
  251. package/scripts/cli/propose-step.js +29 -29
  252. package/scripts/cli/schedule-parse.js +19 -19
  253. package/scripts/cli/sugerir-modelo.js +20 -20
  254. package/scripts/cli/verificar-plan.js +36 -36
  255. package/scripts/cli/verificar-trazabilidad.js +35 -35
  256. package/scripts/configurar-branch-protection.js +418 -418
  257. package/scripts/detectar-aprendizajes-duplicados.js +151 -151
  258. package/scripts/field-report.js +199 -199
  259. package/scripts/generar-checklists-consolidados.js +273 -273
  260. package/scripts/generar-matriz-lenguajes.js +271 -271
  261. package/scripts/lib/artefactos-python.js +43 -43
  262. package/scripts/lib/auditar-invocaciones-comandos.js +104 -104
  263. package/scripts/lib/benchmark-metrics.js +160 -160
  264. package/scripts/lib/budget-enforcer.js +252 -252
  265. package/scripts/lib/ci-reader.js +193 -193
  266. package/scripts/lib/claude-sessions.js +1 -0
  267. package/scripts/lib/configurar-ci.js +380 -380
  268. package/scripts/lib/contadores-inventario.js +217 -217
  269. package/scripts/lib/detectar-host-swl.js +175 -175
  270. package/scripts/lib/detectar-stack-detallado.js +307 -307
  271. package/scripts/lib/detector-autoduplicacion-intra-archivo.js +234 -234
  272. package/scripts/lib/detector-reglas-duplicadas.js +220 -220
  273. package/scripts/lib/diary-entry.js +234 -234
  274. package/scripts/lib/eval-metrics-store.js +218 -218
  275. package/scripts/lib/eval-quality.js +171 -171
  276. package/scripts/lib/eval-schemas.js +144 -144
  277. package/scripts/lib/eval-self-correct.js +106 -106
  278. package/scripts/lib/eval-validator.js +185 -185
  279. package/scripts/lib/evidencia-release.js +322 -322
  280. package/scripts/lib/expandir-targets.js +71 -71
  281. package/scripts/lib/gate-hooks-requires.js +249 -249
  282. package/scripts/lib/gate-licencias.js +212 -212
  283. package/scripts/lib/git-metricas.js +257 -257
  284. package/scripts/lib/gitignore-manifest.js +44 -11
  285. package/scripts/lib/jaccard-similarity.js +98 -98
  286. package/scripts/lib/longmemeval-runner.js +125 -125
  287. package/scripts/lib/metricas-dora.js +204 -204
  288. package/scripts/lib/npm-version.js +261 -261
  289. package/scripts/lib/paquetes-conocidos.js +50 -50
  290. package/scripts/lib/plan-lock.js +275 -275
  291. package/scripts/lib/pr-analyzer.js +399 -399
  292. package/scripts/lib/prompt-builder.js +264 -264
  293. package/scripts/lib/reglas-globales-conocidas.json +180 -180
  294. package/scripts/lib/resolver-plan-fase.js +37 -37
  295. package/scripts/lib/rrf-fusion.js +175 -175
  296. package/scripts/lib/schema-version.js +164 -164
  297. package/scripts/lib/scoring-instintos.js +277 -277
  298. package/scripts/lib/semantic-search.js +252 -252
  299. package/scripts/lib/skill-metrics.js +41 -1
  300. package/scripts/lib/toml-merge.js +204 -204
  301. package/scripts/lib/tool-cost-analyzer.js +1 -0
  302. package/scripts/limpiar-artefactos-python.js +131 -131
  303. package/scripts/mcp-server/auth.js +105 -105
  304. package/scripts/mcp-server/cache.js +106 -106
  305. package/scripts/migrar-csv-a-array.js +168 -168
  306. package/scripts/migrar-fase-dominio.js +200 -200
  307. package/scripts/publicar.js +497 -497
  308. package/scripts/run-eval.js +141 -141
  309. package/scripts/tui/componentes/selector-multi.js +189 -189
  310. package/scripts/tui/componentes/selector-unico.js +158 -158
  311. package/scripts/tui/ejecutores.js +375 -375
  312. package/scripts/tui/index.js +162 -162
  313. package/scripts/tui/lib/colores.js +129 -129
  314. package/scripts/tui/lib/render.js +264 -264
  315. package/scripts/tui/lib/teclas.js +113 -113
  316. package/scripts/tui/pantallas/inspect.js +173 -173
  317. package/scripts/tui/pantallas/install-wizard.js +334 -334
  318. package/scripts/tui/pantallas/menu-principal.js +52 -52
  319. package/scripts/tui/pantallas/progreso.js +274 -274
  320. package/scripts/tui/pantallas/resumen.js +132 -132
  321. package/scripts/tui/pantallas/uninstall-wizard.js +208 -208
  322. package/scripts/tui/pantallas/update-wizard.js +232 -232
  323. package/scripts/tui/pantallas/welcome.js +187 -187
  324. package/scripts/validar-userland-vacio.js +110 -110
  325. package/scripts/verificar-trazabilidad.js +329 -298
@@ -1,157 +1,157 @@
1
- ---
2
- name: proceso-discovery-machote
3
- description: >
4
- Patrón de discovery para modelar entidades regulatorias (papeles de trabajo,
5
- cédulas, oficios, informes, expedientes, actas, dictámenes). Antes de modelar
6
- desde el Artículo legal, pedir al usuario el machote oficial real (template
7
- institucional). El Art. define el mínimo normativo; el machote revela el
8
- contrato institucional real con prácticas no codificadas pero exigidas.
9
- Cargar al iniciar la modelación de cualquier entidad nueva que represente
10
- un documento normativo emitido por una institución regulatoria (OIC, INE,
11
- SAT, etc.), durante /swl:discutir-fase de un módulo regulatorio, o cuando
12
- el usuario rechaza un primer diseño por "faltan campos del documento real".
13
- version: "1.0.0"
14
- herramientasPermitidas: [Read, Grep, Glob]
15
- exclusiones:
16
- - "No cargar para entidades NO regulatorias (productos, usuarios, sesiones, eventos de log) — el machote no aplica a entidades de aplicación generales."
17
- - "No cargar cuando el modelo de la entidad ya está estabilizado y solo se va a agregar 1-2 campos — el discovery completo es overhead innecesario para ajustes pequeños."
18
- - "No cargar para refactor de entidad existente que ya tiene 6+ meses en producción — el machote ya se consolidó implícitamente en el modelo; cualquier diferencia es decisión de evolución, no de discovery."
19
- - "No cargar para CRUD administrativo simple (catálogos, configuraciones) — esos no tienen contrato institucional rico; cargar `discutir-fase` regular."
20
- evolvable: true
21
- ---
22
-
23
- # Proceso Discovery Machote
24
-
25
- Patrón obligatorio antes de modelar entidades regulatorias.
26
-
27
- ## Cuándo NO cargar
28
-
29
- - La entidad NO es regulatoria (un producto de catálogo, una sesión de usuario, un evento de log).
30
- - El modelo ya está estabilizado en producción y solo se agregan 1-2 campos.
31
- - Es refactor de entidad consolidada (≥6 meses prod) — cargar reglas de refactor, no de discovery.
32
- - Es CRUD administrativo simple sin contrato institucional rico.
33
-
34
- ## El gap conceptual
35
-
36
- **El Artículo legal define el mínimo normativo. El machote oficial revela el contrato institucional real.**
37
-
38
- Caso real SIGAF ADR-081 IPHI (2026-05-15). El Informe de Presunta Hipótesis de Irregularidad (IPHI) se modeló inicialmente desde Art. 44 DBC_FISC_OIC, que enumera 10 fracciones (I-X) de contenido obligatorio:
39
-
40
- > Art. 44. El informe contendrá:
41
- > I. Antecedentes
42
- > II. Marco normativo
43
- > III. Hechos
44
- > IV. Análisis
45
- > V. Presunto daño patrimonial
46
- > VI. Cuantificación del daño
47
- > VII. Sujetos involucrados
48
- > VIII. Pruebas documentales
49
- > IX. Conclusiones
50
- > X. Auditores que intervinieron
51
-
52
- Modelo Pydantic + tabla SQL creados con esas 10 secciones. Commit inicial Fase 1.
53
-
54
- Tras Fase 1, el usuario proporcionó el machote oficial real `OIC-DATIC-02-ESP-2025-IPHI-01.docx`. Reveló **7 extensiones institucionales NO presentes en Art. 44**:
55
-
56
- | # | Extensión del machote | NO está en Art. 44 |
57
- |---|---|---|
58
- | 1 | Distinción `presunto_dano_patrimonial` (directo) vs `perjuicio_total_estimado` (agregado: daño + depreciación + costo oportunidad) | Art. 44 fracción V/VI no distinguen |
59
- | 2 | Observaciones origen N:M con `hallazgo_identificador` (tabla puente `iphi_observacion_origen`) | Art. 44 no define la relación |
60
- | 3 | `procedimientos_contratacion_relacionados` JSONB (lista de LP-INE asociadas) | No aparece en el Art. |
61
- | 4 | `normas_infringidas` JSONB estructurado `[{norma, articulo, contenido}]` | Art. 44 dice "marco normativo" sin estructura |
62
- | 5 | `desglose_dano_patrimonial` JSONB (auditabilidad del cálculo) | No exigido por Art. |
63
- | 6 | Estructura específica de `antecedentes` JSONB con 6 sub-secciones | Art. 44 dice "antecedentes" sin desglose |
64
- | 7 | Roles claros de `auditores_integrantes`: Elaboró/Revisó/Supervisó/Autorizó mapeando a flujo VBO de 3 niveles | Art. 44 dice "auditores que intervinieron" sin roles |
65
-
66
- Refactor de Fase 1 = ~600 LOC de cambios + 1 tabla puente nueva + modelo Pydantic re-estructurado. Si el machote hubiera estado disponible al inicio, ese refactor no existiría.
67
-
68
- ## El patrón
69
-
70
- ### Paso 1: identificar si la entidad es regulatoria
71
-
72
- Una entidad es regulatoria cuando representa un **documento normativo emitido por una institución**:
73
-
74
- - Papel de trabajo (de auditoría).
75
- - Cédula (preliminar, definitiva, observación derivada).
76
- - Oficio (de investigación, de notificación, de respuesta).
77
- - Informe (de hipótesis, de irregularidad, de auditoría).
78
- - Acta (de inicio, de hechos, de cierre).
79
- - Dictamen.
80
- - Expediente (con composición fija de documentos).
81
- - Resolución.
82
-
83
- NO es regulatoria:
84
- - Producto de catálogo, usuario, sesión, configuración.
85
- - Evento de log o auditoría técnica.
86
- - Entidad transaccional puramente operacional (pago, factura interna).
87
-
88
- ### Paso 2: durante /swl:discutir-fase, preguntar explícitamente
89
-
90
- Antes de modelar la entidad, plantear al usuario las 3 preguntas:
91
-
92
- 1. **¿Existe un machote oficial real del documento?** (formato Word/PDF emitido por la institución, no template generado por el equipo).
93
- 2. **¿Existe un Artículo legal o Reglamento que defina el contenido obligatorio?** (cita exacta del Art.).
94
- 3. **Si solo hay Art., ¿hay práctica institucional documentada (manuales operativos, guías, ejemplos previos)?**
95
-
96
- Estados posibles del discovery:
97
-
98
- | Machote | Art. legal | Acción |
99
- |---|---|---|
100
- | ✅ Disponible | ✅ Disponible | Modelar desde machote + verificar que cubre todos los puntos del Art. (el Art. es el mínimo, el machote es el contrato real). |
101
- | ✅ Disponible | ❌ No disponible | Modelar desde machote. Marcar campos como "exigidos por práctica institucional, sin base legal explícita". |
102
- | ❌ No disponible | ✅ Disponible | Modelar desde Art. con marca explícita "modelo derivado solo del Art. — pendiente de validar contra machote oficial cuando el usuario lo proporcione". Crear DT formal `DT-MODELO-{ENTIDAD}-MACHOTE-PENDIENTE` con criterio de disparo: "modelo se considera estable cuando el machote oficial confirme o requiera ajustes". |
103
- | ❌ No disponible | ❌ No disponible | Escalar al usuario: "No hay fuente oficial ni machote — ¿la entidad existe como tal? ¿O debería modelarse como entidad de aplicación sin contrato institucional?". |
104
-
105
- ### Paso 3: extraer del machote, no del modelo mental
106
-
107
- Cuando el machote esté disponible, leerlo COMPLETO con `markitdown` (regla global `markitdown.md` para .docx/.pdf):
108
-
109
- ```bash
110
- markitdown OIC-DATIC-02-ESP-2025-IPHI-01.docx > /tmp/machote-iphi.md
111
- ```
112
-
113
- Auditar cada sección visible:
114
-
115
- - **Tablas estructuradas**: cada fila/columna → posible columna de la entidad o tabla puente.
116
- - **Campos repetidos con formato uniforme**: posible tipo enum o catálogo.
117
- - **Secciones con sub-secciones**: posible JSONB estructurado.
118
- - **Espacios para firma/aprobación**: posible flujo de estados (VBO, aprobación multi-nivel).
119
- - **Numeración de párrafos**: posible array o relación 1:N.
120
- - **Referencias a otros documentos**: posibles FKs a otras entidades.
121
-
122
- NO inferir campos del modelo mental — extraer literal del machote.
123
-
124
- ### Paso 4: registrar la divergencia Art. ↔ machote
125
-
126
- En el ADR de la entidad (o sección `### Modelo derivado` del schema):
127
-
128
- ```markdown
129
- ## Origen del modelo
130
-
131
- **Artículo legal**: DBC_FISC_OIC Art. 44 (10 fracciones I-X).
132
- **Machote oficial**: OIC-DATIC-02-ESP-2025-IPHI-01.docx (~25 páginas).
133
-
134
- **Extensiones del machote sobre el Art.**:
135
- 1. `perjuicio_total_estimado` distinto de `presunto_dano_patrimonial`.
136
- 2. Observaciones origen N:M con `hallazgo_identificador`.
137
- 3. `procedimientos_contratacion_relacionados` JSONB.
138
- 4. ...
139
-
140
- **Cobertura**: el modelo cubre 100% del Art. 44 + 7 extensiones del machote.
141
- **Divergencia**: cuando el Art. y el machote contradicen, prevalece el machote (es el contrato real de la institución).
142
- ```
143
-
144
- ## Anti-patrones
145
-
146
- - **Modelar desde solo el Art. legal sin pedir el machote** — el modelo cubre el mínimo legal pero pierde 30-50% del contenido institucional real. Refactor garantizado cuando aparezca el machote.
147
- - **Modelar desde un machote sin verificar contra el Art.** — riesgo de campos derivados de versiones obsoletas del documento. El Art. es la fuente de verdad legal; el machote puede tener campos "heredados" de versiones previas.
148
- - **Asumir que el machote está internalizado en el modelo del equipo** — el equipo del agente NO tiene el machote en su contexto entrenado. Pedirlo explícitamente al usuario; no inferir.
149
- - **Diferir el machote a "después del MVP"** — el refactor para incorporar el machote en una entidad regulatoria es 80% reescritura del modelo + cascada a schemas Pydantic + frontend forms. NO es post-MVP barato.
150
- - **Aceptar un machote en formato propietario sin convertirlo a markdown legible** — abrir el Word/PDF directamente lleva al modelo a olvidar campos. Convertir SIEMPRE con `markitdown` y auditar el markdown resultante.
151
-
152
- ## Gotchas / Errores comunes no obvios
153
-
154
- - **El machote tiene campos "sólo para impresión" que NO son datos de la entidad**: encabezados con logos, secciones de "Para uso oficial", footers. Esos NO van al modelo. Discriminar mientras se audita el markdown extraído.
155
- - **El machote tiene campos calculados o derivados que SE ALMACENAN para auditoría**: ej. `perjuicio_total_estimado` se calcula desde 3 sumandos pero se persiste explícitamente porque el documento legal lo cita como cifra. Almacenar como columna calculada con backfill o como dato denormalizado con trigger de recálculo.
156
- - **El machote evoluciona entre años fiscales** (`OIC-DATIC-02-ESP-2024-...` vs `OIC-DATIC-02-ESP-2025-...`): el modelo debe versionar el contrato. Agregar `machote_version: str` a la entidad para registrar contra qué versión se emitió cada documento. Migrar es costoso si no se versiona desde el inicio.
157
- - **El usuario puede proporcionar un machote "informal" que es solo un Word con texto libre**: discriminar entre machote oficial (emitido por la institución con código de documento, fecha de actualización, autoridad emisora) vs borrador interno del equipo. El borrador NO es contrato — usar Art. como base con DT formal.
1
+ ---
2
+ name: proceso-discovery-machote
3
+ description: >
4
+ Patrón de discovery para modelar entidades regulatorias (papeles de trabajo,
5
+ cédulas, oficios, informes, expedientes, actas, dictámenes). Antes de modelar
6
+ desde el Artículo legal, pedir al usuario el machote oficial real (template
7
+ institucional). El Art. define el mínimo normativo; el machote revela el
8
+ contrato institucional real con prácticas no codificadas pero exigidas.
9
+ Cargar al iniciar la modelación de cualquier entidad nueva que represente
10
+ un documento normativo emitido por una institución regulatoria (OIC, INE,
11
+ SAT, etc.), durante /swl:discutir-fase de un módulo regulatorio, o cuando
12
+ el usuario rechaza un primer diseño por "faltan campos del documento real".
13
+ version: "1.0.0"
14
+ herramientasPermitidas: [Read, Grep, Glob]
15
+ exclusiones:
16
+ - "No cargar para entidades NO regulatorias (productos, usuarios, sesiones, eventos de log) — el machote no aplica a entidades de aplicación generales."
17
+ - "No cargar cuando el modelo de la entidad ya está estabilizado y solo se va a agregar 1-2 campos — el discovery completo es overhead innecesario para ajustes pequeños."
18
+ - "No cargar para refactor de entidad existente que ya tiene 6+ meses en producción — el machote ya se consolidó implícitamente en el modelo; cualquier diferencia es decisión de evolución, no de discovery."
19
+ - "No cargar para CRUD administrativo simple (catálogos, configuraciones) — esos no tienen contrato institucional rico; cargar `discutir-fase` regular."
20
+ evolvable: true
21
+ ---
22
+
23
+ # Proceso Discovery Machote
24
+
25
+ Patrón obligatorio antes de modelar entidades regulatorias.
26
+
27
+ ## Cuándo NO cargar
28
+
29
+ - La entidad NO es regulatoria (un producto de catálogo, una sesión de usuario, un evento de log).
30
+ - El modelo ya está estabilizado en producción y solo se agregan 1-2 campos.
31
+ - Es refactor de entidad consolidada (≥6 meses prod) — cargar reglas de refactor, no de discovery.
32
+ - Es CRUD administrativo simple sin contrato institucional rico.
33
+
34
+ ## El gap conceptual
35
+
36
+ **El Artículo legal define el mínimo normativo. El machote oficial revela el contrato institucional real.**
37
+
38
+ Caso real SIGAF ADR-081 IPHI (2026-05-15). El Informe de Presunta Hipótesis de Irregularidad (IPHI) se modeló inicialmente desde Art. 44 DBC_FISC_OIC, que enumera 10 fracciones (I-X) de contenido obligatorio:
39
+
40
+ > Art. 44. El informe contendrá:
41
+ > I. Antecedentes
42
+ > II. Marco normativo
43
+ > III. Hechos
44
+ > IV. Análisis
45
+ > V. Presunto daño patrimonial
46
+ > VI. Cuantificación del daño
47
+ > VII. Sujetos involucrados
48
+ > VIII. Pruebas documentales
49
+ > IX. Conclusiones
50
+ > X. Auditores que intervinieron
51
+
52
+ Modelo Pydantic + tabla SQL creados con esas 10 secciones. Commit inicial Fase 1.
53
+
54
+ Tras Fase 1, el usuario proporcionó el machote oficial real `OIC-DATIC-02-ESP-2025-IPHI-01.docx`. Reveló **7 extensiones institucionales NO presentes en Art. 44**:
55
+
56
+ | # | Extensión del machote | NO está en Art. 44 |
57
+ |---|---|---|
58
+ | 1 | Distinción `presunto_dano_patrimonial` (directo) vs `perjuicio_total_estimado` (agregado: daño + depreciación + costo oportunidad) | Art. 44 fracción V/VI no distinguen |
59
+ | 2 | Observaciones origen N:M con `hallazgo_identificador` (tabla puente `iphi_observacion_origen`) | Art. 44 no define la relación |
60
+ | 3 | `procedimientos_contratacion_relacionados` JSONB (lista de LP-INE asociadas) | No aparece en el Art. |
61
+ | 4 | `normas_infringidas` JSONB estructurado `[{norma, articulo, contenido}]` | Art. 44 dice "marco normativo" sin estructura |
62
+ | 5 | `desglose_dano_patrimonial` JSONB (auditabilidad del cálculo) | No exigido por Art. |
63
+ | 6 | Estructura específica de `antecedentes` JSONB con 6 sub-secciones | Art. 44 dice "antecedentes" sin desglose |
64
+ | 7 | Roles claros de `auditores_integrantes`: Elaboró/Revisó/Supervisó/Autorizó mapeando a flujo VBO de 3 niveles | Art. 44 dice "auditores que intervinieron" sin roles |
65
+
66
+ Refactor de Fase 1 = ~600 LOC de cambios + 1 tabla puente nueva + modelo Pydantic re-estructurado. Si el machote hubiera estado disponible al inicio, ese refactor no existiría.
67
+
68
+ ## El patrón
69
+
70
+ ### Paso 1: identificar si la entidad es regulatoria
71
+
72
+ Una entidad es regulatoria cuando representa un **documento normativo emitido por una institución**:
73
+
74
+ - Papel de trabajo (de auditoría).
75
+ - Cédula (preliminar, definitiva, observación derivada).
76
+ - Oficio (de investigación, de notificación, de respuesta).
77
+ - Informe (de hipótesis, de irregularidad, de auditoría).
78
+ - Acta (de inicio, de hechos, de cierre).
79
+ - Dictamen.
80
+ - Expediente (con composición fija de documentos).
81
+ - Resolución.
82
+
83
+ NO es regulatoria:
84
+ - Producto de catálogo, usuario, sesión, configuración.
85
+ - Evento de log o auditoría técnica.
86
+ - Entidad transaccional puramente operacional (pago, factura interna).
87
+
88
+ ### Paso 2: durante /swl:discutir-fase, preguntar explícitamente
89
+
90
+ Antes de modelar la entidad, plantear al usuario las 3 preguntas:
91
+
92
+ 1. **¿Existe un machote oficial real del documento?** (formato Word/PDF emitido por la institución, no template generado por el equipo).
93
+ 2. **¿Existe un Artículo legal o Reglamento que defina el contenido obligatorio?** (cita exacta del Art.).
94
+ 3. **Si solo hay Art., ¿hay práctica institucional documentada (manuales operativos, guías, ejemplos previos)?**
95
+
96
+ Estados posibles del discovery:
97
+
98
+ | Machote | Art. legal | Acción |
99
+ |---|---|---|
100
+ | ✅ Disponible | ✅ Disponible | Modelar desde machote + verificar que cubre todos los puntos del Art. (el Art. es el mínimo, el machote es el contrato real). |
101
+ | ✅ Disponible | ❌ No disponible | Modelar desde machote. Marcar campos como "exigidos por práctica institucional, sin base legal explícita". |
102
+ | ❌ No disponible | ✅ Disponible | Modelar desde Art. con marca explícita "modelo derivado solo del Art. — pendiente de validar contra machote oficial cuando el usuario lo proporcione". Crear DT formal `DT-MODELO-{ENTIDAD}-MACHOTE-PENDIENTE` con criterio de disparo: "modelo se considera estable cuando el machote oficial confirme o requiera ajustes". |
103
+ | ❌ No disponible | ❌ No disponible | Escalar al usuario: "No hay fuente oficial ni machote — ¿la entidad existe como tal? ¿O debería modelarse como entidad de aplicación sin contrato institucional?". |
104
+
105
+ ### Paso 3: extraer del machote, no del modelo mental
106
+
107
+ Cuando el machote esté disponible, leerlo COMPLETO con `markitdown` (regla global `markitdown.md` para .docx/.pdf):
108
+
109
+ ```bash
110
+ markitdown OIC-DATIC-02-ESP-2025-IPHI-01.docx > /tmp/machote-iphi.md
111
+ ```
112
+
113
+ Auditar cada sección visible:
114
+
115
+ - **Tablas estructuradas**: cada fila/columna → posible columna de la entidad o tabla puente.
116
+ - **Campos repetidos con formato uniforme**: posible tipo enum o catálogo.
117
+ - **Secciones con sub-secciones**: posible JSONB estructurado.
118
+ - **Espacios para firma/aprobación**: posible flujo de estados (VBO, aprobación multi-nivel).
119
+ - **Numeración de párrafos**: posible array o relación 1:N.
120
+ - **Referencias a otros documentos**: posibles FKs a otras entidades.
121
+
122
+ NO inferir campos del modelo mental — extraer literal del machote.
123
+
124
+ ### Paso 4: registrar la divergencia Art. ↔ machote
125
+
126
+ En el ADR de la entidad (o sección `### Modelo derivado` del schema):
127
+
128
+ ```markdown
129
+ ## Origen del modelo
130
+
131
+ **Artículo legal**: DBC_FISC_OIC Art. 44 (10 fracciones I-X).
132
+ **Machote oficial**: OIC-DATIC-02-ESP-2025-IPHI-01.docx (~25 páginas).
133
+
134
+ **Extensiones del machote sobre el Art.**:
135
+ 1. `perjuicio_total_estimado` distinto de `presunto_dano_patrimonial`.
136
+ 2. Observaciones origen N:M con `hallazgo_identificador`.
137
+ 3. `procedimientos_contratacion_relacionados` JSONB.
138
+ 4. ...
139
+
140
+ **Cobertura**: el modelo cubre 100% del Art. 44 + 7 extensiones del machote.
141
+ **Divergencia**: cuando el Art. y el machote contradicen, prevalece el machote (es el contrato real de la institución).
142
+ ```
143
+
144
+ ## Anti-patrones
145
+
146
+ - **Modelar desde solo el Art. legal sin pedir el machote** — el modelo cubre el mínimo legal pero pierde 30-50% del contenido institucional real. Refactor garantizado cuando aparezca el machote.
147
+ - **Modelar desde un machote sin verificar contra el Art.** — riesgo de campos derivados de versiones obsoletas del documento. El Art. es la fuente de verdad legal; el machote puede tener campos "heredados" de versiones previas.
148
+ - **Asumir que el machote está internalizado en el modelo del equipo** — el equipo del agente NO tiene el machote en su contexto entrenado. Pedirlo explícitamente al usuario; no inferir.
149
+ - **Diferir el machote a "después del MVP"** — el refactor para incorporar el machote en una entidad regulatoria es 80% reescritura del modelo + cascada a schemas Pydantic + frontend forms. NO es post-MVP barato.
150
+ - **Aceptar un machote en formato propietario sin convertirlo a markdown legible** — abrir el Word/PDF directamente lleva al modelo a olvidar campos. Convertir SIEMPRE con `markitdown` y auditar el markdown resultante.
151
+
152
+ ## Gotchas / Errores comunes no obvios
153
+
154
+ - **El machote tiene campos "sólo para impresión" que NO son datos de la entidad**: encabezados con logos, secciones de "Para uso oficial", footers. Esos NO van al modelo. Discriminar mientras se audita el markdown extraído.
155
+ - **El machote tiene campos calculados o derivados que SE ALMACENAN para auditoría**: ej. `perjuicio_total_estimado` se calcula desde 3 sumandos pero se persiste explícitamente porque el documento legal lo cita como cifra. Almacenar como columna calculada con backfill o como dato denormalizado con trigger de recálculo.
156
+ - **El machote evoluciona entre años fiscales** (`OIC-DATIC-02-ESP-2024-...` vs `OIC-DATIC-02-ESP-2025-...`): el modelo debe versionar el contrato. Agregar `machote_version: str` a la entidad para registrar contra qué versión se emitió cada documento. Migrar es costoso si no se versiona desde el inicio.
157
+ - **El usuario puede proporcionar un machote "informal" que es solo un Word con texto libre**: discriminar entre machote oficial (emitido por la institución con código de documento, fecha de actualización, autoridad emisora) vs borrador interno del equipo. El borrador NO es contrato — usar Art. como base con DT formal.
@@ -1,138 +1,138 @@
1
- ---
2
- name: proceso-dynamic-workflows
3
- description: >
4
- Patrones canónicos de dynamic workflows en Claude Code (Workflow tool / ultracode):
5
- classify-and-act, fan-out-and-synthesize, adversarial-verification, generate-and-filter,
6
- tournament. Cubre los 3 modos de falla que justifican orquestar (agentic laziness,
7
- self-preferential bias, goal drift), cuándo NO usar workflows, token budgets, revisión
8
- cross-modelo, y el anti-patrón de envolver skills auto-iterantes en /loop|/cron. Cargar
9
- cuando se diseñe una orquestación multi-agente, se decida si una tarea amerita workflow,
10
- o se quiera empaquetar un workflow como plantilla reutilizable en un skill.
11
- when_to_use: >
12
- Usar cuando el usuario diga "ultracode", "workflow", "orquesta esto", "fan-out", "panel
13
- de revisores", "tournament", o cuando una tarea sea larga, masivamente paralela o
14
- adversarial y un solo context window sufra laziness/goal-drift.
15
- herramientasPermitidas: [Read, Grep, Glob]
16
- exclusiones:
17
- - "No cargar para tareas de codificación normales de un solo paso — la mayoría NO necesitan un workflow; el harness por defecto basta y un workflow gasta muchos más tokens."
18
- - "No cargar para el detalle de evaluator-optimizer del nemesis — eso vive en nemesis-evaluacion-json y el comando /swl:nemesis."
19
- - "No cargar para escribir el .js de un workflow concreto — este skill da los patrones; el script se escribe con el Workflow tool directamente."
20
- ---
21
-
22
- # Dynamic workflows: patrones, modos de falla y cuándo orquestar
23
-
24
- Síntesis del blog oficial de Anthropic *"A harness for every task: dynamic workflows
25
- in Claude Code"* + patrones validados en swl-ses (nemesis evaluator-optimizer,
26
- `/swl:verificar --until-converge`, `/swl:autoresearch`). Un dynamic workflow deja que
27
- Claude escriba su propio harness (JS que coordina subagentes con ventanas aisladas).
28
-
29
- ## Cuándo cargar
30
-
31
- - Se va a diseñar una orquestación multi-agente o decidir si una tarea amerita workflow.
32
- - La tarea es larga, masivamente paralela, o adversarial (review, research, migración, triage).
33
- - Se quiere empaquetar un workflow como plantilla reutilizable en un skill.
34
-
35
- ## Cuándo NO cargar
36
-
37
- - Tarea de codificación normal de 1-2 archivos — el harness por defecto basta. Un workflow
38
- gasta significativamente más tokens; la mayoría de tareas de coding NO necesitan un panel
39
- de 5 revisores.
40
- - Ya estás dentro del detalle del nemesis (`nemesis-evaluacion-json`).
41
- - Solo necesitas escribir el `.js` — usa el Workflow tool directo con los patrones de abajo.
42
-
43
- ## Los 3 modos de falla que JUSTIFICAN orquestar
44
-
45
- Un solo context window largo degrada de tres formas — nombrarlas guía cuándo separar Claudes:
46
-
47
- 1. **Agentic laziness** — Claude se detiene antes de terminar una tarea multi-parte y la
48
- declara hecha con progreso parcial (ej. 20 de 50 ítems de un security review). Mitiga:
49
- fan-out (un subagente por ítem, ventana limpia) + `/goal` (requisito de completitud duro).
50
- 2. **Self-preferential bias** — Claude prefiere sus propios resultados al verificarlos contra
51
- un rubric. Mitiga: **adversarial-verification** con subagente separado, y mejor aún
52
- **revisión cross-modelo** (el reviewer es OTRO modelo). Es el mismo principio que
53
- `gobernanza.md § Separación revisor/ejecutor`.
54
- 3. **Goal drift** — pérdida gradual de fidelidad al objetivo tras muchos turnos y compaction
55
- (cada resumen es lossy; se pierde "no hagas X"). Mitiga: subagentes con goal aislado y
56
- constraints explícitas por invocación; `/goal` como ancla.
57
-
58
- ## Los 5 patrones canónicos
59
-
60
- | Patrón | Cuándo | Forma |
61
- |--------|--------|-------|
62
- | **Classify-and-act** | Rutear según tipo de tarea/ítem | Clasificador → ramas distintas (al inicio o al final para decidir output) |
63
- | **Fan-out-and-synthesize** | Muchos sub-pasos; cada uno se beneficia de ventana limpia sin cross-contaminación | N agentes en paralelo → barrier → synthesize merge. **Default** para descomponer |
64
- | **Adversarial-verification** | Evitar self-preferential bias | Por cada agente, un agente separado verifica su output contra rubric. Diversificar lentes |
65
- | **Generate-and-filter** | Espacio de ideas amplio (taste-based) | Generar N → filtrar por rubric/verificación → dedupe → solo las mejores probadas |
66
- | **Tournament** | Solución taste-based con criterio | N agentes compiten con enfoques distintos → juez pairwise hasta ganador |
67
-
68
- `pipeline()` (sin barrier entre stages) es el default; usa barrier (`parallel()` entre
69
- stages) SOLO cuando el stage N necesita TODOS los resultados del N-1 (dedup global,
70
- early-exit por conteo cero, comparación cruzada).
71
-
72
- ## Revisión cross-modelo (combate self-preferential bias estructuralmente)
73
-
74
- El reviewer adversarial en el MISMO modelo aún arrastra sesgo. La mejora: **executor en un
75
- modelo, reviewer en otro** (Claude ejecuta → Gemini/Codex/otro revisa). Patrón de ARIS
76
- (`mcp-servers/gemini-review`): MCP que expone `review`/`review_reply`, devuelve JSON con
77
- `threadId` + `response` → rastro auditable de un veredicto independiente.
78
-
79
- En swl-ses esto es **opt-in** vía `/swl:nemesis --cross-model` (ver el comando): si hay un
80
- MCP reviewer configurado, la verificación se rutea a un modelo externo; si no, degrada al
81
- reviewer same-model sin fallar (regla `arreglar-al-detectar.md` / no-fallback-silencioso →
82
- se anuncia la degradación). Mejoras del reviewer (de ARIS `auto-review-loop`):
83
- - **Reviewer memory**: el reviewer arrastra sus sospechas entre rondas (un solo `threadId`),
84
- no parte de cero cada iteración.
85
- - **Debate protocol**: el executor puede rebatir; el reviewer falla el veredicto final —
86
- *"it can drive, never acquit"* (el loop conduce, el jurado decide).
87
- - **POSITIVE_THRESHOLD compuesto**: `score ≥ N` **AND** `verdict ∈ {ready, almost}` — un
88
- score alto con verdict "not ready" NO detiene el loop.
89
-
90
- ## Anti-patrón: no envolver un skill auto-iterante en /loop · /cron · /schedule
91
-
92
- Si un skill YA itera internamente (review→fix→re-review con memoria de reviewer en un
93
- `threadId`), envolverlo en `/loop`, `/schedule` o `CronCreate` lo re-entra desde cero cada
94
- tick → `threadId` nuevo, memoria del reviewer reseteada → dispara el veredicto por
95
- wall-clock en vez de por cambio de artefacto: cero señal nueva, costo de tokens completo.
96
- Aplica a `/swl:autoresearch`, `/swl:verificar --until-converge`, nemesis `--remediar`. Si
97
- hay que agendar algo, agenda **la espera externa que lo precede** (ej. experimentos listos →
98
- entonces corre el loop UNA vez), no el loop mismo.
99
-
100
- ## Token budgets, /goal y model routing
101
-
102
- - **Token budget en workflows**: el global `budget` (o "use 10k tokens" en el prompt) pone
103
- cap duro. Alinea con `scripts/lib/budget-enforcer.js` de swl-ses.
104
- - **/goal + /loop**: para workflows repetibles (triage, research, verificación), `/goal` da
105
- requisito de completitud y `/loop` la cadencia. NO sobre skills auto-iterantes (arriba).
106
- - **Dynamic model routing**: un agente clasificador investiga la complejidad real del scope
107
- y rutea a Sonnet vs Opus por tarea (más fino que el Model-Tier estático del frontmatter).
108
-
109
- ## Workflows como plantillas en skills
110
-
111
- Un `.js` de workflow puede vivir en `recursos/` de un skill y referenciarse en su SKILL.md
112
- como **plantilla** (no script verbatim) — Claude lo adapta al caso. Plantillas incluidas:
113
-
114
- - `recursos/template-adversarial-verify.js` — fan-out de hallazgos + verificación adversarial
115
- por hallazgo (filtra los reales).
116
- - `recursos/template-triage.js` — clasifica ítems de un backlog, dedupe contra lo ya
117
- trackeado, y rutea (fix automático vs escalar a humano) con patrón quarantine.
118
-
119
- ## Quarantine (triage de contenido no confiable)
120
-
121
- En triage que lee contenido público/no confiable, los agentes lectores quedan **barred** de
122
- acciones de alto privilegio; esas las ejecutan agentes distintos que actúan sobre la info ya
123
- saneada. Coherente con `seguridad-agentes.md § Prompt injection` y el quarantine de SWL.
124
-
125
- ## Gotchas
126
-
127
- - **Workflows gastan más tokens** — úsalos cuando la tarea de verdad necesita más cómputo
128
- (adversarial, masivamente paralela), no por reflejo.
129
- - **Subagentes heredan el contexto del padre** (CLAUDE.md + reglas globales). En proyectos
130
- rule-heavy pueden saturar al arrancar (autocompact thrashing). Pasa scope acotado y evita
131
- hacer que el subagente explore el codebase completo (ver `harness-claude-code`).
132
- - **Barrier injustificado** mata wall-clock: si no hay dependencia cross-ítem entre stages,
133
- usa `pipeline()`, no `parallel()` entre stages.
134
-
135
- ## Origen
136
-
137
- Adoptado 2026-06-05 desde análisis de `temp/` (blog Anthropic dynamic-workflows +
138
- ARIS `auto-review-loop`/`mcp-servers`). Ver APRENDIZAJES.md Tipo D 2026-06-05.
1
+ ---
2
+ name: proceso-dynamic-workflows
3
+ description: >
4
+ Patrones canónicos de dynamic workflows en Claude Code (Workflow tool / ultracode):
5
+ classify-and-act, fan-out-and-synthesize, adversarial-verification, generate-and-filter,
6
+ tournament. Cubre los 3 modos de falla que justifican orquestar (agentic laziness,
7
+ self-preferential bias, goal drift), cuándo NO usar workflows, token budgets, revisión
8
+ cross-modelo, y el anti-patrón de envolver skills auto-iterantes en /loop|/cron. Cargar
9
+ cuando se diseñe una orquestación multi-agente, se decida si una tarea amerita workflow,
10
+ o se quiera empaquetar un workflow como plantilla reutilizable en un skill.
11
+ when_to_use: >
12
+ Usar cuando el usuario diga "ultracode", "workflow", "orquesta esto", "fan-out", "panel
13
+ de revisores", "tournament", o cuando una tarea sea larga, masivamente paralela o
14
+ adversarial y un solo context window sufra laziness/goal-drift.
15
+ herramientasPermitidas: [Read, Grep, Glob]
16
+ exclusiones:
17
+ - "No cargar para tareas de codificación normales de un solo paso — la mayoría NO necesitan un workflow; el harness por defecto basta y un workflow gasta muchos más tokens."
18
+ - "No cargar para el detalle de evaluator-optimizer del nemesis — eso vive en nemesis-evaluacion-json y el comando /swl:nemesis."
19
+ - "No cargar para escribir el .js de un workflow concreto — este skill da los patrones; el script se escribe con el Workflow tool directamente."
20
+ ---
21
+
22
+ # Dynamic workflows: patrones, modos de falla y cuándo orquestar
23
+
24
+ Síntesis del blog oficial de Anthropic *"A harness for every task: dynamic workflows
25
+ in Claude Code"* + patrones validados en swl-ses (nemesis evaluator-optimizer,
26
+ `/swl:verificar --until-converge`, `/swl:autoresearch`). Un dynamic workflow deja que
27
+ Claude escriba su propio harness (JS que coordina subagentes con ventanas aisladas).
28
+
29
+ ## Cuándo cargar
30
+
31
+ - Se va a diseñar una orquestación multi-agente o decidir si una tarea amerita workflow.
32
+ - La tarea es larga, masivamente paralela, o adversarial (review, research, migración, triage).
33
+ - Se quiere empaquetar un workflow como plantilla reutilizable en un skill.
34
+
35
+ ## Cuándo NO cargar
36
+
37
+ - Tarea de codificación normal de 1-2 archivos — el harness por defecto basta. Un workflow
38
+ gasta significativamente más tokens; la mayoría de tareas de coding NO necesitan un panel
39
+ de 5 revisores.
40
+ - Ya estás dentro del detalle del nemesis (`nemesis-evaluacion-json`).
41
+ - Solo necesitas escribir el `.js` — usa el Workflow tool directo con los patrones de abajo.
42
+
43
+ ## Los 3 modos de falla que JUSTIFICAN orquestar
44
+
45
+ Un solo context window largo degrada de tres formas — nombrarlas guía cuándo separar Claudes:
46
+
47
+ 1. **Agentic laziness** — Claude se detiene antes de terminar una tarea multi-parte y la
48
+ declara hecha con progreso parcial (ej. 20 de 50 ítems de un security review). Mitiga:
49
+ fan-out (un subagente por ítem, ventana limpia) + `/goal` (requisito de completitud duro).
50
+ 2. **Self-preferential bias** — Claude prefiere sus propios resultados al verificarlos contra
51
+ un rubric. Mitiga: **adversarial-verification** con subagente separado, y mejor aún
52
+ **revisión cross-modelo** (el reviewer es OTRO modelo). Es el mismo principio que
53
+ `gobernanza.md § Separación revisor/ejecutor`.
54
+ 3. **Goal drift** — pérdida gradual de fidelidad al objetivo tras muchos turnos y compaction
55
+ (cada resumen es lossy; se pierde "no hagas X"). Mitiga: subagentes con goal aislado y
56
+ constraints explícitas por invocación; `/goal` como ancla.
57
+
58
+ ## Los 5 patrones canónicos
59
+
60
+ | Patrón | Cuándo | Forma |
61
+ |--------|--------|-------|
62
+ | **Classify-and-act** | Rutear según tipo de tarea/ítem | Clasificador → ramas distintas (al inicio o al final para decidir output) |
63
+ | **Fan-out-and-synthesize** | Muchos sub-pasos; cada uno se beneficia de ventana limpia sin cross-contaminación | N agentes en paralelo → barrier → synthesize merge. **Default** para descomponer |
64
+ | **Adversarial-verification** | Evitar self-preferential bias | Por cada agente, un agente separado verifica su output contra rubric. Diversificar lentes |
65
+ | **Generate-and-filter** | Espacio de ideas amplio (taste-based) | Generar N → filtrar por rubric/verificación → dedupe → solo las mejores probadas |
66
+ | **Tournament** | Solución taste-based con criterio | N agentes compiten con enfoques distintos → juez pairwise hasta ganador |
67
+
68
+ `pipeline()` (sin barrier entre stages) es el default; usa barrier (`parallel()` entre
69
+ stages) SOLO cuando el stage N necesita TODOS los resultados del N-1 (dedup global,
70
+ early-exit por conteo cero, comparación cruzada).
71
+
72
+ ## Revisión cross-modelo (combate self-preferential bias estructuralmente)
73
+
74
+ El reviewer adversarial en el MISMO modelo aún arrastra sesgo. La mejora: **executor en un
75
+ modelo, reviewer en otro** (Claude ejecuta → Gemini/Codex/otro revisa). Patrón de ARIS
76
+ (`mcp-servers/gemini-review`): MCP que expone `review`/`review_reply`, devuelve JSON con
77
+ `threadId` + `response` → rastro auditable de un veredicto independiente.
78
+
79
+ En swl-ses esto es **opt-in** vía `/swl:nemesis --cross-model` (ver el comando): si hay un
80
+ MCP reviewer configurado, la verificación se rutea a un modelo externo; si no, degrada al
81
+ reviewer same-model sin fallar (regla `arreglar-al-detectar.md` / no-fallback-silencioso →
82
+ se anuncia la degradación). Mejoras del reviewer (de ARIS `auto-review-loop`):
83
+ - **Reviewer memory**: el reviewer arrastra sus sospechas entre rondas (un solo `threadId`),
84
+ no parte de cero cada iteración.
85
+ - **Debate protocol**: el executor puede rebatir; el reviewer falla el veredicto final —
86
+ *"it can drive, never acquit"* (el loop conduce, el jurado decide).
87
+ - **POSITIVE_THRESHOLD compuesto**: `score ≥ N` **AND** `verdict ∈ {ready, almost}` — un
88
+ score alto con verdict "not ready" NO detiene el loop.
89
+
90
+ ## Anti-patrón: no envolver un skill auto-iterante en /loop · /cron · /schedule
91
+
92
+ Si un skill YA itera internamente (review→fix→re-review con memoria de reviewer en un
93
+ `threadId`), envolverlo en `/loop`, `/schedule` o `CronCreate` lo re-entra desde cero cada
94
+ tick → `threadId` nuevo, memoria del reviewer reseteada → dispara el veredicto por
95
+ wall-clock en vez de por cambio de artefacto: cero señal nueva, costo de tokens completo.
96
+ Aplica a `/swl:autoresearch`, `/swl:verificar --until-converge`, nemesis `--remediar`. Si
97
+ hay que agendar algo, agenda **la espera externa que lo precede** (ej. experimentos listos →
98
+ entonces corre el loop UNA vez), no el loop mismo.
99
+
100
+ ## Token budgets, /goal y model routing
101
+
102
+ - **Token budget en workflows**: el global `budget` (o "use 10k tokens" en el prompt) pone
103
+ cap duro. Alinea con `scripts/lib/budget-enforcer.js` de swl-ses.
104
+ - **/goal + /loop**: para workflows repetibles (triage, research, verificación), `/goal` da
105
+ requisito de completitud y `/loop` la cadencia. NO sobre skills auto-iterantes (arriba).
106
+ - **Dynamic model routing**: un agente clasificador investiga la complejidad real del scope
107
+ y rutea a Sonnet vs Opus por tarea (más fino que el Model-Tier estático del frontmatter).
108
+
109
+ ## Workflows como plantillas en skills
110
+
111
+ Un `.js` de workflow puede vivir en `recursos/` de un skill y referenciarse en su SKILL.md
112
+ como **plantilla** (no script verbatim) — Claude lo adapta al caso. Plantillas incluidas:
113
+
114
+ - `recursos/template-adversarial-verify.js` — fan-out de hallazgos + verificación adversarial
115
+ por hallazgo (filtra los reales).
116
+ - `recursos/template-triage.js` — clasifica ítems de un backlog, dedupe contra lo ya
117
+ trackeado, y rutea (fix automático vs escalar a humano) con patrón quarantine.
118
+
119
+ ## Quarantine (triage de contenido no confiable)
120
+
121
+ En triage que lee contenido público/no confiable, los agentes lectores quedan **barred** de
122
+ acciones de alto privilegio; esas las ejecutan agentes distintos que actúan sobre la info ya
123
+ saneada. Coherente con `seguridad-agentes.md § Prompt injection` y el quarantine de SWL.
124
+
125
+ ## Gotchas
126
+
127
+ - **Workflows gastan más tokens** — úsalos cuando la tarea de verdad necesita más cómputo
128
+ (adversarial, masivamente paralela), no por reflejo.
129
+ - **Subagentes heredan el contexto del padre** (CLAUDE.md + reglas globales). En proyectos
130
+ rule-heavy pueden saturar al arrancar (autocompact thrashing). Pasa scope acotado y evita
131
+ hacer que el subagente explore el codebase completo (ver `harness-claude-code`).
132
+ - **Barrier injustificado** mata wall-clock: si no hay dependencia cross-ítem entre stages,
133
+ usa `pipeline()`, no `parallel()` entre stages.
134
+
135
+ ## Origen
136
+
137
+ Adoptado 2026-06-05 desde análisis de `temp/` (blog Anthropic dynamic-workflows +
138
+ ARIS `auto-review-loop`/`mcp-servers`). Ver APRENDIZAJES.md Tipo D 2026-06-05.