elsabro 4.0.0 → 4.2.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 (44) hide show
  1. package/README.md +61 -7
  2. package/agents/elsabro-orchestrator.md +70 -20
  3. package/agents/elsabro-ux-designer.md +70 -0
  4. package/commands/elsabro/add-phase.md +20 -0
  5. package/commands/elsabro/add-todo.md +30 -0
  6. package/commands/elsabro/audit-milestone.md +20 -0
  7. package/commands/elsabro/check-todos.md +29 -0
  8. package/commands/elsabro/complete-milestone.md +20 -0
  9. package/commands/elsabro/debug.md +76 -1
  10. package/commands/elsabro/design-ui.md +407 -0
  11. package/commands/elsabro/discuss-phase.md +20 -0
  12. package/commands/elsabro/execute.md +166 -30
  13. package/commands/elsabro/exit.md +97 -0
  14. package/commands/elsabro/help.md +7 -1
  15. package/commands/elsabro/insert-phase.md +20 -0
  16. package/commands/elsabro/list-phase-assumptions.md +20 -0
  17. package/commands/elsabro/map-codebase.md +30 -0
  18. package/commands/elsabro/new-milestone.md +23 -0
  19. package/commands/elsabro/new.md +64 -0
  20. package/commands/elsabro/pause-work.md +28 -5
  21. package/commands/elsabro/plan-milestone-gaps.md +20 -0
  22. package/commands/elsabro/plan.md +20 -0
  23. package/commands/elsabro/progress.md +8 -0
  24. package/commands/elsabro/quick.md +58 -3
  25. package/commands/elsabro/remove-phase.md +20 -0
  26. package/commands/elsabro/research-phase.md +20 -0
  27. package/commands/elsabro/resume-work.md +21 -0
  28. package/commands/elsabro/set-profile.md +38 -0
  29. package/commands/elsabro/settings.md +38 -0
  30. package/commands/elsabro/start.md +31 -1
  31. package/commands/elsabro/update.md +28 -0
  32. package/commands/elsabro/verify-work.md +94 -7
  33. package/commands/elsabro/verify.md +30 -0
  34. package/hooks/elsabro-mode.sh +102 -0
  35. package/hooks/hooks-config-updated.json +43 -7
  36. package/hooks/skill-discovery.sh +38 -8
  37. package/package.json +5 -5
  38. package/references/SYSTEM_INDEX.md +9 -0
  39. package/references/agent-teams-integration.md +99 -36
  40. package/references/enforcement-rules.md +177 -62
  41. package/references/flow-orchestration.md +127 -32
  42. package/references/next-step-engine.md +134 -0
  43. package/skills/stitch-ui-design.md +242 -0
  44. package/templates/session-state.json +3 -1
package/README.md CHANGED
@@ -1,10 +1,63 @@
1
- # ELSABRO v3.8
2
-
3
- **Tu asistente AI para crear apps increíbles** - Orquestación de agentes de nivel enterprise.
4
-
5
- ELSABRO es un sistema de desarrollo AI-powered para Claude Code que te guía paso a paso en la creación de aplicaciones, desde la idea inicial hasta el producto funcionando.
6
-
7
- ## 🚀 Novedades v3.8 (Skill Marketplace Integration)
1
+ # ELSABRO v4.2.0
2
+
3
+ **Tu asistente AI para crear apps increibles** - Orquestacion de agentes de nivel enterprise.
4
+
5
+ ELSABRO es un sistema de desarrollo AI-powered para Claude Code que te guia paso a paso en la creacion de aplicaciones, desde la idea inicial hasta el producto funcionando.
6
+
7
+ ## Novedades v4.2.0 (Next Step Suggestions + Stitch UI Design)
8
+
9
+ ### Next Step Suggestions
10
+ - **Guided workflow**: Every command now suggests what to do next with "Siguiente Paso" blocks
11
+ - **`suggested_next` in state.json**: Programmatic field for smart routing in persistent mode
12
+ - **Context-aware**: Suggestions adapt based on pending tasks, TODOs, verification results
13
+ - **28 commands enhanced**: All state-writing commands guide you to the next logical step
14
+ - **New reference**: `references/next-step-engine.md` — Complete decision matrix and override rules
15
+
16
+ ### Stitch AI UI Design
17
+ - **`/elsabro:design-ui`**: New command to generate professional UI screens from text descriptions
18
+ - **Stitch MCP integration**: Create projects, generate screens, review and refine designs
19
+ - **Sally enhanced**: UX Designer agent now uses both Stitch (full screens) and 21st.dev (components)
20
+ - **Auto-documentation**: Designs saved to `.planning/ui-designs/` with screen specs
21
+ - **Persistent mode routing**: Say "design", "mockup", "wireframe" and ELSABRO routes to design-ui
22
+
23
+ ## Novedades v4.1.0 (Persistent Mode + Code Review Enforcement)
24
+
25
+ ### Persistent Mode
26
+ - **ELSABRO stays ON**: Once activated, all subsequent messages are automatically routed through ELSABRO workflows
27
+ - **Intent classification**: Your messages are classified and routed to the right command (debug, plan, quick, etc.)
28
+ - **`/elsabro:exit`**: Deactivate persistent mode when you want to return to normal Claude Code
29
+ - **Zero overhead when inactive**: <5ms fast path when persistent mode is off
30
+ - **Slash command bypass**: `/commit`, `/help`, etc. still work normally
31
+
32
+ ### Mandatory Code Review
33
+ - **Rule 7 enforcement**: Code review is now mandatory after every code modification
34
+ - **Integrated into commands**: `quick` and `debug` commands include automatic code review steps
35
+ - **No escape hatches**: Cannot complete a code-writing command without running `pr-review-toolkit:code-reviewer`
36
+
37
+ ## Novedades v4.0.0 (Agent Teams + Blocking Review)
38
+
39
+ ### Agent Teams
40
+ - **Coordinacion peer-to-peer** entre agentes usando Claude Code Agent Teams nativo
41
+ - **Auto-routing** entre subagents y Agent Teams segun complejidad y perfil
42
+ - **7 agentes migrados** a Team mode (orchestrator, executor, planner, analyst, qa, verifier, debugger)
43
+ - **5 agentes mantienen** modo subagent (quick-dev, yolo-dev, scrum-master, tech-writer, ux-designer)
44
+ - **Nuevo nodo `team`** en el flow engine para spawn y coordinacion de equipos
45
+ - **Nuevo perfil `teams`** en hooks y flow engine
46
+
47
+ ### Blocking Code Review (Sin Escape)
48
+ - **CERO opciones de skip** - no "aceptar con errores", no "continuar sin fix"
49
+ - **5 iteraciones max** de fix antes de bloqueo (antes eran 2)
50
+ - **3 reviewers paralelos** (code quality, silent failures, staff review)
51
+ - **Quality gate completo** - tests + TypeScript + lint (antes faltaba lint)
52
+ - **Exit codes reales** - `captureExitCode: true` en vez de `|| true`
53
+ - **Nuevo nodo `interrupt_blocked`** para bloqueo duro en review failures
54
+
55
+ ### Nuevos Nodos de Flujo
56
+ - `interrupt_blocked` - Bloqueo sin escape en review failures
57
+ - `wait_manual_review_fix` - Espera fix manual del usuario
58
+ - `interrupt_teams_failed` - Fallback de Agent Teams a subagents
59
+
60
+ ## Novedades v3.8 (Skill Marketplace Integration)
8
61
 
9
62
  ### Integración Automática de Skills (skills.sh)
10
63
  - **SkillDiscoveryEngine** - Descubrimiento automático de skills necesarias por keywords y categorías
@@ -278,6 +331,7 @@ Después de instalar, abre Claude Code y escribe:
278
331
  | `/elsabro:resume-work` | Retomar trabajo guardado |
279
332
  | `/elsabro:pause-work` | Pausar y guardar contexto |
280
333
  | `/elsabro:progress` | Ver progreso actual |
334
+ | `/elsabro:exit` | Desactivar persistent mode |
281
335
 
282
336
  ### Todo Management
283
337
  | Comando | Descripción |
@@ -7,7 +7,8 @@ tools:
7
7
  - TaskUpdate
8
8
  - TaskList
9
9
  - TaskGet
10
- - Teammate
10
+ - TeamCreate
11
+ - TeamDelete
11
12
  - SendMessage
12
13
  - Read
13
14
  - Glob
@@ -345,31 +346,32 @@ Archivos modificados:
345
346
  </integration_with_elsabro>
346
347
 
347
348
  <agent_teams>
348
- ## Agent Teams Integration (v4.0.0)
349
+ ## Agent Teams Integration (v4.2.0 — Mandatory)
349
350
 
350
351
  ### Cuándo Usar Agent Teams
351
352
 
352
- Como orquestador, decido automáticamente cuándo usar Agent Teams vs Task subagents:
353
+ Como orquestador, Agent Teams es **OBLIGATORIO** para todo trabajo paralelo con 2+ agentes (Rule 8):
353
354
 
354
355
  ```
355
356
  ┌─────────────────────────────────────────────────────────────┐
356
- DECISIÓN: ¿Agent Teams o Subagents?
357
+ AGENT TEAMS OBLIGATORIO (v4.2.0)
357
358
  ├─────────────────────────────────────────────────────────────┤
358
359
  │ │
359
- Si profile == "teams":
360
- │ → AGENT TEAMS (siempre)
360
+ agent_count < 2:
361
+ │ → SUBAGENT (agente único, no necesita coordinación)
361
362
  │ │
362
- Si complexity == "high" Y implementation: │
363
- │ → AGENT TEAMS (peer-to-peer coordination)
363
+ phase == "exploration" (HAIKU read-only): │
364
+ │ → SUBAGENTS (excepción: read-only, no modifica código)
364
365
  │ │
365
- Si exploration o verification:
366
- │ → SUBAGENTS (read-only, no necesita coordinación)
366
+ agent_count >= 2 + ANY otra fase:
367
+ │ → AGENT TEAMS (OBLIGATORIO)
368
+ │ ├── implementación → TeamCreate + executor/qa teammates │
369
+ │ ├── review/verificación → TeamCreate + reviewer teammates│
370
+ │ ├── planning (2+ opus) → TeamCreate + planner teammates │
371
+ │ └── debugging (2+ agents) → TeamCreate + debugger mates │
367
372
  │ │
368
- Si complexity == "low" o profile == "yolo":
369
- SUBAGENTS (velocidad > coordinación)
370
- │ │
371
- │ Default: │
372
- │ → SUBAGENTS (menor overhead) │
373
+ VIOLACIÓN CRÍTICA: 2+ agentes sin TeamCreate = ABORTAR
374
+ Ver /references/enforcement-rules.md Regla 8
373
375
  │ │
374
376
  └─────────────────────────────────────────────────────────────┘
375
377
  ```
@@ -377,9 +379,8 @@ Como orquestador, decido automáticamente cuándo usar Agent Teams vs Task subag
377
379
  ### Spawn Team Pattern
378
380
 
379
381
  ```javascript
380
- // 1. Crear equipo
381
- Teammate({
382
- operation: "spawnTeam",
382
+ // 1. Crear equipo (API oficial Claude Code)
383
+ TeamCreate({
383
384
  team_name: "elsabro-wave-N",
384
385
  description: "Wave N implementation"
385
386
  })
@@ -402,14 +403,63 @@ Task({
402
403
  prompt: "Write tests for feature A..."
403
404
  })
404
405
 
405
- // 4. Teammates se comunican entre con SendMessage
406
+ // 4. Teammates se comunican entre si con SendMessage
406
407
  // executor → qa: "Feature A implementada, estos son los archivos..."
407
408
  // qa → executor: "Test falla en edge case X, necesito fix..."
408
409
 
409
410
  // 5. Shutdown y cleanup
410
411
  SendMessage({ type: "shutdown_request", recipient: "executor" })
411
412
  SendMessage({ type: "shutdown_request", recipient: "qa" })
412
- Teammate({ operation: "cleanup" })
413
+ TeamDelete()
414
+ ```
415
+
416
+ ### Limitations (de la documentacion oficial)
417
+
418
+ - **No session resumption**: `/resume` no restaura teammates in-process
419
+ - **No nested teams**: Teammates NO pueden crear sus propios teams
420
+ - **Lead es fijo**: La sesion que crea el team es el lead para siempre
421
+ - **Un team por sesion**: Limpiar el actual antes de crear uno nuevo
422
+ - **Task status can lag**: Teammates a veces no marcan tasks como completed
423
+
424
+ ### Display Modes
425
+
426
+ ```javascript
427
+ // In-process (default): todos en el mismo terminal
428
+ // Shift+Up/Down para seleccionar teammate, Shift+Tab para delegate mode
429
+
430
+ // Split panes: cada teammate en su propio panel (requiere tmux o iTerm2)
431
+ // En settings.json:
432
+ // { "teammateMode": "in-process" | "tmux" | "auto" }
433
+
434
+ // CLI flag para forzar modo:
435
+ // claude --teammate-mode in-process
436
+ ```
437
+
438
+ ### Plan Approval para Teammates
439
+
440
+ ```javascript
441
+ // Para tareas complejas, requerir que teammates planifiquen antes de implementar
442
+ // El teammate trabaja en plan mode hasta que el lead apruebe
443
+
444
+ // Cuando teammate llama ExitPlanMode, envia plan_approval_request al lead
445
+ // Lead responde con:
446
+ SendMessage({
447
+ type: "plan_approval_response",
448
+ request_id: "abc-123",
449
+ recipient: "executor",
450
+ approve: true // o false con content: "feedback..."
451
+ })
452
+ ```
453
+
454
+ ### Delegate Mode
455
+
456
+ ```
457
+ // Shift+Tab para activar delegate mode
458
+ // En delegate mode, el lead SOLO puede coordinar:
459
+ // - Spawn/shutdown teammates
460
+ // - Enviar mensajes
461
+ // - Gestionar tasks
462
+ // NO puede editar archivos ni ejecutar codigo directamente
413
463
  ```
414
464
 
415
465
  ### Blocking Review con Agent Teams
@@ -8,6 +8,7 @@ tools:
8
8
  - WebSearch
9
9
  - mcp__plugin_context7_context7__*
10
10
  - mcp__magic__*
11
+ - mcp__stitch__*
11
12
  color: pink
12
13
  icon: "🎨"
13
14
  ---
@@ -97,6 +98,42 @@ Crear wireframes en ASCII/descripción.
97
98
  ```
98
99
  </workflows>
99
100
 
101
+ <stitch_workflows>
102
+ ## Stitch AI Design Workflows
103
+
104
+ ### [ST] Stitch Design
105
+ Generar screens visuales profesionales usando Stitch AI.
106
+
107
+ ```
108
+ 1. Entender requerimientos de UI
109
+ 2. Crear/reutilizar proyecto Stitch
110
+ 3. Generar screens desde texto
111
+ 4. Revisar con el usuario
112
+ 5. Refinar según feedback
113
+ 6. Documentar en .planning/ui-designs/
114
+ ```
115
+
116
+ **Herramientas Stitch:**
117
+ - `mcp__stitch__list_projects` — Ver proyectos existentes
118
+ - `mcp__stitch__create_project` — Crear proyecto nuevo
119
+ - `mcp__stitch__generate_screen_from_text` — Generar screen desde texto
120
+ - `mcp__stitch__list_screens` — Listar screens de un proyecto
121
+ - `mcp__stitch__get_screen` — Ver detalle de un screen
122
+ - `mcp__stitch__get_project` — Ver detalle de un proyecto
123
+
124
+ **Cuándo usar Stitch vs 21st.dev:**
125
+ | Necesidad | Herramienta |
126
+ |-----------|-------------|
127
+ | Diseño visual completo de pantalla | **Stitch** |
128
+ | Componente React individual | **21st.dev** |
129
+ | Mockup rápido de una idea | **Stitch** |
130
+ | Implementación de componente | **21st.dev** |
131
+ | Flujo multi-pantalla | **Stitch** |
132
+ | Botón/Card/Form específico | **21st.dev** |
133
+
134
+ Output: `.planning/ui-designs/`
135
+ </stitch_workflows>
136
+
100
137
  <ux_patterns>
101
138
  ## Patrones UX Comunes
102
139
 
@@ -276,3 +313,36 @@ User: "Necesito un card para mostrar productos"
276
313
  Sally: [usa 21st magic para encontrar/generar el componente]
277
314
  ```
278
315
  </integration_with_21st>
316
+
317
+ <integration_with_stitch>
318
+ ## Integración con Stitch AI
319
+
320
+ Cuando necesites diseñar pantallas completas, puedo usar Stitch AI para:
321
+
322
+ 1. Generar screens profesionales desde descripción de texto
323
+ 2. Crear flujos multi-pantalla completos
324
+ 3. Iterar diseños con feedback del usuario
325
+ 4. Documentar diseños para los developers
326
+
327
+ ### Flujo combinado Stitch + 21st.dev
328
+ ```
329
+ 1. Stitch: Generar screen completo (layout, estructura)
330
+ 2. 21st.dev: Generar componentes específicos (buttons, cards)
331
+ 3. Combinar: Screen de Stitch como guía + componentes de 21st.dev como código
332
+ ```
333
+
334
+ ### Ejemplo
335
+ ```
336
+ User: "Necesito un dashboard con gráficos y filtros"
337
+ Sally:
338
+ 1. [Stitch] Genera screen completo del dashboard
339
+ 2. [21st.dev] Genera componentes: FilterBar, StatCard, ChartContainer
340
+ 3. Documenta todo en .planning/ui-designs/
341
+ ```
342
+
343
+ ### Comando Asociado
344
+ El usuario puede invocar directamente:
345
+ ```
346
+ /elsabro:design-ui "descripción de la pantalla"
347
+ ```
348
+ </integration_with_stitch>
@@ -16,10 +16,12 @@ sync:
16
16
  ### Al Iniciar
17
17
  - Leer `.elsabro/state.json`
18
18
  - Verificar contexto actual del milestone/phase
19
+ - Activar persistent mode: `state.elsabro_mode = true`
19
20
 
20
21
  ### Al Completar
21
22
  - Registrar cambio en `history`
22
23
  - Actualizar `context` si corresponde
24
+ - Establecer `state.suggested_next = "plan"`
23
25
  </state_sync>
24
26
 
25
27
  <command-name>add-phase</command-name>
@@ -129,3 +131,21 @@ Actualiza `PHASES.md` y `MILESTONE.md`:
129
131
 
130
132
  View phases: /elsabro:progress --phases
131
133
  ```
134
+
135
+ <siguiente_paso>
136
+ ## Siguiente Paso
137
+
138
+ Al agregar la fase, establecer en state.json:
139
+ ```javascript
140
+ state.suggested_next = "plan";
141
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
142
+ ```
143
+
144
+ Mostrar al usuario:
145
+ ```
146
+ ## Siguiente Paso
147
+
148
+ → /elsabro:plan [N] — planificar la nueva fase agregada
149
+ → /elsabro:progress — ver el estado actualizado del milestone
150
+ ```
151
+ </siguiente_paso>
@@ -12,6 +12,18 @@ allowed-tools:
12
12
 
13
13
  <command-name>add-todo</command-name>
14
14
 
15
+ <state_sync>
16
+ ## SINCRONIZACIÓN DE ESTADO
17
+
18
+ ### Al Iniciar
19
+ - Leer `.elsabro/state.json` (si existe)
20
+ - Activar persistent mode: `state.elsabro_mode = true`
21
+
22
+ ### Al Completar
23
+ - Registrar en `history`
24
+ - Establecer `state.suggested_next = "check-todos"`
25
+ </state_sync>
26
+
15
27
  ## Propósito
16
28
 
17
29
  Agregar tareas rápidas al todo list del proyecto usando **Claude Code Tasks API** como backend. Para items que no merecen ser una fase o story completa.
@@ -214,3 +226,21 @@ TaskCreate({ subject: "Update user docs", metadata: {...} })
214
226
  - Can be promoted to phase task with `/elsabro:add-phase`
215
227
  - Persists across sessions via Tasks API
216
228
  - Supports dependencies with `blocks/blockedBy`
229
+
230
+ <siguiente_paso>
231
+ ## Siguiente Paso
232
+
233
+ Al completar, establecer en state.json:
234
+ ```javascript
235
+ state.suggested_next = "check-todos";
236
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
237
+ ```
238
+
239
+ Mostrar al usuario:
240
+ ```
241
+ ## Siguiente Paso
242
+
243
+ → /elsabro:check-todos — ver la lista completa de TODOs
244
+ → /elsabro:quick — resolver este TODO ahora mismo
245
+ ```
246
+ </siguiente_paso>
@@ -17,11 +17,13 @@ sync:
17
17
  - Leer `.elsabro/state.json`
18
18
  - Verificar si hay flujo en progreso
19
19
  - Actualizar `current_flow.command` con este comando
20
+ - Activar persistent mode: `state.elsabro_mode = true`
20
21
 
21
22
  ### Al Completar
22
23
  - Registrar en `history`
23
24
  - Actualizar `context` con informacion del milestone
24
25
  - Limpiar `current_flow`
26
+ - Establecer `state.suggested_next = "plan-milestone-gaps"`
25
27
  </state_sync>
26
28
 
27
29
  <command-name>audit-milestone</command-name>
@@ -164,3 +166,21 @@ Genera `.planning/milestones/M001-xxx/AUDIT-2024-01-20.md`:
164
166
  - Puede ser parte de weekly review
165
167
  - Alimenta `/elsabro:progress`
166
168
  - Dispara alertas si status es crítico
169
+
170
+ <siguiente_paso>
171
+ ## Siguiente Paso
172
+
173
+ Al completar la auditoría, establecer en state.json:
174
+ ```javascript
175
+ state.suggested_next = "plan-milestone-gaps";
176
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
177
+ ```
178
+
179
+ Mostrar al usuario:
180
+ ```
181
+ ## Siguiente Paso
182
+
183
+ → /elsabro:plan-milestone-gaps — planificar cómo cerrar los gaps encontrados
184
+ → /elsabro:discuss-phase — discutir los hallazgos de la auditoría
185
+ ```
186
+ </siguiente_paso>
@@ -13,6 +13,17 @@ allowed-tools:
13
13
 
14
14
  <command-name>check-todos</command-name>
15
15
 
16
+ <state_sync>
17
+ ## SINCRONIZACIÓN DE ESTADO
18
+
19
+ ### Al Iniciar
20
+ - Leer `.elsabro/state.json` (si existe)
21
+ - Activar persistent mode: `state.elsabro_mode = true`
22
+
23
+ ### Al Completar
24
+ - Establecer `state.suggested_next = "quick"`
25
+ </state_sync>
26
+
16
27
  ## Propósito
17
28
 
18
29
  Revisar, filtrar y gestionar los TODOs del proyecto usando **Claude Code Tasks API**. Vista completa de tareas pendientes con capacidad de gestión directa.
@@ -369,3 +380,21 @@ Output:
369
380
  - Soporta dependencias (`blocks/blockedBy`)
370
381
  - Visible en `/elsabro:progress`
371
382
  - Promovible a fase con `/elsabro:add-phase`
383
+
384
+ <siguiente_paso>
385
+ ## Siguiente Paso
386
+
387
+ Al completar, establecer en state.json:
388
+ ```javascript
389
+ state.suggested_next = "quick";
390
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
391
+ ```
392
+
393
+ Mostrar al usuario:
394
+ ```
395
+ ## Siguiente Paso
396
+
397
+ → /elsabro:quick — resolver un TODO rápidamente
398
+ → /elsabro:execute — trabajar en tareas más grandes
399
+ ```
400
+ </siguiente_paso>
@@ -17,11 +17,13 @@ sync:
17
17
  - Leer `.elsabro/state.json`
18
18
  - Verificar si hay flujo en progreso
19
19
  - Actualizar `current_flow.command` con este comando
20
+ - Activar persistent mode: `state.elsabro_mode = true`
20
21
 
21
22
  ### Al Completar
22
23
  - Registrar en `history`
23
24
  - Actualizar `context` con informacion del milestone
24
25
  - Limpiar `current_flow`
26
+ - Establecer `state.suggested_next = "new-milestone"`
25
27
  </state_sync>
26
28
 
27
29
  <command-name>complete-milestone</command-name>
@@ -155,3 +157,21 @@ Options:
155
157
  - Dispara notificación de milestone completado
156
158
  - Actualiza `/elsabro:progress` automáticamente
157
159
  - Linked con próximo milestone si existe
160
+
161
+ <siguiente_paso>
162
+ ## Siguiente Paso
163
+
164
+ Al completar el milestone, establecer en state.json:
165
+ ```javascript
166
+ state.suggested_next = "new-milestone";
167
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
168
+ ```
169
+
170
+ Mostrar al usuario:
171
+ ```
172
+ ## Siguiente Paso
173
+
174
+ → /elsabro:new-milestone — crear el siguiente milestone
175
+ → /elsabro:progress — ver el estado general del proyecto
176
+ ```
177
+ </siguiente_paso>
@@ -29,11 +29,13 @@ sync:
29
29
  - Leer `.elsabro/state.json`
30
30
  - Verificar si hay flujo en progreso
31
31
  - Actualizar `current_flow.command` con este comando
32
+ - Activar persistent mode: `state.elsabro_mode = true`
32
33
 
33
34
  ### Al Completar
34
35
  - Registrar en `history`
35
36
  - Actualizar `context` con informacion relevante
36
37
  - Limpiar `current_flow`
38
+ - Establecer `state.suggested_next = "verify-work"`
37
39
  </state_sync>
38
40
 
39
41
  <objective>
@@ -97,6 +99,14 @@ Task(elsabro-debugger):
97
99
  Modo: find_and_fix
98
100
  ```
99
101
 
102
+ ```javascript
103
+ // MARCAR: código fue modificado (para code_review_gate)
104
+ if (mode === "find_and_fix") {
105
+ state.current_flow.code_written = true;
106
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
107
+ }
108
+ ```
109
+
100
110
  ## Paso 4: Seguimiento
101
111
 
102
112
  El debugger actualizará el archivo de sesión con:
@@ -105,7 +115,26 @@ El debugger actualizará el archivo de sesión con:
105
115
  - Fix implementado
106
116
  - Verificación realizada
107
117
 
108
- ## Paso 5: Verificar con Usuario
118
+ ## Paso 5: Code Review (OBLIGATORIO)
119
+
120
+ **REGLA:** Después de implementar cualquier fix, SIEMPRE ejecutar code review antes de reportar al usuario.
121
+
122
+ ```
123
+ Task(pr-review-toolkit:code-reviewer):
124
+ Revisa los cambios del fix aplicado.
125
+ Busca bugs, code smells, seguridad.
126
+ Archivos modificados: [lista de archivos cambiados]
127
+ ```
128
+
129
+ Si el review encuentra issues, corregir ANTES de reportar al usuario.
130
+
131
+ ```javascript
132
+ // MARCAR: code review pasó (para code_review_gate en siguiente_paso)
133
+ state.current_flow.code_review_passed = true;
134
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
135
+ ```
136
+
137
+ ## Paso 6: Verificar con Usuario
109
138
 
110
139
  Una vez el debugger reporta fix:
111
140
 
@@ -122,6 +151,29 @@ Para verificar:
122
151
  ```
123
152
  </process>
124
153
 
154
+ <code_review_gate>
155
+ ## Code Review Gate (OBLIGATORIO - NO NEGOCIABLE)
156
+
157
+ **ANTES de reportar resultado al usuario o ofrecer commit, VERIFICAR:**
158
+
159
+ ```
160
+ ¿Se implementó un fix (modo find_and_fix)?
161
+
162
+ ├─ SÍ → ¿Se ejecutó code review (Paso 5)?
163
+ │ │
164
+ │ ├─ NO → EJECUTAR AHORA:
165
+ │ │ Task(pr-review-toolkit:code-reviewer)
166
+ │ │ Si issues > 0: fix y re-review
167
+ │ │ Solo cuando issues == 0: continuar
168
+ │ │
169
+ │ └─ SÍ, issues == 0 → Continuar
170
+
171
+ └─ NO (solo find_root_cause_only) → Continuar (no aplica)
172
+ ```
173
+
174
+ **VIOLACIÓN CRÍTICA**: Reportar fix sin code review = ABORTAR OPERACIÓN
175
+ </code_review_gate>
176
+
125
177
  <modes>
126
178
  ## Modos de Debug
127
179
 
@@ -170,3 +222,26 @@ Opciones:
170
222
  ¿Qué prefieres?
171
223
  ```
172
224
  </escalation>
225
+
226
+ <siguiente_paso>
227
+ ## Siguiente Paso
228
+
229
+ Al completar el debug, establecer en state.json:
230
+ ```javascript
231
+ // GATE CHECK: No escribir suggested_next sin code review (aplica en modo find_and_fix)
232
+ if (state.current_flow?.code_written && !state.current_flow?.code_review_passed) {
233
+ // VIOLACIÓN CRÍTICA — ABORTAR. Volver a code_review_gate.
234
+ throw new Error("CODE_REVIEW_GATE: Cannot proceed without code review");
235
+ }
236
+ state.suggested_next = "verify-work";
237
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
238
+ ```
239
+
240
+ Mostrar al usuario:
241
+ ```
242
+ ## Siguiente Paso
243
+
244
+ → /elsabro:verify-work — verificar que el fix funciona correctamente
245
+ → /elsabro:progress — ver el estado general del proyecto
246
+ ```
247
+ </siguiente_paso>