@saulwade/swl-ses 2.6.0 → 2.6.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.
- package/CLAUDE.md +197 -197
- package/README.md +600 -600
- package/agentes/_intent-spec.md +73 -73
- package/agentes/_propose-step.md +90 -90
- package/agentes/accesibilidad-wcag-swl.md +690 -690
- package/agentes/arquitecto-swl.md +267 -267
- package/agentes/auto-evolucion-swl.md +932 -932
- package/agentes/backend-csharp-swl.md +420 -420
- package/agentes/backend-go-swl.md +390 -390
- package/agentes/backend-java-swl.md +281 -281
- package/agentes/backend-rust-swl.md +364 -364
- package/agentes/backend-workers-swl.md +482 -482
- package/agentes/cloud-infra-swl.md +509 -509
- package/agentes/consolidador-swl.md +541 -541
- package/agentes/depurador-swl.md +352 -352
- package/agentes/devops-ci-swl.md +400 -400
- package/agentes/disenador-ui-swl.md +569 -569
- package/agentes/documentador-swl.md +345 -345
- package/agentes/frontend-angular-swl.md +621 -621
- package/agentes/frontend-css-swl.md +716 -716
- package/agentes/frontend-react-swl.md +692 -692
- package/agentes/frontend-swl.md +496 -496
- package/agentes/frontend-tailwind-swl.md +826 -826
- package/agentes/investigador-swl.md +432 -432
- package/agentes/investigador-ux-swl.md +505 -505
- package/agentes/migrador-swl.md +442 -442
- package/agentes/mobile-android-swl.md +511 -511
- package/agentes/mobile-cross-swl.md +541 -541
- package/agentes/mobile-ios-swl.md +502 -502
- package/agentes/mobile-testing-swl.md +302 -302
- package/agentes/nemesis-auditor-swl.md +285 -285
- package/agentes/observabilidad-swl.md +438 -438
- package/agentes/pagos-swl.md +310 -310
- package/agentes/perfilador-usuario-swl.md +321 -321
- package/agentes/planificador-swl.md +399 -399
- package/agentes/producto-prd-swl.md +589 -589
- package/agentes/red-team-swl.md +218 -218
- package/agentes/release-manager-swl.md +590 -590
- package/agentes/rendimiento-swl.md +713 -713
- package/agentes/revisor-angular-swl.md +278 -278
- package/agentes/revisor-csharp-swl.md +264 -264
- package/agentes/revisor-go-swl.md +259 -259
- package/agentes/revisor-java-swl.md +257 -257
- package/agentes/revisor-kotlin-swl.md +273 -273
- package/agentes/revisor-nextjs-swl.md +281 -281
- package/agentes/revisor-php-swl.md +271 -271
- package/agentes/revisor-react-swl.md +278 -278
- package/agentes/revisor-rust-swl.md +346 -346
- package/agentes/revisor-seguridad-swl.md +399 -399
- package/agentes/revisor-swift-swl.md +268 -268
- package/agentes/revisor-typescript-swl.md +346 -346
- package/agentes/tdd-qa-swl.md +393 -393
- package/comandos/swl/actualizar.md +174 -174
- package/comandos/swl/adoptar-proyecto.md +265 -265
- package/comandos/swl/aprender.md +836 -836
- package/comandos/swl/aprobar-plan.md +146 -146
- package/comandos/swl/auditar-deps.md +134 -134
- package/comandos/swl/autoresearch.md +264 -264
- package/comandos/swl/ayuda.md +224 -224
- package/comandos/swl/brainstorm.md +51 -51
- package/comandos/swl/briefing.md +119 -119
- package/comandos/swl/checkpoint.md +325 -325
- package/comandos/swl/claudemd.md +234 -234
- package/comandos/swl/compactar.md +310 -310
- package/comandos/swl/configurar-ci.md +235 -235
- package/comandos/swl/contexto.md +110 -110
- package/comandos/swl/contribuir.md +233 -233
- package/comandos/swl/crear-skill.md +292 -292
- package/comandos/swl/cron.md +194 -194
- package/comandos/swl/discutir-fase.md +169 -169
- package/comandos/swl/ejecutar-fase.md +233 -233
- package/comandos/swl/evaluar-skill.md +520 -520
- package/comandos/swl/evolucion-continua.md +73 -73
- package/comandos/swl/evolucionar.md +267 -267
- package/comandos/swl/exportar-vault.md +583 -583
- package/comandos/swl/fix.md +118 -118
- package/comandos/swl/gateway.md +158 -158
- package/comandos/swl/inbox.md +116 -116
- package/comandos/swl/instalar.md +220 -220
- package/comandos/swl/instintos.md +86 -86
- package/comandos/swl/mapear-codebase.md +312 -312
- package/comandos/swl/mcp-status.md +175 -175
- package/comandos/swl/modelo.md +100 -100
- package/comandos/swl/nemesis.md +433 -433
- package/comandos/swl/notificaciones.md +299 -299
- package/comandos/swl/nuevo-proyecto.md +251 -251
- package/comandos/swl/planear-fase.md +263 -263
- package/comandos/swl/plugins.md +256 -256
- package/comandos/swl/predecir.md +169 -169
- package/comandos/swl/reflect-skills.md +125 -125
- package/comandos/swl/release.md +450 -450
- package/comandos/swl/revisar-impacto.md +201 -201
- package/comandos/swl/revisar.md +330 -330
- package/comandos/swl/seguridad.md +189 -189
- package/comandos/swl/sesiones.md +200 -200
- package/comandos/swl/skill-search.md +113 -113
- package/comandos/swl/status.md +345 -345
- package/comandos/swl/verificar.md +817 -817
- package/comandos/swl/wiki.md +620 -620
- package/gateway/cron/jobs.example.json +12 -12
- package/habilidades/auto-evolucion-protocolo/SKILL.md +294 -294
- package/habilidades/backend-async-postgres-testing/SKILL.md +2 -1
- package/habilidades/changelog-generator/SKILL.md +174 -174
- package/habilidades/compactacion-contexto/SKILL.md +2 -1
- package/habilidades/contenedores-docker/SKILL.md +4 -2
- package/habilidades/doubt-driven-review/SKILL.md +207 -207
- package/habilidades/drift-detection/SKILL.md +1 -1
- package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
- package/habilidades/extractor-de-aprendizajes/SKILL.md +8 -2
- package/habilidades/git-worktrees-paralelo/SKILL.md +19 -1
- package/habilidades/harness-claude-code/SKILL.md +314 -314
- package/habilidades/instalar-sistema/SKILL.md +227 -227
- package/habilidades/planear-fase/SKILL.md +358 -358
- package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
- package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
- package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -147
- package/habilidades/release-semver/SKILL.md +2 -2
- package/habilidades/tdd-workflow/SKILL.md +749 -749
- package/hooks/agente-lifecycle.js +1 -1
- package/hooks/audit-trail.js +1 -1
- package/hooks/auto-consolidacion.js +1 -1
- package/hooks/captura-acciones-post.js +1 -1
- package/hooks/captura-acciones-session.js +1 -1
- package/hooks/captura-feedback-usuario.js +1 -1
- package/hooks/contexto-iteracion.js +1 -1
- package/hooks/contexto-subagente.js +68 -68
- package/hooks/degradacion-instintos.js +1 -1
- package/hooks/grafo-contexto.js +1 -1
- package/hooks/guardrail-modelo.js +1 -1
- package/hooks/inbox-aviso.js +1 -1
- package/hooks/inyeccion-contexto.js +1 -1
- package/hooks/lib/agent-matcher.js +1 -1
- package/hooks/lib/agent-routing.js +1 -1
- package/hooks/lib/captura-acciones.js +1 -1
- package/hooks/lib/etapa-metricas.js +1 -1
- package/hooks/lib/evolution-tracker.js +1 -1
- package/hooks/lib/gateway-notify.js +193 -193
- package/hooks/lib/mcp-health.js +1 -1
- package/hooks/lib/notificacion-formato.js +58 -0
- package/hooks/lib/nudge-tracker.js +1 -1
- package/hooks/lib/otlp-exporter.js +1 -1
- package/hooks/lib/propose-step.js +1 -1
- package/hooks/lib/raiz-proyecto.js +127 -102
- package/hooks/lib/run-log.js +1 -1
- package/hooks/lib/singleton-guard.js +20 -13
- package/hooks/lib/telegram-cliente.js +11 -3
- package/hooks/notificacion-telegram.js +13 -3
- package/hooks/preservar-estado-pre-compact.js +1 -1
- package/hooks/registro-turnos.js +1 -1
- package/hooks/resumen-sesion.js +1 -1
- package/hooks/risk-scoring.js +1 -1
- package/hooks/session-briefing.js +1 -1
- package/hooks/spec-gate.js +1 -1
- package/hooks/sugerir-regenerar-inventario.js +1 -1
- package/hooks/tdd-gate.js +1 -1
- package/hooks/telemetria-agentes.js +1 -1
- package/hooks/telemetria-skill-routing.js +1 -1
- package/hooks/tracking-costos.js +1 -1
- package/hooks/validar-formato-post-subagente.js +1 -1
- package/hooks/validar-intent-spec.js +1 -1
- package/hooks/validar-planning-paths.js +1 -1
- package/llms.txt +29 -29
- package/manifiestos/canonical-hashes.json +5588 -5257
- package/manifiestos/hooks-config.json +469 -469
- package/manifiestos/invariantes-criticos.json +30 -30
- package/manifiestos/modulos.json +1429 -1428
- package/manifiestos/skills-lock.json +1275 -1275
- package/package.json +94 -94
- package/plugin.json +369 -369
- package/scripts/auditar-clases-conocidas.js +134 -134
- package/scripts/bootstrap-instintos.js +85 -14
- package/scripts/canario-hooks.js +166 -166
- package/scripts/cli/autonomia.js +23 -23
- package/scripts/cli/benchmark-memoria.js +37 -37
- package/scripts/cli/ciclo-autonomo.js +73 -73
- package/scripts/cli/ciclo-fase-b.js +102 -102
- package/scripts/cli/guardrail-metrics.js +39 -39
- package/scripts/cli/memoria-search.js +69 -69
- package/scripts/cli/nudge-accionar.js +39 -39
- package/scripts/cli/run-eval.js +38 -38
- package/scripts/doctor.js +26 -3
- package/scripts/evidencia-valor.js +101 -101
- package/scripts/field-report.js +16 -16
- package/scripts/instalador.js +13 -0
- package/scripts/lib/activar-hooks-proyecto.js +116 -116
- package/scripts/lib/ciclo-autonomo/candidatos.js +174 -174
- package/scripts/lib/ciclo-autonomo/config.js +165 -165
- package/scripts/lib/ciclo-autonomo/drenador-feedback.js +174 -174
- package/scripts/lib/ciclo-autonomo/fallback.js +77 -77
- package/scripts/lib/ciclo-autonomo/guard-convivencia.js +139 -139
- package/scripts/lib/ciclo-autonomo/higiene-nudges.js +112 -112
- package/scripts/lib/ciclo-autonomo/index.js +301 -301
- package/scripts/lib/ciclo-autonomo/lock.js +124 -124
- package/scripts/lib/ciclo-autonomo/presupuesto.js +122 -122
- package/scripts/lib/ciclo-autonomo/puente-degradacion.js +240 -240
- package/scripts/lib/ciclo-autonomo/runner-fase-b.js +248 -248
- package/scripts/lib/ciclo-autonomo/writer-instintos.js +190 -190
- package/scripts/lib/ciclo-autonomo/yaml-instintos.js +535 -535
- package/scripts/lib/evidencia-valor.js +228 -228
- package/scripts/lib/expandir-targets.js +71 -71
- package/scripts/lib/limpiar-basura-global.js +161 -0
- package/scripts/lib/toml-merge.js +204 -204
- package/scripts/mcp-server/auth.js +105 -105
- package/scripts/mcp-server/cache.js +106 -106
- package/scripts/tui/pantallas/install-wizard.js +403 -403
- package/instintos/.backups/perfil-usuario.yaml.2026-07-10-165128.bak +0 -53
- package/instintos/.backups/proyecto.yaml.2026-07-10-165128.bak +0 -372
|
@@ -1,207 +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.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 sí 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
|
+
---
|
|
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 sí 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.1
|
|
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:
|