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
|
@@ -0,0 +1,388 @@
|
|
|
1
|
+
# ELSABRO Task Dispatcher
|
|
2
|
+
|
|
3
|
+
## Propósito
|
|
4
|
+
|
|
5
|
+
Despacho inteligente de tareas a subagentes con **selección automática de modelo** según el tipo de tarea. Maximiza eficiencia usando el modelo correcto para cada trabajo.
|
|
6
|
+
|
|
7
|
+
## Matriz de Selección de Modelo
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
┌─────────────────────────────────────────────────────────────────────────┐
|
|
11
|
+
│ MODELO SEGÚN TIPO DE TAREA │
|
|
12
|
+
├─────────────────────────────────────────────────────────────────────────┤
|
|
13
|
+
│ │
|
|
14
|
+
│ HAIKU (rápido, económico) OPUS (máximo razonamiento) │
|
|
15
|
+
│ ───────────────────────── ────────────────────────── │
|
|
16
|
+
│ • Buscar archivos (Glob/Grep) • Escribir código nuevo │
|
|
17
|
+
│ • Leer y resumir código • Code review profundo │
|
|
18
|
+
│ • Mapear estructura • Debugging complejo │
|
|
19
|
+
│ • Exploración general • Decisiones arquitectónicas │
|
|
20
|
+
│ • Listar dependencias • Análisis de seguridad │
|
|
21
|
+
│ • Verificaciones simples • Refactoring significativo │
|
|
22
|
+
│ • Clarificación de requisitos │
|
|
23
|
+
│ │
|
|
24
|
+
│ SONNET (balance) │
|
|
25
|
+
│ ──────────────── │
|
|
26
|
+
│ • Tests unitarios │
|
|
27
|
+
│ • Documentación técnica │
|
|
28
|
+
│ • Cambios pequeños de código │
|
|
29
|
+
│ • Validación de patrones │
|
|
30
|
+
│ │
|
|
31
|
+
└─────────────────────────────────────────────────────────────────────────┘
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Regla de Decisión
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
SI la tarea:
|
|
38
|
+
- NO escribe código nuevo
|
|
39
|
+
- NO toma decisiones arquitectónicas
|
|
40
|
+
- NO requiere razonamiento complejo
|
|
41
|
+
→ USA HAIKU
|
|
42
|
+
|
|
43
|
+
SI la tarea:
|
|
44
|
+
- Escribe tests o documentación
|
|
45
|
+
- Hace cambios menores de código
|
|
46
|
+
- Valida sin crear nuevo
|
|
47
|
+
→ USA SONNET
|
|
48
|
+
|
|
49
|
+
SI la tarea:
|
|
50
|
+
- Escribe código nuevo significativo
|
|
51
|
+
- Toma decisiones de arquitectura
|
|
52
|
+
- Requiere análisis profundo
|
|
53
|
+
- Hace code review crítico
|
|
54
|
+
→ USA OPUS
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Mapeo de Agentes a Modelos
|
|
58
|
+
|
|
59
|
+
### Siempre HAIKU (exploración)
|
|
60
|
+
| Agente | Razón |
|
|
61
|
+
|--------|-------|
|
|
62
|
+
| `Explore` | Solo busca archivos y lee |
|
|
63
|
+
| `Plan` (mapeo) | Estructura sin crear |
|
|
64
|
+
| `feature-dev:code-explorer` | Análisis de patrones existentes |
|
|
65
|
+
|
|
66
|
+
### Siempre OPUS (razonamiento profundo)
|
|
67
|
+
| Agente | Razón |
|
|
68
|
+
|--------|-------|
|
|
69
|
+
| `elsabro-analyst` | Clarificación y entrevistas |
|
|
70
|
+
| `elsabro-planner` | Diseño de arquitectura |
|
|
71
|
+
| `elsabro-debugger` | Investigación metódica |
|
|
72
|
+
| `elsabro-executor` | Implementación con TDD |
|
|
73
|
+
| `elsabro-orchestrator` | Coordinación compleja |
|
|
74
|
+
| `feature-dev:code-architect` | Decisiones de diseño |
|
|
75
|
+
| `pr-review-toolkit:code-reviewer` | Review profundo |
|
|
76
|
+
| `pr-review-toolkit:silent-failure-hunter` | Análisis de edge cases |
|
|
77
|
+
| `pr-review-toolkit:pr-test-analyzer` | Análisis profundo de cobertura |
|
|
78
|
+
|
|
79
|
+
### Siempre SONNET (balance)
|
|
80
|
+
| Agente | Razón |
|
|
81
|
+
|--------|-------|
|
|
82
|
+
| `elsabro-verifier` | Validación estructurada |
|
|
83
|
+
| `elsabro-qa` | Diseño de tests |
|
|
84
|
+
| `elsabro-tech-writer` | Documentación |
|
|
85
|
+
| `elsabro-scrum-master` | Gestión de sprints |
|
|
86
|
+
| `elsabro-ux-designer` | Diseño UI/UX |
|
|
87
|
+
| `elsabro-quick-dev` | Cambios rápidos |
|
|
88
|
+
|
|
89
|
+
### Dinámico (según contexto)
|
|
90
|
+
| Agente | Modelo por defecto | Escalar a OPUS si... |
|
|
91
|
+
|--------|-------------------|----------------------|
|
|
92
|
+
| `elsabro-yolo-dev` | SONNET | Código crítico |
|
|
93
|
+
|
|
94
|
+
## Protocolo de Despacho
|
|
95
|
+
|
|
96
|
+
### 1. Clasificar Tarea
|
|
97
|
+
|
|
98
|
+
```javascript
|
|
99
|
+
function classifyTask(task) {
|
|
100
|
+
// Exploración pura → HAIKU
|
|
101
|
+
if (task.actions.every(a => ['read', 'glob', 'grep', 'list'].includes(a))) {
|
|
102
|
+
return 'exploration';
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// Escritura de código → OPUS
|
|
106
|
+
if (task.actions.some(a => ['write', 'edit', 'create'].includes(a))
|
|
107
|
+
&& task.scope === 'significant') {
|
|
108
|
+
return 'implementation';
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
// Testing/docs → SONNET
|
|
112
|
+
if (task.type === 'test' || task.type === 'documentation') {
|
|
113
|
+
return 'validation';
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// Default según complejidad
|
|
117
|
+
return task.complexity > 0.7 ? 'implementation' : 'validation';
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 2. Seleccionar Modelo
|
|
122
|
+
|
|
123
|
+
```javascript
|
|
124
|
+
function selectModel(taskType) {
|
|
125
|
+
const modelMap = {
|
|
126
|
+
'exploration': 'haiku',
|
|
127
|
+
'validation': 'sonnet',
|
|
128
|
+
'implementation': 'opus'
|
|
129
|
+
};
|
|
130
|
+
return modelMap[taskType] || 'sonnet';
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 3. Despachar a Subagente
|
|
135
|
+
|
|
136
|
+
```javascript
|
|
137
|
+
function dispatch(task, agent) {
|
|
138
|
+
const taskType = classifyTask(task);
|
|
139
|
+
const model = selectModel(taskType);
|
|
140
|
+
|
|
141
|
+
return Task({
|
|
142
|
+
subagent_type: agent,
|
|
143
|
+
model: model,
|
|
144
|
+
description: task.description,
|
|
145
|
+
prompt: task.prompt
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Ejecución Paralela
|
|
151
|
+
|
|
152
|
+
### Cuándo Paralelizar
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
PARALELO (un solo mensaje con múltiples Task):
|
|
156
|
+
- Tareas independientes sin dependencias
|
|
157
|
+
- Misma wave/fase
|
|
158
|
+
- No modifican los mismos archivos
|
|
159
|
+
|
|
160
|
+
SECUENCIAL:
|
|
161
|
+
- Tarea B depende del output de A
|
|
162
|
+
- Modifican los mismos archivos
|
|
163
|
+
- Una tarea determina si otra se ejecuta
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### Patrón de Paralelización con Tasks API
|
|
167
|
+
|
|
168
|
+
```javascript
|
|
169
|
+
// 1. Crear Tasks con dependencias
|
|
170
|
+
const explorationTasks = [
|
|
171
|
+
TaskCreate({ subject: "Explore files", metadata: { model: "haiku" }}),
|
|
172
|
+
TaskCreate({ subject: "Map patterns", metadata: { model: "haiku" }}),
|
|
173
|
+
TaskCreate({ subject: "Analyze deps", metadata: { model: "haiku" }})
|
|
174
|
+
];
|
|
175
|
+
|
|
176
|
+
// 2. Crear Task agregadora
|
|
177
|
+
const aggregator = TaskCreate({
|
|
178
|
+
subject: "Aggregate exploration results",
|
|
179
|
+
metadata: { type: "aggregator" }
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
// 3. Configurar dependencias
|
|
183
|
+
TaskUpdate({ taskId: aggregator.id, addBlockedBy: explorationTasks.map(t => t.id) });
|
|
184
|
+
|
|
185
|
+
// 4. Marcar in_progress y lanzar EN UN SOLO MENSAJE
|
|
186
|
+
explorationTasks.forEach(t => TaskUpdate({ taskId: t.id, status: "in_progress" }));
|
|
187
|
+
|
|
188
|
+
// 5. Lanzar agentes (PARALELO REAL)
|
|
189
|
+
Task({ subagent_type: "Explore", model: "haiku", prompt: "..." }) |
|
|
190
|
+
Task({ subagent_type: "feature-dev:code-explorer", model: "haiku", prompt: "..." }) |
|
|
191
|
+
Task({ subagent_type: "Plan", model: "haiku", prompt: "..." })
|
|
192
|
+
|
|
193
|
+
// 6. Al completar cada uno
|
|
194
|
+
explorationTasks.forEach(t => TaskUpdate({ taskId: t.id, status: "completed" }));
|
|
195
|
+
|
|
196
|
+
// 7. Agregador se desbloquea automáticamente
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
## Visualización del Despacho
|
|
200
|
+
|
|
201
|
+
```
|
|
202
|
+
┌─────────────────────────────────────────────────────────────────────────┐
|
|
203
|
+
│ TASK DISPATCH VISUALIZATION │
|
|
204
|
+
├─────────────────────────────────────────────────────────────────────────┤
|
|
205
|
+
│ │
|
|
206
|
+
│ INPUT: "Implementar validación de formulario" │
|
|
207
|
+
│ │
|
|
208
|
+
│ ┌─────────────────┐ │
|
|
209
|
+
│ │ CLASSIFY TASK │ │
|
|
210
|
+
│ │ type: implement │ │
|
|
211
|
+
│ │ scope: signif. │ │
|
|
212
|
+
│ └────────┬────────┘ │
|
|
213
|
+
│ │ │
|
|
214
|
+
│ ▼ │
|
|
215
|
+
│ ┌─────────────────┐ │
|
|
216
|
+
│ │ SELECT MODEL │ │
|
|
217
|
+
│ │ → OPUS │ │
|
|
218
|
+
│ └────────┬────────┘ │
|
|
219
|
+
│ │ │
|
|
220
|
+
│ ▼ │
|
|
221
|
+
│ ┌─────────────────┐ │
|
|
222
|
+
│ │ SELECT AGENT │ │
|
|
223
|
+
│ │ → elsabro-exec │ │
|
|
224
|
+
│ └────────┬────────┘ │
|
|
225
|
+
│ │ │
|
|
226
|
+
│ ▼ │
|
|
227
|
+
│ ┌─────────────────────────────────────┐ │
|
|
228
|
+
│ │ DISPATCH │ │
|
|
229
|
+
│ │ Task(elsabro-executor, opus, ...) │ │
|
|
230
|
+
│ └─────────────────────────────────────┘ │
|
|
231
|
+
│ │
|
|
232
|
+
└─────────────────────────────────────────────────────────────────────────┘
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Ejemplos de Despacho
|
|
236
|
+
|
|
237
|
+
### Ejemplo 1: Exploración (HAIKU x3 paralelo)
|
|
238
|
+
|
|
239
|
+
```javascript
|
|
240
|
+
// Tarea: "Entender cómo funciona la autenticación"
|
|
241
|
+
// Tipo: exploration
|
|
242
|
+
// Modelo: HAIKU (x3 en paralelo)
|
|
243
|
+
|
|
244
|
+
Task({
|
|
245
|
+
subagent_type: "Explore",
|
|
246
|
+
model: "haiku",
|
|
247
|
+
description: "Buscar archivos de auth",
|
|
248
|
+
prompt: "Busca archivos relacionados con autenticación..."
|
|
249
|
+
}) |
|
|
250
|
+
Task({
|
|
251
|
+
subagent_type: "feature-dev:code-explorer",
|
|
252
|
+
model: "haiku",
|
|
253
|
+
description: "Analizar patrones de auth",
|
|
254
|
+
prompt: "Analiza los patrones de autenticación..."
|
|
255
|
+
}) |
|
|
256
|
+
Task({
|
|
257
|
+
subagent_type: "Plan",
|
|
258
|
+
model: "haiku",
|
|
259
|
+
description: "Mapear flujo de auth",
|
|
260
|
+
prompt: "Mapea el flujo de autenticación..."
|
|
261
|
+
})
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Ejemplo 2: Implementación (OPUS x2 paralelo)
|
|
265
|
+
|
|
266
|
+
```javascript
|
|
267
|
+
// Tarea: "Agregar validación de email"
|
|
268
|
+
// Tipo: implementation
|
|
269
|
+
// Modelo: OPUS (x2 en paralelo)
|
|
270
|
+
|
|
271
|
+
Task({
|
|
272
|
+
subagent_type: "elsabro-executor",
|
|
273
|
+
model: "opus",
|
|
274
|
+
description: "Implementar validación",
|
|
275
|
+
prompt: "Implementa validación de email con Zod..."
|
|
276
|
+
}) |
|
|
277
|
+
Task({
|
|
278
|
+
subagent_type: "feature-dev:code-architect",
|
|
279
|
+
model: "opus",
|
|
280
|
+
description: "Validar arquitectura",
|
|
281
|
+
prompt: "Verifica que la implementación siga patrones..."
|
|
282
|
+
})
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
### Ejemplo 3: Verificación (OPUS x3 paralelo)
|
|
286
|
+
|
|
287
|
+
```javascript
|
|
288
|
+
// Tarea: "Verificar calidad del código"
|
|
289
|
+
// Tipo: validation (pero review profundo → OPUS)
|
|
290
|
+
// Modelo: OPUS (x3 en paralelo)
|
|
291
|
+
|
|
292
|
+
Task({
|
|
293
|
+
subagent_type: "pr-review-toolkit:code-reviewer",
|
|
294
|
+
model: "opus",
|
|
295
|
+
description: "Code review",
|
|
296
|
+
prompt: "Revisa el código buscando bugs..."
|
|
297
|
+
}) |
|
|
298
|
+
Task({
|
|
299
|
+
subagent_type: "pr-review-toolkit:silent-failure-hunter",
|
|
300
|
+
model: "opus",
|
|
301
|
+
description: "Buscar errores ocultos",
|
|
302
|
+
prompt: "Busca errores silenciosos..."
|
|
303
|
+
}) |
|
|
304
|
+
Task({
|
|
305
|
+
subagent_type: "pr-review-toolkit:pr-test-analyzer",
|
|
306
|
+
model: "opus",
|
|
307
|
+
description: "Analizar tests",
|
|
308
|
+
prompt: "Verifica cobertura de tests..."
|
|
309
|
+
})
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
## Métricas de Eficiencia
|
|
313
|
+
|
|
314
|
+
```
|
|
315
|
+
┌─────────────────────────────────────────────────────────────────────────┐
|
|
316
|
+
│ EFFICIENCY METRICS │
|
|
317
|
+
├─────────────────────────────────────────────────────────────────────────┤
|
|
318
|
+
│ │
|
|
319
|
+
│ ANTES (sin dispatcher): │
|
|
320
|
+
│ - Todo con OPUS → Alto costo, lento │
|
|
321
|
+
│ - Sin paralelismo → Secuencial │
|
|
322
|
+
│ - Sin tracking → Estado perdido │
|
|
323
|
+
│ │
|
|
324
|
+
│ DESPUÉS (con dispatcher): │
|
|
325
|
+
│ - HAIKU para exploración → 70% más rápido, 90% más barato │
|
|
326
|
+
│ - OPUS solo para código → Calidad donde importa │
|
|
327
|
+
│ - 3+ agentes paralelos → Fase 2x-3x más rápida │
|
|
328
|
+
│ - Tasks API → Estado persistente entre sesiones │
|
|
329
|
+
│ │
|
|
330
|
+
│ AHORRO ESTIMADO POR SESIÓN: │
|
|
331
|
+
│ - Tokens: -40% (HAIKU en exploración) │
|
|
332
|
+
│ - Tiempo: -50% (paralelismo) │
|
|
333
|
+
│ - Calidad: +30% (OPUS donde importa) │
|
|
334
|
+
│ │
|
|
335
|
+
└─────────────────────────────────────────────────────────────────────────┘
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
## Integración con Comandos
|
|
339
|
+
|
|
340
|
+
### Comandos que usan Task Dispatcher
|
|
341
|
+
|
|
342
|
+
| Comando | Fase Exploración | Fase Implementación | Fase Verificación |
|
|
343
|
+
|---------|-----------------|---------------------|-------------------|
|
|
344
|
+
| `/elsabro:execute` | HAIKU x3 | OPUS x2 | OPUS x3 |
|
|
345
|
+
| `/elsabro:plan` | HAIKU x3 | OPUS x1 | - |
|
|
346
|
+
| `/elsabro:verify-work` | - | - | OPUS x3 |
|
|
347
|
+
| `/elsabro:debug` | HAIKU x2 | OPUS x1 | SONNET x1 |
|
|
348
|
+
| `/elsabro:research-phase` | HAIKU x3 | - | - |
|
|
349
|
+
| `/elsabro:map-codebase` | HAIKU x4 | - | - |
|
|
350
|
+
|
|
351
|
+
### Frontmatter Recomendado
|
|
352
|
+
|
|
353
|
+
```yaml
|
|
354
|
+
---
|
|
355
|
+
name: execute
|
|
356
|
+
description: Ejecutar planes con dispatcher inteligente
|
|
357
|
+
allowed-tools:
|
|
358
|
+
- Task
|
|
359
|
+
- TaskCreate
|
|
360
|
+
- TaskUpdate
|
|
361
|
+
- TaskList
|
|
362
|
+
- TaskGet
|
|
363
|
+
dispatcher:
|
|
364
|
+
exploration:
|
|
365
|
+
agents: [Explore, feature-dev:code-explorer, Plan]
|
|
366
|
+
model: haiku
|
|
367
|
+
parallel: true
|
|
368
|
+
implementation:
|
|
369
|
+
agents: [elsabro-executor, feature-dev:code-architect]
|
|
370
|
+
model: opus
|
|
371
|
+
parallel: true
|
|
372
|
+
verification:
|
|
373
|
+
agents: [pr-review-toolkit:code-reviewer, pr-review-toolkit:silent-failure-hunter, pr-review-toolkit:pr-test-analyzer]
|
|
374
|
+
model: opus
|
|
375
|
+
parallel: true
|
|
376
|
+
---
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
## Checklist de Uso
|
|
380
|
+
|
|
381
|
+
Antes de despachar tareas:
|
|
382
|
+
|
|
383
|
+
- [ ] ¿Clasificaste el tipo de tarea? (exploration/validation/implementation)
|
|
384
|
+
- [ ] ¿Seleccionaste el modelo correcto? (haiku/sonnet/opus)
|
|
385
|
+
- [ ] ¿Las tareas son independientes? → Paralelo
|
|
386
|
+
- [ ] ¿Creaste Tasks API para tracking?
|
|
387
|
+
- [ ] ¿Configuraste dependencias con blockedBy?
|
|
388
|
+
- [ ] ¿Lanzaste agentes paralelos en UN SOLO mensaje?
|