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.
- package/commands/elsabro/add-phase.md +17 -0
- package/commands/elsabro/add-todo.md +111 -53
- package/commands/elsabro/audit-milestone.md +19 -0
- package/commands/elsabro/check-todos.md +210 -31
- package/commands/elsabro/complete-milestone.md +20 -1
- package/commands/elsabro/debug.md +19 -0
- package/commands/elsabro/discuss-phase.md +18 -1
- package/commands/elsabro/execute.md +288 -12
- package/commands/elsabro/insert-phase.md +18 -1
- package/commands/elsabro/list-phase-assumptions.md +17 -0
- package/commands/elsabro/new-milestone.md +19 -0
- package/commands/elsabro/new.md +19 -0
- package/commands/elsabro/pause-work.md +19 -0
- package/commands/elsabro/plan-milestone-gaps.md +20 -1
- package/commands/elsabro/plan.md +264 -36
- package/commands/elsabro/progress.md +203 -79
- package/commands/elsabro/quick.md +19 -0
- package/commands/elsabro/remove-phase.md +17 -0
- package/commands/elsabro/research-phase.md +18 -1
- package/commands/elsabro/resume-work.md +19 -0
- package/commands/elsabro/start.md +365 -98
- package/commands/elsabro/verify-work.md +109 -5
- package/package.json +1 -1
- package/references/SYSTEM_INDEX.md +241 -0
- package/references/command-flow.md +352 -0
- package/references/enforcement-rules.md +331 -0
- package/references/error-handling-instructions.md +26 -12
- package/references/state-sync.md +381 -0
- package/references/task-dispatcher.md +388 -0
- package/references/tasks-integration.md +380 -0
- package/skills/api-microservice.md +765 -0
- package/skills/api-setup.md +76 -3
- package/skills/auth-setup.md +46 -6
- package/skills/chrome-extension.md +584 -0
- package/skills/cicd-setup.md +1206 -0
- package/skills/cli-tool.md +884 -0
- package/skills/database-setup.md +41 -5
- package/skills/desktop-app.md +1351 -0
- package/skills/expo-app.md +35 -2
- package/skills/full-stack-app.md +543 -0
- package/skills/mobile-app.md +813 -0
- package/skills/nextjs-app.md +33 -2
- package/skills/payments-setup.md +76 -1
- package/skills/saas-starter.md +639 -0
- package/skills/sentry-setup.md +41 -7
- package/skills/testing-setup.md +1218 -0
package/package.json
CHANGED
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
# ELSABRO System Index
|
|
2
|
+
|
|
3
|
+
## ARQUITECTURA DEL SISTEMA
|
|
4
|
+
|
|
5
|
+
```
|
|
6
|
+
┌─────────────────────────────────────────────────────────────────────────────┐
|
|
7
|
+
│ ELSABRO SYSTEM │
|
|
8
|
+
├─────────────────────────────────────────────────────────────────────────────┤
|
|
9
|
+
│ │
|
|
10
|
+
│ ┌──────────────────────────────────────────────────────────────────────┐ │
|
|
11
|
+
│ │ ENTRY POINT │ │
|
|
12
|
+
│ │ /elsabro:start │ │
|
|
13
|
+
│ │ (Orquestador Principal) │ │
|
|
14
|
+
│ └────────────────────────────┬─────────────────────────────────────────┘ │
|
|
15
|
+
│ │ │
|
|
16
|
+
│ ▼ │
|
|
17
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
18
|
+
│ │ CORE WORKFLOW │ │
|
|
19
|
+
│ │ ┌─────────┐ ┌─────────┐ ┌─────────────┐ ┌───────────────┐ │ │
|
|
20
|
+
│ │ │ :new │→ │ :plan │→ │ :execute │→ │ :verify-work │ │ │
|
|
21
|
+
│ │ │ (setup) │ │(design) │ │(implement) │ │ (check) │ │ │
|
|
22
|
+
│ │ └─────────┘ └─────────┘ └─────────────┘ └───────────────┘ │ │
|
|
23
|
+
│ │ ↑ │ │ │
|
|
24
|
+
│ │ └───── :debug ──┘ │ │
|
|
25
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
26
|
+
│ │
|
|
27
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
28
|
+
│ │ SHARED STATE │ │
|
|
29
|
+
│ │ .elsabro/state.json │ │
|
|
30
|
+
│ │ (Sincronización entre comandos) │ │
|
|
31
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
32
|
+
│ │
|
|
33
|
+
│ ┌────────────────────────────────────────────────────────────────────────┐ │
|
|
34
|
+
│ │ TASK DISPATCHER │ │
|
|
35
|
+
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │
|
|
36
|
+
│ │ │ HAIKU │ │ SONNET │ │ OPUS │ │ │
|
|
37
|
+
│ │ │ Exploración │ │ Balance │ │ Implementar │ │ │
|
|
38
|
+
│ │ │ (rápido) │ │ (flexible) │ │ (calidad) │ │ │
|
|
39
|
+
│ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │
|
|
40
|
+
│ └────────────────────────────────────────────────────────────────────────┘ │
|
|
41
|
+
│ │
|
|
42
|
+
└─────────────────────────────────────────────────────────────────────────────┘
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## ARCHIVOS DE REFERENCIA
|
|
48
|
+
|
|
49
|
+
### 1. `enforcement-rules.md`
|
|
50
|
+
**Propósito**: Reglas NO negociables que todo comando debe seguir
|
|
51
|
+
**Contiene**:
|
|
52
|
+
- Secuencia obligatoria: TaskCreate → TaskUpdate → Task → TaskUpdate
|
|
53
|
+
- Mínimos de agentes por fase
|
|
54
|
+
- Matriz completa de todos los comandos (29 comandos)
|
|
55
|
+
- Políticas de paralelismo
|
|
56
|
+
|
|
57
|
+
### 2. `state-sync.md`
|
|
58
|
+
**Propósito**: Protocolo de sincronización de estado entre comandos
|
|
59
|
+
**Contiene**:
|
|
60
|
+
- Código de sincronización para copiar a cada comando
|
|
61
|
+
- Fases por comando
|
|
62
|
+
- Contexto que pasa cada comando al siguiente
|
|
63
|
+
- Transiciones válidas entre comandos
|
|
64
|
+
|
|
65
|
+
### 3. `command-flow.md`
|
|
66
|
+
**Propósito**: Flujo de navegación y estado compartido
|
|
67
|
+
**Contiene**:
|
|
68
|
+
- Diagrama de flujo principal
|
|
69
|
+
- Estructura de `.elsabro/state.json`
|
|
70
|
+
- Checkpoints entre comandos
|
|
71
|
+
- Recuperación de contexto
|
|
72
|
+
|
|
73
|
+
### 4. `task-dispatcher.md`
|
|
74
|
+
**Propósito**: Selección automática de modelo según tipo de tarea
|
|
75
|
+
**Contiene**:
|
|
76
|
+
- Matriz modelo-tipo de tarea
|
|
77
|
+
- Configuración de agentes por comando
|
|
78
|
+
- Políticas de ejecución paralela
|
|
79
|
+
- Integración con Claude Code Tasks API
|
|
80
|
+
|
|
81
|
+
### 4.1. `tasks-integration.md` (NUEVO)
|
|
82
|
+
**Propósito**: Integración con Claude Code Tasks API como backend único
|
|
83
|
+
**Contiene**:
|
|
84
|
+
- Arquitectura unificada (ELSABRO commands + Tasks API)
|
|
85
|
+
- Metadata schema para TODOs, phases, milestones
|
|
86
|
+
- Migración de `.planning/TODOS.md` a Tasks API
|
|
87
|
+
- Ejemplos de implementación para cada comando
|
|
88
|
+
|
|
89
|
+
### 5. `error-handling-instructions.md`
|
|
90
|
+
**Propósito**: Manejo consistente de errores
|
|
91
|
+
**Contiene**:
|
|
92
|
+
- Clasificación (CRITICAL, HIGH, MEDIUM, LOW)
|
|
93
|
+
- Display visual de errores
|
|
94
|
+
- Políticas de retry
|
|
95
|
+
- Actualización de estado después de errores
|
|
96
|
+
|
|
97
|
+
### 6. `source-hierarchy.md`
|
|
98
|
+
**Propósito**: Prioridad de fuentes de información
|
|
99
|
+
**Contiene**:
|
|
100
|
+
- Context7 > Docs > WebSearch > Training
|
|
101
|
+
- Verificación de versiones
|
|
102
|
+
- Proceso de research
|
|
103
|
+
|
|
104
|
+
### 7. `token-optimization.md`
|
|
105
|
+
**Propósito**: Uso eficiente del contexto
|
|
106
|
+
**Contiene**:
|
|
107
|
+
- Regla del 50%
|
|
108
|
+
- Lazy loading
|
|
109
|
+
- Wave execution
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## ESTADO UNIFICADO
|
|
114
|
+
|
|
115
|
+
**Archivo principal**: `.elsabro/state.json`
|
|
116
|
+
|
|
117
|
+
```json
|
|
118
|
+
{
|
|
119
|
+
"version": "1.0.0",
|
|
120
|
+
"created_at": "ISO timestamp",
|
|
121
|
+
"updated_at": "ISO timestamp",
|
|
122
|
+
|
|
123
|
+
"current_flow": {
|
|
124
|
+
"command": "string",
|
|
125
|
+
"phase": "string",
|
|
126
|
+
"started_at": "ISO timestamp"
|
|
127
|
+
},
|
|
128
|
+
|
|
129
|
+
"context": {
|
|
130
|
+
"project_type": "greenfield | brownfield | continuation",
|
|
131
|
+
"tech_stack": ["array"],
|
|
132
|
+
"current_feature": "string | null"
|
|
133
|
+
},
|
|
134
|
+
|
|
135
|
+
"history": [
|
|
136
|
+
{
|
|
137
|
+
"command": "string",
|
|
138
|
+
"completed_at": "ISO timestamp",
|
|
139
|
+
"result": "string",
|
|
140
|
+
"artifact": "path | null"
|
|
141
|
+
}
|
|
142
|
+
],
|
|
143
|
+
|
|
144
|
+
"pending_tasks": [],
|
|
145
|
+
"blocked_on": null,
|
|
146
|
+
"suggested_next": "string | null",
|
|
147
|
+
|
|
148
|
+
"errors": {
|
|
149
|
+
"count": 0,
|
|
150
|
+
"lastError": null
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Archivo legible**: `.elsabro/context.md` (para humanos)
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## SKILLS PROFESIONALES
|
|
160
|
+
|
|
161
|
+
| Skill | Stack | Versiones |
|
|
162
|
+
|-------|-------|-----------|
|
|
163
|
+
| `full-stack-app` | Next.js 15 + React 19 + Prisma 6 + PostgreSQL | Específicas |
|
|
164
|
+
| `saas-starter` | Full-stack + Stripe 2024-12-18 | Específicas |
|
|
165
|
+
| `mobile-app` | Expo SDK 52 + React Native | Específicas |
|
|
166
|
+
| `api-microservice` | Fastify + OpenAPI + Docker | Parciales |
|
|
167
|
+
| `chrome-extension` | Manifest V3 + Vite + TypeScript | Parciales |
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## CHECKLIST DE CONSISTENCIA
|
|
172
|
+
|
|
173
|
+
Para verificar que el sistema está correctamente configurado:
|
|
174
|
+
|
|
175
|
+
### Comandos Core
|
|
176
|
+
- [ ] `start.md` tiene sección `<enforcement>` y `<state_sync>`
|
|
177
|
+
- [ ] `plan.md` tiene sección `<state_sync>` y `dispatcher` en frontmatter
|
|
178
|
+
- [ ] `execute.md` tiene sección `<state_sync>` y `dispatcher` en frontmatter
|
|
179
|
+
- [ ] `verify-work.md` tiene sección `<state_sync>` y `dispatcher` en frontmatter
|
|
180
|
+
|
|
181
|
+
### Referencias
|
|
182
|
+
- [ ] Todos los archivos usan `.elsabro/state.json` (NO `.planning/SESSION.md`)
|
|
183
|
+
- [ ] `enforcement-rules.md` tiene matriz para los 29 comandos
|
|
184
|
+
- [ ] `state-sync.md` tiene código de sincronización completo
|
|
185
|
+
|
|
186
|
+
### Skills
|
|
187
|
+
- [ ] Cada skill tiene `tags` en frontmatter
|
|
188
|
+
- [ ] Cada skill tiene versiones específicas de tecnologías
|
|
189
|
+
- [ ] Cada skill tiene `<verification>` ejecutable
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## FLUJO DE EJECUCIÓN TÍPICO
|
|
194
|
+
|
|
195
|
+
```
|
|
196
|
+
1. Usuario ejecuta /elsabro:start
|
|
197
|
+
└─ Lee .elsabro/state.json (si existe)
|
|
198
|
+
└─ Lanza 2 HAIKU en paralelo para detectar contexto
|
|
199
|
+
└─ Muestra opciones según proyecto (greenfield/brownfield/continuation)
|
|
200
|
+
└─ Actualiza state.json con current_flow
|
|
201
|
+
└─ Invoca siguiente comando con Skill tool
|
|
202
|
+
|
|
203
|
+
2. /elsabro:plan toma control
|
|
204
|
+
└─ Lee state.json (contexto de start)
|
|
205
|
+
└─ Lanza 3 HAIKU en paralelo para explorar
|
|
206
|
+
└─ Lanza 1 OPUS para crear RESEARCH.md y PLAN.md
|
|
207
|
+
└─ Lanza 1 SONNET para validar plan
|
|
208
|
+
└─ Actualiza state.json (plan_file, ready_for_execution)
|
|
209
|
+
└─ Sugiere /elsabro:execute
|
|
210
|
+
|
|
211
|
+
3. /elsabro:execute toma control
|
|
212
|
+
└─ Lee state.json (plan_file)
|
|
213
|
+
└─ Lanza 3 HAIKU en paralelo para explorar
|
|
214
|
+
└─ Lanza 2+ OPUS en paralelo para implementar (por wave)
|
|
215
|
+
└─ Lanza 3 OPUS en paralelo para verificar
|
|
216
|
+
└─ Actualiza state.json (changed_files, commits)
|
|
217
|
+
└─ Sugiere /elsabro:verify-work
|
|
218
|
+
|
|
219
|
+
4. /elsabro:verify-work finaliza
|
|
220
|
+
└─ Lee state.json (changed_files)
|
|
221
|
+
└─ Lanza 3 OPUS en paralelo para verificación exhaustiva
|
|
222
|
+
└─ Genera VERIFICATION-REPORT.md
|
|
223
|
+
└─ Actualiza state.json (verification_result)
|
|
224
|
+
└─ Si PASS: "Listo para merge"
|
|
225
|
+
└─ Si FAIL: Sugiere /elsabro:execute para fix
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
## REGLAS DE ORO
|
|
231
|
+
|
|
232
|
+
1. **TaskCreate ANTES de cualquier acción**
|
|
233
|
+
2. **TaskUpdate(in_progress) ANTES de Task()**
|
|
234
|
+
3. **Tasks API como backend único** (NO duplicar con sistemas custom)
|
|
235
|
+
4. **Metadata schema consistente** para type, priority, category
|
|
236
|
+
5. **TaskList para sincronización** (NO archivos .md separados)
|
|
237
|
+
6. **Mínimo 3 agentes HAIKU para exploración**
|
|
238
|
+
7. **OPUS para implementación y verificación**
|
|
239
|
+
8. **Context7 ANTES de escribir código con librerías**
|
|
240
|
+
9. **Paralelismo OBLIGATORIO cuando las tareas son independientes**
|
|
241
|
+
10. **Pasar contexto via Task metadata** al siguiente comando
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
# ELSABRO Command Flow & Synchronization
|
|
2
|
+
|
|
3
|
+
## ESTADO COMPARTIDO
|
|
4
|
+
|
|
5
|
+
Los comandos ELSABRO se sincronizan a través de un sistema de estado compartido. Esto permite que cada comando sepa dónde está el usuario en el flujo y qué contexto necesita.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## FLUJO PRINCIPAL
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
┌─────────────────────────────────────────────────────────────────────┐
|
|
13
|
+
│ /elsabro:start │
|
|
14
|
+
│ (Entry Point - Orquestador) │
|
|
15
|
+
└─────────────────────────┬───────────────────────────────────────────┘
|
|
16
|
+
│
|
|
17
|
+
┌───────────────┼───────────────┬───────────────┐
|
|
18
|
+
▼ ▼ ▼ ▼
|
|
19
|
+
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
20
|
+
│ :new │ │ :plan │ │ :debug │ │ :quick │
|
|
21
|
+
│ Proyecto │ │ Feature │ │ Bugs │ │ Rápido │
|
|
22
|
+
│ nuevo │ │ nueva │ │ │ │ │
|
|
23
|
+
└────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘
|
|
24
|
+
│ │ │ │
|
|
25
|
+
▼ ▼ ▼ ▼
|
|
26
|
+
┌──────────┐ ┌──────────┐ ┌──────────┐ │
|
|
27
|
+
│ :execute │◄───│ :execute │◄───│ :execute │ │
|
|
28
|
+
│ │ │ │ │ │ │
|
|
29
|
+
└────┬─────┘ └────┬─────┘ └────┬─────┘ │
|
|
30
|
+
│ │ │ │
|
|
31
|
+
└───────────────┴───────────────┴───────────────┘
|
|
32
|
+
│
|
|
33
|
+
▼
|
|
34
|
+
┌──────────────┐
|
|
35
|
+
│ :verify-work │
|
|
36
|
+
│ (Siempre) │
|
|
37
|
+
└──────────────┘
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## ARCHIVO DE ESTADO: .elsabro/state.json
|
|
43
|
+
|
|
44
|
+
Cada proyecto ELSABRO mantiene un archivo de estado en `.elsabro/state.json`:
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"version": "1.0.0",
|
|
49
|
+
"created_at": "2024-01-15T10:30:00Z",
|
|
50
|
+
"updated_at": "2024-01-15T14:45:00Z",
|
|
51
|
+
|
|
52
|
+
"current_flow": {
|
|
53
|
+
"command": "execute",
|
|
54
|
+
"phase": "implementation",
|
|
55
|
+
"started_at": "2024-01-15T14:30:00Z"
|
|
56
|
+
},
|
|
57
|
+
|
|
58
|
+
"context": {
|
|
59
|
+
"project_type": "fullstack",
|
|
60
|
+
"tech_stack": ["nextjs", "prisma", "postgresql"],
|
|
61
|
+
"current_feature": "auth-system"
|
|
62
|
+
},
|
|
63
|
+
|
|
64
|
+
"history": [
|
|
65
|
+
{
|
|
66
|
+
"command": "start",
|
|
67
|
+
"completed_at": "2024-01-15T10:30:00Z",
|
|
68
|
+
"result": "redirected_to_new"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"command": "new",
|
|
72
|
+
"completed_at": "2024-01-15T11:00:00Z",
|
|
73
|
+
"result": "project_created"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"command": "plan",
|
|
77
|
+
"completed_at": "2024-01-15T12:30:00Z",
|
|
78
|
+
"result": "plan_approved",
|
|
79
|
+
"artifact": ".planning/auth-plan.md"
|
|
80
|
+
}
|
|
81
|
+
],
|
|
82
|
+
|
|
83
|
+
"pending_tasks": [],
|
|
84
|
+
"blocked_on": null
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## SINCRONIZACIÓN ENTRE COMANDOS
|
|
91
|
+
|
|
92
|
+
### Regla 1: Leer Estado Antes de Actuar
|
|
93
|
+
|
|
94
|
+
**OBLIGATORIO**: Todo comando debe leer `.elsabro/state.json` al iniciar.
|
|
95
|
+
|
|
96
|
+
```typescript
|
|
97
|
+
// Pseudo-código - cada comando hace esto primero
|
|
98
|
+
const state = readState(".elsabro/state.json");
|
|
99
|
+
|
|
100
|
+
if (!state) {
|
|
101
|
+
// Primera vez - inicializar
|
|
102
|
+
createState();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Verificar si hay flujo en progreso
|
|
106
|
+
if (state.current_flow && state.current_flow.command !== thisCommand) {
|
|
107
|
+
// Advertir al usuario
|
|
108
|
+
warn(`Hay un flujo de ${state.current_flow.command} en progreso`);
|
|
109
|
+
askUser("¿Continuar con ese flujo o iniciar uno nuevo?");
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Regla 2: Actualizar Estado al Cambiar de Fase
|
|
114
|
+
|
|
115
|
+
**OBLIGATORIO**: Actualizar `current_flow` al cambiar de fase o comando.
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
// Al iniciar una fase
|
|
119
|
+
updateState({
|
|
120
|
+
current_flow: {
|
|
121
|
+
command: "execute",
|
|
122
|
+
phase: "exploration",
|
|
123
|
+
started_at: new Date().toISOString()
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// Al completar
|
|
128
|
+
updateState({
|
|
129
|
+
current_flow: null,
|
|
130
|
+
history: [...state.history, {
|
|
131
|
+
command: "execute",
|
|
132
|
+
completed_at: new Date().toISOString(),
|
|
133
|
+
result: "success"
|
|
134
|
+
}]
|
|
135
|
+
});
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Regla 3: Pasar Contexto Entre Comandos
|
|
139
|
+
|
|
140
|
+
**OBLIGATORIO**: Los comandos deben preservar y extender el contexto.
|
|
141
|
+
|
|
142
|
+
| De | A | Contexto Pasado |
|
|
143
|
+
|----|---|-----------------|
|
|
144
|
+
| start | new | project_type, user_level |
|
|
145
|
+
| start | plan | existing_codebase_info |
|
|
146
|
+
| new | plan | tech_stack, project_structure |
|
|
147
|
+
| plan | execute | plan_file_path, acceptance_criteria |
|
|
148
|
+
| execute | verify-work | changed_files, test_locations |
|
|
149
|
+
| debug | execute | root_cause, fix_approach |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## PUNTOS DE SINCRONIZACIÓN
|
|
154
|
+
|
|
155
|
+
### Checkpoint 1: Después de start
|
|
156
|
+
|
|
157
|
+
```json
|
|
158
|
+
{
|
|
159
|
+
"checkpoint": "post_start",
|
|
160
|
+
"data": {
|
|
161
|
+
"user_intent": "create_new_app | add_feature | fix_bug | understand",
|
|
162
|
+
"detected_context": "greenfield | brownfield | continuation",
|
|
163
|
+
"next_command": "new | plan | debug | analyst"
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Checkpoint 2: Después de plan
|
|
169
|
+
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"checkpoint": "post_plan",
|
|
173
|
+
"data": {
|
|
174
|
+
"plan_file": ".planning/feature-xyz.md",
|
|
175
|
+
"phases": ["setup", "core", "integration", "tests"],
|
|
176
|
+
"estimated_complexity": "low | medium | high",
|
|
177
|
+
"ready_for_execution": true
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### Checkpoint 3: Después de execute
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{
|
|
186
|
+
"checkpoint": "post_execute",
|
|
187
|
+
"data": {
|
|
188
|
+
"changed_files": ["src/auth.ts", "src/api/login.ts"],
|
|
189
|
+
"tests_added": ["tests/auth.test.ts"],
|
|
190
|
+
"commits": ["abc123", "def456"],
|
|
191
|
+
"verification_pending": true
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## TRANSICIONES VÁLIDAS
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
start → new ✓ (proyecto nuevo)
|
|
202
|
+
start → plan ✓ (feature en proyecto existente)
|
|
203
|
+
start → debug ✓ (resolver problema)
|
|
204
|
+
start → quick ✓ (tarea simple)
|
|
205
|
+
|
|
206
|
+
new → plan ✓ (siguiente paso natural)
|
|
207
|
+
new → execute ✗ (necesita plan primero)
|
|
208
|
+
|
|
209
|
+
plan → execute ✓ (ejecutar el plan)
|
|
210
|
+
plan → plan ✓ (refinar plan)
|
|
211
|
+
|
|
212
|
+
execute → verify ✓ (verificar trabajo)
|
|
213
|
+
execute → execute ✓ (continuar implementación)
|
|
214
|
+
|
|
215
|
+
verify → execute ✓ (corregir problemas encontrados)
|
|
216
|
+
verify → [done] ✓ (trabajo completado)
|
|
217
|
+
|
|
218
|
+
debug → execute ✓ (aplicar fix)
|
|
219
|
+
debug → plan ✓ (fix complejo necesita plan)
|
|
220
|
+
|
|
221
|
+
quick → verify ✓ (verificar tarea rápida)
|
|
222
|
+
quick → [done] ✓ (tarea completada)
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## RECUPERACIÓN DE CONTEXTO
|
|
228
|
+
|
|
229
|
+
### Cuando el Usuario Vuelve
|
|
230
|
+
|
|
231
|
+
Si el usuario vuelve después de una pausa:
|
|
232
|
+
|
|
233
|
+
1. **Leer estado**: `.elsabro/state.json`
|
|
234
|
+
2. **Detectar flujo incompleto**: `current_flow !== null`
|
|
235
|
+
3. **Ofrecer opciones**:
|
|
236
|
+
```
|
|
237
|
+
Veo que estabas en medio de [comando] fase [fase].
|
|
238
|
+
|
|
239
|
+
¿Qué quieres hacer?
|
|
240
|
+
1) Continuar donde lo dejaste
|
|
241
|
+
2) Empezar algo nuevo (esto descartará el progreso)
|
|
242
|
+
3) Ver resumen de lo que falta
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Resume Automático
|
|
246
|
+
|
|
247
|
+
Si `current_flow.phase === "implementation"` y hay archivos modificados sin commit:
|
|
248
|
+
|
|
249
|
+
```
|
|
250
|
+
Detecté cambios sin guardar de tu última sesión:
|
|
251
|
+
- src/auth.ts (modificado)
|
|
252
|
+
- src/api/login.ts (nuevo)
|
|
253
|
+
|
|
254
|
+
¿Quieres que continúe la implementación o prefieres revisar primero?
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## INTEGRACIÓN CON ENFORCEMENT RULES
|
|
260
|
+
|
|
261
|
+
Cada punto de sincronización debe respetar las reglas de `/references/enforcement-rules.md`:
|
|
262
|
+
|
|
263
|
+
1. **TaskCreate** antes de cada transición de comando
|
|
264
|
+
2. **TaskUpdate(in_progress)** antes de ejecutar la lógica
|
|
265
|
+
3. **Parallelism** cuando la transición involucra múltiples operaciones
|
|
266
|
+
4. **TaskUpdate(completed)** y actualizar `state.json` al finalizar
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## COMANDOS QUE MODIFICAN ESTADO
|
|
271
|
+
|
|
272
|
+
| Comando | Lee Estado | Escribe Estado | Crea Artefactos |
|
|
273
|
+
|---------|-----------|----------------|-----------------|
|
|
274
|
+
| start | SÍ | SÍ | NO |
|
|
275
|
+
| new | SÍ | SÍ | SÍ (.elsabro/, estructura) |
|
|
276
|
+
| plan | SÍ | SÍ | SÍ (.planning/*.md) |
|
|
277
|
+
| execute | SÍ | SÍ | SÍ (código, tests) |
|
|
278
|
+
| verify-work | SÍ | SÍ | SÍ (reportes) |
|
|
279
|
+
| debug | SÍ | SÍ | OPCIONAL |
|
|
280
|
+
| quick | SÍ | SÍ | VARIABLE |
|
|
281
|
+
| help | NO | NO | NO |
|
|
282
|
+
| settings | SÍ | SÍ | NO |
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## EJEMPLO COMPLETO: Flujo de Nueva Feature
|
|
287
|
+
|
|
288
|
+
```
|
|
289
|
+
Usuario: "Quiero agregar sistema de pagos"
|
|
290
|
+
|
|
291
|
+
1. /elsabro:start
|
|
292
|
+
- Lee state.json → proyecto existente
|
|
293
|
+
- Detecta: brownfield
|
|
294
|
+
- Usuario elige: "Agregar algo"
|
|
295
|
+
- Actualiza state: { user_intent: "add_feature", next: "plan" }
|
|
296
|
+
- Redirige a /elsabro:plan
|
|
297
|
+
|
|
298
|
+
2. /elsabro:plan
|
|
299
|
+
- Lee state.json → sabe que viene de start, es feature nueva
|
|
300
|
+
- TaskCreate("Explorar codebase para payments")
|
|
301
|
+
- Task(haiku) x3 [paralelo] → exploración
|
|
302
|
+
- TaskCreate("Generar plan de payments")
|
|
303
|
+
- Task(opus) x2 → genera plan
|
|
304
|
+
- Guarda .planning/payments-plan.md
|
|
305
|
+
- Actualiza state: { plan_file: "...", ready_for_execution: true }
|
|
306
|
+
- Usuario aprueba → sugiere /elsabro:execute
|
|
307
|
+
|
|
308
|
+
3. /elsabro:execute
|
|
309
|
+
- Lee state.json → sabe el plan, los archivos
|
|
310
|
+
- TaskCreate("Implementar fase 1: setup Stripe")
|
|
311
|
+
- Task(haiku) x3 [paralelo] → exploración
|
|
312
|
+
- Task(opus) x2 [paralelo] → implementación
|
|
313
|
+
- Task(opus) x3 [paralelo] → verificación
|
|
314
|
+
- Actualiza state: { changed_files: [...], commits: [...] }
|
|
315
|
+
- Sugiere /elsabro:verify-work
|
|
316
|
+
|
|
317
|
+
4. /elsabro:verify-work
|
|
318
|
+
- Lee state.json → sabe qué archivos verificar
|
|
319
|
+
- Task(opus) x3 [paralelo] → verificación exhaustiva
|
|
320
|
+
- Actualiza state: { verification: "passed" }
|
|
321
|
+
- DONE
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
## ANTI-PATRONES
|
|
327
|
+
|
|
328
|
+
### NO hacer:
|
|
329
|
+
|
|
330
|
+
1. **Ignorar estado existente**
|
|
331
|
+
```
|
|
332
|
+
✗ Empezar fresh sin leer state.json
|
|
333
|
+
✓ Siempre leer y ofrecer continuar si hay flujo
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
2. **Saltar comandos**
|
|
337
|
+
```
|
|
338
|
+
✗ start → execute (sin plan)
|
|
339
|
+
✓ start → plan → execute
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
3. **No actualizar estado**
|
|
343
|
+
```
|
|
344
|
+
✗ Completar comando sin escribir state.json
|
|
345
|
+
✓ Actualizar estado al inicio y fin de cada fase
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
4. **Perder contexto entre comandos**
|
|
349
|
+
```
|
|
350
|
+
✗ Cada comando empieza de cero
|
|
351
|
+
✓ Pasar contexto relevante entre comandos
|
|
352
|
+
```
|