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.
- package/README.md +61 -7
- package/agents/elsabro-orchestrator.md +70 -20
- package/agents/elsabro-ux-designer.md +70 -0
- package/commands/elsabro/add-phase.md +20 -0
- package/commands/elsabro/add-todo.md +30 -0
- package/commands/elsabro/audit-milestone.md +20 -0
- package/commands/elsabro/check-todos.md +29 -0
- package/commands/elsabro/complete-milestone.md +20 -0
- package/commands/elsabro/debug.md +76 -1
- package/commands/elsabro/design-ui.md +407 -0
- package/commands/elsabro/discuss-phase.md +20 -0
- package/commands/elsabro/execute.md +166 -30
- package/commands/elsabro/exit.md +97 -0
- package/commands/elsabro/help.md +7 -1
- package/commands/elsabro/insert-phase.md +20 -0
- package/commands/elsabro/list-phase-assumptions.md +20 -0
- package/commands/elsabro/map-codebase.md +30 -0
- package/commands/elsabro/new-milestone.md +23 -0
- package/commands/elsabro/new.md +64 -0
- package/commands/elsabro/pause-work.md +28 -5
- package/commands/elsabro/plan-milestone-gaps.md +20 -0
- package/commands/elsabro/plan.md +20 -0
- package/commands/elsabro/progress.md +8 -0
- package/commands/elsabro/quick.md +58 -3
- package/commands/elsabro/remove-phase.md +20 -0
- package/commands/elsabro/research-phase.md +20 -0
- package/commands/elsabro/resume-work.md +21 -0
- package/commands/elsabro/set-profile.md +38 -0
- package/commands/elsabro/settings.md +38 -0
- package/commands/elsabro/start.md +31 -1
- package/commands/elsabro/update.md +28 -0
- package/commands/elsabro/verify-work.md +94 -7
- package/commands/elsabro/verify.md +30 -0
- package/hooks/elsabro-mode.sh +102 -0
- package/hooks/hooks-config-updated.json +43 -7
- package/hooks/skill-discovery.sh +38 -8
- package/package.json +5 -5
- package/references/SYSTEM_INDEX.md +9 -0
- package/references/agent-teams-integration.md +99 -36
- package/references/enforcement-rules.md +177 -62
- package/references/flow-orchestration.md +127 -32
- package/references/next-step-engine.md +134 -0
- package/skills/stitch-ui-design.md +242 -0
- package/templates/session-state.json +3 -1
package/commands/elsabro/new.md
CHANGED
|
@@ -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
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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>
|
package/commands/elsabro/plan.md
CHANGED
|
@@ -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.
|
|
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. **
|
|
99
|
-
5. **
|
|
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>
|