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
@@ -28,11 +28,14 @@ sync:
28
28
  - Leer `.elsabro/state.json`
29
29
  - Verificar si hay flujo en progreso
30
30
  - Actualizar `current_flow.command` con este comando
31
+ - Activar persistent mode: `state.elsabro_mode = true`
31
32
 
32
33
  ### Al Completar
33
34
  - Registrar en `history`
34
35
  - Actualizar `context` con informacion relevante
35
36
  - Limpiar `current_flow`
37
+ - Establecer `state.suggested_next = "plan"` en state.json
38
+ - Establecer `state.context.suggested_args = "1"` para la primera fase
36
39
  </state_sync>
37
40
 
38
41
  <objective>
@@ -115,6 +118,12 @@ Ejecutar los pasos del skill seleccionado para:
115
118
  2. Configurar dependencias
116
119
  3. Verificar que funciona
117
120
 
121
+ ```javascript
122
+ // MARCAR: código fue generado (para code_review_gate)
123
+ state.current_flow.code_written = true;
124
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
125
+ ```
126
+
118
127
  ## Paso 7: Crear .planning/
119
128
 
120
129
  Una vez el proyecto base funciona:
@@ -177,6 +186,36 @@ Para probarlo:
177
186
  ```
178
187
  </process>
179
188
 
189
+ <code_review_gate>
190
+ ## Code Review Gate (OBLIGATORIO - NO NEGOCIABLE)
191
+
192
+ **ANTES de mostrar resultado al usuario o continuar a siguiente paso, VERIFICAR:**
193
+
194
+ ```
195
+ ¿Se generó código de scaffold/proyecto?
196
+
197
+ ├─ SÍ → ¿Se ejecutó code review?
198
+ │ │
199
+ │ ├─ NO → EJECUTAR AHORA:
200
+ │ │ Task(pr-review-toolkit:code-reviewer)
201
+ │ │ Si issues > 0: fix y re-review
202
+ │ │ Solo cuando issues == 0: continuar
203
+ │ │
204
+ │ └─ SÍ, issues == 0 → Continuar
205
+ │ state.current_flow.code_review_passed = true ← MARCAR
206
+
207
+ └─ NO → Continuar (no aplica)
208
+ ```
209
+
210
+ ```javascript
211
+ // MARCAR: code review pasó (para GATE CHECK en siguiente_paso)
212
+ state.current_flow.code_review_passed = true;
213
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
214
+ ```
215
+
216
+ **VIOLACIÓN CRÍTICA**: Entregar proyecto sin code review = ABORTAR OPERACIÓN
217
+ </code_review_gate>
218
+
180
219
  <skills_routing>
181
220
  ## Routing a Skills
182
221
 
@@ -247,3 +286,28 @@ Antes de terminar, confirmar:
247
286
  3. **Usuario confirma:**
248
287
  "¿Puedes ver [lo esperado]?"
249
288
  </verification>
289
+
290
+ <siguiente_paso>
291
+ ## Siguiente Paso
292
+
293
+ Al completar la creación del proyecto, establecer en state.json:
294
+ ```javascript
295
+ // GATE CHECK: No escribir suggested_next sin code review
296
+ if (state.current_flow?.code_written && !state.current_flow?.code_review_passed) {
297
+ // VIOLACIÓN CRÍTICA — ABORTAR. Volver a code_review_gate.
298
+ throw new Error("CODE_REVIEW_GATE: Cannot proceed without code review");
299
+ }
300
+ state.context = state.context || {};
301
+ state.suggested_next = "plan";
302
+ state.context.suggested_args = "1"; // primera fase
303
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
304
+ ```
305
+
306
+ Mostrar al usuario:
307
+ ```
308
+ ## Siguiente Paso
309
+
310
+ → /elsabro:plan 1 — planificar la primera fase del proyecto
311
+ → /elsabro:map-codebase — explorar la estructura creada
312
+ ```
313
+ </siguiente_paso>
@@ -26,11 +26,14 @@ sync:
26
26
  - Leer `.elsabro/state.json`
27
27
  - Verificar si hay flujo en progreso
28
28
  - Actualizar `current_flow.command` con este comando
29
-
30
- ### Al Completar
31
- - Registrar en `history`
32
- - Actualizar `context` con informacion relevante
33
- - Limpiar `current_flow`
29
+ - Activar persistent mode: `state.elsabro_mode = true`
30
+
31
+ ### Al Completar (ORDEN IMPORTA)
32
+ 1. **PRIMERO** guardar `state.context.paused_command = state.current_flow?.command` (ANTES de limpiar current_flow)
33
+ 2. Registrar en `history`
34
+ 3. Actualizar `context` con informacion relevante
35
+ 4. Limpiar `current_flow` (DESPUÉS de guardar paused_command)
36
+ 5. Establecer `state.suggested_next = "resume-work"`
34
37
  </state_sync>
35
38
 
36
39
  <command-name>pause-work</command-name>
@@ -334,3 +337,23 @@ Al reanudar, verificar tiempo desde pausa:
334
337
  └──────────────────────────────────────────────────┘
335
338
  ```
336
339
  </session_state_management>
340
+
341
+ <siguiente_paso>
342
+ ## Siguiente Paso
343
+
344
+ Al completar la pausa, establecer en state.json:
345
+ ```javascript
346
+ // Guardar qué comando estaba activo para que resume-work lo sepa
347
+ state.context = state.context || {};
348
+ state.context.paused_command = state.current_flow?.command || null;
349
+ state.suggested_next = "resume-work";
350
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
351
+ ```
352
+
353
+ Mostrar al usuario:
354
+ ```
355
+ ## Siguiente Paso
356
+
357
+ → /elsabro:resume-work — cuando estés listo para continuar
358
+ ```
359
+ </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 = "execute"`
25
27
  </state_sync>
26
28
 
27
29
  <command-name>plan-milestone-gaps</command-name>
@@ -146,3 +148,21 @@ Genera `.planning/milestones/M001-xxx/GAP-PLAN.md` con:
146
148
  - Alimenta sprint planning
147
149
  - Conecta con `/elsabro:plan` para detalles
148
150
  - Usa `/elsabro:quick` para gaps pequeños
151
+
152
+ <siguiente_paso>
153
+ ## Siguiente Paso
154
+
155
+ Al completar la planificación de gaps, establecer en state.json:
156
+ ```javascript
157
+ state.suggested_next = "execute";
158
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
159
+ ```
160
+
161
+ Mostrar al usuario:
162
+ ```
163
+ ## Siguiente Paso
164
+
165
+ → /elsabro:execute — ejecutar el plan para corregir los gaps
166
+ → /elsabro:quick — resolver gaps pequeños rápidamente
167
+ ```
168
+ </siguiente_paso>
@@ -79,6 +79,7 @@ if (state.history.length > 0 && state.history[state.history.length - 1].command
79
79
 
80
80
  // 5. Actualizar estado
81
81
  state.current_flow = { command: "plan", phase: "initializing", started_at: new Date().toISOString() };
82
+ state.elsabro_mode = true;
82
83
  Write(".elsabro/state.json", JSON.stringify(state, null, 2));
83
84
 
84
85
  // 6. Completar task de inicialización
@@ -117,6 +118,7 @@ state.history.push({
117
118
  });
118
119
 
119
120
  // Pasar contexto a execute
121
+ state.context = state.context || {};
120
122
  state.context.plan_file = planFilePath;
121
123
  state.context.tech_stack = verifiedTechStack;
122
124
  state.context.ready_for_execution = true;
@@ -498,3 +500,21 @@ Al completar planificación:
498
500
  }
499
501
  ```
500
502
  </parallel_coordination>
503
+
504
+ <siguiente_paso>
505
+ ## Siguiente Paso
506
+
507
+ Al completar, establecer en state.json:
508
+ ```javascript
509
+ state.suggested_next = "execute";
510
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
511
+ ```
512
+
513
+ Mostrar al usuario:
514
+ ```
515
+ ## Siguiente Paso
516
+
517
+ → /elsabro:execute — ejecutar el plan creado
518
+ → /elsabro:discuss-phase — discutir el alcance antes de ejecutar
519
+ ```
520
+ </siguiente_paso>
@@ -12,6 +12,14 @@ allowed-tools:
12
12
 
13
13
  # ELSABRO: Progress
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
+ </state_sync>
22
+
15
23
  <objective>
16
24
  Mostrar el estado actual del proyecto y guiar al usuario sobre qué hacer a continuación usando **Claude Code Tasks API** como fuente de verdad.
17
25
  </objective>
@@ -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 relevante
24
25
  - Limpiar `current_flow`
26
+ - Establecer `state.suggested_next = "progress"` en state.json
25
27
  </state_sync>
26
28
 
27
29
  <command-name>quick</command-name>
@@ -81,11 +83,17 @@ ELSABRO: [Ejecuta en <30 segundos]
81
83
  3. Execute (15-60 seg)
82
84
  └─ Hacer el cambio
83
85
  └─ Agregar test si aplica
86
+ └─ state.current_flow.code_written = true ← MARCAR
84
87
 
85
88
  4. Verify (10 seg)
86
89
  └─ Correr tests afectados
87
90
 
88
- 5. Report
91
+ 5. Code Review (OBLIGATORIO)
92
+ └─ Task(pr-review-toolkit:code-reviewer) sobre archivos modificados
93
+ └─ Si hay issues: fix antes de reportar
94
+ └─ Si issues == 0: state.current_flow.code_review_passed = true ← MARCAR
95
+
96
+ 6. Report
89
97
  └─ Mostrar diff
90
98
  └─ Ofrecer commit
91
99
  ```
@@ -95,8 +103,9 @@ ELSABRO: [Ejecuta en <30 segundos]
95
103
  1. **Max 2 preguntas** - Si necesitas más info, usa `/elsabro:plan`
96
104
  2. **Max 3 archivos** - Si afecta más, usa flujo normal
97
105
  3. **Auto-test** - Siempre corre tests relacionados
98
- 4. **No docs** - Skip documentación para velocidad
99
- 5. **Offer commit** - Siempre pregunta si commitear
106
+ 4. **Auto-review** - SIEMPRE ejecutar code review con `Task(pr-review-toolkit:code-reviewer)` después de escribir código
107
+ 5. **No docs** - Skip documentación para velocidad
108
+ 6. **Offer commit** - Siempre pregunta si commitear
100
109
 
101
110
  ## Integración con Agentes
102
111
 
@@ -116,3 +125,49 @@ Quick mode usa `elsabro-yolo-dev` (Flash) internamente:
116
125
 
117
126
  Commit? (y/n/edit message)
118
127
  ```
128
+
129
+ <code_review_gate>
130
+ ## Code Review Gate (OBLIGATORIO - NO NEGOCIABLE)
131
+
132
+ **ANTES de mostrar resultado o ofrecer commit, VERIFICAR:**
133
+
134
+ ```
135
+ ¿Se escribió/modificó código?
136
+
137
+ ├─ SÍ → ¿Se ejecutó code review (Paso 5)?
138
+ │ │
139
+ │ ├─ NO → EJECUTAR AHORA:
140
+ │ │ Task(pr-review-toolkit:code-reviewer)
141
+ │ │ Si issues > 0: fix y re-review
142
+ │ │ Solo cuando issues == 0: continuar
143
+ │ │
144
+ │ └─ SÍ, issues == 0 → Continuar
145
+
146
+ └─ NO → Continuar (no aplica)
147
+ ```
148
+
149
+ **VIOLACIÓN CRÍTICA**: Reportar resultado sin code review = ABORTAR OPERACIÓN
150
+ </code_review_gate>
151
+
152
+ <siguiente_paso>
153
+ ## Siguiente Paso
154
+
155
+ Al completar la tarea rápida, establecer en state.json:
156
+ ```javascript
157
+ // GATE CHECK: No escribir suggested_next sin code review
158
+ if (state.current_flow?.code_written && !state.current_flow?.code_review_passed) {
159
+ // VIOLACIÓN CRÍTICA — ABORTAR. Volver a code_review_gate.
160
+ throw new Error("CODE_REVIEW_GATE: Cannot proceed without code review");
161
+ }
162
+ state.suggested_next = "progress";
163
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
164
+ ```
165
+
166
+ Mostrar al usuario:
167
+ ```
168
+ ## Siguiente Paso
169
+
170
+ → /elsabro:progress — ver el estado del proyecto
171
+ → Si hay más cambios pendientes: commit los cambios
172
+ ```
173
+ </siguiente_paso>
@@ -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 = "progress"`
23
25
  </state_sync>
24
26
 
25
27
  <command-name>remove-phase</command-name>
@@ -151,3 +153,21 @@ Timeline impact: -2 days
151
153
 
152
154
  Restore: Use /elsabro:insert-phase with --from-archive flag
153
155
  ```
156
+
157
+ <siguiente_paso>
158
+ ## Siguiente Paso
159
+
160
+ Al eliminar la fase, establecer en state.json:
161
+ ```javascript
162
+ state.suggested_next = "progress";
163
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
164
+ ```
165
+
166
+ Mostrar al usuario:
167
+ ```
168
+ ## Siguiente Paso
169
+
170
+ → /elsabro:progress — ver el estado actualizado
171
+ → /elsabro:plan — replanificar si es necesario
172
+ ```
173
+ </siguiente_paso>
@@ -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>research-phase</command-name>
@@ -189,3 +191,21 @@ Breaking changes from 4.x noted
189
191
 
190
192
  Ready for: /elsabro:plan or /elsabro:discuss-phase
191
193
  ```
194
+
195
+ <siguiente_paso>
196
+ ## Siguiente Paso
197
+
198
+ Al completar la investigación, establecer en state.json:
199
+ ```javascript
200
+ state.suggested_next = "plan";
201
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
202
+ ```
203
+
204
+ Mostrar al usuario:
205
+ ```
206
+ ## Siguiente Paso
207
+
208
+ → /elsabro:plan — planificar con los hallazgos de la investigación
209
+ → /elsabro:discuss-phase — discutir los resultados antes de planificar
210
+ ```
211
+ </siguiente_paso>
@@ -27,11 +27,13 @@ sync:
27
27
  - Leer `.elsabro/state.json`
28
28
  - Verificar si hay flujo en progreso
29
29
  - Actualizar `current_flow.command` con este comando
30
+ - Activar persistent mode: `state.elsabro_mode = true`
30
31
 
31
32
  ### Al Completar
32
33
  - Registrar en `history`
33
34
  - Actualizar `context` con informacion relevante
34
35
  - Limpiar `current_flow`
36
+ - Establecer `state.suggested_next` basado en contexto recuperado (el comando pausado)
35
37
  </state_sync>
36
38
 
37
39
  <command-name>resume-work</command-name>
@@ -414,3 +416,22 @@ Al reanudar exitosamente, **MERGE** (no reemplazar) los campos:
414
416
 
415
417
  **IMPORTANTE:** No sobrescribir `recovery` completo, solo agregar `resumedFrom` y `resumedAt`.
416
418
  </session_validation>
419
+
420
+ <siguiente_paso>
421
+ ## Siguiente Paso
422
+
423
+ Al completar, establecer en state.json:
424
+ ```javascript
425
+ // Sugerir el comando que estaba pausado
426
+ state.suggested_next = state.context?.paused_command || "progress";
427
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
428
+ ```
429
+
430
+ Mostrar al usuario:
431
+ ```
432
+ ## Siguiente Paso
433
+
434
+ → /elsabro:[comando pausado] — continuar donde lo dejaste
435
+ → /elsabro:progress — ver el estado general antes de continuar
436
+ ```
437
+ </siguiente_paso>
@@ -7,6 +7,18 @@ description: Cambiar el perfil de comportamiento de ELSABRO
7
7
 
8
8
  <command-name>set-profile</command-name>
9
9
 
10
+ <state_sync>
11
+ ## SINCRONIZACIÓN DE ESTADO
12
+
13
+ ### Al Iniciar
14
+ - Leer `.elsabro/state.json` (si existe)
15
+ - Guardar `state.context.previous_suggested_next = state.suggested_next` (para restaurar al completar)
16
+ - Activar persistent mode: `state.elsabro_mode = true`
17
+
18
+ ### Al Completar
19
+ - Restaurar `state.suggested_next` al valor anterior (flujo previo) desde `state.context.previous_suggested_next`
20
+ </state_sync>
21
+
10
22
  ## Propósito
11
23
 
12
24
  Cambiar rápidamente el perfil de comportamiento de ELSABRO. Los perfiles son presets que ajustan múltiples settings a la vez.
@@ -214,3 +226,29 @@ Active settings:
214
226
  - Stored en `.elsabro/config.json`
215
227
  - Full settings con `/elsabro:settings`
216
228
  - Affects all ELSABRO behavior
229
+
230
+ <siguiente_paso>
231
+ ## Siguiente Paso
232
+
233
+ Al iniciar, guardar la sugerencia actual:
234
+ ```javascript
235
+ // ANTES de cualquier cambio, guardar suggested_next actual
236
+ state.context = state.context || {};
237
+ state.context.previous_suggested_next = state.suggested_next;
238
+ ```
239
+
240
+ Al completar el cambio de perfil:
241
+ ```javascript
242
+ // Restaurar sugerencia del flujo previo
243
+ state.suggested_next = state.context?.previous_suggested_next || "start";
244
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
245
+ ```
246
+
247
+ Mostrar al usuario:
248
+ ```
249
+ ## Siguiente Paso
250
+
251
+ → Volver al flujo anterior con el nuevo perfil
252
+ → /elsabro:start — empezar algo nuevo con el perfil actualizado
253
+ ```
254
+ </siguiente_paso>
@@ -7,6 +7,18 @@ description: Ver y modificar configuración de ELSABRO
7
7
 
8
8
  <command-name>settings</command-name>
9
9
 
10
+ <state_sync>
11
+ ## SINCRONIZACIÓN DE ESTADO
12
+
13
+ ### Al Iniciar
14
+ - Leer `.elsabro/state.json` (si existe)
15
+ - Guardar `state.context.previous_suggested_next = state.suggested_next` (para restaurar al completar)
16
+ - Activar persistent mode: `state.elsabro_mode = true`
17
+
18
+ ### Al Completar
19
+ - Restaurar `state.suggested_next` al valor anterior (flujo previo) desde `state.context.previous_suggested_next`
20
+ </state_sync>
21
+
10
22
  ## Propósito
11
23
 
12
24
  Gestionar la configuración de ELSABRO - perfiles, preferencias, integraciones y comportamientos.
@@ -183,3 +195,29 @@ Settings guardados en `.elsabro/config.json`:
183
195
  - Profiles con `/elsabro:set-profile`
184
196
  - Affects all ELSABRO commands
185
197
  - Project-level config in `.elsabro/`
198
+
199
+ <siguiente_paso>
200
+ ## Siguiente Paso
201
+
202
+ Al iniciar, guardar la sugerencia actual:
203
+ ```javascript
204
+ // ANTES de cualquier cambio, guardar suggested_next actual
205
+ state.context = state.context || {};
206
+ state.context.previous_suggested_next = state.suggested_next;
207
+ ```
208
+
209
+ Al completar, restaurar suggested_next anterior:
210
+ ```javascript
211
+ // Restaurar sugerencia del flujo previo
212
+ state.suggested_next = state.context?.previous_suggested_next || "start";
213
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
214
+ ```
215
+
216
+ Mostrar al usuario:
217
+ ```
218
+ ## Siguiente Paso
219
+
220
+ → Volver al flujo anterior
221
+ → /elsabro:start — empezar algo nuevo
222
+ ```
223
+ </siguiente_paso>
@@ -106,6 +106,14 @@ Combinar información de ambos agentes para determinar:
106
106
  - `existing_plans`: planes existentes en .planning/
107
107
  - `current_flow`: flujo en progreso (de state.json)
108
108
 
109
+ ### 0.4.1 Activar Persistent Mode
110
+
111
+ ```javascript
112
+ // Activar persistent mode al iniciar ELSABRO
113
+ state.elsabro_mode = true;
114
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
115
+ ```
116
+
109
117
  ### 0.5 Completar Task de inicialización
110
118
 
111
119
  ```
@@ -290,8 +298,28 @@ Skill("[comando]", "[contexto relevante]")
290
298
  ```
291
299
  TaskUpdate(id, status: "completed", result: "transitioned_to_[comando]")
292
300
  ```
301
+
293
302
  </transition>
294
303
 
304
+ <siguiente_paso>
305
+ ## Siguiente Paso
306
+
307
+ Después de la transición al comando elegido, el "Siguiente Paso" lo muestra el comando destino.
308
+ Si el usuario no elige opción, sugerir:
309
+
310
+ ```javascript
311
+ state.suggested_next = "map-codebase";
312
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
313
+ ```
314
+
315
+ ```
316
+ ## Siguiente Paso
317
+
318
+ → /elsabro:map-codebase — explorar y entender el proyecto
319
+ → /elsabro:plan — planificar directamente si ya sabes qué hacer
320
+ ```
321
+ </siguiente_paso>
322
+
295
323
  <skills_integration>
296
324
  ## Integración con Skills Profesionales
297
325
 
@@ -395,7 +423,9 @@ mkdir -p .elsabro
395
423
  ],
396
424
 
397
425
  "pending_tasks": [],
398
- "blocked_on": null
426
+ "blocked_on": null,
427
+ "elsabro_mode": false,
428
+ "suggested_next": null
399
429
  }
400
430
  ```
401
431
 
@@ -8,6 +8,17 @@ allowed-tools:
8
8
 
9
9
  # ELSABRO: Actualización
10
10
 
11
+ <state_sync>
12
+ ## SINCRONIZACIÓN DE ESTADO
13
+
14
+ ### Al Iniciar
15
+ - Leer `.elsabro/state.json` (si existe)
16
+ - Activar persistent mode: `state.elsabro_mode = true`
17
+
18
+ ### Al Completar
19
+ - Establecer `state.suggested_next = "start"`
20
+ </state_sync>
21
+
11
22
  <objective>
12
23
  Actualizar ELSABRO a la última versión disponible, preservando la configuración local.
13
24
  </objective>
@@ -71,3 +82,20 @@ Para ver los cambios: https://github.com/cubait/elsabro/releases
71
82
  - Los agentes y comandos se reemplazan con la versión más nueva
72
83
  - Si hay problemas, puedes reinstalar: `npx elsabro --global`
73
84
  </notes>
85
+
86
+ <siguiente_paso>
87
+ ## Siguiente Paso
88
+
89
+ Al completar la actualización, establecer en state.json:
90
+ ```javascript
91
+ state.suggested_next = "start";
92
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
93
+ ```
94
+
95
+ Mostrar al usuario:
96
+ ```
97
+ ## Siguiente Paso
98
+
99
+ → /elsabro:start — comenzar a usar la nueva versión
100
+ ```
101
+ </siguiente_paso>