@saulwade/swl-ses 2.5.3 → 2.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/CLAUDE.md +192 -192
  2. package/README.md +600 -600
  3. package/agentes/auto-evolucion-swl.md +27 -3
  4. package/bin/swl-ses.js +32 -7
  5. package/comandos/swl/actualizar.md +174 -174
  6. package/comandos/swl/adoptar-proyecto.md +265 -265
  7. package/comandos/swl/aprender.md +836 -823
  8. package/comandos/swl/aprobar-plan.md +146 -146
  9. package/comandos/swl/auditar-deps.md +134 -134
  10. package/comandos/swl/autoresearch.md +264 -264
  11. package/comandos/swl/ayuda.md +224 -224
  12. package/comandos/swl/brainstorm.md +51 -51
  13. package/comandos/swl/briefing.md +119 -119
  14. package/comandos/swl/checkpoint.md +325 -325
  15. package/comandos/swl/claudemd.md +234 -234
  16. package/comandos/swl/compactar.md +310 -310
  17. package/comandos/swl/configurar-ci.md +235 -235
  18. package/comandos/swl/contexto.md +110 -110
  19. package/comandos/swl/contribuir.md +233 -233
  20. package/comandos/swl/crear-skill.md +292 -292
  21. package/comandos/swl/cron.md +194 -194
  22. package/comandos/swl/deuda-codigo.md +97 -97
  23. package/comandos/swl/discutir-fase.md +169 -169
  24. package/comandos/swl/ejecutar-fase.md +233 -233
  25. package/comandos/swl/evaluar-skill.md +520 -505
  26. package/comandos/swl/evolucion-continua.md +73 -0
  27. package/comandos/swl/evolucionar.md +267 -254
  28. package/comandos/swl/exportar-vault.md +583 -583
  29. package/comandos/swl/fix.md +118 -118
  30. package/comandos/swl/gateway.md +158 -158
  31. package/comandos/swl/inbox.md +116 -116
  32. package/comandos/swl/instalar.md +220 -220
  33. package/comandos/swl/instintos.md +86 -86
  34. package/comandos/swl/mapear-codebase.md +312 -312
  35. package/comandos/swl/mcp-status.md +175 -175
  36. package/comandos/swl/modelo.md +100 -100
  37. package/comandos/swl/nemesis.md +433 -433
  38. package/comandos/swl/notificaciones.md +299 -299
  39. package/comandos/swl/nuevo-proyecto.md +251 -251
  40. package/comandos/swl/planear-fase.md +263 -263
  41. package/comandos/swl/plugins.md +256 -256
  42. package/comandos/swl/predecir.md +169 -169
  43. package/comandos/swl/reflect-skills.md +125 -125
  44. package/comandos/swl/release.md +450 -450
  45. package/comandos/swl/revisar-impacto.md +201 -201
  46. package/comandos/swl/revisar.md +330 -330
  47. package/comandos/swl/seguridad.md +189 -189
  48. package/comandos/swl/sesiones.md +200 -200
  49. package/comandos/swl/skill-search.md +113 -113
  50. package/comandos/swl/status.md +343 -343
  51. package/comandos/swl/verificar.md +817 -817
  52. package/comandos/swl/wiki.md +620 -620
  53. package/gateway/cron/jobs.example.json +12 -0
  54. package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -276
  55. package/habilidades/autoresearch/SKILL.md +3 -2
  56. package/habilidades/benchmark-memoria/SKILL.md +7 -7
  57. package/habilidades/changelog-generator/SKILL.md +174 -174
  58. package/habilidades/changelog-generator/scripts/parse-commits.js +2 -1
  59. package/habilidades/checkpoints-verificacion/SKILL.md +6 -0
  60. package/habilidades/context-builder/SKILL.md +4 -0
  61. package/habilidades/doubt-driven-review/SKILL.md +207 -191
  62. package/habilidades/drift-detection/SKILL.md +6 -1
  63. package/habilidades/ejecutar-fase/SKILL.md +6 -6
  64. package/habilidades/eval-framework/SKILL.md +8 -3
  65. package/habilidades/harness-claude-code/SKILL.md +312 -308
  66. package/habilidades/infra-github-actions/SKILL.md +4 -3
  67. package/habilidades/instalar-sistema/SKILL.md +227 -223
  68. package/habilidades/memoria-busqueda/SKILL.md +31 -39
  69. package/habilidades/planear-fase/SKILL.md +358 -350
  70. package/habilidades/proceso-ddia-fundamentos/SKILL.md +3 -2
  71. package/habilidades/swl-claudemd/SKILL.md +6 -7
  72. package/habilidades/swl-dashboard/SKILL.md +11 -43
  73. package/habilidades/tdd-workflow/SKILL.md +749 -744
  74. package/habilidades/validacion-ci-sistema/SKILL.md +1 -1
  75. package/hooks/agente-lifecycle.js +2 -1
  76. package/hooks/aiisms-detector.js +13 -4
  77. package/hooks/audit-trail.js +2 -1
  78. package/hooks/auto-consolidacion.js +2 -1
  79. package/hooks/captura-acciones-post.js +2 -1
  80. package/hooks/captura-acciones-session.js +2 -1
  81. package/hooks/captura-feedback-usuario.js +3 -2
  82. package/hooks/claudemd-bloat-detector.js +12 -3
  83. package/hooks/claudemd-duplicacion-detector.js +13 -3
  84. package/hooks/contexto-iteracion.js +2 -1
  85. package/hooks/degradacion-instintos.js +2 -1
  86. package/hooks/extraccion-aprendizajes.js +109 -15
  87. package/hooks/grafo-contexto.js +2 -1
  88. package/hooks/guardrail-modelo.js +2 -1
  89. package/hooks/inbox-aviso.js +2 -1
  90. package/hooks/inyeccion-contexto.js +2 -1
  91. package/hooks/lib/agent-matcher.js +2 -1
  92. package/hooks/lib/agent-routing.js +2 -1
  93. package/hooks/lib/autonomia.js +5 -3
  94. package/hooks/lib/captura-acciones.js +2 -1
  95. package/hooks/lib/consolidation-lock.js +21 -10
  96. package/hooks/lib/etapa-auto-evolucion.js +10 -4
  97. package/hooks/lib/etapa-metricas.js +2 -1
  98. package/hooks/lib/etapa-perfil-usuario.js +20 -4
  99. package/hooks/lib/evolution-tracker.js +2 -1
  100. package/hooks/lib/gateway-notify.js +193 -179
  101. package/hooks/lib/loop-telemetry.js +5 -4
  102. package/hooks/lib/mcp-health.js +2 -1
  103. package/hooks/lib/memory-search.js +4 -0
  104. package/hooks/lib/merkle-audit.js +58 -6
  105. package/hooks/lib/nudge-tracker.js +2 -1
  106. package/hooks/lib/otlp-exporter.js +2 -1
  107. package/hooks/lib/propose-step.js +3 -2
  108. package/hooks/lib/raiz-proyecto.js +102 -0
  109. package/hooks/lib/run-log.js +2 -1
  110. package/hooks/lib/singleton-guard.js +218 -27
  111. package/hooks/lib/telegram-cliente.js +17 -8
  112. package/hooks/preservar-estado-pre-compact.js +2 -1
  113. package/hooks/proteccion-rutas.js +59 -3
  114. package/hooks/registro-turnos.js +2 -1
  115. package/hooks/resumen-sesion.js +2 -1
  116. package/hooks/risk-scoring.js +2 -1
  117. package/hooks/rotar-audit-auto.js +46 -20
  118. package/hooks/session-briefing.js +127 -1
  119. package/hooks/spec-gate.js +2 -1
  120. package/hooks/sugerir-contribuir.js +6 -3
  121. package/hooks/sugerir-regenerar-inventario.js +3 -2
  122. package/hooks/tdd-gate.js +2 -1
  123. package/hooks/telemetria-agentes.js +2 -1
  124. package/hooks/telemetria-skill-routing.js +2 -1
  125. package/hooks/tracking-costos.js +4 -3
  126. package/hooks/validar-formato-post-subagente.js +2 -1
  127. package/hooks/validar-intent-spec.js +2 -1
  128. package/hooks/validar-memoria-hook.js +13 -3
  129. package/hooks/validar-planning-paths.js +2 -1
  130. package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +53 -0
  131. package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +372 -0
  132. package/instintos/perfil-usuario.yaml +506 -3
  133. package/instintos/proyecto.yaml +78 -0
  134. package/llms.txt +2 -2
  135. package/manifiestos/canonical-hashes.json +335 -3
  136. package/manifiestos/modulos.json +19 -14
  137. package/manifiestos/planning-paths.json +1 -0
  138. package/manifiestos/skills-lock.json +50 -50
  139. package/package.json +2 -3
  140. package/plugin.json +2 -2
  141. package/scripts/actualizar.js +3 -0
  142. package/scripts/auditar-clases-conocidas.js +32 -4
  143. package/scripts/benchmark-memoria.js +1 -0
  144. package/scripts/cli/autonomia.js +23 -0
  145. package/scripts/cli/benchmark-memoria.js +37 -0
  146. package/scripts/cli/ciclo-autonomo.js +73 -0
  147. package/scripts/cli/ciclo-fase-b.js +102 -0
  148. package/scripts/cli/guardrail-metrics.js +39 -0
  149. package/scripts/cli/loop-telemetry.js +4 -2
  150. package/scripts/cli/memoria-search.js +69 -0
  151. package/scripts/cli/nudge-accionar.js +39 -0
  152. package/scripts/cli/run-eval.js +38 -0
  153. package/scripts/cli/run-skill-evals.js +13 -2
  154. package/scripts/derivar-feature-list.js +15 -14
  155. package/scripts/desinstalar.js +11 -0
  156. package/scripts/doctor.js +24 -10
  157. package/scripts/instalador.js +85 -7
  158. package/scripts/lib/activar-hooks-proyecto.js +12 -0
  159. package/scripts/lib/auditar-invocaciones-comandos.js +96 -6
  160. package/scripts/lib/ciclo-autonomo/candidatos.js +174 -0
  161. package/scripts/lib/ciclo-autonomo/config.js +165 -0
  162. package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -0
  163. package/scripts/lib/ciclo-autonomo/fallback.js +77 -0
  164. package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -0
  165. package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -0
  166. package/scripts/lib/ciclo-autonomo/index.js +301 -0
  167. package/scripts/lib/ciclo-autonomo/lock.js +124 -0
  168. package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -0
  169. package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -0
  170. package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -0
  171. package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -0
  172. package/scripts/lib/ciclo-autonomo/yaml-instintos.js +535 -0
  173. package/scripts/lib/estado.js +9 -0
  174. package/scripts/lib/gitignore-manifest.js +8 -1
  175. package/scripts/lib/hooks-settings.js +45 -0
  176. package/scripts/rotar-audit-logs.js +48 -2
  177. package/scripts/run-eval.js +1 -0
  178. package/scripts/run-skill-evals.js +287 -8
  179. package/scripts/smoke-test.js +16 -8
  180. package/scripts/tui/pantallas/install-wizard.js +403 -347
  181. package/scripts/validar.js +40 -1
@@ -1,191 +1,207 @@
1
- ---
2
- name: doubt-driven-review
3
- description: >
4
- Adversarial peer review de decisiones técnicas antes de comprometerlas.
5
- Cuestiona supuestos, fuerza la articulación de alternativas descartadas y
6
- detecta confianza injustificada. Cargar antes de decidir arquitecturas
7
- irreversibles, elegir un framework crítico, definir un contrato de API
8
- público o aprobar un PR de alto impacto. NO cubre adversarial review de
9
- memoria (eso lo hace red-team-swl) ni de seguridad de código (eso lo hace
10
- revisor-seguridad-swl) — este skill se especializa en decisiones técnicas
11
- con costo de cambio alto.
12
- version: "1.1.0"
13
- exclusiones:
14
- - "No cargar para revisión de memoria SWL (APRENDIZAJES.md, instintos/) — esa es responsabilidad de red-team-swl."
15
- - "No cargar para auditoría de seguridad de código (OWASP, CVEs, inyección) — usar revisor-seguridad-swl."
16
- - "No cargar para decisiones reversibles de bajo costo (formato de output, nombre de variable, refactor menor) — el overhead del review no compensa."
17
- - "No cargar para code review estándar de PR — eso es revisor-codigo-swl; este skill aplica a decisiones de diseño, no a calidad de código."
18
- ---
19
-
20
- # Doubt-Driven Review
21
-
22
- ## Cuándo cargar
23
-
24
- - Antes de aprobar un ADR que toma una decisión irreversible.
25
- - Antes de comprometer un contrato público de API o un schema de BD que afecta integraciones externas.
26
- - Antes de elegir un framework, librería o patrón con costo de migración alto.
27
- - Antes de fusionar un PR cuyo blast radius incluye módulos críticos.
28
- - Cuando el equipo o el agente exhibe **alta confianza con baja evidencia** sobre una decisión técnica.
29
-
30
- ## Cuándo NO cargar
31
-
32
- - Para revisar código por calidad — eso es `revisor-codigo-swl` con `Skill("checklist-calidad")`.
33
- - Para revisar seguridad — eso es `revisor-seguridad-swl` con `Skill("checklist-seguridad")`.
34
- - Para validar memoria contra prompt injection o privacidad — eso es `red-team-swl`.
35
- - Para discutir alcances con el usuario — eso es `Skill("brainstorming")` o `swl:discutir-fase`.
36
- - Para fixes triviales o decisiones reversibles en menos de 10 minutos.
37
-
38
- ## Principio
39
-
40
- > Una decisión cuya alternativa no se ha articulado, no es una decisión:
41
- > es una preferencia. Toda decisión técnica con costo de cambio alto debe
42
- > sobrevivir a un round adversarial antes de comprometerse.
43
-
44
- El skill ejecuta un protocolo en 5 pasos. Cada paso produce evidencia en
45
- texto. La salida del skill NO aprueba ni rechaza — produce un reporte que
46
- el agente o usuario humano usa para decidir.
47
-
48
- ## Protocolo
49
-
50
- ### Paso 1 — Articular la decisión y su irreversibilidad
51
-
52
- Pedir explícitamente:
53
-
54
- - **Qué se decide**: 1-3 oraciones, sin jerga ambigua.
55
- - **Qué se descarta**: la decisión opuesta concreta.
56
- - **Costo de revertir**: estimación en turnos / archivos / horas si en 3 meses se concluye que fue incorrecta.
57
-
58
- Si el costo de revertir es < 4 horas y < 5 archivos: la decisión NO es candidata
59
- a doubt-driven review. Cerrar el skill y proceder.
60
-
61
- ### Paso 2 — Forzar 3 alternativas descartadas
62
-
63
- El agente o usuario debe articular las 3 alternativas más fuertes que NO se eligieron, con:
64
-
65
- - Por qué cada una es plausible (≥ 1 razón concreta).
66
- - Qué tradeoff la hace inferior a la elegida (sin frase genérica como "menos flexible").
67
-
68
- Si la persona/agente no puede articular 3 alternativas: **señal de decisión bajo-evidencia**.
69
- Reportar: "Decisión propuesta sin alternativas articuladas. Riesgo de selección por inercia."
70
-
71
- ### Paso 3 — Buscar contraevidencia activamente
72
-
73
- Para la decisión propuesta:
74
-
75
- - Listar 3 escenarios donde la decisión **fallaría** o produciría costos no anticipados.
76
- - Listar 1 caso histórico (dentro o fuera del proyecto) donde una decisión similar resultó incorrecta.
77
- - Identificar 1 supuesto de la decisión que NO está validado con evidencia (corre el riesgo de ser falso).
78
-
79
- Si los 3 escenarios de falla son improbables Y el supuesto está validado: la decisión gana robustez.
80
- Si ≥ 1 escenario tiene probabilidad ≥ 30%: documentar el riesgo en el reporte.
81
-
82
- ### Paso 4 — Detectar confianza injustificada
83
-
84
- Patrones a marcar como red flags:
85
-
86
- - "Es la mejor práctica" sin citar fuente o caso.
87
- - "Siempre se hace así" sin verificar el contexto del proyecto actual.
88
- - "Es lo que recomienda <autoridad>" sin verificar que la recomendación aplica al stack/escala/dominio.
89
- - "No hay otra opción razonable" cuando el paso 2 ya forzó 3 alternativas.
90
- - Cita de un blog post o tweet como evidencia única.
91
- - Argumentos de tipo "todo el mundo lo usa" sin métrica concreta.
92
-
93
- Por cada red flag detectado: 1 línea en el reporte con cita textual del argumento.
94
-
95
- ### Paso 5 — Trigger de reversión
96
-
97
- Toda decisión que pase doubt-driven review debe incluir:
98
-
99
- - **Trigger de reversión**: condición observable que, de cumplirse, obliga a reabrir la decisión.
100
- Ejemplos válidos: "p95 de latencia > 800ms en producción durante 7 días",
101
- "≥3 reportes de bugs relacionados con la limitación X en 30 días", "vendor X
102
- publica deprecation notice", "costo mensual de infra excede $Y".
103
- - **Fecha de reevaluación automática**: 6-12 meses desde la fecha de decisión.
104
-
105
- Si la decisión NO puede tener trigger observable: es una decisión **basada en preferencia**,
106
- no en hipótesis falsable. Documentarla como tal en el reporte.
107
-
108
- ## Formato del reporte
109
-
110
- ```markdown
111
- ## Doubt-Driven Review — [decisión] — [fecha]
112
-
113
- ### Decisión articulada
114
- - Qué se decide: [...]
115
- - Qué se descarta: [...]
116
- - Costo de revertir: [estimación]
117
-
118
- ### Alternativas articuladas
119
- 1. [alt-1]: plausible porque [...]; descartada porque [tradeoff concreto]
120
- 2. [alt-2]: ...
121
- 3. [alt-3]: ...
122
-
123
- ### Contraevidencia
124
- - Escenario de falla 1 [prob: alta/media/baja]: [...]
125
- - Escenario de falla 2 [prob: ...]: [...]
126
- - Escenario de falla 3 [prob: ...]: [...]
127
- - Caso histórico relevante: [...]
128
- - Supuesto sin validar: [...]
129
-
130
- ### Red flags detectados
131
- - [línea N: cita textual del argumento débil]
132
- - [...]
133
- - (o "Ninguno")
134
-
135
- ### Trigger de reversión
136
- - Condición: [observable falsable]
137
- - Fecha de reevaluación: [YYYY-MM-DD]
138
-
139
- ### Veredicto
140
- - ROBUSTA — pasó los 5 pasos sin red flags y con trigger claro
141
- - ACEPTABLE — pasó con 1-2 red flags documentados y trigger claro
142
- - BAJO-EVIDENCIA — falla en pasos 2, 4 o 5; reabrir antes de comprometer
143
- ```
144
-
145
- ## Anti-patrones del skill
146
-
147
- - **Auto-revisión**: el agente que tomó la decisión ejecuta el skill sobre sí mismo.
148
- Pierde el efecto adversarial. Cargar el skill desde un agente distinto al
149
- decisor (ej: `arquitecto-swl` decidió `revisor-codigo-swl` ejecuta el skill
150
- con foco en la decisión).
151
- - **Trigger inverificable**: "cuando el sistema deje de escalar" no es trigger.
152
- Debe ser una métrica observable con valor numérico o evento concreto.
153
- - **Alternativas de paja**: las 3 alternativas no pueden ser opciones triviales
154
- inferiores a propósito. Si las 3 son obviamente peores, el skill perdió su valor
155
- pedir 3 alternativas reales o aceptar que la decisión es bajo-evidencia.
156
- - **Convertirlo en proceso burocrático**: aplicar doubt-driven a decisiones
157
- reversibles es overhead. El paso 1 filtra esto explícitamente.
158
-
159
- ## Entrada operacional
160
-
161
- Este skill tiene dos vías de invocación en el sistema:
162
-
163
- 1. **`abogado-diablo-swl`** (vía principal) el agente lo carga en su Fase 0 y
164
- ejecuta los 5 pasos añadiendo pre-mortem y dictamen. Punto de entrada del
165
- usuario: `/swl:predecir --abogado-diablo`.
166
- 2. **Carga directa** por un agente distinto al decisor (ej: `arquitecto-swl`
167
- decidió otro agente ejecuta el skill sobre la decisión) válida cuando no
168
- se necesita el pre-mortem completo.
169
-
170
- ## Relación con otras capacidades del sistema
171
-
172
- - `abogado-diablo-swl`: el agente que operacionaliza este skill (pre-mortem +
173
- dictamen PROCEDER/CON CONDICIONES/NO PROCEDER). Este skill define el protocolo;
174
- el agente lo ejecuta con separación decisor/crítico garantizada.
175
- - `red-team-swl`: cubre adversarial review de **memoria del sistema** (perfil-usuario,
176
- instintos, APRENDIZAJES). Doubt-driven cubre **decisiones técnicas**. NO duplicación.
177
- - `arquitecto-swl`: produce ADRs. Doubt-driven se carga ANTES de aceptar el ADR.
178
- - `revisor-codigo-swl`: revisa calidad de código ya escrito. Doubt-driven revisa
179
- decisiones ANTES de escribir código.
180
- - `Skill("verificar-trabajo")`: verificación goal-backward del resultado.
181
- Doubt-driven es goal-backward del **diseño**, no del resultado.
182
-
183
- ## Origen
184
-
185
- Patrón observado en `temp/agent-skills-main/skills/doubt-driven-development`
186
- (2026-05-09). Adaptado al sistema swl-ses: en español, con trigger de
187
- reversión obligatorio (alineado con `reglas/arquitectura.md` § ADRs en estado
188
- Propuesto), y con relación explícita a `red-team-swl` para evitar duplicar
189
- funciones que ya existen en el sistema.
190
-
191
- Para ejemplos concretos de aplicación, ver [`recursos/EXAMPLES.md`](recursos/EXAMPLES.md).
1
+ ---
2
+ name: doubt-driven-review
3
+ description: >
4
+ Adversarial peer review de decisiones técnicas antes de comprometerlas.
5
+ Cuestiona supuestos, fuerza la articulación de alternativas descartadas y
6
+ detecta confianza injustificada. Cargar antes de decidir arquitecturas
7
+ irreversibles, elegir un framework crítico, definir un contrato de API
8
+ público o aprobar un PR de alto impacto. NO cubre adversarial review de
9
+ memoria (eso lo hace red-team-swl) ni de seguridad de código (eso lo hace
10
+ revisor-seguridad-swl) — este skill se especializa en decisiones técnicas
11
+ con costo de cambio alto.
12
+ version: "1.2.0"
13
+ exclusiones:
14
+ - "No cargar para revisión de memoria SWL (APRENDIZAJES.md, instintos/) — esa es responsabilidad de red-team-swl."
15
+ - "No cargar para auditoría de seguridad de código (OWASP, CVEs, inyección) — usar revisor-seguridad-swl."
16
+ - "No cargar para decisiones reversibles de bajo costo (formato de output, nombre de variable, refactor menor) — el overhead del review no compensa."
17
+ - "No cargar para code review estándar de PR — eso es revisor-codigo-swl; este skill aplica a decisiones de diseño, no a calidad de código."
18
+ ---
19
+
20
+ # Doubt-Driven Review
21
+
22
+ ## Cuándo cargar
23
+
24
+ - Antes de aprobar un ADR que toma una decisión irreversible.
25
+ - Antes de comprometer un contrato público de API o un schema de BD que afecta integraciones externas.
26
+ - Antes de elegir un framework, librería o patrón con costo de migración alto.
27
+ - Antes de fusionar un PR cuyo blast radius incluye módulos críticos.
28
+ - Cuando el equipo o el agente exhibe **alta confianza con baja evidencia** sobre una decisión técnica.
29
+
30
+ ## Cuándo NO cargar
31
+
32
+ - Para revisar código por calidad — eso es `revisor-codigo-swl` con `Skill("checklist-calidad")`.
33
+ - Para revisar seguridad — eso es `revisor-seguridad-swl` con `Skill("checklist-seguridad")`.
34
+ - Para validar memoria contra prompt injection o privacidad — eso es `red-team-swl`.
35
+ - Para discutir alcances con el usuario — eso es `Skill("brainstorming")` o `swl:discutir-fase`.
36
+ - Para fixes triviales o decisiones reversibles en menos de 10 minutos.
37
+
38
+ ## Principio
39
+
40
+ > Una decisión cuya alternativa no se ha articulado, no es una decisión:
41
+ > es una preferencia. Toda decisión técnica con costo de cambio alto debe
42
+ > sobrevivir a un round adversarial antes de comprometerse.
43
+
44
+ El skill ejecuta un protocolo en 5 pasos. Cada paso produce evidencia en
45
+ texto. La salida del skill NO aprueba ni rechaza — produce un reporte que
46
+ el agente o usuario humano usa para decidir.
47
+
48
+ ## Protocolo
49
+
50
+ ### Paso 1 — Articular la decisión y su irreversibilidad
51
+
52
+ Pedir explícitamente:
53
+
54
+ - **Qué se decide**: 1-3 oraciones, sin jerga ambigua.
55
+ - **Qué se descarta**: la decisión opuesta concreta.
56
+ - **Costo de revertir**: estimación en turnos / archivos / horas si en 3 meses se concluye que fue incorrecta.
57
+
58
+ Si el costo de revertir es < 4 horas y < 5 archivos: la decisión NO es candidata
59
+ a doubt-driven review. Cerrar el skill y proceder.
60
+
61
+ ### Paso 2 — Forzar 3 alternativas descartadas
62
+
63
+ El agente o usuario debe articular las 3 alternativas más fuertes que NO se eligieron, con:
64
+
65
+ - Por qué cada una es plausible (≥ 1 razón concreta).
66
+ - Qué tradeoff la hace inferior a la elegida (sin frase genérica como "menos flexible").
67
+
68
+ Si la persona/agente no puede articular 3 alternativas: **señal de decisión bajo-evidencia**.
69
+ Reportar: "Decisión propuesta sin alternativas articuladas. Riesgo de selección por inercia."
70
+
71
+ ### Paso 3 — Buscar contraevidencia activamente
72
+
73
+ Para la decisión propuesta:
74
+
75
+ - Listar 3 escenarios donde la decisión **fallaría** o produciría costos no anticipados.
76
+ - Listar 1 caso histórico (dentro o fuera del proyecto) donde una decisión similar resultó incorrecta.
77
+ - Identificar 1 supuesto de la decisión que NO está validado con evidencia (corre el riesgo de ser falso).
78
+
79
+ Si los 3 escenarios de falla son improbables Y el supuesto está validado: la decisión gana robustez.
80
+ Si ≥ 1 escenario tiene probabilidad ≥ 30%: documentar el riesgo en el reporte.
81
+
82
+ ### Paso 4 — Detectar confianza injustificada
83
+
84
+ Patrones a marcar como red flags:
85
+
86
+ - "Es la mejor práctica" sin citar fuente o caso.
87
+ - "Siempre se hace así" sin verificar el contexto del proyecto actual.
88
+ - "Es lo que recomienda <autoridad>" sin verificar que la recomendación aplica al stack/escala/dominio.
89
+ - "No hay otra opción razonable" cuando el paso 2 ya forzó 3 alternativas.
90
+ - Cita de un blog post o tweet como evidencia única.
91
+ - Argumentos de tipo "todo el mundo lo usa" sin métrica concreta.
92
+
93
+ Por cada red flag detectado: 1 línea en el reporte con cita textual del argumento.
94
+
95
+ ### Paso 5 — Trigger de reversión
96
+
97
+ Toda decisión que pase doubt-driven review debe incluir:
98
+
99
+ - **Trigger de reversión**: condición observable que, de cumplirse, obliga a reabrir la decisión.
100
+ Ejemplos válidos: "p95 de latencia > 800ms en producción durante 7 días",
101
+ "≥3 reportes de bugs relacionados con la limitación X en 30 días", "vendor X
102
+ publica deprecation notice", "costo mensual de infra excede $Y".
103
+ - **Fecha de reevaluación automática**: 6-12 meses desde la fecha de decisión.
104
+
105
+ Si la decisión NO puede tener trigger observable: es una decisión **basada en preferencia**,
106
+ no en hipótesis falsable. Documentarla como tal en el reporte.
107
+
108
+ ## Formato del reporte
109
+
110
+ ```markdown
111
+ ## Doubt-Driven Review — [decisión] — [fecha]
112
+
113
+ ### Decisión articulada
114
+ - Qué se decide: [...]
115
+ - Qué se descarta: [...]
116
+ - Costo de revertir: [estimación]
117
+
118
+ ### Alternativas articuladas
119
+ 1. [alt-1]: plausible porque [...]; descartada porque [tradeoff concreto]
120
+ 2. [alt-2]: ...
121
+ 3. [alt-3]: ...
122
+
123
+ ### Contraevidencia
124
+ - Escenario de falla 1 [prob: alta/media/baja]: [...]
125
+ - Escenario de falla 2 [prob: ...]: [...]
126
+ - Escenario de falla 3 [prob: ...]: [...]
127
+ - Caso histórico relevante: [...]
128
+ - Supuesto sin validar: [...]
129
+
130
+ ### Red flags detectados
131
+ - [línea N: cita textual del argumento débil]
132
+ - [...]
133
+ - (o "Ninguno")
134
+
135
+ ### Trigger de reversión
136
+ - Condición: [observable falsable]
137
+ - Fecha de reevaluación: [YYYY-MM-DD]
138
+
139
+ ### Veredicto
140
+ - ROBUSTA — pasó los 5 pasos sin red flags y con trigger claro
141
+ - ACEPTABLE — pasó con 1-2 red flags documentados y trigger claro
142
+ - BAJO-EVIDENCIA — falla en pasos 2, 4 o 5; reabrir antes de comprometer
143
+ ```
144
+
145
+ ## Patrón validado: dictamen adversarial convertido en gates de activación
146
+
147
+ [Caso real 2026-07-10, ADR-0042] La forma de mayor valor del veredicto
148
+ adversarial no es el veto sino la **conversión de cada condición del dictamen
149
+ en un gate verificable del propio diseño**: el abogado del diablo (verificando
150
+ contra el repo con archivo:línea, no opinando) produjo 3 pre-mortems plausibles
151
+ (canary sin señal estadística, el-sistema-escribe-su-propio-examen, headless
152
+ que compite con la sesión del usuario) y 7 condiciones; en lugar de rechazar
153
+ el plan, las condiciones se integraron como gates de activación escalonados
154
+ (G-B…G-E) con criterios observables y triggers de reversión. Resultado: la
155
+ decisión del usuario se respeta, el riesgo queda contenido POR CONSTRUCCIÓN y
156
+ el dictamen deja de ser un documento se vuelve arquitectura. Requisitos del
157
+ patrón: el crítico verifica afirmaciones contra el código real (no memoria),
158
+ cada condición tiene verificación binaria, y los gates viven en el ADR con
159
+ fecha de reevaluación.
160
+
161
+ ## Anti-patrones del skill
162
+
163
+ - **Auto-revisión**: el agente que tomó la decisión ejecuta el skill sobre mismo.
164
+ Pierde el efecto adversarial. Cargar el skill desde un agente distinto al
165
+ decisor (ej: `arquitecto-swl` decidió → `revisor-codigo-swl` ejecuta el skill
166
+ con foco en la decisión).
167
+ - **Trigger inverificable**: "cuando el sistema deje de escalar" no es trigger.
168
+ Debe ser una métrica observable con valor numérico o evento concreto.
169
+ - **Alternativas de paja**: las 3 alternativas no pueden ser opciones triviales
170
+ inferiores a propósito. Si las 3 son obviamente peores, el skill perdió su valor
171
+ — pedir 3 alternativas reales o aceptar que la decisión es bajo-evidencia.
172
+ - **Convertirlo en proceso burocrático**: aplicar doubt-driven a decisiones
173
+ reversibles es overhead. El paso 1 filtra esto explícitamente.
174
+
175
+ ## Entrada operacional
176
+
177
+ Este skill tiene dos vías de invocación en el sistema:
178
+
179
+ 1. **`abogado-diablo-swl`** (vía principal) — el agente lo carga en su Fase 0 y
180
+ ejecuta los 5 pasos añadiendo pre-mortem y dictamen. Punto de entrada del
181
+ usuario: `/swl:predecir --abogado-diablo`.
182
+ 2. **Carga directa** por un agente distinto al decisor (ej: `arquitecto-swl`
183
+ decidió → otro agente ejecuta el skill sobre la decisión) — válida cuando no
184
+ se necesita el pre-mortem completo.
185
+
186
+ ## Relación con otras capacidades del sistema
187
+
188
+ - `abogado-diablo-swl`: el agente que operacionaliza este skill (pre-mortem +
189
+ dictamen PROCEDER/CON CONDICIONES/NO PROCEDER). Este skill define el protocolo;
190
+ el agente lo ejecuta con separación decisor/crítico garantizada.
191
+ - `red-team-swl`: cubre adversarial review de **memoria del sistema** (perfil-usuario,
192
+ instintos, APRENDIZAJES). Doubt-driven cubre **decisiones técnicas**. NO duplicación.
193
+ - `arquitecto-swl`: produce ADRs. Doubt-driven se carga ANTES de aceptar el ADR.
194
+ - `revisor-codigo-swl`: revisa calidad de código ya escrito. Doubt-driven revisa
195
+ decisiones ANTES de escribir código.
196
+ - `Skill("verificar-trabajo")`: verificación goal-backward del resultado.
197
+ Doubt-driven es goal-backward del **diseño**, no del resultado.
198
+
199
+ ## Origen
200
+
201
+ Patrón observado en `temp/agent-skills-main/skills/doubt-driven-development`
202
+ (2026-05-09). Adaptado al sistema swl-ses: en español, con trigger de
203
+ reversión obligatorio (alineado con `reglas/arquitectura.md` § ADRs en estado
204
+ Propuesto), y con relación explícita a `red-team-swl` para evitar duplicar
205
+ funciones que ya existen en el sistema.
206
+
207
+ Para ejemplos concretos de aplicación, ver [`recursos/EXAMPLES.md`](recursos/EXAMPLES.md).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: drift-detection
3
- version: 1.0.0
3
+ version: 1.0.1
4
4
  herramientasPermitidas: [Read]
5
5
  description: "Detección de drift de métricas de agentes/skills via ventana deslizante (7d) vs baseline (4 semanas). Integrado al operador Reflect del ciclo AGP."
6
6
  exclusiones:
@@ -38,6 +38,11 @@ Adaptado de `runDriftCheck`/`getDriftTimeline` en mission-control-main (MIT).
38
38
 
39
39
  ## Exports del módulo
40
40
 
41
+ Los bloques `js` de este skill documentan la API con el layout del repo madre
42
+ (`scripts/lib/`, `hooks/lib/`); en instalaciones destino los módulos viven
43
+ aplanados junto a los hooks instalados. Referencia de API, no comandos a
44
+ ejecutar tal cual en proyectos consumidores.
45
+
41
46
  ```js
42
47
  const { detectarDrift, generarLineaTemporal } = require('./scripts/lib/drift-detector');
43
48
  ```
@@ -47,7 +47,7 @@ Antes de la primera tarea Y al inicio de cada slice, verificar que el PLAN no
47
47
  fue mutado tras su aprobación:
48
48
 
49
49
  ```bash
50
- node -e "const {verificarPlan}=require('./scripts/lib/plan-lock'); console.log(JSON.stringify(verificarPlan('.planning/fases/0N-PLAN.md')))"
50
+ swl-ses verificar-plan --fase=0N
51
51
  ```
52
52
 
53
53
  - `modo: "firmado"` → continuar.
@@ -84,13 +84,13 @@ Tras commitear una tarea (y al cerrar la fase), evaluar las adyacencias de riesg
84
84
  del diff y anexar propuestas SOLO si hay señal. Propone, nunca bloquea ni ejecuta:
85
85
 
86
86
  ```bash
87
- node hooks/lib/propose-step.js --rango=HEAD~1..HEAD
87
+ swl-ses propose-step --rango=HEAD~1..HEAD
88
88
  ```
89
89
 
90
90
  Si imprime un anexo, agregarlo al reporte de la tarea (y al RESUMEN.md al cerrar
91
91
  la fase). Si no imprime nada, silencio — no agregar sección vacía. Opt-out con
92
92
  `SWL_PROPOSE=0`. Antes de una acción autónoma de clase `cambio_reversible`,
93
- registrar el auto-checkpoint: `node hooks/lib/autonomia.js --accion "<acción>"`.
93
+ registrar el auto-checkpoint: `swl-ses autonomia --accion="<acción>"`.
94
94
  Detalle en el fragmento `agentes/_propose-step.md`.
95
95
 
96
96
  ### Protocolo de retry con backoff exponencial
@@ -325,7 +325,7 @@ sigue el ciclo con evidencia.
325
325
  Al iniciar la primera tarea de código de la fase, abrir la corrida de evidencia:
326
326
 
327
327
  ```bash
328
- node -e "const lt=require('./hooks/lib/loop-telemetry');const r=lt.iniciarCorrida({tipo:'tdd',direccion:'lower_is_better',config:{fase:'0N',tarea:'T-NN'}});console.log(r.dir)"
328
+ swl-ses loop-telemetry iniciar --tipo=tdd --direccion=lower_is_better --config='{"fase":"0N","tarea":"T-NN"}'
329
329
  ```
330
330
 
331
331
  **RED**: Escribir el test que describe el comportamiento esperado.
@@ -334,14 +334,14 @@ de sintaxis o configuración. **Registrar la evidencia** (métrica = tests falla
334
334
  descripción = fallo exacto):
335
335
 
336
336
  ```bash
337
- node -e "const lt=require('./hooks/lib/loop-telemetry');lt.registrarIteracion('<dir>',{iteracion:0,metrica:<N_fallan>,delta:0,estado:'baseline',descripcion:'RED T-NN: <fallo exacto del runner>'})"
337
+ swl-ses loop-telemetry registrar --dir=<dir> --iteracion=0 --metrica=<N_fallan> --delta=0 --estado=baseline --descripcion="RED T-NN: <fallo exacto del runner>"
338
338
  ```
339
339
 
340
340
  **GREEN**: Escribir la implementación mínima que hace pasar el test.
341
341
  "Mínima" significa: no implementar más de lo que el test exige. Registrar:
342
342
 
343
343
  ```bash
344
- node -e "const lt=require('./hooks/lib/loop-telemetry');lt.registrarIteracion('<dir>',{iteracion:1,metrica:0,delta:-<N>,estado:'keep',descripcion:'GREEN T-NN: suite verde'})"
344
+ swl-ses loop-telemetry registrar --dir=<dir> --iteracion=1 --metrica=0 --delta=-<N> --estado=keep --descripcion="GREEN T-NN: suite verde"
345
345
  ```
346
346
 
347
347
  **REFACTOR**: Limpiar el código sin cambiar el comportamiento.
@@ -47,6 +47,11 @@ evolvable: true # default para skill estandar
47
47
 
48
48
  ## Uso típico desde agente o test
49
49
 
50
+ Los bloques `js` de esta sección documentan la API de los módulos con el
51
+ layout del repo madre (`scripts/lib/`); en instalaciones destino viven
52
+ aplanados junto a los hooks instalados. Para ejecución en proyectos
53
+ consumidores usar el CLI (`swl-ses run-eval`, sección final).
54
+
50
55
  ### Validar output contra schema
51
56
 
52
57
  ```js
@@ -137,12 +142,12 @@ cat > /tmp/eval.json << 'EOF'
137
142
  }
138
143
  EOF
139
144
 
140
- # Ejecutar
141
- node scripts/run-eval.js /tmp/eval.json
145
+ # Ejecutar (CLI cross-scope; en el repo madre equivale a scripts/run-eval.js)
146
+ swl-ses run-eval /tmp/eval.json
142
147
  # Exit 0 si valid, 1 si inválido. Persiste métricas automáticamente.
143
148
 
144
149
  # Reconstruir agregado desde JSONL si se corrompe
145
- node scripts/run-eval.js --rebuild-aggregate
150
+ swl-ses run-eval --rebuild-aggregate
146
151
  ```
147
152
 
148
153
  ---