elsabro 2.1.0 → 2.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 (46) hide show
  1. package/commands/elsabro/add-phase.md +17 -0
  2. package/commands/elsabro/add-todo.md +111 -53
  3. package/commands/elsabro/audit-milestone.md +19 -0
  4. package/commands/elsabro/check-todos.md +210 -31
  5. package/commands/elsabro/complete-milestone.md +20 -1
  6. package/commands/elsabro/debug.md +19 -0
  7. package/commands/elsabro/discuss-phase.md +18 -1
  8. package/commands/elsabro/execute.md +288 -12
  9. package/commands/elsabro/insert-phase.md +18 -1
  10. package/commands/elsabro/list-phase-assumptions.md +17 -0
  11. package/commands/elsabro/new-milestone.md +19 -0
  12. package/commands/elsabro/new.md +19 -0
  13. package/commands/elsabro/pause-work.md +19 -0
  14. package/commands/elsabro/plan-milestone-gaps.md +20 -1
  15. package/commands/elsabro/plan.md +264 -36
  16. package/commands/elsabro/progress.md +203 -79
  17. package/commands/elsabro/quick.md +19 -0
  18. package/commands/elsabro/remove-phase.md +17 -0
  19. package/commands/elsabro/research-phase.md +18 -1
  20. package/commands/elsabro/resume-work.md +19 -0
  21. package/commands/elsabro/start.md +365 -98
  22. package/commands/elsabro/verify-work.md +109 -5
  23. package/package.json +1 -1
  24. package/references/SYSTEM_INDEX.md +241 -0
  25. package/references/command-flow.md +352 -0
  26. package/references/enforcement-rules.md +331 -0
  27. package/references/error-handling-instructions.md +26 -12
  28. package/references/state-sync.md +381 -0
  29. package/references/task-dispatcher.md +388 -0
  30. package/references/tasks-integration.md +380 -0
  31. package/skills/api-microservice.md +765 -0
  32. package/skills/api-setup.md +76 -3
  33. package/skills/auth-setup.md +46 -6
  34. package/skills/chrome-extension.md +584 -0
  35. package/skills/cicd-setup.md +1206 -0
  36. package/skills/cli-tool.md +884 -0
  37. package/skills/database-setup.md +41 -5
  38. package/skills/desktop-app.md +1351 -0
  39. package/skills/expo-app.md +35 -2
  40. package/skills/full-stack-app.md +543 -0
  41. package/skills/mobile-app.md +813 -0
  42. package/skills/nextjs-app.md +33 -2
  43. package/skills/payments-setup.md +76 -1
  44. package/skills/saas-starter.md +639 -0
  45. package/skills/sentry-setup.md +41 -7
  46. package/skills/testing-setup.md +1218 -0
@@ -1,10 +1,27 @@
1
1
  ---
2
2
  name: discuss-phase
3
- description: Discusión colaborativa sobre una fase - clarificar scope, identificar riesgos, refinar approach
3
+ description: Discusion colaborativa sobre una fase - clarificar scope, identificar riesgos, refinar approach
4
+ sync:
5
+ reads: [".elsabro/state.json"]
6
+ writes: [".elsabro/state.json"]
4
7
  ---
5
8
 
6
9
  # /elsabro:discuss-phase
7
10
 
11
+ <state_sync>
12
+ ## SINCRONIZACION DE ESTADO
13
+
14
+ **IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
15
+
16
+ ### Al Iniciar
17
+ - Leer `.elsabro/state.json`
18
+ - Verificar contexto actual del milestone/phase
19
+
20
+ ### Al Completar
21
+ - Registrar cambio en `history`
22
+ - Actualizar `context` si corresponde
23
+ </state_sync>
24
+
8
25
  <command-name>discuss-phase</command-name>
9
26
 
10
27
  ## Propósito
@@ -13,22 +13,225 @@ allowed-tools:
13
13
  - TaskUpdate
14
14
  - TaskList
15
15
  - TaskGet
16
+ - AskUserQuestion
16
17
  - mcp__plugin_context7_context7__*
17
18
  argument-hint: "[número de fase]"
19
+ sync:
20
+ reads: [".elsabro/state.json", ".planning/*-PLAN.md"]
21
+ writes: [".elsabro/state.json", ".elsabro/context.md"]
22
+ phases: ["initializing", "exploring", "executing_wave_N", "verifying", "done"]
23
+ passes_context_to: ["verify-work"]
24
+ dispatcher:
25
+ exploration:
26
+ agents: [Explore, feature-dev:code-explorer, Plan]
27
+ model: haiku
28
+ parallel: true
29
+ min_agents: 3
30
+ implementation:
31
+ agents: [elsabro-executor, feature-dev:code-architect]
32
+ model: opus
33
+ parallel: true
34
+ min_agents: 2
35
+ verification:
36
+ agents: [pr-review-toolkit:code-reviewer, pr-review-toolkit:silent-failure-hunter, pr-review-toolkit:pr-test-analyzer]
37
+ model: opus
38
+ parallel: true
39
+ min_agents: 3
18
40
  ---
19
41
 
20
42
  # ELSABRO: Execute
21
43
 
44
+ <state_sync>
45
+ ## SINCRONIZACIÓN DE ESTADO (OBLIGATORIO)
46
+
47
+ **IMPORTAR**: Este comando DEBE seguir `/references/state-sync.md` y `/references/enforcement-rules.md`.
48
+
49
+ ### Al Iniciar (ANTES de cualquier operación)
50
+
51
+ ```javascript
52
+ // 1. Crear task de inicialización
53
+ TaskCreate({
54
+ subject: "Initialize execute command",
55
+ description: "Leer estado y preparar ejecución",
56
+ activeForm: "Inicializando..."
57
+ })
58
+ TaskUpdate(id, status: "in_progress")
59
+
60
+ // 2. Leer estado existente
61
+ const state = Read(".elsabro/state.json") || createInitialState();
62
+
63
+ // 3. Verificar flujo en progreso
64
+ if (state.current_flow && state.current_flow.command !== "execute") {
65
+ AskUserQuestion({
66
+ questions: [{
67
+ question: `Hay un flujo de "${state.current_flow.command}" en progreso. ¿Continuar ese o empezar execute?`,
68
+ header: "Flujo",
69
+ options: [
70
+ { label: "Continuar anterior", description: "Retomar " + state.current_flow.command },
71
+ { label: "Empezar execute", description: "Pausar anterior" }
72
+ ]
73
+ }]
74
+ });
75
+ }
76
+
77
+ // 4. Actualizar estado
78
+ state.current_flow = { command: "execute", phase: "initializing", started_at: new Date().toISOString() };
79
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
80
+
81
+ // 5. Completar task de inicialización
82
+ TaskUpdate(id, status: "completed")
83
+ ```
84
+
85
+ ### Al Cambiar de Fase
86
+
87
+ ```javascript
88
+ // Antes de exploración
89
+ state.current_flow.phase = "exploring";
90
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
91
+
92
+ // Antes de cada wave
93
+ state.current_flow.phase = "executing_wave_" + waveNumber;
94
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
95
+
96
+ // Antes de verificación
97
+ state.current_flow.phase = "verifying";
98
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
99
+ ```
100
+
101
+ ### Al Completar
102
+
103
+ ```javascript
104
+ // Registrar en historial
105
+ state.history.push({
106
+ command: "execute",
107
+ completed_at: new Date().toISOString(),
108
+ result: "completed_phase_" + phaseNumber,
109
+ artifact: null
110
+ });
111
+
112
+ // Pasar contexto a verify-work
113
+ state.context.changed_files = [...changedFiles];
114
+ state.context.commits = [...commitIds];
115
+ state.context.tests_added = [...testFiles];
116
+ state.context.phase_completed = phaseNumber;
117
+
118
+ // Limpiar flujo y sugerir siguiente
119
+ state.current_flow = null;
120
+ state.suggested_next = "verify-work";
121
+
122
+ Write(".elsabro/state.json", JSON.stringify(state, null, 2));
123
+
124
+ // Actualizar context.md legible
125
+ Write(".elsabro/context.md", generateHumanReadableContext(state));
126
+ ```
127
+ </state_sync>
128
+
22
129
  <objective>
23
130
  Ejecutar planes de una fase con:
24
131
  - **Sistema de Tasks para tracking real** de waves y dependencias
132
+ - **Dispatcher inteligente con selección automática de modelo** (ver @references/task-dispatcher.md)
133
+ - **Ejecución por subagentes en paralelo** según tipo de tarea
25
134
  - Investigación de patrones con Context7
26
135
  - TDD cuando sea apropiado
27
136
  - Commits atómicos por tarea
28
137
  - Verificación automática con agregador
29
138
  </objective>
30
139
 
140
+ <dispatcher_integration>
141
+ ## Selección Automática de Modelo
142
+
143
+ **REGLA CRÍTICA:** Cada tarea se ejecuta con el modelo óptimo para su tipo.
144
+
145
+ ```
146
+ ┌─────────────────────────────────────────────────────────────────────────┐
147
+ │ MODELO SEGÚN FASE │
148
+ ├─────────────────────────────────────────────────────────────────────────┤
149
+ │ FASE │ SUBAGENTES │ MODELO │
150
+ ├────────────────────┼────────────────────────────────────┼───────────────┤
151
+ │ Exploración │ Explore │ HAIKU │
152
+ │ (pre-ejecución) │ feature-dev:code-explorer │ HAIKU │
153
+ │ │ Plan │ HAIKU │
154
+ │ │ (3 en paralelo obligatorio) │ │
155
+ ├────────────────────┼────────────────────────────────────┼───────────────┤
156
+ │ Implementación │ elsabro-executor │ OPUS │
157
+ │ (waves) │ feature-dev:code-architect │ OPUS │
158
+ │ │ (2+ en paralelo por wave) │ │
159
+ ├────────────────────┼────────────────────────────────────┼───────────────┤
160
+ │ Verificación │ pr-review-toolkit:code-reviewer │ OPUS │
161
+ │ (post-ejecución) │ pr-review-toolkit:silent-... │ OPUS │
162
+ │ │ pr-review-toolkit:pr-test-... │ OPUS │
163
+ │ │ (3 en paralelo obligatorio) │ │
164
+ └────────────────────┴────────────────────────────────────┴───────────────┘
165
+ ```
166
+
167
+ ### Por qué esta distribución
168
+
169
+ - **HAIKU para exploración:** Solo lee y mapea, no necesita razonamiento profundo
170
+ - **OPUS para implementación:** Escribe código, necesita máxima calidad
171
+ - **OPUS para verificación:** Análisis profundo de bugs y edge cases
172
+ </dispatcher_integration>
173
+
31
174
  <process>
175
+ ## Paso 0: Exploración Pre-Ejecución (HAIKU x3 paralelo)
176
+
177
+ **OBLIGATORIO:** Antes de ejecutar, explorar el codebase para entender contexto.
178
+
179
+ ```javascript
180
+ // Crear tasks de exploración
181
+ TaskCreate({
182
+ subject: "Explore: Find related files",
183
+ description: "Buscar archivos relacionados con la fase",
184
+ activeForm: "Buscando archivos...",
185
+ metadata: { type: "exploration", model: "haiku" }
186
+ }) // → explore-files-id
187
+
188
+ TaskCreate({
189
+ subject: "Explore: Analyze patterns",
190
+ description: "Analizar patrones existentes en el codebase",
191
+ activeForm: "Analizando patrones...",
192
+ metadata: { type: "exploration", model: "haiku" }
193
+ }) // → explore-patterns-id
194
+
195
+ TaskCreate({
196
+ subject: "Explore: Map architecture",
197
+ description: "Mapear arquitectura del área afectada",
198
+ activeForm: "Mapeando arquitectura...",
199
+ metadata: { type: "exploration", model: "haiku" }
200
+ }) // → explore-arch-id
201
+
202
+ // Marcar todas como in_progress
203
+ TaskUpdate({ taskId: "explore-files-id", status: "in_progress" })
204
+ TaskUpdate({ taskId: "explore-patterns-id", status: "in_progress" })
205
+ TaskUpdate({ taskId: "explore-arch-id", status: "in_progress" })
206
+
207
+ // Lanzar 3 agentes HAIKU EN PARALELO (UN SOLO MENSAJE)
208
+ Task({
209
+ subagent_type: "Explore",
210
+ model: "haiku",
211
+ description: "Buscar archivos relacionados",
212
+ prompt: "Busca archivos relacionados con la fase [N]. Lista los 10 más relevantes."
213
+ }) |
214
+ Task({
215
+ subagent_type: "feature-dev:code-explorer",
216
+ model: "haiku",
217
+ description: "Analizar patrones",
218
+ prompt: "Analiza patrones de arquitectura en el área de la fase [N]."
219
+ }) |
220
+ Task({
221
+ subagent_type: "Plan",
222
+ model: "haiku",
223
+ description: "Mapear arquitectura",
224
+ prompt: "Mapea componentes y flujo de datos del área afectada."
225
+ })
226
+
227
+ // Marcar completed
228
+ TaskUpdate({ taskId: "explore-files-id", status: "completed" })
229
+ TaskUpdate({ taskId: "explore-patterns-id", status: "completed" })
230
+ TaskUpdate({ taskId: "explore-arch-id", status: "completed" })
231
+ ```
232
+
233
+ **Resultado:** Contexto del codebase capturado antes de modificar nada.
234
+
32
235
  ## Paso 1: Descubrir Planes
33
236
 
34
237
  ```bash
@@ -93,26 +296,64 @@ Para cada wave:
93
296
  TaskUpdate({ taskId: "wave-W-id", status: "in_progress" })
94
297
  ```
95
298
 
96
- ### Si hay múltiples planes en la wave → Paralelo
299
+ ### Si hay múltiples planes en la wave → Paralelo (OPUS)
97
300
  ```javascript
98
301
  // Marcar todos los planes como in_progress
99
302
  TaskUpdate({ taskId: "plan-A-id", status: "in_progress" })
100
303
  TaskUpdate({ taskId: "plan-B-id", status: "in_progress" })
101
304
  TaskUpdate({ taskId: "plan-C-id", status: "in_progress" })
102
305
 
103
- // Lanzar agentes en paralelo (UN SOLO MENSAJE)
104
- Task(elsabro-executor) para Plan A |
105
- Task(elsabro-executor) para Plan B |
106
- Task(elsabro-executor) para Plan C
306
+ // Lanzar agentes OPUS en paralelo (UN SOLO MENSAJE)
307
+ // MODELO: OPUS porque escriben código
308
+ Task({
309
+ subagent_type: "elsabro-executor",
310
+ model: "opus", // ← OPUS para implementación
311
+ description: "Ejecutar Plan A",
312
+ prompt: "Implementa el Plan A siguiendo TDD..."
313
+ }) |
314
+ Task({
315
+ subagent_type: "elsabro-executor",
316
+ model: "opus", // ← OPUS para implementación
317
+ description: "Ejecutar Plan B",
318
+ prompt: "Implementa el Plan B siguiendo TDD..."
319
+ }) |
320
+ Task({
321
+ subagent_type: "elsabro-executor",
322
+ model: "opus", // ← OPUS para implementación
323
+ description: "Ejecutar Plan C",
324
+ prompt: "Implementa el Plan C siguiendo TDD..."
325
+ })
107
326
 
108
327
  // Al completar cada plan
109
328
  TaskUpdate({ taskId: "plan-A-id", status: "completed" })
110
329
  ```
111
330
 
112
- ### Si solo hay un plan → Secuencial
331
+ ### Validación arquitectónica en paralelo (OPUS x2)
332
+ ```javascript
333
+ // Además de implementar, validar arquitectura en paralelo
334
+ Task({
335
+ subagent_type: "elsabro-executor",
336
+ model: "opus",
337
+ description: "Implementar cambios",
338
+ prompt: "..."
339
+ }) |
340
+ Task({
341
+ subagent_type: "feature-dev:code-architect",
342
+ model: "opus", // ← OPUS para decisiones arquitectónicas
343
+ description: "Validar arquitectura",
344
+ prompt: "Verifica que la implementación sigue los patrones del codebase..."
345
+ })
346
+ ```
347
+
348
+ ### Si solo hay un plan → Secuencial (OPUS)
113
349
  ```javascript
114
350
  TaskUpdate({ taskId: "plan-X-id", status: "in_progress" })
115
- Task(elsabro-executor) para Plan único
351
+ Task({
352
+ subagent_type: "elsabro-executor",
353
+ model: "opus", // ← OPUS porque escribe código
354
+ description: "Ejecutar plan único",
355
+ prompt: "..."
356
+ })
116
357
  TaskUpdate({ taskId: "plan-X-id", status: "completed" })
117
358
  ```
118
359
 
@@ -151,18 +392,53 @@ TaskUpdate({
151
392
  })
152
393
  ```
153
394
 
154
- ### 4.2 Ejecutar verificación en paralelo
395
+ ### 4.2 Ejecutar verificación en paralelo (OPUS x3)
396
+
397
+ **OBLIGATORIO:** Usar 3 agentes OPUS para verificación profunda.
398
+
155
399
  ```javascript
400
+ // Crear task adicional de seguridad
401
+ TaskCreate({
402
+ subject: "Verify Security & Edge Cases",
403
+ activeForm: "Verificando seguridad...",
404
+ metadata: { type: "verifier", area: "security", model: "opus" }
405
+ }) // → verify-security-id
406
+
407
+ // Actualizar agregador para esperar los 3
408
+ TaskUpdate({
409
+ taskId: "verify-aggregate-id",
410
+ addBlockedBy: ["verify-functional-id", "verify-quality-id", "verify-security-id"]
411
+ })
412
+
413
+ // Marcar todos como in_progress
156
414
  TaskUpdate({ taskId: "verify-functional-id", status: "in_progress" })
157
415
  TaskUpdate({ taskId: "verify-quality-id", status: "in_progress" })
158
-
159
- // Lanzar agentes verificadores en paralelo
160
- Task(elsabro-verifier): Verifica funcionalidad |
161
- Task(elsabro-verifier): Verifica calidad
416
+ TaskUpdate({ taskId: "verify-security-id", status: "in_progress" })
417
+
418
+ // Lanzar 3 agentes OPUS EN PARALELO (UN SOLO MENSAJE)
419
+ Task({
420
+ subagent_type: "pr-review-toolkit:code-reviewer",
421
+ model: "opus", // ← OPUS para análisis profundo
422
+ description: "Code review completo",
423
+ prompt: "Revisa los cambios buscando bugs, code smells, mejores prácticas..."
424
+ }) |
425
+ Task({
426
+ subagent_type: "pr-review-toolkit:silent-failure-hunter",
427
+ model: "opus", // ← OPUS para edge cases
428
+ description: "Buscar errores ocultos",
429
+ prompt: "Busca errores silenciosos, try/catch que ocultan errores, fallbacks problemáticos..."
430
+ }) |
431
+ Task({
432
+ subagent_type: "pr-review-toolkit:pr-test-analyzer",
433
+ model: "opus", // ← OPUS para análisis de tests
434
+ description: "Analizar cobertura de tests",
435
+ prompt: "Verifica que los tests cubren los cambios, busca casos críticos sin test..."
436
+ })
162
437
 
163
438
  // Marcar completed al terminar
164
439
  TaskUpdate({ taskId: "verify-functional-id", status: "completed" })
165
440
  TaskUpdate({ taskId: "verify-quality-id", status: "completed" })
441
+ TaskUpdate({ taskId: "verify-security-id", status: "completed" })
166
442
 
167
443
  // Agregador se desbloquea y genera reporte final
168
444
  TaskUpdate({ taskId: "verify-aggregate-id", status: "in_progress" })
@@ -1,10 +1,27 @@
1
1
  ---
2
2
  name: insert-phase
3
- description: Insertar una nueva fase en una posición específica del milestone
3
+ description: Insertar una nueva fase en una posicion especifica del milestone
4
+ sync:
5
+ reads: [".elsabro/state.json"]
6
+ writes: [".elsabro/state.json"]
4
7
  ---
5
8
 
6
9
  # /elsabro:insert-phase
7
10
 
11
+ <state_sync>
12
+ ## SINCRONIZACION DE ESTADO
13
+
14
+ **IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
15
+
16
+ ### Al Iniciar
17
+ - Leer `.elsabro/state.json`
18
+ - Verificar contexto actual del milestone/phase
19
+
20
+ ### Al Completar
21
+ - Registrar cambio en `history`
22
+ - Actualizar `context` si corresponde
23
+ </state_sync>
24
+
8
25
  <command-name>insert-phase</command-name>
9
26
 
10
27
  ## Propósito
@@ -1,10 +1,27 @@
1
1
  ---
2
2
  name: list-phase-assumptions
3
3
  description: Listar y validar los supuestos hechos para una fase del proyecto
4
+ sync:
5
+ reads: [".elsabro/state.json"]
6
+ writes: [".elsabro/state.json"]
4
7
  ---
5
8
 
6
9
  # /elsabro:list-phase-assumptions
7
10
 
11
+ <state_sync>
12
+ ## SINCRONIZACION DE ESTADO
13
+
14
+ **IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
15
+
16
+ ### Al Iniciar
17
+ - Leer `.elsabro/state.json`
18
+ - Verificar contexto actual del milestone/phase
19
+
20
+ ### Al Completar
21
+ - Registrar cambio en `history`
22
+ - Actualizar `context` si corresponde
23
+ </state_sync>
24
+
8
25
  <command-name>list-phase-assumptions</command-name>
9
26
 
10
27
  ## Propósito
@@ -1,10 +1,29 @@
1
1
  ---
2
2
  name: new-milestone
3
3
  description: Crear un nuevo milestone con objetivos, timeline y métricas de éxito
4
+ sync:
5
+ reads: [".elsabro/state.json"]
6
+ writes: [".elsabro/state.json", ".elsabro/context.md"]
4
7
  ---
5
8
 
6
9
  # /elsabro:new-milestone
7
10
 
11
+ <state_sync>
12
+ ## SINCRONIZACION DE ESTADO
13
+
14
+ **IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
15
+
16
+ ### Al Iniciar
17
+ - Leer `.elsabro/state.json`
18
+ - Verificar si hay flujo en progreso
19
+ - Actualizar `current_flow.command` con este comando
20
+
21
+ ### Al Completar
22
+ - Registrar en `history`
23
+ - Actualizar `context` con informacion del milestone
24
+ - Limpiar `current_flow`
25
+ </state_sync>
26
+
8
27
  <command-name>new-milestone</command-name>
9
28
 
10
29
  ## Propósito
@@ -12,10 +12,29 @@ allowed-tools:
12
12
  - WebSearch
13
13
  - mcp__plugin_context7_context7__*
14
14
  argument-hint: "[tipo de proyecto: web, mobile, api]"
15
+ sync:
16
+ reads: [".elsabro/state.json"]
17
+ writes: [".elsabro/state.json", ".elsabro/context.md"]
15
18
  ---
16
19
 
17
20
  # ELSABRO: Nuevo Proyecto
18
21
 
22
+ <state_sync>
23
+ ## SINCRONIZACION DE ESTADO
24
+
25
+ **IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
26
+
27
+ ### Al Iniciar
28
+ - Leer `.elsabro/state.json`
29
+ - Verificar si hay flujo en progreso
30
+ - Actualizar `current_flow.command` con este comando
31
+
32
+ ### Al Completar
33
+ - Registrar en `history`
34
+ - Actualizar `context` con informacion relevante
35
+ - Limpiar `current_flow`
36
+ </state_sync>
37
+
19
38
  <objective>
20
39
  Crear un proyecto nuevo con investigación previa, configuración correcta, y estructura lista para desarrollo.
21
40
 
@@ -10,10 +10,29 @@ allowed-tools:
10
10
  - TaskCreate
11
11
  - TaskList
12
12
  - TaskGet
13
+ sync:
14
+ reads: [".elsabro/state.json"]
15
+ writes: [".elsabro/state.json", ".elsabro/context.md"]
13
16
  ---
14
17
 
15
18
  # /elsabro:pause-work
16
19
 
20
+ <state_sync>
21
+ ## SINCRONIZACION DE ESTADO
22
+
23
+ **IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
24
+
25
+ ### Al Iniciar
26
+ - Leer `.elsabro/state.json`
27
+ - Verificar si hay flujo en progreso
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`
34
+ </state_sync>
35
+
17
36
  <command-name>pause-work</command-name>
18
37
 
19
38
  ## Propósito
@@ -1,10 +1,29 @@
1
1
  ---
2
2
  name: plan-milestone-gaps
3
- description: Identificar y planificar cómo cerrar gaps en un milestone para alcanzar los objetivos
3
+ description: Identificar y planificar como cerrar gaps en un milestone para alcanzar los objetivos
4
+ sync:
5
+ reads: [".elsabro/state.json"]
6
+ writes: [".elsabro/state.json", ".elsabro/context.md"]
4
7
  ---
5
8
 
6
9
  # /elsabro:plan-milestone-gaps
7
10
 
11
+ <state_sync>
12
+ ## SINCRONIZACION DE ESTADO
13
+
14
+ **IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
15
+
16
+ ### Al Iniciar
17
+ - Leer `.elsabro/state.json`
18
+ - Verificar si hay flujo en progreso
19
+ - Actualizar `current_flow.command` con este comando
20
+
21
+ ### Al Completar
22
+ - Registrar en `history`
23
+ - Actualizar `context` con informacion del milestone
24
+ - Limpiar `current_flow`
25
+ </state_sync>
26
+
8
27
  <command-name>plan-milestone-gaps</command-name>
9
28
 
10
29
  ## Propósito