@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,164 +1,191 @@
1
- ---
2
- name: proceso-debate-adversarial
3
- description: >
4
- Protocolo de debate adversarial con jueces ciegos para decisiones técnicas
5
- subjetivas: dos autores en frío generan candidatos, un crítico forzosamente
6
- adversarial los ataca, un sintetizador produce un híbrido y un panel de jueces
7
- ciegos con etiquetas aleatorizadas elige al ganador hasta convergencia.
8
- Cargar cuando una decisión de arquitectura, diseño o estrategia no tiene
9
- métrica objetiva y el riesgo de sycophancy (auto-aprobarse) es alto; también
10
- cuando arquitecto-swl evalúa alternativas o /swl:predecir necesita el
11
- protocolo de personas en frío.
12
- version: "1.0.0"
13
- herramientasPermitidas: [Read, Agent, Skill]
14
- exclusiones:
15
- - "No cargar para decisiones con métrica objetiva verificable — ahí aplica el loop de autoresearch (Verify numérico), no un debate."
16
- - "No cargar para revisión de código post-implementación — eso es revisor-codigo-swl / nemesis-auditor-swl."
17
- - "No cargar para decisiones triviales o de preferencia personal sin impacto técnico — el costo de 5+ invocaciones de agente no se justifica."
18
- evolvable: true
19
- ---
20
- # Debate Adversarial con Jueces Ciegos
21
-
22
- Protocolo para decidir entre alternativas técnicas **sin métrica objetiva**
23
- eliminando los dos sesgos que arruinan las auto-evaluaciones de un LLM:
24
- **sycophancy** (el agente aprueba lo que él mismo generó) y **position bias**
25
- (el juez prefiere la opción presentada primero). Patrón adoptado del análisis
26
- de autoresearch v2.1 (`reason-judge-protocol`), adaptado al ecosistema SWL.
27
-
28
- **Principio**: el que genera nunca juzga, el que juzga nunca sabe quién generó.
29
-
30
- ## Cuándo cargar este skill
31
-
32
- - Decisión de arquitectura con 2+ alternativas viables sin benchmark objetivo
33
- (ej: event sourcing vs CRUD+audit, monolito modular vs microservicios).
34
- - `arquitecto-swl` necesita justificar un ADR con alternativas evaluadas de
35
- forma no sesgada.
36
- - `/swl:predecir` requiere el protocolo de aislamiento de personas.
37
- - Decisión de producto/estrategia donde el usuario pide "dame la mejor opción"
38
- y una sola pasada produciría la primera idea plausible, no la mejor.
39
-
40
- ## Los 5 roles — aislamiento obligatorio (COLD START)
41
-
42
- | Rol | Recibe | Produce | Regla dura |
43
- |-----|--------|---------|------------|
44
- | **Autor-A** | tarea | candidato A | No ve crítica ni candidato B |
45
- | **Crítico** | tarea + candidato A | ≥3 debilidades con evidencia + qué haría un candidato superior | NUNCA elogia — rol puramente adversarial |
46
- | **Autor-B** | tarea + candidato A + crítica | candidato B que resuelve la crítica preservando fortalezas de A | No ve al sintetizador |
47
- | **Sintetizador** | tarea + A + B | candidato híbrido AB | Fusiona lo mejor de ambos, no promedia |
48
- | **Panel de jueces** (3 default) | tarea + 3 candidatos con **etiquetas aleatorizadas** (X, Y, Z) | ranking 1°/2°/3° + justificación de un párrafo c/u | "Todos están bien" NO es veredicto válido |
49
-
50
- **COLD START**: cada rol se ejecuta como invocación independiente del Agent
51
- tool **sin contexto compartido de sesión** — recibe SOLO los insumos de su fila.
52
- Pasar el historial completo a un juez invalida el protocolo (sabría quién
53
- escribió qué).
54
-
55
- **Aleatorización de etiquetas**: antes de invocar a los jueces, mapear
56
- A/B/AB → X/Y/Z con orden aleatorio distinto por juez. Previene position bias.
57
-
58
- ## El loop de convergencia
59
-
60
- ```
61
- Ronda N:
62
- 1. Autor-A genera candidato (ronda 1) o presenta al incumbente (ronda N>1)
63
- 2. Crítico ataca → ≥3 debilidades con evidencia
64
- 3. Autor-B genera candidato alternativo
65
- 4. Sintetizador produce híbrido AB
66
- 5. Panel ciego vota → ganador por mayoría (empate → gana el híbrido)
67
- 6. ¿Ganador == incumbente? → convergencia++ ; si no → convergencia = 1,
68
- el ganador se vuelve incumbente
69
- ```
70
-
71
- | Condición | Acción |
72
- |-----------|--------|
73
- | Mismo incumbente gana 3 rondas consecutivas | **CONVERGIDO** — terminar |
74
- | Ronda ≥ max (default 8) | **ACOTADO** — reportar mejor candidato actual |
75
- | Incumbente cambió >5 veces en las últimas 8 rondas | **OSCILACIÓN** — detener y reportar: la tarea está mal planteada o las alternativas son equivalentes |
76
-
77
- Registrar cada ronda con `hooks/lib/loop-telemetry.js` (tipo `debate`,
78
- columnas `ronda, timestamp, etiqueta_ganadora, veredicto, convergencia,
79
- descripcion`) para que la trayectoria sea auditable y `/swl:status metricas` la lea.
80
-
81
- ## Anti-herd check — obligatorio
82
-
83
- Si TODOS los jueces coinciden en la primera ronda, el sintetizador DEBE
84
- producir al menos un contraargumento antes de aceptar el consenso. Unanimidad
85
- inmediata en un debate de alternativas reales es señal de herd bias, no de
86
- calidad — las alternativas genuinas siempre tienen tradeoffs defendibles.
87
-
88
- ## Criterios de juez por dominio
89
-
90
- | Dominio | Criterios de evaluación |
91
- |---------|------------------------|
92
- | Arquitectura de software | escalabilidad, mantenibilidad, rendimiento, seguridad, simplicidad |
93
- | Estrategia de producto | encaje de mercado, factibilidad, diferenciación, riesgo, tiempos |
94
- | Decisión de negocio | ROI, riesgo, alineación, recursos requeridos, reversibilidad |
95
- | Enfoque de seguridad | cobertura, tasa de falsos positivos, practicidad, cumplimiento |
96
- | Hipótesis de investigación | testabilidad, novedad, soporte de evidencia, poder explicativo |
97
-
98
- El juez evalúa CADA candidato contra TODOS los criterios del dominio y
99
- produce ranking con justificación nunca un score suelto sin comparación.
100
-
101
- ## Personas para análisis predictivo
102
-
103
- Cuando el objetivo es **predecir problemas de un cambio propuesto** (no
104
- elegir entre alternativas), usar el modo personas: 5 expertos analizan EN FRÍO
105
- el mismo cambio y un sintetizador deduplica y rankea. Definiciones completas,
106
- preguntas guía y red flags por persona en
107
- [recursos/personas.md](recursos/personas.md). Set default: Arquitecto de
108
- Software, Analista de Seguridad, Ingeniero de Rendimiento, Ingeniero de
109
- Confiabilidad, Abogado del Diablo. Set adversarial (`--adversarial`): El
110
- Rompedor, El Tramposo, El Escalador, El Novato, El Insider Malicioso.
111
-
112
- Ranking de hallazgos del sintetizador:
113
- `severidad × confianza promedio × número de personas que coinciden`.
114
-
115
- ## Integración con el ecosistema SWL
116
-
117
- | Componente | Uso del protocolo |
118
- |-----------|-------------------|
119
- | `arquitecto-swl` | Debate para la sección "Alternativas consideradas" de un ADR |
120
- | `/swl:predecir` | Modo personas pre-implementación |
121
- | `/swl:nemesis` | El evaluator puede pedir un debate cuando dos remediaciones compiten |
122
- | `hooks/lib/loop-telemetry.js` | Registro de rondas + handoff para encadenar |
123
- | `/swl:status metricas` | Lectura de trayectorias de debates en `.planning/loops/` |
124
-
125
- ## Cuándo NO cargar
126
-
127
- - La decisión tiene métrica objetiva (latencia, cobertura, bundle size) — usar
128
- el loop autoresearch con Verify numérico; un debate es más caro y menos
129
- preciso que medir.
130
- - El usuario ya tomó la decisión y está documentada en ADR/vault — aplicar
131
- `consultar-vault-primero`, no reabrir con un debate.
132
- - Hay restricción dura que elimina las alternativas (compliance, presupuesto,
133
- stack fijo) verificar restricciones ANTES de armar el debate.
134
-
135
- ## Gotchas / Errores comunes no obvios
136
-
137
- - **Jueces con contexto contaminado**: invocar a los jueces en la misma
138
- conversación donde se generaron los candidatos les revela la autoría por el
139
- historial. Causa: usar el contexto principal en vez del Agent tool con
140
- prompt acotado. Solución: cada juez es una invocación Agent independiente
141
- cuyo prompt contiene SOLO tarea + candidatos etiquetados.
142
- - **Crítico que "equilibra"**: el crítico señala 3 debilidades pero cierra con
143
- "en general es un buen enfoque" — eso re-introduce sycophancy y debilita al
144
- Autor-B. Solución: el prompt del crítico prohíbe explícitamente elogios y
145
- exige proponer qué haría un candidato superior.
146
- - **Sintetizador que promedia en vez de fusionar**: produce un candidato
147
- "tibio" que toma la mitad de cada uno y pierde la coherencia interna de
148
- ambos. Solución: el híbrido debe tener una tesis propia tomar la
149
- arquitectura dominante de uno e injertar mecanismos puntuales del otro.
150
- - **Convergencia falsa por candidatos idénticos**: si Autor-B produce
151
- esencialmente el mismo candidato que A, el panel "converge" en ronda 2 sin
152
- exploración real. Solución: el prompt de Autor-B exige divergencia
153
- estructural, no cosmética; si la crítica fue débil, regenerar la crítica.
154
-
155
- ## Anti-patrones
156
-
157
- - **Debate de 1 ronda presentado como consenso** sin convergencia ×3 no hay
158
- veredicto, hay una primera impresión cara.
159
- - **Saltarse la aleatorización de etiquetas** "porque los jueces son
160
- imparciales"el position bias es estadístico, no intencional.
161
- - **Usar el debate para decisiones ya cerradas** — teatro de proceso que
162
- quema tokens para justificar lo decidido.
163
- - **Panel de 1 juez** — un juez único reintroduce el sesgo individual que el
164
- panel existe para diluir; mínimo 3, número impar.
1
+ ---
2
+ name: proceso-debate-adversarial
3
+ description: >
4
+ Protocolo de debate adversarial con jueces ciegos para decisiones técnicas
5
+ subjetivas: dos autores en frío generan candidatos, un crítico forzosamente
6
+ adversarial los ataca, un sintetizador produce un híbrido y un panel de jueces
7
+ ciegos con etiquetas aleatorizadas elige al ganador hasta convergencia.
8
+ Cargar cuando una decisión de arquitectura, diseño o estrategia no tiene
9
+ métrica objetiva y el riesgo de sycophancy (auto-aprobarse) es alto; también
10
+ cuando arquitecto-swl evalúa alternativas o /swl:predecir necesita el
11
+ protocolo de personas en frío.
12
+ version: "1.1.0"
13
+ herramientasPermitidas: [Read, Agent, Skill]
14
+ exclusiones:
15
+ - "No cargar para decisiones con métrica objetiva verificable — ahí aplica el loop de autoresearch (Verify numérico), no un debate."
16
+ - "No cargar para revisión de código post-implementación — eso es revisor-codigo-swl / nemesis-auditor-swl."
17
+ - "No cargar para decisiones triviales o de preferencia personal sin impacto técnico — el costo de 5+ invocaciones de agente no se justifica."
18
+ evolvable: true
19
+ ---
20
+ # Debate Adversarial con Jueces Ciegos
21
+
22
+ Protocolo para decidir entre alternativas técnicas **sin métrica objetiva**
23
+ eliminando los dos sesgos que arruinan las auto-evaluaciones de un LLM:
24
+ **sycophancy** (el agente aprueba lo que él mismo generó) y **position bias**
25
+ (el juez prefiere la opción presentada primero). Patrón adoptado del análisis
26
+ de autoresearch v2.1 (`reason-judge-protocol`), adaptado al ecosistema SWL.
27
+
28
+ **Principio**: el que genera nunca juzga, el que juzga nunca sabe quién generó.
29
+
30
+ ## Cuándo cargar este skill
31
+
32
+ - Decisión de arquitectura con 2+ alternativas viables sin benchmark objetivo
33
+ (ej: event sourcing vs CRUD+audit, monolito modular vs microservicios).
34
+ - `arquitecto-swl` necesita justificar un ADR con alternativas evaluadas de
35
+ forma no sesgada.
36
+ - `/swl:predecir` requiere el protocolo de aislamiento de personas.
37
+ - Decisión de producto/estrategia donde el usuario pide "dame la mejor opción"
38
+ y una sola pasada produciría la primera idea plausible, no la mejor.
39
+
40
+ ## Los 5 roles — aislamiento obligatorio (COLD START)
41
+
42
+ | Rol | Recibe | Produce | Regla dura |
43
+ |-----|--------|---------|------------|
44
+ | **Autor-A** | tarea | candidato A | No ve crítica ni candidato B |
45
+ | **Crítico** | tarea + candidato A | ≥3 debilidades con evidencia + qué haría un candidato superior | NUNCA elogia — rol puramente adversarial |
46
+ | **Autor-B** | tarea + candidato A + crítica | candidato B que resuelve la crítica preservando fortalezas de A | No ve al sintetizador |
47
+ | **Sintetizador** | tarea + A + B | candidato híbrido AB | Fusiona lo mejor de ambos, no promedia |
48
+ | **Panel de jueces** (3 default) | tarea + 3 candidatos con **etiquetas aleatorizadas** (X, Y, Z) | ranking 1°/2°/3° + justificación de un párrafo c/u | "Todos están bien" NO es veredicto válido |
49
+
50
+ **COLD START**: cada rol se ejecuta como invocación independiente del Agent
51
+ tool **sin contexto compartido de sesión** — recibe SOLO los insumos de su fila.
52
+ Pasar el historial completo a un juez invalida el protocolo (sabría quién
53
+ escribió qué).
54
+
55
+ **Aleatorización de etiquetas**: antes de invocar a los jueces, mapear
56
+ A/B/AB → X/Y/Z con orden aleatorio distinto por juez. Previene position bias.
57
+
58
+ ## El loop de convergencia
59
+
60
+ ```
61
+ Ronda N:
62
+ 1. Autor-A genera candidato (ronda 1) o presenta al incumbente (ronda N>1)
63
+ 2. Crítico ataca → ≥3 debilidades con evidencia
64
+ 3. Autor-B genera candidato alternativo
65
+ 4. Sintetizador produce híbrido AB
66
+ 5. Panel ciego vota → ganador por mayoría (empate → gana el híbrido)
67
+ 6. ¿Ganador == incumbente? → convergencia++ ; si no → convergencia = 1,
68
+ el ganador se vuelve incumbente
69
+ ```
70
+
71
+ | Condición | Acción |
72
+ |-----------|--------|
73
+ | Mismo incumbente gana 3 rondas consecutivas | **CONVERGIDO** — terminar |
74
+ | Ronda ≥ max (default 8) | **ACOTADO** — reportar mejor candidato actual |
75
+ | Incumbente cambió >5 veces en las últimas 8 rondas | **OSCILACIÓN** — detener y reportar: la tarea está mal planteada o las alternativas son equivalentes |
76
+
77
+ Registrar cada ronda con `hooks/lib/loop-telemetry.js` (tipo `debate`,
78
+ columnas `ronda, timestamp, etiqueta_ganadora, veredicto, convergencia,
79
+ descripcion`) para que la trayectoria sea auditable y `/swl:status metricas` la lea.
80
+
81
+ ## Anti-herd check — obligatorio
82
+
83
+ Si TODOS los jueces coinciden en la primera ronda, el sintetizador DEBE
84
+ producir al menos un contraargumento antes de aceptar el consenso. Unanimidad
85
+ inmediata en un debate de alternativas reales es señal de herd bias, no de
86
+ calidad — las alternativas genuinas siempre tienen tradeoffs defendibles.
87
+
88
+ ## Voto incompleto refutado + degradación del fan-out ante rate limit
89
+
90
+ Cuando el fan-out de personas/jueces se ejecuta en paralelo y la API responde
91
+ con rate limit (429) o un juez no completa su veredicto (timeout, error
92
+ terminal), el hallazgo asociado queda **"sin verificar"**, NUNCA "refutado" ni
93
+ "descartado". Conflar "no se pudo verificar" con "verificado falso" descarta
94
+ silenciosamente hallazgos reales el modo de falla más caro de un panel
95
+ adversarial.
96
+
97
+ Reglas:
98
+
99
+ - Un veredicto que no se emite NO cuenta como voto en contra. El conteo de
100
+ refutación solo suma jueces que **emitieron** un veredicto de refutación
101
+ explícito. `votos_refutan / votos_emitidos`, nunca `/ jueces_lanzados`.
102
+ - Un hallazgo cuyos votos no se completaron se marca `estado: sin-verificar`
103
+ (distinto de `confirmado` y de `refutado`) y se reporta como tal — el usuario
104
+ decide si re-ejecutar ese subconjunto.
105
+ - Ante rate limit en el fan-out: **escalonar** las invocaciones (lanzar por
106
+ lotes con espera entre lotes) o **reducir** el número de jueces/personas a un
107
+ quórum mínimo (≥3) antes de abortar. Degradar el panel con aviso visible es
108
+ preferible a marcar todo lo no votado como refutado (regla
109
+ `seguridad-agentes.md § Anti-fallback silencioso`).
110
+
111
+ Nota de alcance: esto aplica al panel de este skill y a `/swl:predecir`. El
112
+ patrón adversarial-verify del harness de Workflow (built-in de Claude Code) NO
113
+ es editable desde swl-ses; su semántica de votos vive fuera de este repo.
114
+
115
+ ## Criterios de juez por dominio
116
+
117
+ | Dominio | Criterios de evaluación |
118
+ |---------|------------------------|
119
+ | Arquitectura de software | escalabilidad, mantenibilidad, rendimiento, seguridad, simplicidad |
120
+ | Estrategia de producto | encaje de mercado, factibilidad, diferenciación, riesgo, tiempos |
121
+ | Decisión de negocio | ROI, riesgo, alineación, recursos requeridos, reversibilidad |
122
+ | Enfoque de seguridad | cobertura, tasa de falsos positivos, practicidad, cumplimiento |
123
+ | Hipótesis de investigación | testabilidad, novedad, soporte de evidencia, poder explicativo |
124
+
125
+ El juez evalúa CADA candidato contra TODOS los criterios del dominio y
126
+ produce ranking con justificación — nunca un score suelto sin comparación.
127
+
128
+ ## Personas para análisis predictivo
129
+
130
+ Cuando el objetivo es **predecir problemas de un cambio propuesto** (no
131
+ elegir entre alternativas), usar el modo personas: 5 expertos analizan EN FRÍO
132
+ el mismo cambio y un sintetizador deduplica y rankea. Definiciones completas,
133
+ preguntas guía y red flags por persona en
134
+ [recursos/personas.md](recursos/personas.md). Set default: Arquitecto de
135
+ Software, Analista de Seguridad, Ingeniero de Rendimiento, Ingeniero de
136
+ Confiabilidad, Abogado del Diablo. Set adversarial (`--adversarial`): El
137
+ Rompedor, El Tramposo, El Escalador, El Novato, El Insider Malicioso.
138
+
139
+ Ranking de hallazgos del sintetizador:
140
+ `severidad × confianza promedio × número de personas que coinciden`.
141
+
142
+ ## Integración con el ecosistema SWL
143
+
144
+ | Componente | Uso del protocolo |
145
+ |-----------|-------------------|
146
+ | `arquitecto-swl` | Debate para la sección "Alternativas consideradas" de un ADR |
147
+ | `/swl:predecir` | Modo personas pre-implementación |
148
+ | `/swl:nemesis` | El evaluator puede pedir un debate cuando dos remediaciones compiten |
149
+ | `hooks/lib/loop-telemetry.js` | Registro de rondas + handoff para encadenar |
150
+ | `/swl:status metricas` | Lectura de trayectorias de debates en `.planning/loops/` |
151
+
152
+ ## Cuándo NO cargar
153
+
154
+ - La decisión tiene métrica objetiva (latencia, cobertura, bundle size) — usar
155
+ el loop autoresearch con Verify numérico; un debate es más caro y menos
156
+ preciso que medir.
157
+ - El usuario ya tomó la decisión y está documentada en ADR/vault aplicar
158
+ `consultar-vault-primero`, no reabrir con un debate.
159
+ - Hay restricción dura que elimina las alternativas (compliance, presupuesto,
160
+ stack fijo) verificar restricciones ANTES de armar el debate.
161
+
162
+ ## Gotchas / Errores comunes no obvios
163
+
164
+ - **Jueces con contexto contaminado**: invocar a los jueces en la misma
165
+ conversación donde se generaron los candidatos les revela la autoría por el
166
+ historial. Causa: usar el contexto principal en vez del Agent tool con
167
+ prompt acotado. Solución: cada juez es una invocación Agent independiente
168
+ cuyo prompt contiene SOLO tarea + candidatos etiquetados.
169
+ - **Crítico que "equilibra"**: el crítico señala 3 debilidades pero cierra con
170
+ "en general es un buen enfoque" — eso re-introduce sycophancy y debilita al
171
+ Autor-B. Solución: el prompt del crítico prohíbe explícitamente elogios y
172
+ exige proponer qué haría un candidato superior.
173
+ - **Sintetizador que promedia en vez de fusionar**: produce un candidato
174
+ "tibio" que toma la mitad de cada uno y pierde la coherencia interna de
175
+ ambos. Solución: el híbrido debe tener una tesis propia — tomar la
176
+ arquitectura dominante de uno e injertar mecanismos puntuales del otro.
177
+ - **Convergencia falsa por candidatos idénticos**: si Autor-B produce
178
+ esencialmente el mismo candidato que A, el panel "converge" en ronda 2 sin
179
+ exploración real. Solución: el prompt de Autor-B exige divergencia
180
+ estructural, no cosmética; si la crítica fue débil, regenerar la crítica.
181
+
182
+ ## Anti-patrones
183
+
184
+ - **Debate de 1 ronda presentado como consenso** — sin convergencia ×3 no hay
185
+ veredicto, hay una primera impresión cara.
186
+ - **Saltarse la aleatorización de etiquetas** "porque los jueces son
187
+ imparciales" — el position bias es estadístico, no intencional.
188
+ - **Usar el debate para decisiones ya cerradas** — teatro de proceso que
189
+ quema tokens para justificar lo decidido.
190
+ - **Panel de 1 juez** — un juez único reintroduce el sesgo individual que el
191
+ panel existe para diluir; mínimo 3, número impar.
@@ -1,105 +1,105 @@
1
- # Personas para análisis predictivo y debate adversarial
2
-
3
- Definiciones operativas de las personas que consume `proceso-debate-adversarial`
4
- (modo personas) y `/swl:predecir`. Cada persona se invoca EN FRÍO (COLD START):
5
- recibe la descripción del cambio + conocimiento del codebase + sus criterios —
6
- nunca el análisis de otra persona.
7
-
8
- Formato de hallazgo obligatorio por persona:
9
-
10
- ```markdown
11
- | # | Hallazgo | Severidad | Confianza (0-100%) | archivo:línea | Recomendación |
12
- ```
13
-
14
- Presupuesto: `max_hallazgos_por_persona = presupuesto_total / num_personas`
15
- (default presupuesto 40 → 8 por persona). Obliga a priorizar, no a enumerar.
16
-
17
- ---
18
-
19
- ## Set default (análisis predictivo estándar)
20
-
21
- ### 1. Arquitecto de Software
22
- - **Enfoque**: diseño sistémico, fronteras de componentes, flujo de datos, escalabilidad.
23
- - **Preguntas guía**: ¿Escala? ¿Los límites entre módulos son limpios? ¿El acoplamiento está minimizado? ¿Sobrevive un crecimiento 10x?
24
- - **Evidencia exigida**: archivo:línea, grafo de dependencias, métricas de acoplamiento.
25
- - **Red flags**: god classes, dependencias circulares, abstracciones con fugas, estado mutable compartido.
26
-
27
- ### 2. Analista de Seguridad
28
- - **Enfoque**: superficies de ataque, autenticación/autorización, protección de datos, vectores de inyección.
29
- - **Preguntas guía**: ¿Es explotable? ¿Los trust boundaries se aplican? ¿El input se sanitiza? ¿Los secretos están protegidos?
30
- - **Evidencia exigida**: archivo:línea + escenario de ataque concreto (no especulación teórica).
31
- - **Red flags**: SQL crudo, authz faltante, secretos hardcodeados, input sin sanitizar.
32
-
33
- ### 3. Ingeniero de Rendimiento
34
- - **Enfoque**: latencia, throughput, uso de recursos, complejidad algorítmica.
35
- - **Preguntas guía**: ¿Es suficientemente rápido? ¿Cuál es el peor caso? ¿Dónde están los cuellos de botella? ¿El caching es efectivo?
36
- - **Evidencia exigida**: archivo:línea, análisis de complejidad, estimaciones de recursos.
37
- - **Red flags**: queries N+1, loops sin cota, índices faltantes, I/O síncrono en hot paths.
38
-
39
- ### 4. Ingeniero de Confiabilidad
40
- - **Enfoque**: manejo de errores, modos de falla, observabilidad, recuperación.
41
- - **Preguntas guía**: ¿Qué pasa cuando falla? ¿Podemos detectarlo? ¿Hay camino de recuperación? ¿Es observable?
42
- - **Evidencia exigida**: archivo:línea, escenarios de falla, rutas de recuperación.
43
- - **Red flags**: errores tragados, retries faltantes, sin circuit breakers, fallas silenciosas.
44
-
45
- ### 5. Abogado del Diablo
46
- - **Enfoque**: asunciones, casos límite, complejidad oculta, mantenibilidad.
47
- - **Preguntas guía**: ¿Qué asunciones son falsas? ¿Qué rompe esto? ¿Está sobre-ingenierizado?
48
- - **Evidencia exigida**: contraejemplos concretos, escenarios de caso límite.
49
- - **Red flags**: diseño solo-happy-path, asunciones sin probar, complejidad sin justificación.
50
-
51
- ---
52
-
53
- ## Set adversarial (`--adversarial`)
54
-
55
- Reemplaza al set default cuando el objetivo es estresar el cambio como atacante,
56
- no como revisor.
57
-
58
- ### 1. El Rompedor
59
- Intenta crashear o corromper el sistema. Busca: estados imposibles, inputs
60
- malformados, condiciones de carrera, límites de recursos.
61
-
62
- ### 2. El Tramposo
63
- Busca formas de saltarse reglas y abusar de features. Busca: validaciones solo
64
- en frontend, límites evadibles, flujos alternos sin guards.
65
-
66
- ### 3. El Escalador
67
- Imagina carga 1000x y encuentra qué se rompe primero. Busca: queries sin
68
- paginación, locks globales, colas sin backpressure, costos lineales ocultos.
69
-
70
- ### 4. El Novato
71
- Usa mal cada API esperando que funcione. Busca: defaults peligrosos, errores
72
- crípticos, documentación que asume contexto, footguns de la interfaz.
73
-
74
- ### 5. El Insider Malicioso
75
- Tiene credenciales válidas y quiere exfiltrar. Busca: permisos excesivos,
76
- auditoría faltante, datos sensibles accesibles lateralmente.
77
-
78
- ---
79
-
80
- ## Set red-team de seguridad (para `checklist-seguridad` modo cobertura)
81
-
82
- Rotación de mentalidades para auditoría STRIDE/OWASP iterativa:
83
-
84
- | Persona | Foco | Mentalidad |
85
- |---------|------|-----------|
86
- | Adversario de Seguridad | auth, crypto, inyección | atacante externo con browser + proxy de intercepción |
87
- | Atacante de Supply Chain | dependencias, CI/CD, build pipeline | comprometer vía código de terceros |
88
- | Amenaza Interna | acceso a datos, abuso de privilegios, exfiltración | usuario autenticado con intención maliciosa |
89
- | Atacante de Infraestructura | red, configuración cloud, contenedores | apuntar a misconfigurations de infra |
90
-
91
- ---
92
-
93
- ## Protocolo de síntesis (tras el análisis individual)
94
-
95
- 1. **Deduplicar**: mismo archivo:línea + mismo problema → fusionar, conservar la severidad más alta.
96
- 2. **Resolver conflictos**: si dos personas discrepan → registrar el disenso, no silenciarlo.
97
- 3. **Anti-herd check**: si TODAS las personas coinciden → el sintetizador DEBE producir ≥1 contraargumento.
98
- 4. **Rankear**: `severidad × confianza promedio × número de personas que coinciden`.
99
-
100
- Output del sintetizador:
101
-
102
- ```markdown
103
- ### Consenso — [N hallazgos tras dedup]
104
- | # | Hallazgo | Severidad | Acuerdo | Personas origen | Acción |
105
- ```
1
+ # Personas para análisis predictivo y debate adversarial
2
+
3
+ Definiciones operativas de las personas que consume `proceso-debate-adversarial`
4
+ (modo personas) y `/swl:predecir`. Cada persona se invoca EN FRÍO (COLD START):
5
+ recibe la descripción del cambio + conocimiento del codebase + sus criterios —
6
+ nunca el análisis de otra persona.
7
+
8
+ Formato de hallazgo obligatorio por persona:
9
+
10
+ ```markdown
11
+ | # | Hallazgo | Severidad | Confianza (0-100%) | archivo:línea | Recomendación |
12
+ ```
13
+
14
+ Presupuesto: `max_hallazgos_por_persona = presupuesto_total / num_personas`
15
+ (default presupuesto 40 → 8 por persona). Obliga a priorizar, no a enumerar.
16
+
17
+ ---
18
+
19
+ ## Set default (análisis predictivo estándar)
20
+
21
+ ### 1. Arquitecto de Software
22
+ - **Enfoque**: diseño sistémico, fronteras de componentes, flujo de datos, escalabilidad.
23
+ - **Preguntas guía**: ¿Escala? ¿Los límites entre módulos son limpios? ¿El acoplamiento está minimizado? ¿Sobrevive un crecimiento 10x?
24
+ - **Evidencia exigida**: archivo:línea, grafo de dependencias, métricas de acoplamiento.
25
+ - **Red flags**: god classes, dependencias circulares, abstracciones con fugas, estado mutable compartido.
26
+
27
+ ### 2. Analista de Seguridad
28
+ - **Enfoque**: superficies de ataque, autenticación/autorización, protección de datos, vectores de inyección.
29
+ - **Preguntas guía**: ¿Es explotable? ¿Los trust boundaries se aplican? ¿El input se sanitiza? ¿Los secretos están protegidos?
30
+ - **Evidencia exigida**: archivo:línea + escenario de ataque concreto (no especulación teórica).
31
+ - **Red flags**: SQL crudo, authz faltante, secretos hardcodeados, input sin sanitizar.
32
+
33
+ ### 3. Ingeniero de Rendimiento
34
+ - **Enfoque**: latencia, throughput, uso de recursos, complejidad algorítmica.
35
+ - **Preguntas guía**: ¿Es suficientemente rápido? ¿Cuál es el peor caso? ¿Dónde están los cuellos de botella? ¿El caching es efectivo?
36
+ - **Evidencia exigida**: archivo:línea, análisis de complejidad, estimaciones de recursos.
37
+ - **Red flags**: queries N+1, loops sin cota, índices faltantes, I/O síncrono en hot paths.
38
+
39
+ ### 4. Ingeniero de Confiabilidad
40
+ - **Enfoque**: manejo de errores, modos de falla, observabilidad, recuperación.
41
+ - **Preguntas guía**: ¿Qué pasa cuando falla? ¿Podemos detectarlo? ¿Hay camino de recuperación? ¿Es observable?
42
+ - **Evidencia exigida**: archivo:línea, escenarios de falla, rutas de recuperación.
43
+ - **Red flags**: errores tragados, retries faltantes, sin circuit breakers, fallas silenciosas.
44
+
45
+ ### 5. Abogado del Diablo
46
+ - **Enfoque**: asunciones, casos límite, complejidad oculta, mantenibilidad.
47
+ - **Preguntas guía**: ¿Qué asunciones son falsas? ¿Qué rompe esto? ¿Está sobre-ingenierizado?
48
+ - **Evidencia exigida**: contraejemplos concretos, escenarios de caso límite.
49
+ - **Red flags**: diseño solo-happy-path, asunciones sin probar, complejidad sin justificación.
50
+
51
+ ---
52
+
53
+ ## Set adversarial (`--adversarial`)
54
+
55
+ Reemplaza al set default cuando el objetivo es estresar el cambio como atacante,
56
+ no como revisor.
57
+
58
+ ### 1. El Rompedor
59
+ Intenta crashear o corromper el sistema. Busca: estados imposibles, inputs
60
+ malformados, condiciones de carrera, límites de recursos.
61
+
62
+ ### 2. El Tramposo
63
+ Busca formas de saltarse reglas y abusar de features. Busca: validaciones solo
64
+ en frontend, límites evadibles, flujos alternos sin guards.
65
+
66
+ ### 3. El Escalador
67
+ Imagina carga 1000x y encuentra qué se rompe primero. Busca: queries sin
68
+ paginación, locks globales, colas sin backpressure, costos lineales ocultos.
69
+
70
+ ### 4. El Novato
71
+ Usa mal cada API esperando que funcione. Busca: defaults peligrosos, errores
72
+ crípticos, documentación que asume contexto, footguns de la interfaz.
73
+
74
+ ### 5. El Insider Malicioso
75
+ Tiene credenciales válidas y quiere exfiltrar. Busca: permisos excesivos,
76
+ auditoría faltante, datos sensibles accesibles lateralmente.
77
+
78
+ ---
79
+
80
+ ## Set red-team de seguridad (para `checklist-seguridad` modo cobertura)
81
+
82
+ Rotación de mentalidades para auditoría STRIDE/OWASP iterativa:
83
+
84
+ | Persona | Foco | Mentalidad |
85
+ |---------|------|-----------|
86
+ | Adversario de Seguridad | auth, crypto, inyección | atacante externo con browser + proxy de intercepción |
87
+ | Atacante de Supply Chain | dependencias, CI/CD, build pipeline | comprometer vía código de terceros |
88
+ | Amenaza Interna | acceso a datos, abuso de privilegios, exfiltración | usuario autenticado con intención maliciosa |
89
+ | Atacante de Infraestructura | red, configuración cloud, contenedores | apuntar a misconfigurations de infra |
90
+
91
+ ---
92
+
93
+ ## Protocolo de síntesis (tras el análisis individual)
94
+
95
+ 1. **Deduplicar**: mismo archivo:línea + mismo problema → fusionar, conservar la severidad más alta.
96
+ 2. **Resolver conflictos**: si dos personas discrepan → registrar el disenso, no silenciarlo.
97
+ 3. **Anti-herd check**: si TODAS las personas coinciden → el sintetizador DEBE producir ≥1 contraargumento.
98
+ 4. **Rankear**: `severidad × confianza promedio × número de personas que coinciden`.
99
+
100
+ Output del sintetizador:
101
+
102
+ ```markdown
103
+ ### Consenso — [N hallazgos tras dedup]
104
+ | # | Hallazgo | Severidad | Acuerdo | Personas origen | Acción |
105
+ ```