@saulwade/swl-ses 2.4.3 → 2.5.2

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 (200) hide show
  1. package/CLAUDE.md +194 -241
  2. package/README.md +600 -597
  3. package/agentes/_intent-spec.md +73 -73
  4. package/agentes/_propose-step.md +90 -90
  5. package/agentes/abogado-diablo-swl.md +145 -0
  6. package/agentes/accesibilidad-wcag-swl.md +690 -690
  7. package/agentes/arquitecto-swl.md +267 -267
  8. package/agentes/auto-evolucion-swl.md +908 -908
  9. package/agentes/backend-api-swl.md +1 -1
  10. package/agentes/backend-csharp-swl.md +420 -420
  11. package/agentes/backend-go-swl.md +390 -390
  12. package/agentes/backend-java-swl.md +281 -281
  13. package/agentes/backend-node-swl.md +1 -1
  14. package/agentes/backend-python-swl.md +1 -1
  15. package/agentes/backend-rust-swl.md +364 -364
  16. package/agentes/backend-workers-swl.md +482 -482
  17. package/agentes/cloud-infra-swl.md +509 -509
  18. package/agentes/consolidador-swl.md +541 -541
  19. package/agentes/datos-swl.md +1 -1
  20. package/agentes/depurador-swl.md +352 -352
  21. package/agentes/devops-ci-swl.md +400 -400
  22. package/agentes/disenador-ui-swl.md +569 -569
  23. package/agentes/documentador-swl.md +345 -345
  24. package/agentes/frontend-angular-swl.md +621 -621
  25. package/agentes/frontend-css-swl.md +716 -716
  26. package/agentes/frontend-react-swl.md +692 -692
  27. package/agentes/frontend-swl.md +496 -496
  28. package/agentes/frontend-tailwind-swl.md +826 -826
  29. package/agentes/gh-fix-ci-swl.md +6 -1
  30. package/agentes/implementador-swl.md +1 -1
  31. package/agentes/investigador-swl.md +432 -432
  32. package/agentes/investigador-ux-swl.md +505 -505
  33. package/agentes/llm-apps-swl.md +1 -1
  34. package/agentes/migrador-swl.md +442 -442
  35. package/agentes/mobile-android-swl.md +511 -511
  36. package/agentes/mobile-cross-swl.md +541 -541
  37. package/agentes/mobile-ios-swl.md +502 -502
  38. package/agentes/mobile-testing-swl.md +302 -302
  39. package/agentes/nemesis-auditor-swl.md +285 -285
  40. package/agentes/notificador-swl.md +1 -1
  41. package/agentes/observabilidad-swl.md +438 -438
  42. package/agentes/pagos-swl.md +310 -310
  43. package/agentes/perfilador-usuario-swl.md +321 -321
  44. package/agentes/planificador-swl.md +399 -399
  45. package/agentes/producto-prd-swl.md +589 -589
  46. package/agentes/red-team-swl.md +218 -218
  47. package/agentes/release-manager-swl.md +590 -590
  48. package/agentes/rendimiento-swl.md +713 -713
  49. package/agentes/resolutor-build-swl.md +10 -1
  50. package/agentes/revisor-angular-swl.md +278 -278
  51. package/agentes/revisor-codigo-swl.md +1 -1
  52. package/agentes/revisor-csharp-swl.md +264 -264
  53. package/agentes/revisor-go-swl.md +259 -259
  54. package/agentes/revisor-java-swl.md +257 -257
  55. package/agentes/revisor-kotlin-swl.md +273 -273
  56. package/agentes/revisor-nextjs-swl.md +281 -281
  57. package/agentes/revisor-php-swl.md +271 -271
  58. package/agentes/revisor-react-swl.md +278 -278
  59. package/agentes/revisor-rust-swl.md +346 -346
  60. package/agentes/revisor-seguridad-swl.md +399 -399
  61. package/agentes/revisor-swift-swl.md +268 -268
  62. package/agentes/revisor-typescript-swl.md +346 -346
  63. package/agentes/sre-swl.md +1 -1
  64. package/agentes/tdd-qa-swl.md +393 -393
  65. package/bin/lib/bot-comandos.js +1 -1
  66. package/bin/swl-ses.js +6 -0
  67. package/comandos/swl/adoptar-proyecto.md +14 -2
  68. package/comandos/swl/configurar-ci.md +8 -1
  69. package/comandos/swl/deuda-codigo.md +97 -97
  70. package/comandos/swl/discutir-fase.md +22 -118
  71. package/comandos/swl/fix.md +118 -0
  72. package/comandos/swl/nuevo-proyecto.md +54 -3
  73. package/comandos/swl/predecir.md +32 -2
  74. package/comandos/swl/seguridad.md +189 -0
  75. package/comandos/swl/status.md +5 -3
  76. package/habilidades/aprendizaje-continuo/SKILL.md +3 -1
  77. package/habilidades/discutir-fase/SKILL.md +84 -81
  78. package/habilidades/discutir-fase/recursos/plantilla-contexto.md +136 -0
  79. package/habilidades/doc-sync/SKILL.md +3 -1
  80. package/habilidades/doubt-driven-review/SKILL.md +15 -1
  81. package/habilidades/ejecutar-task-iterativo/SKILL.md +278 -278
  82. package/habilidades/estructura-proyecto-claude/SKILL.md +11 -2
  83. package/habilidades/harness-claude-code/SKILL.md +3 -1
  84. package/habilidades/instalar-sistema/SKILL.md +3 -1
  85. package/habilidades/meta-reglas-extendido/SKILL.md +92 -0
  86. package/habilidades/meta-reglas-extendido/recursos/analisis-previo-tareas-grandes.md +186 -0
  87. package/habilidades/meta-reglas-extendido/recursos/analizar-directorios-antes-de-escribir.md +235 -0
  88. package/habilidades/meta-reglas-extendido/recursos/api-diseno.md +413 -0
  89. package/habilidades/meta-reglas-extendido/recursos/arquitectura.md +491 -0
  90. package/habilidades/meta-reglas-extendido/recursos/arreglar-al-detectar.md +264 -0
  91. package/habilidades/meta-reglas-extendido/recursos/debatir-antes-de-aceptar.md +152 -0
  92. package/habilidades/meta-reglas-extendido/recursos/git-workflow.md +259 -0
  93. package/habilidades/meta-reglas-extendido/recursos/gobernanza.md +291 -0
  94. package/habilidades/meta-reglas-extendido/recursos/memoria-consolidada.md +263 -0
  95. package/habilidades/meta-reglas-extendido/recursos/seguridad-agentes.md +443 -0
  96. package/habilidades/meta-reglas-extendido/recursos/sesiones-paralelas.md +190 -0
  97. package/habilidades/meta-reglas-extendido/recursos/sin-duplicacion-reglas-globales.md +179 -0
  98. package/habilidades/meta-reglas-extendido/recursos/skills-estandar.md +394 -0
  99. package/habilidades/meta-reglas-extendido/recursos/usar-code-review-graph.md +156 -0
  100. package/habilidades/meta-reglas-extendido/recursos/usar-context7.md +236 -0
  101. package/habilidades/meta-reglas-extendido/recursos/usar-sistema-swl.md +253 -0
  102. package/habilidades/meta-reglas-extendido/recursos/verificar-citas-normativas.md +527 -0
  103. package/habilidades/meta-skills-estandar/SKILL.md +3 -1
  104. package/habilidades/nuevo-proyecto/SKILL.md +20 -3
  105. package/habilidades/php-experto/SKILL.md +10 -3
  106. package/habilidades/{filament-admin/SKILL.md → php-experto/recursos/filament-admin.md} +23 -39
  107. package/habilidades/prevencion-sobreingenieria/recursos/soluciones-nativas.md +166 -166
  108. package/habilidades/prevencion-sobreingenieria/recursos/variables-residuales-post-refactor.md +85 -85
  109. package/habilidades/proceso-debate-adversarial/recursos/personas.md +5 -4
  110. package/habilidades/proceso-ingenieria-requerimientos/SKILL.md +147 -0
  111. package/hooks/check-update.js +19 -10
  112. package/hooks/contexto-subagente.js +68 -68
  113. package/hooks/degradacion-instintos.js +1 -1
  114. package/hooks/extraccion-aprendizajes.js +2 -2
  115. package/hooks/lib/briefing.js +3 -3
  116. package/hooks/lib/nudge-tracker.js +1 -1
  117. package/hooks/lib/otlp-exporter.js +1 -1
  118. package/hooks/lib/webhook-dedup.js +1 -1
  119. package/hooks/session-briefing.js +1 -1
  120. package/llms.txt +6 -6
  121. package/manifiestos/canonical-hashes.json +1043 -52
  122. package/manifiestos/hooks-config.json +469 -469
  123. package/manifiestos/invariantes-criticos.json +30 -30
  124. package/manifiestos/modulos.json +168 -135
  125. package/manifiestos/perfiles.json +0 -2
  126. package/manifiestos/skills-lock.json +49 -56
  127. package/package.json +7 -5
  128. package/plantillas/github-workflows/README.md +15 -1
  129. package/plantillas/github-workflows/swl-devsecops.yml +70 -0
  130. package/plugin.json +5 -5
  131. package/reglas/analisis-previo-tareas-grandes.md +30 -156
  132. package/reglas/analizar-directorios-antes-de-escribir.md +30 -211
  133. package/reglas/api-diseno.md +28 -398
  134. package/reglas/arquitectura.md +35 -456
  135. package/reglas/arreglar-al-detectar.md +30 -230
  136. package/reglas/debatir-antes-de-aceptar.md +30 -143
  137. package/reglas/docs.md +7 -0
  138. package/reglas/estilo-codigo.md +9 -0
  139. package/reglas/fragmentos-compartidos.md +6 -0
  140. package/reglas/git-workflow.md +44 -240
  141. package/reglas/gobernanza.md +23 -262
  142. package/reglas/memoria-consolidada.md +34 -228
  143. package/reglas/performance.md +8 -0
  144. package/reglas/pruebas.md +12 -0
  145. package/reglas/seguridad-agentes.md +37 -418
  146. package/reglas/seguridad.md +12 -0
  147. package/reglas/sesiones-paralelas.md +29 -162
  148. package/reglas/sin-duplicacion-reglas-globales.md +25 -166
  149. package/reglas/skills-estandar.md +23 -373
  150. package/reglas/usar-code-review-graph.md +31 -140
  151. package/reglas/usar-context7.md +30 -208
  152. package/reglas/usar-sistema-swl.md +47 -242
  153. package/reglas/verificar-citas-normativas.md +47 -537
  154. package/scripts/actualizar.js +253 -253
  155. package/scripts/audit-tools/auditar-relleno-inventario.js +145 -0
  156. package/scripts/auditar-clases-conocidas.js +106 -0
  157. package/scripts/bootstrap-instintos.js +2 -2
  158. package/scripts/canario-hooks.js +166 -0
  159. package/scripts/cli/configurar-ci.js +2 -1
  160. package/scripts/evidencia-valor.js +101 -0
  161. package/scripts/field-report.js +18 -2
  162. package/scripts/generar-comandos.js +143 -0
  163. package/scripts/generar-inventario.js +236 -23
  164. package/scripts/generar-matriz-lenguajes.js +1 -1
  165. package/scripts/instalador.js +15 -1
  166. package/scripts/instalar-git-hook.js +8 -1
  167. package/scripts/lib/configurar-ci.js +10 -3
  168. package/scripts/lib/diary-entry.js +3 -1
  169. package/scripts/lib/drift-detector.js +1 -1
  170. package/scripts/lib/evidencia-valor.js +228 -0
  171. package/scripts/lib/expandir-targets.js +71 -71
  172. package/scripts/lib/frontmatter-md.js +63 -0
  173. package/scripts/lib/parsear-opciones.js +2 -0
  174. package/scripts/lib/prune-componentes.js +180 -0
  175. package/scripts/lib/reglas-globales-conocidas.json +16 -2
  176. package/scripts/lib/scoring-instintos.js +2 -2
  177. package/scripts/lib/toml-merge.js +204 -204
  178. package/scripts/lib/transformadores/claude.js +1 -1
  179. package/scripts/lib/transformadores/codex.js +1 -1
  180. package/scripts/lib/transformadores/copilot.js +1 -1
  181. package/scripts/lib/transformadores/cursor.js +1 -1
  182. package/scripts/lib/transformadores/gemini.js +22 -2
  183. package/scripts/lib/transformadores/opencode.js +1 -1
  184. package/scripts/mcp-server/auth.js +105 -105
  185. package/scripts/mcp-server/cache.js +106 -106
  186. package/scripts/prune.js +102 -0
  187. package/scripts/publicar.js +18 -2
  188. package/scripts/tui/index.js +10 -1
  189. package/scripts/tui/pantallas/inspect.js +175 -175
  190. package/scripts/tui/pantallas/install-wizard.js +21 -8
  191. package/scripts/tui/pantallas/uninstall-wizard.js +210 -210
  192. package/scripts/tui/pantallas/update-wizard.js +234 -234
  193. package/scripts/tui/pantallas/welcome.js +188 -189
  194. package/habilidades/paid-media-tracking/SKILL.md +0 -269
  195. package/habilidades/paid-media-tracking/recursos/auditoria-tracking.md +0 -220
  196. package/habilidades/paid-media-tracking/recursos/google-ads-api.md +0 -215
  197. package/habilidades/tracking-measurement/SKILL.md +0 -239
  198. package/habilidades/tracking-measurement/recursos/consent-mode.md +0 -231
  199. package/habilidades/tracking-measurement/recursos/gtm-datalayer.md +0 -216
  200. package/habilidades/tracking-measurement/recursos/meta-capi.md +0 -262
@@ -89,9 +89,24 @@ Espera confirmación ("sí", "correcto", "adelante") o correcciones. Si hay corr
89
89
  Una vez confirmado el resumen, delega la investigación del stack al agente `investigador-swl`:
90
90
 
91
91
  - Instrucción al agente: investigar el stack tecnológico elegido, sus versiones estables actuales, patrones recomendados, y generar el directorio `research/` dentro de `.planning/`.
92
- - El agente debe producir al menos: `research/STACK.md`, `research/PATRONES.md`, `research/RIESGOS.md`.
92
+ - El agente debe producir al menos: `research/STACK.md`, `research/PATRONES.md`, `research/RIESGOS.md`. Estos archivos NO tienen plantilla en `plantillas/research/` — el investigador los genera desde cero (las plantillas `ARQUITECTURA/FUNCIONALIDADES/RESUMEN/TRAMPAS` son del flujo de adopción, donde hay código que mapear).
93
93
  - Mientras el agente investiga, tú avanzas con la creación de los archivos de planeación base (Paso 5).
94
94
 
95
+ ### Paso 4b — PRD y ADRs iniciales (opcional, proyectos no triviales)
96
+
97
+ Si el proyecto tiene ≥3 fases estimadas, dominio regulado (pregunta 14) o
98
+ integraciones externas complejas, ofrecer al usuario ANTES de generar la
99
+ planeación base:
100
+
101
+ - **`producto-prd-swl`** → PRD formal (historias de usuario, criterios de
102
+ aceptación de negocio, MoSCoW) que enriquece REQUISITOS.md.
103
+ - **`arquitecto-swl`** → ADRs iniciales en `.planning/adrs/` (elección de
104
+ stack, arquitectura de módulos, decisiones difíciles de revertir) + índice
105
+ `README.md` con estados.
106
+
107
+ Para proyectos simples (1-2 fases, CRUD, sin regulación), saltar este paso —
108
+ la ceremonia no compensa (`Skill("prevencion-sobreingenieria")`).
109
+
95
110
  ## Paso 5 — Creación de archivos de planeación
96
111
 
97
112
  Crea el directorio `.planning/` con la siguiente estructura:
@@ -101,7 +116,9 @@ Crea el directorio `.planning/` con la siguiente estructura:
101
116
  ├── PROYECTO.md
102
117
  ├── REQUISITOS.md
103
118
  ├── HOJA-RUTA.md
119
+ ├── ESTADO.md
104
120
  ├── fases/
121
+ ├── adrs/ (si corrió el Paso 4b)
105
122
  └── research/
106
123
  ```
107
124
 
@@ -135,6 +152,25 @@ Estructura:
135
152
  - Si el usuario no definió fases claras, propón una división lógica basada en las respuestas del Bloque C
136
153
  - Estado inicial de todas las fases: "Pendiente"
137
154
 
155
+ ### .planning/ESTADO.md
156
+
157
+ Poblarlo desde la entrevista (NUNCA dejarlo como plantilla vacía — la plantilla
158
+ de `swl-ses init` es solo el esqueleto):
159
+ - Fase actual: "Ninguna — proyecto inicializado, siguiente paso `/swl:discutir-fase 1`"
160
+ - Prioridad declarada (pregunta 11), deadline (pregunta 10)
161
+ - Bloqueos conocidos y puntos `[POR DEFINIR]` de la entrevista
162
+
163
+ ### Paso 5b — Control de versiones
164
+
165
+ Con la respuesta de la pregunta 15:
166
+
167
+ 1. Si el directorio NO es un repo git: `git init -b main`.
168
+ 2. Si no existe `.gitignore`: generarlo según el stack elegido, incluyendo
169
+ SIEMPRE `.env`, `.env.*`, `.claude/settings.local.json` y los dirs de
170
+ artefactos del stack (`node_modules/`, `__pycache__/`, `dist/`, etc.).
171
+ 3. Commit inicial de la planeación (`chore: inicializar proyecto con planeación SWL`)
172
+ SOLO si el usuario confirmó usar git — nunca commitear sin preguntar.
173
+
138
174
  ## Paso 6 — Generar CLAUDE.md inicial del proyecto
139
175
 
140
176
  Si NO existe `CLAUDE.md` en la raíz del proyecto, generarlo con la estructura
@@ -180,14 +216,29 @@ de continuar.
180
216
 
181
217
  Detalle del contrato cruzado en `@docs/contrato-aprender-claudemd.md`.
182
218
 
183
- ## Paso 7 — Reporte al usuario
219
+ ## Paso 7 — Checklist de arranque (ejecutable, no informativo)
220
+
221
+ Antes de reportar, verifica cada ítem y corrige lo que falle (Fase 4 del
222
+ skill `nuevo-proyecto` — este paso la hace obligatoria en el comando):
223
+
224
+ - [ ] Ningún `[TBD]`/`[POR DEFINIR]` en ítems críticos (nombre, problema, funcionalidad core) — los no críticos pueden quedar documentados
225
+ - [ ] Cada requisito funcional tiene etiqueta de prioridad
226
+ - [ ] Cada fase de HOJA-RUTA.md tiene objetivo medible y criterio de éxito
227
+ - [ ] ESTADO.md poblado (no plantilla vacía)
228
+ - [ ] CLAUDE.md auditado con veredicto OK (Paso 6)
229
+ - [ ] Git inicializado y `.gitignore` presente (si el usuario eligió git)
230
+
231
+ ## Paso 8 — Reporte al usuario
184
232
 
185
233
  Al terminar, reporta:
186
234
 
187
235
  1. Lista de archivos creados con sus rutas absolutas (incluyendo CLAUDE.md
188
236
  si se generó o se modificó)
189
237
  2. Resumen de la investigación del agente (cuando esté disponible)
190
- 3. Próximo paso recomendado: "Para comenzar a trabajar en la Fase 1, usa `/swl:discutir-fase 1`"
238
+ 3. Próximos pasos recomendados:
239
+ - "Para comenzar a trabajar en la Fase 1, usa `/swl:discutir-fase 1`"
240
+ - Si el repo vive (o vivirá) en GitHub: "`/swl:configurar-ci init` instala
241
+ los pipelines de CI y seguridad (lint, tests, review con Claude en PRs)"
191
242
  4. Si encontraste riesgos o ambigüedades durante la entrevista, listarlos aquí como "Puntos a resolver"
192
243
 
193
244
  ## Reglas de comportamiento
@@ -8,8 +8,10 @@ description: >
8
8
  acuerdo. Usar antes de /swl:planear-fase en fases de riesgo, antes de un
9
9
  refactor grande, o cuando el costo de descubrir un problema DESPUÉS de
10
10
  implementar es alto. Con --adversarial usa el set atacante (Rompedor,
11
- Tramposo, Escalador, Novato, Insider).
12
- argument-hint: "[descripción del cambio] [--scope <glob>] [--adversarial] [--presupuesto N] [--chain planear-fase]"
11
+ Tramposo, Escalador, Novato, Insider). Con --abogado-diablo delega al agente
12
+ abogado-diablo-swl una crítica profunda de la decisión (pre-mortem +
13
+ doubt-driven review) cuyo dictamen puede ser NO PROCEDER.
14
+ argument-hint: "[descripción del cambio] [--scope <glob>] [--adversarial] [--abogado-diablo] [--presupuesto N] [--chain planear-fase]"
13
15
  allowed-tools: [Read, Grep, Glob, Bash, Write, Agent, Skill]
14
16
  ---
15
17
 
@@ -42,6 +44,7 @@ propuesta, el debate compara varias).
42
44
  [descripción] La propuesta de cambio a analizar (obligatoria; si falta, preguntar)
43
45
  --scope <glob> Archivos relevantes para grounding (default: derivar del texto)
44
46
  --adversarial Set de personas atacantes en vez del set default
47
+ --abogado-diablo Crítica profunda de la decisión (agente abogado-diablo-swl) en vez del panel
45
48
  --presupuesto N Máximo de hallazgos totales (default: 40 → 8 por persona)
46
49
  --chain planear-fase Al terminar, ofrecer arrancar /swl:planear-fase con los hallazgos como contexto
47
50
  ```
@@ -120,6 +123,33 @@ Personas: [set] | Hallazgos brutos: N | Tras dedup: M
120
123
  [PROCEDER | PROCEDER CON AJUSTES (lista) | REPLANTEAR (razón)]
121
124
  ```
122
125
 
126
+ ## Modo `--abogado-diablo` — crítica de la decisión, no del cambio
127
+
128
+ El panel de personas **asume que el cambio se hará** y enumera problemas de
129
+ implementación. Cuando la duda es anterior — *¿deberíamos hacer esto?* — el
130
+ modo abogado del diablo reemplaza los Pasos 2-3 por UNA invocación profunda:
131
+
132
+ ```
133
+ Agent(abogado-diablo-swl) con:
134
+ - La propuesta + el paquete de conocimiento del Paso 1
135
+ - Instrucción: ejecutar su protocolo completo (pre-mortem ×2-3 +
136
+ doubt-driven review + steelman) y emitir dictamen
137
+ ```
138
+
139
+ Diferencias con el panel:
140
+
141
+ | | Panel (default/adversarial) | `--abogado-diablo` |
142
+ |---|---|---|
143
+ | Pregunta que responde | "¿Qué problemas causará este cambio?" | "¿Deberíamos hacer este cambio?" |
144
+ | Veredicto posible | PROCEDER / AJUSTES / REPLANTEAR | PROCEDER / CON CONDICIONES / **NO PROCEDER** |
145
+ | Técnica | 5 perspectivas en frío + anti-herd | Pre-mortem + alternativas descartadas + contraevidencia + trigger de reversión |
146
+ | Profundidad | Amplitud (5 ángulos, ~8 hallazgos c/u) | Profundidad (1 crítica exhaustiva de la decisión) |
147
+
148
+ El Paso 4 (persistencia y reporte) aplica igual — el dictamen se persiste en el
149
+ mismo directorio de handoff con `tipo: 'predecir-abogado-diablo'`. Combinable
150
+ en secuencia: primero `--abogado-diablo` (¿hacerlo?); si el dictamen es
151
+ PROCEDER, corrida normal del panel (¿qué cuidar al hacerlo?).
152
+
123
153
  ## Paso 5 — Encadenamiento (si `--chain planear-fase`)
124
154
 
125
155
  Ofrecer arrancar `/swl:planear-fase` indicando el directorio del handoff. El
@@ -0,0 +1,189 @@
1
+ ---
2
+ name: swl:seguridad
3
+ description: >
4
+ Chequeo de seguridad del PROYECTO COMPLETO (no del diff): escaneo de secretos
5
+ en el repo, auditoría de dependencias con CVEs, revisión OWASP dirigida a los
6
+ módulos críticos vía revisor-seguridad-swl, verificación de gates de seguridad
7
+ del pipeline CI, y detección de superficie LLM (prompt injection) cuando
8
+ aplica. Consolida todo en un reporte de postura de seguridad con score, veto
9
+ items y acciones priorizadas. Usar al adoptar un proyecto, antes de un release
10
+ mayor, tras un incidente, o periódicamente. Para revisar solo los cambios de
11
+ una fase usar /swl:verificar --solo-seguridad; para el diff usar /swl:revisar
12
+ seguridad.
13
+ argument-hint: "[--rapido] [--threat-model] [--llm] [--json]"
14
+ allowed-tools: [Read, Grep, Glob, Bash, Write, Agent, Skill]
15
+ ---
16
+
17
+ # /swl:seguridad — Postura de seguridad del proyecto completo
18
+
19
+ Eres el coordinador de un chequeo de seguridad integral. A diferencia de
20
+ `/swl:verificar` (que audita el diff de una fase) y de `/swl:revisar seguridad`
21
+ (que revisa cambios recientes), este comando evalúa la **postura del proyecto
22
+ entero**: secretos, dependencias, código, pipeline y superficie LLM.
23
+
24
+ ## Cuándo usar
25
+
26
+ - Al adoptar un proyecto existente (complemento natural de `/swl:adoptar-proyecto`).
27
+ - Antes de un release mayor o del primer despliegue productivo.
28
+ - Tras un incidente de seguridad o la rotación de un secreto filtrado.
29
+ - Periódicamente (candidato a `/swl:cron` mensual).
30
+
31
+ **Cuándo NO usar**: para el diff de una fase (→ `/swl:verificar
32
+ --solo-seguridad`), para revisar un PR (→ `/swl:revisar seguridad`), o para
33
+ auditar artefactos de skills/plugins antes de instalarlos (→
34
+ `Skill("seguridad-skills-ia")`).
35
+
36
+ ## Flags
37
+
38
+ ```
39
+ --rapido Solo capas 1-2 (secretos + dependencias). ~2 minutos.
40
+ --threat-model Añade la capa 6: genera/actualiza THREAT-MODEL.md con Skill("threat-model-lite").
41
+ --llm Fuerza la capa 5 (ai-runtime-security) aunque la detección automática no encuentre stack LLM.
42
+ --json Además del reporte Markdown, emite el resumen como JSON (para CI).
43
+ ```
44
+
45
+ ## Paso 0 — Carga y alcance
46
+
47
+ ```
48
+ Skill("checklist-seguridad")
49
+ ```
50
+
51
+ Detectar el stack (lockfiles, extensiones dominantes) y enumerar los módulos
52
+ críticos del proyecto: auth/, endpoints/rutas públicas, manejo de archivos,
53
+ pagos, todo lo que toque datos de usuario. Si existe `.planning/`, revisar
54
+ reportes previos de este comando en `.planning/audit/` para comparar postura.
55
+
56
+ ## Capa 1 — Secretos en el repositorio
57
+
58
+ Escaneo del repo completo (tracked files + historial reciente), no solo del
59
+ working tree:
60
+
61
+ ```bash
62
+ # Working tree — patrones de credenciales (mismas familias que el hook escaneo-secretos)
63
+ git grep -nIE "(sk-(ant|proj|live|test)-|AKIA[0-9A-Z]{16}|ghp_[A-Za-z0-9]{36}|glpat-|xox[baprs]-|-----BEGIN (RSA|EC|OPENSSH) PRIVATE KEY-----)" -- . ':!*.lock' ':!node_modules'
64
+ # Claves genéricas asignadas
65
+ git grep -nIE "(password|passwd|secret|api[_-]?key|token)\s*[=:]\s*['\"][^'\"]{8,}['\"]" -- '*.py' '*.js' '*.ts' '*.env*' '*.yaml' '*.yml' '*.json' ':!*test*' ':!*spec*'
66
+ # Historial: archivos .env commiteados alguna vez
67
+ git log --all --diff-filter=A --name-only --pretty=format: -- '*.env' '.env.*' | sort -u
68
+ ```
69
+
70
+ Si `gitleaks` está instalado, preferirlo (`gitleaks detect --no-banner`) —
71
+ cubre historial completo con menos falsos positivos. Complemento del sistema:
72
+ el audit-tool `pentest-scanner.js` y el hook `escaneo-secretos.js` (mismas
73
+ familias de patrones) están disponibles cuando swl-ses está instalado; el flujo
74
+ `/swl:verificar --full` los orquesta sobre el diff.
75
+
76
+ **Todo hallazgo de secreto en historial es CRÍTICO aunque ya esté rotado o
77
+ gitignoreado** — sigue el protocolo Hallazgo A/B/C de
78
+ `arreglar-al-detectar.md` (limpiar historial es operación destructiva →
79
+ Hallazgo C, decisión del usuario).
80
+
81
+ ## Capa 2 — Dependencias (supply chain)
82
+
83
+ ```
84
+ Skill("dependencias-auditoria")
85
+ ```
86
+
87
+ Ejecutar el auditor del ecosistema detectado (`npm audit` / `pip-audit` /
88
+ `cargo audit` / `govulncheck` / `composer audit` / `mvn dependency-check`).
89
+ Reglas de severidad de `reglas/seguridad.md`: CVE crítico → 72 horas, medio →
90
+ 2 semanas. Registrar también: dependencias abandonadas (>18 meses sin release)
91
+ y pins abiertos (`^`, `>=`, `*`) en producción.
92
+
93
+ ## Capa 3 — Código (OWASP, proyecto completo dirigido)
94
+
95
+ Delegar a `revisor-seguridad-swl` vía Agent con alcance de proyecto:
96
+
97
+ ```
98
+ Agent(revisor-seguridad-swl) con:
99
+ - Alcance: los módulos críticos del Paso 0 (no un diff)
100
+ - Instrucción: auditoría OWASP Top 10 + path traversal + CSRF con severidad
101
+ CVSSv3 y veto items. Priorizar auth/autz, validación de entradas, queries,
102
+ manejo de archivos y sanitización de salida. Cargar Skill("checklist-seguridad")
103
+ y Skill("auth-patrones") / Skill("iam-secretos") según lo que encuentre.
104
+ ```
105
+
106
+ En proyectos grandes (>500 archivos), dividir en 2-3 invocaciones por dominio
107
+ (auth, API pública, manejo de datos) y consolidar.
108
+
109
+ ## Capa 4 — Pipeline CI (gates de seguridad)
110
+
111
+ ```
112
+ Skill("devsecops-pipeline-security")
113
+ ```
114
+
115
+ Verificar contra los 5 gates del skill qué existe en `.github/workflows/` (o
116
+ equivalente GitLab/Azure): secret scanning (gitleaks), SAST, dependency audit,
117
+ container scanning, DAST. Reportar la matriz presente/ausente. Para
118
+ materializar los faltantes: `/swl:configurar-ci --seguridad` (instala los
119
+ workflows opt-in).
120
+
121
+ ## Capa 5 — Superficie LLM (condicional)
122
+
123
+ Detectar stack LLM (deps `anthropic`, `openai`, `langchain`, `llama-index`,
124
+ servidores MCP propios, prompts en el repo). Si existe — o con `--llm`:
125
+
126
+ ```
127
+ Skill("ai-runtime-security")
128
+ ```
129
+
130
+ Auditar: manejo de input no confiable hacia prompts (injection directa e
131
+ indirecta), guardrails de salida, secretos en system prompts, gates de
132
+ autonomía previos a tool-calls.
133
+
134
+ ## Capa 6 — Threat model (solo con `--threat-model`)
135
+
136
+ ```
137
+ Skill("threat-model-lite")
138
+ ```
139
+
140
+ Generar o actualizar `THREAT-MODEL.md` (STRIDE ligero: superficie de ataque,
141
+ activos críticos, matriz de riesgo). Si ya existe uno, actualizarlo contra los
142
+ endpoints/módulos nuevos en vez de regenerarlo desde cero.
143
+
144
+ ## Paso final — Reporte de postura consolidado
145
+
146
+ Escribir `.planning/audit/seguridad-postura-[YYYY-MM-DD].md` (si no hay
147
+ `.planning/`, ofrecer la raíz del proyecto):
148
+
149
+ ```markdown
150
+ # Postura de seguridad — [proyecto] — [fecha]
151
+
152
+ ## Score por capa
153
+ | Capa | Score | Veredicto |
154
+ |------|-------|-----------|
155
+ | 1. Secretos | N/100 | ... |
156
+ | 2. Dependencias | N/100 | ... |
157
+ | 3. Código OWASP | N/100 | ... |
158
+ | 4. Pipeline CI | N/100 | ... |
159
+ | 5. Superficie LLM | N/100 o N/A | ... |
160
+
161
+ ## VETO ITEMS DETECTADOS
162
+ [secreto en historial, SQL injection, eval con input, CVE crítico sin parche…
163
+ → score global CAP a 60/100 con 1 veto, 30/100 con 2+. Formato de
164
+ reglas/gobernanza.md § Veto items]
165
+
166
+ ## Hallazgos priorizados
167
+ | # | Severidad (CVSSv3) | Capa | archivo:línea | Hallazgo | Remediación |
168
+
169
+ ## Acciones recomendadas (en orden)
170
+ 1. [acción — comando SWL que la ejecuta si existe]
171
+ ```
172
+
173
+ Reportar al usuario el resumen con el score global y las top 3 acciones. Si
174
+ hay hallazgos CRÍTICOS, recordar el flujo de remediación: `/swl:fix` (triage y
175
+ reparación) o `/swl:verificar --solo-seguridad --until-converge` tras corregir.
176
+
177
+ ## Reglas de comportamiento
178
+
179
+ - **Este comando NO modifica código ni secretos** — diagnostica y prioriza.
180
+ La remediación pasa por el flujo fix/verificar con el usuario al tanto.
181
+ - Toda cita archivo:línea del reporte sale de `Read`/`Grep` reales de esta
182
+ corrida (`verificar-citas-normativas.md § Familia 2`).
183
+ - Los veto items no se negocian ni se suavizan por presión de entrega
184
+ (`reglas/gobernanza.md`).
185
+ - Con `--rapido`, decir explícitamente qué capas NO corrieron — un reporte
186
+ parcial presentado como completo es degradación silenciosa.
187
+ - Falsos positivos de secretos (fixtures, ejemplos): verificarlos leyendo el
188
+ archivo antes de reportar; si son fixtures legítimos, recomendar renombrarlos
189
+ al patrón reconocible (`placeholder`, `example`, `dummy_`).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: swl:status
3
- description: Comando unificado de observabilidad del sistema y la sesión. Enruta a subcomandos [salud | metricas | loops | evolucion | historico | dashboard] que reportan salud del sistema SWL, métricas de la sesión actual, trayectorias de loops iterativos, estado del ciclo de auto-evolución y dashboard histórico multi-sesión. Reemplaza los comandos previos /swl:salud, /swl:metricas, /swl:dashboard y /swl:evolucion-estado (fusionados en este desde la Fase 09).
3
+ description: Comando unificado de observabilidad del sistema y la sesión. Enruta a subcomandos [salud | metricas | loops | evolucion | historico | dashboard | valor] que reportan salud del sistema SWL, métricas de la sesión actual, trayectorias de loops iterativos, estado del ciclo de auto-evolución y dashboard histórico multi-sesión. Reemplaza los comandos previos /swl:salud, /swl:metricas, /swl:dashboard y /swl:evolucion-estado (fusionados en este desde la Fase 09).
4
4
  allowed_tools: ["Read", "Write", "Bash", "Glob", "Grep"]
5
5
  ---
6
6
 
@@ -17,7 +17,8 @@ funcionalidad ni de flags.
17
17
  /swl:status salud — Diagnóstico de salud del sistema SWL (genera SALUD.md)
18
18
  /swl:status metricas — Métricas de la sesión actual (tokens, costo, herramientas)
19
19
  /swl:status metricas detalle — Desglose completo por herramienta, agente y timeline
20
- /swl:status metricas fases — Progreso de fases del proyecto (desde feature-list.json)
20
+ /swl:status metricas fases — Progreso de fases del proyecto (desde feature-list.json)
21
+ /swl:status valor — Evidencia de valor del harness en ESTE proyecto (intercepciones, defectos/escapes, DORA/CI, uso — con procedencia por métrica)
21
22
  /swl:status loops — Trayectorias de loops iterativos (.planning/loops/)
22
23
  /swl:status evolucion — Estado del ciclo de auto-evolución (health_score, nudges…)
23
24
  /swl:status evolucion --json — JSON crudo de metricas.json (para pipes)
@@ -44,7 +45,8 @@ como vista por defecto si el contexto lo sugiere.
44
45
  | `metricas` (+ `detalle`, `fases`) | scripts de métricas de sesión + `derivar-feature-list.js` | `/swl:metricas` |
45
46
  | `loops` | `hooks/lib/loop-telemetry.js` | `/swl:metricas loops` |
46
47
  | `evolucion` | `hooks/ciclo-evolucion.js` (etapa métricas) + `.planning/evolution/metricas.json` | `/swl:evolucion-estado` |
47
- | `dora` | `scripts/lib/metricas-dora.js` + `.planning/evolution/metricas-dora.json` | nuevo (Fase 15, ADR-0039) |
48
+ | `dora` | `scripts/lib/metricas-dora.js` + `.planning/evolution/metricas-dora.json` | nuevo (Fase 15, ADR-0039) |
49
+ | `valor` | CLI cross-scope `swl-ses valor` (`scripts/evidencia-valor.js`) — datos 100% locales; frontera y reglas anti-gaming en `docs/evidencia-valor.md` | nuevo (v2.5.1) |
48
50
  | `historico` / `dashboard` | `Skill("swl-dashboard")` | `/swl:dashboard` |
49
51
 
50
52
  ---
@@ -6,7 +6,7 @@ description: >
6
6
  tres scopes (proyecto/dominio/global), degradacion automatica por contradiccion,
7
7
  promocion a skills/comandos/agentes, evolucion (merge, split, deprecate) y
8
8
  proteccion contra contaminacion cross-proyecto.
9
- version: "1.0.1"
9
+ version: "1.0.2"
10
10
  herramientasPermitidas: [Read]
11
11
  exclusiones:
12
12
  - "No cargar para consultar instintos ya cargados en la sesión actual — si el perfil fue leído, re-cargarlo es desperdicio de contexto."
@@ -137,6 +137,8 @@ ver [recursos/referencia-instintos.md](recursos/referencia-instintos.md).
137
137
 
138
138
  ## Gotchas / Errores comunes no obvios
139
139
 
140
+ - **El relleno real de un sistema de agentes no son componentes muertos sino conocimiento sin cablear** [auditoría 2026-07-08 sobre 182 skills]: la cross-referencia de cableado mostró 120/182 skills con >5 referencias (sistema sano) y solo 2 genuinamente fuera de dominio; las 7 "huérfanas" restantes eran conocimiento de ALTO valor (doubt-driven-review, devsecops-pipeline-security, ai-runtime-security…) que ningún flujo aprovechaba — bajaron a 1 tras cablearlas a comandos y `skillsInvocables`. Método correcto de auditoría de bloat: (1) cross-referencia estática (`scripts/audit-tools/auditar-relleno-inventario.js`), (2) telemetría de uso real (`.planning/skill-metrics.json` del hook `telemetria-skill-routing`), (3) filtro de dominio del proyecto. El instinto de "borrar lo que no se usa" está mal calibrado sin el paso 3: la acción correcta para huérfanas de valor es CABLEAR, no eliminar.
141
+
140
142
  - **Instinto de scope global demasiado específico de un framework**: un instinto como "En FastAPI siempre usar `selectinload`" se promueve a `global.yaml` porque tuvo alta confianza. Causa: el criterio de promoción no verificó que el patrón sea cross-proyecto y no de dominio. Solución: antes de mover a global, aplicar el filtro "¿le sirve esto a un ingeniero en cualquier stack?"; si no, mantenerlo en `dominio.yaml` o `proyecto.yaml`.
141
143
  - **Hooks de observación con exit code != 0 interrumpen la sesión**: el hook `observe-pre.js` lanza una excepción y Claude Code detiene la tarea en curso. Causa: violación de la regla "los hooks de observación NUNCA deben producir exit code != 0". Solución: envolver toda la lógica del hook en `try/catch` y loggear el error al stderr sin propagarlo — la observabilidad nunca debe bloquear el trabajo productivo.
142
144
  - **Duplicación de instintos entre `proyecto.yaml` y `APRENDIZAJES.md`**: el mismo anti-patrón existe en ambos canales con información inconsistente. Causa: el instinto se creó manualmente sin verificar si ya había una entrada en APRENDIZAJES.md. Solución: antes de crear un instinto nuevo, ejecutar `memoria-busqueda` para verificar si ya existe en otro canal; si existe, actualizar el canal correcto según `reglas/memoria-consolidada.md`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: discutir-fase
3
- description: Cuestionario adaptativo que se ejecuta antes de planear una fase de desarrollo. Extrae decisiones técnicas y de negocio del usuario, clasifica respuestas como "cerradas" (no negociables) o "abiertas" (decisión delegada al agente), y produce un archivo CONTEXTO.md que alimenta al planificador. Inicia con discovery routing (5 paths) que evita el cuestionario completo cuando no aplica.
4
- version: "1.1.0"
3
+ description: Cuestionario adaptativo canónico que se ejecuta antes de planear una fase de desarrollo (única fuente de la entrevista — el comando /swl:discutir-fase la consume de aquí). Extrae decisiones técnicas y de negocio con bloque universal + bloques por dominio (backend, frontend, infra, integración, datos/migración), clasifica respuestas como "cerradas" (no negociables) o "abiertas" (decisión delegada al agente), y produce un CONTEXTO.md que alimenta al planificador. Inicia con discovery routing (5 paths) que evita el cuestionario completo cuando no aplica.
4
+ version: "1.3.0"
5
5
  herramientasPermitidas: [Read, Write, Edit, Bash, Glob, Grep]
6
6
  exclusiones:
7
7
  - "No cargar si el usuario ya tiene un CONTEXTO.md poblado para la fase en curso — ir directo a `planear-fase`."
@@ -57,8 +57,8 @@ Si no hay `.planning/`, marca **proyecto verde** y salta al cuestionario complet
57
57
  |------|--------------|--------|
58
58
  | **RUTA_A** — Extiende fase existente | La petición es una extensión, fix o enhancement dentro del scope de una fase ya planeada. Cabe en `tasks` de un PLAN.md existente. | NO ejecutar cuestionario. Informar al usuario: "Esto encaja en la fase `<N>`. ¿Procedo a actualizar su PLAN.md o lanzar `/swl:ejecutar-fase <N>` directo?" |
59
59
  | **RUTA_B** — Sin fase necesaria | Fix trivial (<5 archivos, 1 tarea, sin decisiones de scope). Bug puntual, typo, dependencia, refactor menor. | NO ejecutar cuestionario. Informar al usuario: "Esto no requiere fase formal. Procedo directo con `implementador-swl` o el agente de stack. ¿De acuerdo?" |
60
- | **RUTA_C** — Nueva fase single-scope | Petición nueva, no encaja en fases existentes, single-domain. | Ejecutar cuestionario completo (Bloques 1-4). |
61
- | **RUTA_D** — Decomposición multi-fase | Petición spans múltiples dominios o produciría >20 tareas en una sola fase. | Ejecutar cuestionario **resumido** (Bloque 1 + Bloque 4) para extraer decisiones de scope. Luego sugerir descomposición en N fases. Confirmar con usuario antes de proceder. |
60
+ | **RUTA_C** — Nueva fase single-scope | Petición nueva, no encaja en fases existentes, single-domain. | Ejecutar cuestionario completo (Bloques 1-5, con el bloque de dominio que aplique). |
61
+ | **RUTA_D** — Nueva fase multi-domain (ADR-0020) | Petición nueva que cruza múltiples dominios y requiere sub-tareas paralelas. | Cuestionario completo (Bloques 1-5, combinando los bloques de dominio aplicables) + planificación de paralelización. Si además produciría >20 tareas en una sola fase, sugerir descomposición en N fases y confirmar con el usuario. |
62
62
  | **RUTA_E** — Mixto | La petición combina: extensión de fase existente + nueva fase + posiblemente fix trivial. | Presentar al usuario la decomposición propuesta y confirmar antes de proceder. Para la parte "nueva fase" ejecutar cuestionario reducido. |
63
63
 
64
64
  ### Heurísticas de matching
@@ -107,41 +107,85 @@ notifica explícitamente antes de proceder.
107
107
 
108
108
  ## Bloque 1 — Contexto de la fase (siempre preguntar)
109
109
 
110
- 1. ¿Cuál es el objetivo principal de esta fase en una oración?
111
- 2. ¿Qué debe existir y funcionar al finalizar esta fase para considerarla exitosa?
112
- 3. ¿Hay alguna restricción de tiempo (deadline, demo, sprint)?
113
- 4. ¿Alguna decisión tomada en fases anteriores afecta el alcance de esta?
110
+ 1. ¿Cuál es el objetivo principal de esta fase en una oración? ¿Cuál es el entregable más importante?
111
+ 2. ¿Qué debe existir y funcionar al finalizar para considerarla exitosa? ¿Cómo sabremos que está terminada?
112
+ 3. ¿Hay algo de esta fase que NO quedó claro en el roadmap y debemos aclarar ahora?
113
+ 4. ¿Hay restricciones de tiempo (deadline, demo, sprint) o de presupuesto (costo de infra, servicios de terceros, licencias)?
114
+ 5. ¿Alguna decisión de fases anteriores (o de producto) afecta el alcance de esta?
115
+ 6. ¿Qué estamos asumiendo como cierto sin haberlo verificado? (supuestos explícitos — "ningún supuesto" es respuesta sospechosa: indagar al menos uno)
114
116
 
115
117
  ---
116
118
 
117
- ## Bloque 2 — Decisiones técnicas (preguntar si aplica)
119
+ ## Bloque 2 — Dominio (adaptativo: elegir según el tipo de fase)
120
+
121
+ Determina el tipo leyendo la descripción de la fase. Las fases mixtas combinan
122
+ los bloques aplicables. **Si hay código nuevo, al menos un bloque de dominio
123
+ siempre aplica** — omitirlo por considerarlo "técnico" es el error más común.
124
+
125
+ **Backend/API:**
126
+ - ¿Qué entidades de datos nuevas introduce? Campos principales.
127
+ - ¿Qué endpoints o servicios expone? ¿Se modifica alguno existente? ¿Rompe compatibilidad con consumidores actuales?
128
+ - ¿Hay reglas de negocio complejas o cálculos? ¿Qué validaciones son críticas — qué datos nunca deben llegar corruptos a la BD?
129
+ - ¿Quién tiene permiso de acceder a qué? ¿Cambia autenticación, roles o restricciones?
130
+ - ¿Se manejan datos personales o sensibles (PII)? ¿Hay requisitos de retención o regulatorios?
131
+
132
+ **Frontend/UI:**
133
+ - ¿Qué pantallas o vistas nuevas introduce? Descríbelas.
134
+ - ¿Cuál es el flujo principal del usuario? (de dónde viene, qué hace, adónde va) ¿Qué usuarios/segmentos se ven afectados?
135
+ - ¿Hay componentes reutilizables del sistema de diseño existente?
136
+ - ¿Qué datos consume cada pantalla y de qué endpoints?
137
+ - ¿Estados de carga, error y vacío considerados explícitamente?
138
+
139
+ **Infraestructura:**
140
+ - ¿Entorno objetivo? (dev/staging/prod y sus diferencias)
141
+ - ¿Secretos o variables de entorno nuevas?
142
+ - ¿Qué servicios gestionados (cloud) se usan? ¿Costo estimado?
143
+ - ¿Estrategia de rollback si el despliegue sale mal?
144
+ - ¿Se documenta el proceso de despliegue para el equipo (runbook)?
145
+
146
+ **Integración:**
147
+ - ¿Qué sistema externo se integra? ¿Hay documentación de su API y sandbox de pruebas?
148
+ - ¿Qué pasa si el sistema externo no responde? ¿Timeout y retry definidos?
149
+ - ¿Sincronización en tiempo real o batch? ¿Transformaciones de datos entre formatos?
150
+ - ¿Qué versión del contrato externo se asume y qué pasa si cambia?
151
+
152
+ **Datos/Migración:**
153
+ - ¿Qué volumen de datos se migra o transforma? ¿Hay ventana de mantenimiento o debe ser sin downtime (expand-contract)?
154
+ - ¿Cuál es el plan de rollback si la migración falla a la mitad? ¿Los cambios de schema son reversibles?
155
+ - ¿Cómo se verifica la integridad post-migración (conteos, checksums, muestreo)?
156
+ - ¿Hay consumidores del schema viejo que deben seguir funcionando durante la transición?
157
+ - ¿Se necesita respaldo previo verificado? ¿Quién lo autoriza?
118
158
 
119
- Preguntar solo si la fase involucra código nuevo o cambios de arquitectura:
159
+ ---
120
160
 
121
- 5. ¿Se crean nuevas entidades de base de datos? ¿Cuáles?
122
- 6. ¿Se expone una nueva API pública o se modifican endpoints existentes?
123
- 7. ¿Hay integraciones con sistemas externos en esta fase?
124
- 8. ¿Se espera algún cambio en la autenticación o los permisos?
125
- 9. ¿Hay requerimientos de rendimiento específicos para esta fase?
161
+ ## Bloque 3 Calidad, proceso y operación (preguntar si aplica)
126
162
 
127
- ---
163
+ - ¿Se requieren tests unitarios, de integración o ambos? (TDD es default ON — gate G2; solo registrar opt-out con razón)
164
+ - ¿Hay features que requieren revisión de seguridad antes de merge?
165
+ - ¿Requerimientos no funcionales: latencia objetivo, carga esperada, concurrencia, disponibilidad?
166
+ - ¿Qué observabilidad debe emitir la fase (logs estructurados, métricas, alertas)? ¿Cómo sabremos en producción que funciona — o que dejó de funcionar?
167
+ - ¿Deployment independiente o junto con otras fases? ¿Reversible?
168
+ - ¿Features "nice to have" que pueden salir del scope si falta tiempo?
128
169
 
129
- ## Bloque 3 — Calidad y proceso (preguntar si aplica)
170
+ ---
130
171
 
131
- Preguntar si el equipo tiene proceso definido o si la fase es crítica:
172
+ ## Bloque 4 Dependencias y riesgos (siempre preguntar)
132
173
 
133
- 10. ¿Se requieren tests unitarios, de integración o ambos en esta fase?
134
- 11. ¿Hay features que requieren revisión de seguridad antes de merge?
135
- 12. ¿Se va a hacer deployment de esta fase de forma independiente o junto con otras?
136
- 13. ¿Hay features marcadas como "nice to have" que pueden salir del scope si hay tiempo?
174
+ - ¿Hay tareas que dependen de trabajo de otro equipo o sistema externo?
175
+ - ¿Cuáles son los riesgos más grandes de esta fase? ¿Alguno podría bloquear una tarea?
176
+ - ¿Hay deuda técnica que DEBE resolverse antes o durante esta fase?
137
177
 
138
178
  ---
139
179
 
140
- ## Bloque 4Dependencias y riesgos (siempre preguntar)
180
+ ## Bloque 5Criterios de aceptación (siempre, al final)
141
181
 
142
- 14. ¿Hay tareas en esta fase que dependen de trabajo de otro equipo o sistema externo?
143
- 15. ¿Hay algún riesgo técnico conocido que podría bloquear alguna tarea?
144
- 16. ¿Hay deuda técnica existente que DEBE resolverse antes o durante esta fase?
182
+ - ¿Qué debe demostrarse al usuario/cliente para que la fase se apruebe?
183
+ - ¿Hay pruebas específicas que deben pasar? (humo, carga, usuario)
184
+ - ¿Quién da el visto bueno final?
185
+ - ¿Cómo se medirá el éxito en producción — qué outcome observable mejora para el usuario, y qué NO debe degradarse? (métrica de outcome ≠ criterio de aceptación; ver `Skill("proceso-intent-engineering")` § Desired Outcomes cuando la fase lo amerite)
186
+
187
+ Los criterios se registran como REQ-IDs binarios verificables (`REQ-<fase>-NN`,
188
+ trazabilidad G4) — formato exacto en `recursos/plantilla-contexto.md`.
145
189
 
146
190
  ---
147
191
 
@@ -163,66 +207,22 @@ Señalar la contradicción explícitamente: "Mencionaste X antes pero ahora Y.
163
207
 
164
208
  ## Plantilla de salida: `.planning/fases/0N-CONTEXTO.md`
165
209
 
166
- ```markdown
167
- # CONTEXTO.md Fase [N]: [Nombre]
168
- **Fecha de discusión**: [fecha]
169
- **Participantes**: [usuario, agente]
170
-
171
- ## Objetivo de la fase
172
- [Respuesta del usuario a pregunta 1 y 2]
173
-
174
- ## Criterio de éxito
175
- [Lo que debe existir y funcionar al terminar]
176
-
177
- ## Restricciones de tiempo
178
- - Deadline: [fecha o "sin deadline definido"]
179
- - Sprint: [número si aplica]
180
-
181
- ## Decisiones técnicas
182
-
183
- | ID | Decisión | Tipo | Notas |
184
- |-----|---------|------|-------|
185
- | D-01 | [decisión] | CERRADA | [contexto] |
186
- | D-02 | [decisión] | ABIERTA | [el agente decidirá X porque Y] |
187
- | D-03 | [decisión] | PENDIENTE | [bloquea tarea T] |
188
-
189
- ## Alcance confirmado
190
- ### Incluido en esta fase
191
- - Feature A
192
- - Feature B
193
-
194
- ### Explícitamente excluido
195
- - Feature C (pasa a siguiente fase)
196
-
197
- ## Dependencias externas
198
- | Dependencia | Equipo/Sistema | Estado | Riesgo |
199
- |------------|---------------|--------|--------|
200
- | | | | |
201
-
202
- ## Riesgos identificados
203
- | Riesgo | Probabilidad | Impacto | Mitigación |
204
- |--------|-------------|---------|-----------|
205
- | | | | |
206
-
207
- ## Deuda técnica a resolver
208
- - [ ] [deuda 1] — obligatoria
209
- - [ ] [deuda 2] — si hay tiempo
210
-
211
- ## Decisiones pendientes (bloqueos)
212
- - [ ] [decisión] — necesaria antes de [tarea]
213
-
214
- ## Notas de la discusión
215
- [Contexto adicional, cambios de opinión, razonamiento detrás de decisiones]
216
- ```
210
+ La estructura canónica del archivo (frontmatter con gate TDD, tabla de
211
+ decisiones CERRADA/ABIERTA/PENDIENTE, supuestos, no-goals, criterios de
212
+ aceptación con REQ-IDs G4, métrica de outcome, NFRs, rollback, riesgos y
213
+ dependencias) vive en **`recursos/plantilla-contexto.md`** — única fuente,
214
+ compartida con el comando `/swl:discutir-fase`. Leerla antes de escribir el
215
+ archivo; no reconstruirla de memoria.
217
216
 
218
217
  ---
219
218
 
220
219
  ## Gotchas / Errores comunes no obvios
221
220
 
222
221
  - **Respuesta "como siempre" archivada sin verificar**: el usuario dice "igual que en la fase anterior" y el agente asume que el patrón aplica sin leer el CONTEXTO.md previo. Causa: confianza en el modelo mental sin verificación. Solución: siempre leer el CONTEXTO.md de la fase anterior antes de aceptar la respuesta.
223
- - **Decisiones PENDIENTE que bloquean el plan ignoradas**: el agente avanza a `planear-fase` con ítems de los Bloques 1 o 4 en estado PENDIENTE. Causa: no se aplicó la Regla 3. Solución: verificar explícitamente que ningún ítem crítico quede PENDIENTE antes de cerrar la discusión.
222
+ - **Decisiones PENDIENTE que bloquean el plan ignoradas**: el agente avanza a `planear-fase` con ítems de los Bloques 1, 4 o 5 en estado PENDIENTE. Causa: no se aplicó la Regla 3. Solución: verificar explícitamente que ningún ítem crítico quede PENDIENTE antes de cerrar la discusión.
224
223
  - **CONTEXTO.md escrito sin confirmar criterio de éxito verificable**: el usuario da un objetivo vago ("mejorar rendimiento") y se registra sin cuestionarlo. Causa: el agente no aplica la prueba de observabilidad. Solución: pedir reformulación hasta que el criterio sea binario y observable.
225
- - **Bloque 2 omitido cuando sí aplica**: si la fase incluye nuevas entidades de BD o endpoints pero el agente saltó el Bloque 2 por considerarlo "técnico". Causa: interpretación laxa de "preguntar si aplica". Solución: si hay código nuevo, el Bloque 2 siempre aplica.
224
+ - **Bloque de dominio omitido cuando sí aplica**: la fase incluye nuevas entidades de BD o endpoints pero el agente saltó el Bloque 2 por considerarlo "técnico". Causa: interpretación laxa de "preguntar si aplica". Solución: si hay código nuevo, al menos un bloque de dominio siempre aplica.
225
+ - **Fase con migración de datos sin preguntas de rollback**: la fase toca schema o migra datos pero el agente usó solo el bloque backend y nunca preguntó por reversibilidad ni verificación de integridad. Causa: no combinar bloques en fases mixtas. Solución: cualquier cambio destructivo de datos activa el bloque Datos/Migración completo.
226
226
 
227
227
  ## Checklist de cierre de discusión
228
228
 
@@ -230,7 +230,10 @@ Antes de pasar a `planear-fase`, verificar:
230
230
 
231
231
  - [ ] El objetivo de la fase es una oración accionable (no "mejorar el sistema")
232
232
  - [ ] El criterio de éxito es verificable (observable sin ambigüedad)
233
- - [ ] No hay decisiones PENDIENTE en ítems de los Bloques 1 y 4
233
+ - [ ] No hay decisiones PENDIENTE en ítems de los Bloques 1, 4 y 5
234
234
  - [ ] Todas las decisiones ABIERTA tienen una nota de qué decidirá el agente
235
235
  - [ ] Las features excluidas están documentadas explícitamente
236
- - [ ] CONTEXTO.md guardado en `.planning/fases/`
236
+ - [ ] Los supuestos explícitos quedaron registrados (al menos uno, o justificación de por qué no hay)
237
+ - [ ] Si la fase toca datos/schema: rollback y verificación de integridad respondidos
238
+ - [ ] Los criterios de aceptación tienen REQ-IDs binarios verificables
239
+ - [ ] CONTEXTO.md guardado en `.planning/fases/` siguiendo `recursos/plantilla-contexto.md`