elsabro 4.2.1 → 5.0.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/agents/elsabro-analyst.md +25 -0
- package/agents/elsabro-planner.md +33 -0
- package/commands/elsabro/party.md +253 -0
- package/commands/elsabro/set-profile.md +31 -0
- package/commands/elsabro/settings.md +6 -6
- package/flows/development-flow.json +139 -4
- package/hooks/hooks-config-updated.json +16 -0
- package/package.json +2 -2
- package/references/enforcement-rules.md +38 -0
- package/references/next-step-engine.md +9 -0
- package/references/state-sync.md +45 -0
- package/templates/CONTROL-MANIFEST.md.template +86 -0
- package/templates/PARTY-SUMMARY.md.template +74 -0
- package/templates/PRD.md.template +83 -0
- package/templates/SOLUTION.md.template +122 -0
|
@@ -75,6 +75,31 @@ Analizar proyecto existente para generar documentación.
|
|
|
75
75
|
2. Identificar tecnologías usadas
|
|
76
76
|
3. Mapear funcionalidades existentes
|
|
77
77
|
4. Generar resumen en lenguaje simple
|
|
78
|
+
|
|
79
|
+
### [PRD] Create PRD (BMAD Profile)
|
|
80
|
+
Generar un Product Requirements Document completo con user stories y acceptance criteria.
|
|
81
|
+
Activado por el perfil `bmad` en el flow engine.
|
|
82
|
+
|
|
83
|
+
**Proceso:**
|
|
84
|
+
1. Si existe `.planning/BRIEF.md`, usarlo como base
|
|
85
|
+
2. Si no existe, ejecutar `[CB]` primero para crear el brief
|
|
86
|
+
3. Convertir features del BRIEF en User Stories con formato:
|
|
87
|
+
- **As a** [persona], **I want to** [action], **So that** [benefit]
|
|
88
|
+
- Acceptance Criteria en formato **Given/When/Then**
|
|
89
|
+
4. Identificar Non-Functional Requirements (performance, security, accessibility)
|
|
90
|
+
5. Documentar Out of Scope explícitamente (mínimo 2 exclusiones)
|
|
91
|
+
6. Definir Success Metrics medibles
|
|
92
|
+
|
|
93
|
+
**Input:** BRIEF.md (opcional), user description
|
|
94
|
+
**Output:** `.planning/PRD.md` (basado en `templates/PRD.md.template`)
|
|
95
|
+
|
|
96
|
+
**Reglas:**
|
|
97
|
+
- Cada story DEBE tener al menos 2 acceptance criteria
|
|
98
|
+
- Cada acceptance criteria DEBE ser verificable por un test automatizado
|
|
99
|
+
- Prioridades DEBEN ser P0 (must-have) / P1 (should-have) / P2 (nice-to-have)
|
|
100
|
+
- Out of Scope DEBE listar al menos 2 exclusiones explícitas
|
|
101
|
+
- NO inventar requisitos — preguntar al usuario si hay ambigüedad
|
|
102
|
+
- Usar `AskUserQuestion` para clarificar personas, prioridades, y métricas
|
|
78
103
|
</commands>
|
|
79
104
|
|
|
80
105
|
<questioning_technique>
|
|
@@ -276,3 +276,36 @@ wave: 1 # Número de wave
|
|
|
276
276
|
9. Ejecutar plan-checker (si habilitado)
|
|
277
277
|
```
|
|
278
278
|
</execution_flow>
|
|
279
|
+
|
|
280
|
+
<bmad_commands>
|
|
281
|
+
## Comandos BMAD (Perfil bmad)
|
|
282
|
+
|
|
283
|
+
### [SOL] Create Solution Design (BMAD Profile)
|
|
284
|
+
Diseñar la solución técnica detallada para cada story del PRD.
|
|
285
|
+
Activado por el perfil `bmad` en el flow engine.
|
|
286
|
+
|
|
287
|
+
**Proceso:**
|
|
288
|
+
1. Leer `.planning/PRD.md` y `.planning/CONTROL-MANIFEST.md`
|
|
289
|
+
2. Para cada story en el PRD:
|
|
290
|
+
a. Definir approach técnico específico
|
|
291
|
+
b. Listar archivos a crear/modificar
|
|
292
|
+
c. Especificar pasos de implementación (con código de Context7)
|
|
293
|
+
d. Definir comando de verificación ejecutable
|
|
294
|
+
e. Mapear acceptance criteria → implementación → test
|
|
295
|
+
3. Crear Architecture Decision Records (ADRs) para decisiones no triviales
|
|
296
|
+
4. Verificar compliance con CADA constraint del Control Manifest
|
|
297
|
+
5. Documentar data flows y API contracts
|
|
298
|
+
6. Estimar esfuerzo por story y asignar a waves
|
|
299
|
+
|
|
300
|
+
**Input:** PRD.md, CONTROL-MANIFEST.md, codebase context
|
|
301
|
+
**Output:** `.planning/SOLUTION.md` (basado en `templates/SOLUTION.md.template`)
|
|
302
|
+
|
|
303
|
+
**Reglas:**
|
|
304
|
+
- Cada story DEBE tener implementation steps concretos
|
|
305
|
+
- Cada ADR DEBE listar al menos 2 alternativas consideradas con razón de rechazo
|
|
306
|
+
- Compliance con Control Manifest DEBE ser explícita por cada constraint
|
|
307
|
+
- Si una constraint del manifest no se puede cumplir → marcar como **BLOCKED** con razón
|
|
308
|
+
- NO asumir tecnologías que no están en el manifest — preguntar si hay ambigüedad
|
|
309
|
+
- Usar Context7 para TODOS los patrones de código (no pseudo-código)
|
|
310
|
+
- Cada story debe poder verificarse independientemente con un comando bash
|
|
311
|
+
</bmad_commands>
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: party
|
|
3
|
+
description: Party Mode - Discusion multi-agente colaborativa donde 2-3 agentes debaten un tema desde diferentes perspectivas
|
|
4
|
+
sync:
|
|
5
|
+
reads: [".elsabro/state.json"]
|
|
6
|
+
writes: [".elsabro/state.json"]
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# /elsabro:party
|
|
10
|
+
|
|
11
|
+
<command-name>party</command-name>
|
|
12
|
+
|
|
13
|
+
<state_sync>
|
|
14
|
+
## SINCRONIZACION DE ESTADO
|
|
15
|
+
|
|
16
|
+
**IMPORTAR**: Ver `/references/state-sync.md` para protocolo completo.
|
|
17
|
+
|
|
18
|
+
### Al Iniciar
|
|
19
|
+
- Leer `.elsabro/state.json`
|
|
20
|
+
- Verificar contexto actual
|
|
21
|
+
- Activar persistent mode: `state.elsabro_mode = true`
|
|
22
|
+
|
|
23
|
+
### Al Completar
|
|
24
|
+
- Registrar en `history`
|
|
25
|
+
- Guardar resumen en `state.context.party_summary`
|
|
26
|
+
- Establecer `state.suggested_next = "discuss-phase"`
|
|
27
|
+
</state_sync>
|
|
28
|
+
|
|
29
|
+
## Proposito
|
|
30
|
+
|
|
31
|
+
Facilitar una discusion colaborativa donde 2-3 agentes ELSABRO debaten un tema desde diferentes perspectivas. A diferencia de Agent Teams (ejecucion paralela de tareas separadas), Party Mode es **deliberacion** sobre el mismo tema.
|
|
32
|
+
|
|
33
|
+
## Uso
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Party Mode automatico (selecciona agentes por relevancia)
|
|
37
|
+
/elsabro:party "debemos usar microservicios o monolito?"
|
|
38
|
+
|
|
39
|
+
# Party Mode con agentes especificos
|
|
40
|
+
/elsabro:party "estrategia de testing" --agents=qa,executor,debugger
|
|
41
|
+
|
|
42
|
+
# Party Mode con rounds limitados
|
|
43
|
+
/elsabro:party "arquitectura del backend" --rounds=2
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Agent Personality Cards
|
|
47
|
+
|
|
48
|
+
Cada agente tiene una personalidad distinta que guia sus contribuciones:
|
|
49
|
+
|
|
50
|
+
### Executor (Pragmatico)
|
|
51
|
+
- **Perspectiva:** "Esto funciona en la practica?"
|
|
52
|
+
- **Enfoque:** Factibilidad, velocidad, complejidad real
|
|
53
|
+
- **Pregunta tipica:** "Cuantas horas lleva implementar esto?"
|
|
54
|
+
|
|
55
|
+
### QA (Esceptico constructivo)
|
|
56
|
+
- **Perspectiva:** "Que puede salir mal?"
|
|
57
|
+
- **Enfoque:** Edge cases, testing, fiabilidad
|
|
58
|
+
- **Pregunta tipica:** "Y si el input es null? Y si hay 10K usuarios simultaneos?"
|
|
59
|
+
|
|
60
|
+
### Debugger (Detective)
|
|
61
|
+
- **Perspectiva:** "He visto esto fallar antes"
|
|
62
|
+
- **Enfoque:** Patrones de error, root causes, observabilidad
|
|
63
|
+
- **Pregunta tipica:** "Como vamos a diagnosticar problemas en produccion?"
|
|
64
|
+
|
|
65
|
+
### Planner (Arquitecto)
|
|
66
|
+
- **Perspectiva:** "Pensemos a largo plazo"
|
|
67
|
+
- **Enfoque:** Escalabilidad, mantenibilidad, patrones
|
|
68
|
+
- **Pregunta tipica:** "Como se ve esto en 6 meses con 3x mas features?"
|
|
69
|
+
|
|
70
|
+
### Analyst (Abogado del usuario)
|
|
71
|
+
- **Perspectiva:** "El usuario importa mas que el codigo"
|
|
72
|
+
- **Enfoque:** UX, requisitos, valor de negocio
|
|
73
|
+
- **Pregunta tipica:** "Esto realmente resuelve lo que el usuario necesita?"
|
|
74
|
+
|
|
75
|
+
### Quick-Dev (Velocista)
|
|
76
|
+
- **Perspectiva:** "Menos es mas"
|
|
77
|
+
- **Enfoque:** MVP, simplicidad, iteracion rapida
|
|
78
|
+
- **Pregunta tipica:** "Cual es la version mas simple que aporta valor?"
|
|
79
|
+
|
|
80
|
+
### UX Designer (Empatico)
|
|
81
|
+
- **Perspectiva:** "Como se siente usar esto?"
|
|
82
|
+
- **Enfoque:** Flujos, accesibilidad, consistencia visual
|
|
83
|
+
- **Pregunta tipica:** "El usuario sabe que hacer en este paso?"
|
|
84
|
+
|
|
85
|
+
### Tech Writer (Comunicador)
|
|
86
|
+
- **Perspectiva:** "Si no se puede explicar, no se entiende"
|
|
87
|
+
- **Enfoque:** Claridad, documentacion, onboarding
|
|
88
|
+
- **Pregunta tipica:** "Un developer nuevo puede entender esto en 10 minutos?"
|
|
89
|
+
|
|
90
|
+
### Scrum Master (Facilitador)
|
|
91
|
+
- **Perspectiva:** "El equipo primero"
|
|
92
|
+
- **Enfoque:** Proceso, bloqueos, comunicacion
|
|
93
|
+
- **Pregunta tipica:** "Esto genera dependencias entre equipos?"
|
|
94
|
+
|
|
95
|
+
## Proceso
|
|
96
|
+
|
|
97
|
+
### Paso 1: Seleccion de Agentes
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
Agent Relevance Map:
|
|
101
|
+
┌─────────────────────────────────────────────────────┐
|
|
102
|
+
│ Topic Analysis: "estrategia de testing" │
|
|
103
|
+
├─────────────────────────────────────────────────────┤
|
|
104
|
+
│ Relevance Score: │
|
|
105
|
+
│ ★★★ QA (testing expert) → SELECTED │
|
|
106
|
+
│ ★★★ Executor (implementation view) → SELECTED │
|
|
107
|
+
│ ★★☆ Debugger (error patterns) → SELECTED │
|
|
108
|
+
│ ★☆☆ Planner (architecture) → reserve │
|
|
109
|
+
│ ☆☆☆ UX Designer (not relevant) → skip │
|
|
110
|
+
└─────────────────────────────────────────────────────┘
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Seleccion automatica basada en keywords del topic:
|
|
114
|
+
- **testing/quality/bugs** → QA, Executor, Debugger
|
|
115
|
+
- **architecture/design/scale** → Planner, Executor, Debugger
|
|
116
|
+
- **UX/UI/frontend** → UX Designer, Analyst, Quick-Dev
|
|
117
|
+
- **process/team/sprint** → Scrum Master, Planner, Analyst
|
|
118
|
+
- **requirements/scope/users** → Analyst, Planner, QA
|
|
119
|
+
- **performance/optimization** → Debugger, Executor, Planner
|
|
120
|
+
|
|
121
|
+
### Paso 2: Deliberacion (Single-Agent Simulation)
|
|
122
|
+
|
|
123
|
+
La implementacion v1 usa **single-agent simulation**: un agente encarna secuencialmente a cada personalidad, generando respuestas autenticas desde cada perspectiva.
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
╔══════════════════════════════════════════════════════╗
|
|
127
|
+
║ PARTY MODE: "Debemos usar microservicios?" ║
|
|
128
|
+
║ Agentes: Planner, Executor, QA ║
|
|
129
|
+
║ Round: 1/3 ║
|
|
130
|
+
╠══════════════════════════════════════════════════════╣
|
|
131
|
+
║ ║
|
|
132
|
+
║ [Planner] A largo plazo, microservicios dan ║
|
|
133
|
+
║ flexibilidad para escalar equipos. Pero el costo ║
|
|
134
|
+
║ inicial es alto. Recomiendo empezar monolito ║
|
|
135
|
+
║ modular con boundaries claros. ║
|
|
136
|
+
║ ║
|
|
137
|
+
║ [Executor] De acuerdo con el monolito modular. ║
|
|
138
|
+
║ Microservicios para un equipo de 3 personas es ║
|
|
139
|
+
║ over-engineering. Pero necesitamos API contracts ║
|
|
140
|
+
║ claros desde el dia 1 para facilitar la separacion ║
|
|
141
|
+
║ futura. ║
|
|
142
|
+
║ ║
|
|
143
|
+
║ [QA] Mi preocupacion: si no definimos boundaries ║
|
|
144
|
+
║ ahora, el monolito se convierte en un big ball of ║
|
|
145
|
+
║ mud. Propongo: domain modules con interfaces ║
|
|
146
|
+
║ explicitas + integration tests por modulo. ║
|
|
147
|
+
║ ║
|
|
148
|
+
╠══════════════════════════════════════════════════════╣
|
|
149
|
+
║ Round 2: Reacciones... ║
|
|
150
|
+
╚══════════════════════════════════════════════════════╝
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Paso 3: Rounds de Reaccion
|
|
154
|
+
|
|
155
|
+
Cada round despues del primero permite a los agentes **reaccionar** a lo que dijeron los otros:
|
|
156
|
+
|
|
157
|
+
- **Acuerdos:** "Concuerdo con [Agent] sobre..."
|
|
158
|
+
- **Desacuerdos:** "No estoy seguro sobre lo que dice [Agent]..."
|
|
159
|
+
- **Builds:** "Expandiendo lo que dijo [Agent]..."
|
|
160
|
+
- **Preguntas:** "Le preguntaria a [Agent]: que pasa si...?"
|
|
161
|
+
|
|
162
|
+
Rounds por defecto: 3 (configurable con --rounds)
|
|
163
|
+
|
|
164
|
+
### Paso 4: Sintesis
|
|
165
|
+
|
|
166
|
+
Al final, generar consenso y puntos de debate:
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
╔══════════════════════════════════════════════════════╗
|
|
170
|
+
║ PARTY SUMMARY ║
|
|
171
|
+
╠══════════════════════════════════════════════════════╣
|
|
172
|
+
║ ║
|
|
173
|
+
║ Consenso (todos de acuerdo): ║
|
|
174
|
+
║ • Empezar con monolito modular ║
|
|
175
|
+
║ • API contracts claros desde dia 1 ║
|
|
176
|
+
║ • Integration tests por modulo ║
|
|
177
|
+
║ ║
|
|
178
|
+
║ Debate abierto (sin consenso): ║
|
|
179
|
+
║ • Cuando migrar a microservicios? ║
|
|
180
|
+
║ - Planner: cuando haya 3+ equipos ║
|
|
181
|
+
║ - Executor: cuando un modulo sea bottleneck ║
|
|
182
|
+
║ ║
|
|
183
|
+
║ Action items sugeridos: ║
|
|
184
|
+
║ 1. Definir domain boundaries ║
|
|
185
|
+
║ 2. Crear interface contracts entre modulos ║
|
|
186
|
+
║ 3. Setup integration test framework ║
|
|
187
|
+
║ ║
|
|
188
|
+
╚══════════════════════════════════════════════════════╝
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Paso 5: Documentacion
|
|
192
|
+
|
|
193
|
+
Genera `.planning/PARTY-{topic-slug}-SUMMARY.md` usando template.
|
|
194
|
+
|
|
195
|
+
## Implementacion Tecnica
|
|
196
|
+
|
|
197
|
+
```javascript
|
|
198
|
+
// Single-Agent Simulation (v1)
|
|
199
|
+
// Un solo agente cambia de personalidad por iteracion
|
|
200
|
+
|
|
201
|
+
const topic = inputs.topic;
|
|
202
|
+
const agents = selectAgentsByRelevance(topic); // Top 3
|
|
203
|
+
const rounds = inputs.rounds || 3;
|
|
204
|
+
|
|
205
|
+
for (let round = 1; round <= rounds; round++) {
|
|
206
|
+
for (const agent of agents) {
|
|
207
|
+
const response = generateResponse({
|
|
208
|
+
personality: agent.personality,
|
|
209
|
+
topic: topic,
|
|
210
|
+
round: round,
|
|
211
|
+
previousResponses: history,
|
|
212
|
+
instruction: round === 1
|
|
213
|
+
? "Da tu perspectiva inicial sobre el tema"
|
|
214
|
+
: "Reacciona a lo que dijeron los otros agentes"
|
|
215
|
+
});
|
|
216
|
+
history.push({ agent: agent.name, round, response });
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Sintetizar
|
|
221
|
+
const summary = synthesize(history);
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Opciones
|
|
225
|
+
|
|
226
|
+
| Opcion | Default | Descripcion |
|
|
227
|
+
|--------|---------|-------------|
|
|
228
|
+
| `--agents` | auto | Agentes especificos (separados por coma) |
|
|
229
|
+
| `--rounds` | 3 | Numero de rounds de deliberacion |
|
|
230
|
+
| `--focus` | general | Enfocar discusion: risks, approach, scope, architecture |
|
|
231
|
+
| `--save` | true | Guardar resumen en .planning/ |
|
|
232
|
+
|
|
233
|
+
<siguiente_paso>
|
|
234
|
+
## Siguiente Paso
|
|
235
|
+
|
|
236
|
+
Al completar el party mode, establecer en state.json:
|
|
237
|
+
```javascript
|
|
238
|
+
state.context = state.context || {};
|
|
239
|
+
state.context.party_summary = summaryPath;
|
|
240
|
+
state.context.party_consensus = consensusPoints;
|
|
241
|
+
state.context.party_debates = openDebates;
|
|
242
|
+
state.suggested_next = "discuss-phase";
|
|
243
|
+
Write(".elsabro/state.json", JSON.stringify(state, null, 2));
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
Mostrar al usuario:
|
|
247
|
+
```
|
|
248
|
+
## Siguiente Paso
|
|
249
|
+
|
|
250
|
+
→ /elsabro:discuss-phase — profundizar en los puntos de debate
|
|
251
|
+
→ /elsabro:plan — planificar basado en el consenso alcanzado
|
|
252
|
+
```
|
|
253
|
+
</siguiente_paso>
|
|
@@ -53,6 +53,7 @@ Cambiar rápidamente el perfil de comportamiento de ELSABRO. Los perfiles son pr
|
|
|
53
53
|
/elsabro:set-profile yolo
|
|
54
54
|
/elsabro:set-profile careful
|
|
55
55
|
/elsabro:set-profile default
|
|
56
|
+
/elsabro:set-profile bmad
|
|
56
57
|
```
|
|
57
58
|
|
|
58
59
|
## Perfiles Disponibles
|
|
@@ -125,6 +126,36 @@ Ideal para:
|
|
|
125
126
|
|
|
126
127
|
---
|
|
127
128
|
|
|
129
|
+
### 📋 BMAD (Spec-Driven)
|
|
130
|
+
|
|
131
|
+
Desarrollo guiado por especificaciones formales (PRD → Manifest → Solution → Implementation).
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
Settings:
|
|
135
|
+
- auto-commit: false
|
|
136
|
+
- auto-tests: true
|
|
137
|
+
- require-tests: true
|
|
138
|
+
- parallel-agents: true
|
|
139
|
+
- verbosity: verbose
|
|
140
|
+
- default-flow: bmad
|
|
141
|
+
- extra: require-prd, require-manifest, require-solution, spec-compliance-review
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
Ideal para:
|
|
145
|
+
- Proyectos con múltiples stakeholders
|
|
146
|
+
- Requisitos complejos que necesitan trazabilidad
|
|
147
|
+
- Equipos que quieren documentación formal antes de implementar
|
|
148
|
+
- Desarrollo con acceptance criteria verificables
|
|
149
|
+
|
|
150
|
+
Fase BMAD:
|
|
151
|
+
```
|
|
152
|
+
Analysis → Planning → Solutioning → Implementation
|
|
153
|
+
↓ ↓ ↓ ↓
|
|
154
|
+
PRD.md PLAN.md SOLUTION.md Código + Tests
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
128
159
|
### 🎓 Beginner (Learning)
|
|
129
160
|
|
|
130
161
|
Explicaciones detalladas, guía paso a paso.
|
|
@@ -193,16 +193,16 @@ AskUserQuestion({
|
|
|
193
193
|
multiSelect: false
|
|
194
194
|
},
|
|
195
195
|
{
|
|
196
|
-
question: "¿Quieres que ELSABRO use múltiples agentes
|
|
197
|
-
header: "
|
|
196
|
+
question: "¿Quieres que ELSABRO use Agent Teams (múltiples agentes coordinados) para trabajar más rápido?",
|
|
197
|
+
header: "Agent Teams",
|
|
198
198
|
options: [
|
|
199
199
|
{
|
|
200
|
-
label: "Sí (Recomendado)",
|
|
201
|
-
description: "ELSABRO
|
|
200
|
+
label: "Sí con Agent Teams (Recomendado)",
|
|
201
|
+
description: "ELSABRO crea equipos de 2-4 agentes que se coordinan entre sí (TeamCreate + SendMessage). Se comunican, comparten progreso, y trabajan en paralelo. Es como tener un equipo de desarrolladores. Más rápido pero usa más recursos del API."
|
|
202
202
|
},
|
|
203
203
|
{
|
|
204
|
-
label: "No",
|
|
205
|
-
description: "Un solo agente
|
|
204
|
+
label: "No, un agente a la vez",
|
|
205
|
+
description: "Un solo agente secuencial. Más lento pero más predecible y usa menos recursos. Útil si tienes límites de API o prefieres control total."
|
|
206
206
|
}
|
|
207
207
|
],
|
|
208
208
|
multiSelect: false
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "development_flow",
|
|
3
3
|
"name": "Standard Development Flow",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "5.0.0",
|
|
5
5
|
"description": "Workflow completo para desarrollar features con quality gates",
|
|
6
6
|
|
|
7
7
|
"config": {
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"inputs": {
|
|
16
16
|
"task": { "type": "string", "required": true, "description": "Descripción de la tarea" },
|
|
17
17
|
"complexity": { "type": "enum", "values": ["low", "medium", "high"], "default": "medium" },
|
|
18
|
-
"profile": { "type": "enum", "values": ["default", "yolo", "careful", "teams"], "default": "default" }
|
|
18
|
+
"profile": { "type": "enum", "values": ["default", "yolo", "careful", "teams", "bmad"], "default": "default" }
|
|
19
19
|
},
|
|
20
20
|
|
|
21
21
|
"outputs": {
|
|
@@ -91,6 +91,7 @@
|
|
|
91
91
|
"yolo": "yolo_execute",
|
|
92
92
|
"careful": "careful_analyze",
|
|
93
93
|
"teams": "teams_spawn",
|
|
94
|
+
"bmad": "bmad_analyze",
|
|
94
95
|
"default": "standard_analyze"
|
|
95
96
|
},
|
|
96
97
|
"default": "standard_analyze"
|
|
@@ -236,6 +237,140 @@
|
|
|
236
237
|
}
|
|
237
238
|
},
|
|
238
239
|
|
|
240
|
+
{
|
|
241
|
+
"id": "bmad_analyze",
|
|
242
|
+
"type": "sequence",
|
|
243
|
+
"description": "BMAD Phase 1: Analysis - Generate PRD and Architecture overview",
|
|
244
|
+
"steps": [
|
|
245
|
+
{
|
|
246
|
+
"agent": "elsabro-analyst",
|
|
247
|
+
"as": "prd",
|
|
248
|
+
"model": "opus",
|
|
249
|
+
"inputs": {
|
|
250
|
+
"command": "[PRD]",
|
|
251
|
+
"task": "{{inputs.task}}",
|
|
252
|
+
"brief": "{{state.briefContent || ''}}",
|
|
253
|
+
"template": "templates/PRD.md.template"
|
|
254
|
+
}
|
|
255
|
+
},
|
|
256
|
+
{
|
|
257
|
+
"agent": "elsabro-planner",
|
|
258
|
+
"as": "architecture",
|
|
259
|
+
"model": "opus",
|
|
260
|
+
"inputs": {
|
|
261
|
+
"task": "Create architecture overview for: {{inputs.task}}",
|
|
262
|
+
"prd": "{{steps.prd.output}}"
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
],
|
|
266
|
+
"outputs": {
|
|
267
|
+
"prd": "{{steps.prd.output}}",
|
|
268
|
+
"architecture": "{{steps.architecture.output}}"
|
|
269
|
+
},
|
|
270
|
+
"next": "interrupt_prd_approval"
|
|
271
|
+
},
|
|
272
|
+
|
|
273
|
+
{
|
|
274
|
+
"id": "interrupt_prd_approval",
|
|
275
|
+
"type": "interrupt",
|
|
276
|
+
"reason": "PRD and Architecture require human approval before planning",
|
|
277
|
+
"display": {
|
|
278
|
+
"title": "PRD Review (BMAD)",
|
|
279
|
+
"content": "Se ha generado el PRD con user stories y el documento de arquitectura. Revisa los artifacts antes de continuar.",
|
|
280
|
+
"artifacts": [".planning/PRD.md", ".planning/ARCHITECTURE.md"],
|
|
281
|
+
"options": [
|
|
282
|
+
{ "id": "approve", "label": "Aprobar PRD y continuar" },
|
|
283
|
+
{ "id": "modify", "label": "Modificar PRD" },
|
|
284
|
+
{ "id": "reject", "label": "Cancelar" }
|
|
285
|
+
]
|
|
286
|
+
},
|
|
287
|
+
"routes": {
|
|
288
|
+
"approve": "bmad_plan",
|
|
289
|
+
"modify": "bmad_analyze",
|
|
290
|
+
"reject": "end_cancelled"
|
|
291
|
+
}
|
|
292
|
+
},
|
|
293
|
+
|
|
294
|
+
{
|
|
295
|
+
"id": "bmad_plan",
|
|
296
|
+
"type": "sequence",
|
|
297
|
+
"description": "BMAD Phase 2: Planning - Break PRD into stories + human Control Manifest",
|
|
298
|
+
"steps": [
|
|
299
|
+
{
|
|
300
|
+
"agent": "elsabro-analyst",
|
|
301
|
+
"as": "stories",
|
|
302
|
+
"model": "opus",
|
|
303
|
+
"inputs": {
|
|
304
|
+
"task": "Break approved PRD into prioritized epics and stories with acceptance criteria",
|
|
305
|
+
"prd": "{{nodes.bmad_analyze.outputs.prd}}"
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
],
|
|
309
|
+
"outputs": {
|
|
310
|
+
"stories": "{{steps.stories.output}}"
|
|
311
|
+
},
|
|
312
|
+
"next": "interrupt_manifest"
|
|
313
|
+
},
|
|
314
|
+
|
|
315
|
+
{
|
|
316
|
+
"id": "interrupt_manifest",
|
|
317
|
+
"type": "interrupt",
|
|
318
|
+
"reason": "Control Manifest needed - human defines constraints before code generation",
|
|
319
|
+
"display": {
|
|
320
|
+
"title": "Control Manifest (BMAD)",
|
|
321
|
+
"content": "Antes de generar codigo, define tus constraints en el Control Manifest. Esto establece los guardarrailes que los agentes DEBEN respetar.",
|
|
322
|
+
"template": "templates/CONTROL-MANIFEST.md.template",
|
|
323
|
+
"options": [
|
|
324
|
+
{ "id": "auto", "label": "Generar automaticamente basado en PRD y tech stack" },
|
|
325
|
+
{ "id": "manual", "label": "Lo creo yo manualmente" }
|
|
326
|
+
]
|
|
327
|
+
},
|
|
328
|
+
"routes": {
|
|
329
|
+
"auto": "bmad_solution",
|
|
330
|
+
"manual": "bmad_solution"
|
|
331
|
+
}
|
|
332
|
+
},
|
|
333
|
+
|
|
334
|
+
{
|
|
335
|
+
"id": "bmad_solution",
|
|
336
|
+
"type": "agent",
|
|
337
|
+
"description": "BMAD Phase 3: Solutioning - Technical design per story with ADRs",
|
|
338
|
+
"agent": "elsabro-planner",
|
|
339
|
+
"config": { "model": "opus", "timeout": 600000 },
|
|
340
|
+
"inputs": {
|
|
341
|
+
"command": "[SOL]",
|
|
342
|
+
"prd": "{{nodes.bmad_analyze.outputs.prd}}",
|
|
343
|
+
"stories": "{{nodes.bmad_plan.outputs.stories}}",
|
|
344
|
+
"architecture": "{{nodes.bmad_analyze.outputs.architecture}}",
|
|
345
|
+
"task": "{{inputs.task}}"
|
|
346
|
+
},
|
|
347
|
+
"outputs": {
|
|
348
|
+
"solution": "{{output}}"
|
|
349
|
+
},
|
|
350
|
+
"next": "interrupt_solution_approval"
|
|
351
|
+
},
|
|
352
|
+
|
|
353
|
+
{
|
|
354
|
+
"id": "interrupt_solution_approval",
|
|
355
|
+
"type": "interrupt",
|
|
356
|
+
"reason": "Solution design requires approval before implementation starts",
|
|
357
|
+
"display": {
|
|
358
|
+
"title": "Solution Review (BMAD)",
|
|
359
|
+
"content": "Se ha disenado la solucion tecnica para cada story con ADRs y compliance check contra el Control Manifest. Revisa antes de implementar.",
|
|
360
|
+
"artifacts": [".planning/SOLUTION.md"],
|
|
361
|
+
"options": [
|
|
362
|
+
{ "id": "approve", "label": "Aprobar solucion y comenzar implementacion" },
|
|
363
|
+
{ "id": "modify", "label": "Modificar diseno" },
|
|
364
|
+
{ "id": "reject", "label": "Cancelar" }
|
|
365
|
+
]
|
|
366
|
+
},
|
|
367
|
+
"routes": {
|
|
368
|
+
"approve": "parallel_implementation",
|
|
369
|
+
"modify": "bmad_solution",
|
|
370
|
+
"reject": "end_cancelled"
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
|
|
239
374
|
{
|
|
240
375
|
"id": "standard_analyze",
|
|
241
376
|
"type": "parallel",
|
|
@@ -298,7 +433,7 @@
|
|
|
298
433
|
"config": { "model": "opus", "timeout": 900000 },
|
|
299
434
|
"inputs": {
|
|
300
435
|
"task": "{{inputs.task}}",
|
|
301
|
-
"plan": "{{nodes.merge_analysis.outputs.plan || nodes.careful_analyze.outputs.detailed_plan}}",
|
|
436
|
+
"plan": "{{nodes.merge_analysis.outputs.plan || nodes.careful_analyze.outputs.detailed_plan || nodes.bmad_solution.outputs.solution}}",
|
|
302
437
|
"patterns": "{{state.patterns}}",
|
|
303
438
|
"mistakes": "{{state.mistakes}}"
|
|
304
439
|
}
|
|
@@ -309,7 +444,7 @@
|
|
|
309
444
|
"config": { "model": "opus", "timeout": 600000 },
|
|
310
445
|
"inputs": {
|
|
311
446
|
"task": "Crear tests para: {{inputs.task}}",
|
|
312
|
-
"plan": "{{nodes.merge_analysis.outputs.plan || nodes.careful_analyze.outputs.detailed_plan}}"
|
|
447
|
+
"plan": "{{nodes.merge_analysis.outputs.plan || nodes.careful_analyze.outputs.detailed_plan || nodes.bmad_solution.outputs.solution}}"
|
|
313
448
|
}
|
|
314
449
|
}
|
|
315
450
|
],
|
|
@@ -156,6 +156,22 @@
|
|
|
156
156
|
"agent-teams": true,
|
|
157
157
|
"blocking-review": true,
|
|
158
158
|
"max-review-iterations": 5
|
|
159
|
+
},
|
|
160
|
+
|
|
161
|
+
"bmad": {
|
|
162
|
+
"description": "Perfil BMAD - Spec-Driven Development con PRD, Control Manifest y Solution Design",
|
|
163
|
+
"auto-test-on-edit": true,
|
|
164
|
+
"lint-on-save": true,
|
|
165
|
+
"confirm-destructive": true,
|
|
166
|
+
"skill-discovery": true,
|
|
167
|
+
"agent-teams": true,
|
|
168
|
+
"blocking-review": true,
|
|
169
|
+
"max-review-iterations": 5,
|
|
170
|
+
"require-prd": true,
|
|
171
|
+
"require-manifest": true,
|
|
172
|
+
"require-solution": true,
|
|
173
|
+
"spec-compliance-review": true,
|
|
174
|
+
"bmad-phases": ["analysis", "planning", "solutioning", "implementation"]
|
|
159
175
|
}
|
|
160
176
|
},
|
|
161
177
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "elsabro",
|
|
3
|
-
"version": "
|
|
4
|
-
"description": "Sistema de desarrollo AI-powered para Claude Code - Next Step Suggestions, Stitch UI Design, Agent Teams, blocking code review, orquestación avanzada con
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "Sistema de desarrollo AI-powered para Claude Code - BMAD Method Integration, Spec-Driven Development, Party Mode, Next Step Suggestions, Stitch UI Design, Agent Teams, blocking code review, orquestación avanzada con flows declarativos",
|
|
5
5
|
"bin": {
|
|
6
6
|
"elsabro": "bin/install.js"
|
|
7
7
|
},
|
|
@@ -238,6 +238,44 @@ Task({ subagent_type: "pr-review-toolkit:silent-failure-hunter", prompt: "..." }
|
|
|
238
238
|
|
|
239
239
|
---
|
|
240
240
|
|
|
241
|
+
### 9. Spec Compliance OBLIGATORIO en Perfil BMAD
|
|
242
|
+
|
|
243
|
+
**PROHIBIDO** (cuando profile=bmad): Ejecutar implementación sin que existan y estén aprobados los 3 artefactos de spec:
|
|
244
|
+
1. PRD.md (aprobado por usuario)
|
|
245
|
+
2. CONTROL-MANIFEST.md (firmado por usuario)
|
|
246
|
+
3. SOLUTION.md (aprobado por usuario)
|
|
247
|
+
|
|
248
|
+
**OBLIGATORIO**: Verificar que los 3 artefactos existen antes de pasar a implementación.
|
|
249
|
+
|
|
250
|
+
**Secuencia BMAD:**
|
|
251
|
+
```
|
|
252
|
+
1. Analysis: Generar PRD → interrupt → aprobación usuario
|
|
253
|
+
2. Planning: Generar Control Manifest → interrupt → aprobación usuario
|
|
254
|
+
3. Solutioning: Generar Solution Design → interrupt → aprobación usuario
|
|
255
|
+
4. Implementation: SOLO si los 3 están aprobados
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
**Aplica a**: Cualquier ejecución bajo profile `bmad` en el flow engine.
|
|
259
|
+
|
|
260
|
+
**Ejemplo correcto:**
|
|
261
|
+
```javascript
|
|
262
|
+
// Verificar artefactos BMAD antes de implementar
|
|
263
|
+
if (state.context?.bmad_phase === "implementation") {
|
|
264
|
+
assert(state.context.prd_approved, "PRD must be approved");
|
|
265
|
+
assert(state.context.manifest_approved, "Manifest must be approved");
|
|
266
|
+
assert(state.context.solution_approved, "Solution must be approved");
|
|
267
|
+
}
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**Ejemplo INCORRECTO:**
|
|
271
|
+
```javascript
|
|
272
|
+
// VIOLACIÓN: Saltar a implementación sin Solution aprobado
|
|
273
|
+
state.context.bmad_phase = "implementation";
|
|
274
|
+
// ← Sin verificar artefactos
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
---
|
|
278
|
+
|
|
241
279
|
## MATRIZ DE COMANDOS
|
|
242
280
|
|
|
243
281
|
### Comandos Core (Workflow Principal)
|
|
@@ -60,6 +60,15 @@ Al final de cada `<process>`, mostrar:
|
|
|
60
60
|
| progress | context-dependent | → /elsabro:execute — continuar trabajo activo | → /elsabro:check-todos — revisar pendientes |
|
|
61
61
|
| exit | "resume-work" | → /elsabro:resume-work — cuando vuelvas | |
|
|
62
62
|
|
|
63
|
+
### BMAD Profile Commands
|
|
64
|
+
|
|
65
|
+
| Comando (BMAD) | suggested_next | Sugerencia Primaria | Alternativa |
|
|
66
|
+
|----------------|---------------|---------------------|-------------|
|
|
67
|
+
| bmad_analyze | "bmad_plan" | → Aprobar PRD y continuar a Planning | → Revisar/editar PRD antes de avanzar |
|
|
68
|
+
| bmad_plan | "bmad_solution" | → Aprobar Manifest y continuar a Solutioning | → Editar Control Manifest |
|
|
69
|
+
| bmad_solution | "execute" | → Aprobar Solution y ejecutar implementación | → Revisar Solution Design |
|
|
70
|
+
| party | "discuss-phase" | → /elsabro:discuss-phase — discutir hallazgos | → /elsabro:plan — planificar basado en discusión |
|
|
71
|
+
|
|
63
72
|
## Contextual Overrides
|
|
64
73
|
|
|
65
74
|
The suggested_next can be overridden based on context:
|
package/references/state-sync.md
CHANGED
|
@@ -134,6 +134,11 @@ Fases: initializing → diagnosing → fixing → verifying → done
|
|
|
134
134
|
Fases: initializing → executing → done
|
|
135
135
|
```
|
|
136
136
|
|
|
137
|
+
### BMAD Flow (profile=bmad)
|
|
138
|
+
```
|
|
139
|
+
Fases: bmad_analyze → prd_approval → bmad_plan → manifest_approval → bmad_solution → solution_approval → implementation → done
|
|
140
|
+
```
|
|
141
|
+
|
|
137
142
|
---
|
|
138
143
|
|
|
139
144
|
## CONTEXTO QUE CADA COMANDO DEBE PASAR
|
|
@@ -194,6 +199,46 @@ Fases: initializing → executing → done
|
|
|
194
199
|
}
|
|
195
200
|
```
|
|
196
201
|
|
|
202
|
+
### BMAD Flow Context Fields
|
|
203
|
+
|
|
204
|
+
#### bmad_analyze → bmad_plan
|
|
205
|
+
```json
|
|
206
|
+
{
|
|
207
|
+
"bmad_phase": "planning",
|
|
208
|
+
"prd_file": ".planning/PRD.md",
|
|
209
|
+
"prd_approved": true,
|
|
210
|
+
"architecture_overview": "resumen de arquitectura",
|
|
211
|
+
"user_stories_count": 5,
|
|
212
|
+
"acceptance_criteria_count": 12
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
#### bmad_plan → bmad_solution
|
|
217
|
+
```json
|
|
218
|
+
{
|
|
219
|
+
"bmad_phase": "solutioning",
|
|
220
|
+
"prd_file": ".planning/PRD.md",
|
|
221
|
+
"manifest_file": ".planning/CONTROL-MANIFEST.md",
|
|
222
|
+
"manifest_approved": true,
|
|
223
|
+
"tech_constraints": ["constraint1", "constraint2"],
|
|
224
|
+
"plan_file": ".planning/01-01-PLAN.md"
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
#### bmad_solution → execute
|
|
229
|
+
```json
|
|
230
|
+
{
|
|
231
|
+
"bmad_phase": "implementation",
|
|
232
|
+
"prd_file": ".planning/PRD.md",
|
|
233
|
+
"manifest_file": ".planning/CONTROL-MANIFEST.md",
|
|
234
|
+
"solution_file": ".planning/SOLUTION.md",
|
|
235
|
+
"solution_approved": true,
|
|
236
|
+
"stories_to_implement": ["story1", "story2"],
|
|
237
|
+
"adrs": ["ADR-001", "ADR-002"],
|
|
238
|
+
"ready_for_execution": true
|
|
239
|
+
}
|
|
240
|
+
```
|
|
241
|
+
|
|
197
242
|
---
|
|
198
243
|
|
|
199
244
|
## TRANSICIONES VÁLIDAS
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Control Manifest: {{feature_name}}
|
|
2
|
+
|
|
3
|
+
> This document is created by the HUMAN before AI agents generate code.
|
|
4
|
+
> It serves as guardrails that agents MUST respect during implementation.
|
|
5
|
+
> Generated by ELSABRO (BMAD Profile) | Date: {{date}}
|
|
6
|
+
|
|
7
|
+
## Technology Constraints
|
|
8
|
+
|
|
9
|
+
| Category | Constraint | Reason |
|
|
10
|
+
|----------|-----------|--------|
|
|
11
|
+
| Language | {{e.g., TypeScript strict mode}} | {{reason}} |
|
|
12
|
+
| Framework | {{e.g., Next.js 15 App Router}} | {{reason}} |
|
|
13
|
+
| Database | {{e.g., PostgreSQL via Prisma}} | {{reason}} |
|
|
14
|
+
| Auth | {{e.g., Clerk}} | {{reason}} |
|
|
15
|
+
| Styling | {{e.g., Tailwind CSS}} | {{reason}} |
|
|
16
|
+
|
|
17
|
+
## Architecture Boundaries
|
|
18
|
+
|
|
19
|
+
### MUST (mandatory patterns)
|
|
20
|
+
- {{pattern that must be followed}}
|
|
21
|
+
- {{pattern that must be followed}}
|
|
22
|
+
|
|
23
|
+
### MUST NOT (forbidden patterns)
|
|
24
|
+
- {{pattern that is forbidden}}
|
|
25
|
+
- {{pattern that is forbidden}}
|
|
26
|
+
|
|
27
|
+
### PREFER (recommended but not mandatory)
|
|
28
|
+
- {{preferred pattern}}
|
|
29
|
+
- {{preferred pattern}}
|
|
30
|
+
|
|
31
|
+
## Performance Constraints
|
|
32
|
+
|
|
33
|
+
| Metric | Target | Measurement |
|
|
34
|
+
|--------|--------|-------------|
|
|
35
|
+
| Page Load | < {{X}}s | Lighthouse |
|
|
36
|
+
| API Response | < {{X}}ms | p95 latency |
|
|
37
|
+
| Bundle Size | < {{X}} KB | webpack-bundle-analyzer |
|
|
38
|
+
| Memory | < {{X}} MB | Chrome DevTools |
|
|
39
|
+
|
|
40
|
+
## Coding Standards
|
|
41
|
+
|
|
42
|
+
| Area | Standard |
|
|
43
|
+
|------|----------|
|
|
44
|
+
| Testing | {{e.g., Vitest, min 80% coverage}} |
|
|
45
|
+
| Linting | {{e.g., ESLint strict + Prettier}} |
|
|
46
|
+
| Naming (files) | {{e.g., kebab-case}} |
|
|
47
|
+
| Naming (components) | {{e.g., PascalCase}} |
|
|
48
|
+
| Naming (functions) | {{e.g., camelCase}} |
|
|
49
|
+
| Commits | {{e.g., Conventional Commits}} |
|
|
50
|
+
|
|
51
|
+
## Security Requirements
|
|
52
|
+
|
|
53
|
+
- [ ] Input validation on all user inputs
|
|
54
|
+
- [ ] SQL injection prevention (parameterized queries only)
|
|
55
|
+
- [ ] XSS prevention (sanitized output)
|
|
56
|
+
- [ ] CSRF protection
|
|
57
|
+
- [ ] Rate limiting on public endpoints
|
|
58
|
+
- [ ] {{custom_requirement}}
|
|
59
|
+
|
|
60
|
+
## Dependency Policy
|
|
61
|
+
|
|
62
|
+
### Pre-Approved
|
|
63
|
+
{{list of packages that can be used freely}}
|
|
64
|
+
|
|
65
|
+
### Forbidden
|
|
66
|
+
{{packages that must NOT be used, with reason}}
|
|
67
|
+
|
|
68
|
+
### Requires Human Approval
|
|
69
|
+
{{packages that need explicit OK before adding}}
|
|
70
|
+
|
|
71
|
+
## File Structure Conventions
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
{{expected file/folder structure}}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Signed By
|
|
78
|
+
|
|
79
|
+
- **Human:** _______________
|
|
80
|
+
- **Date:** {{date}}
|
|
81
|
+
- **Scope:** {{what this manifest covers}}
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
> Agents: If you cannot comply with any constraint above, you MUST stop
|
|
86
|
+
> and report the conflict. Do NOT silently bypass constraints.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# Party Mode Summary: {{topic}}
|
|
2
|
+
|
|
3
|
+
> Generated by ELSABRO Party Mode
|
|
4
|
+
> Date: {{date}}
|
|
5
|
+
> Rounds: {{rounds}}
|
|
6
|
+
|
|
7
|
+
## Participants
|
|
8
|
+
|
|
9
|
+
| Agent | Perspective | Key Contribution |
|
|
10
|
+
|-------|------------|------------------|
|
|
11
|
+
| {{agent_1_name}} | {{agent_1_perspective}} | {{agent_1_key_point}} |
|
|
12
|
+
| {{agent_2_name}} | {{agent_2_perspective}} | {{agent_2_key_point}} |
|
|
13
|
+
| {{agent_3_name}} | {{agent_3_perspective}} | {{agent_3_key_point}} |
|
|
14
|
+
|
|
15
|
+
## Discussion Rounds
|
|
16
|
+
|
|
17
|
+
### Round 1: Initial Perspectives
|
|
18
|
+
|
|
19
|
+
**{{agent_1_name}}:**
|
|
20
|
+
{{agent_1_round1}}
|
|
21
|
+
|
|
22
|
+
**{{agent_2_name}}:**
|
|
23
|
+
{{agent_2_round1}}
|
|
24
|
+
|
|
25
|
+
**{{agent_3_name}}:**
|
|
26
|
+
{{agent_3_round1}}
|
|
27
|
+
|
|
28
|
+
### Round 2: Reactions
|
|
29
|
+
|
|
30
|
+
{{round_2_content}}
|
|
31
|
+
|
|
32
|
+
### Round 3: Convergence
|
|
33
|
+
|
|
34
|
+
{{round_3_content}}
|
|
35
|
+
|
|
36
|
+
## Consensus Points
|
|
37
|
+
|
|
38
|
+
Items where all participants agreed:
|
|
39
|
+
|
|
40
|
+
- {{consensus_1}}
|
|
41
|
+
- {{consensus_2}}
|
|
42
|
+
- {{consensus_3}}
|
|
43
|
+
|
|
44
|
+
## Open Debates
|
|
45
|
+
|
|
46
|
+
Items where participants disagreed or need more discussion:
|
|
47
|
+
|
|
48
|
+
| Topic | Position A | Position B | Suggested Resolution |
|
|
49
|
+
|-------|-----------|-----------|---------------------|
|
|
50
|
+
| {{debate_1_topic}} | {{debate_1_pos_a}} | {{debate_1_pos_b}} | {{debate_1_resolution}} |
|
|
51
|
+
|
|
52
|
+
## Action Items
|
|
53
|
+
|
|
54
|
+
Suggested next steps based on the discussion:
|
|
55
|
+
|
|
56
|
+
- [ ] {{action_1}}
|
|
57
|
+
- [ ] {{action_2}}
|
|
58
|
+
- [ ] {{action_3}}
|
|
59
|
+
|
|
60
|
+
## Key Insights
|
|
61
|
+
|
|
62
|
+
Notable observations that emerged during deliberation:
|
|
63
|
+
|
|
64
|
+
1. {{insight_1}}
|
|
65
|
+
2. {{insight_2}}
|
|
66
|
+
|
|
67
|
+
## Relevance to Current Project
|
|
68
|
+
|
|
69
|
+
{{project_relevance}}
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
> Use `/elsabro:discuss-phase` to deep-dive into any open debate
|
|
74
|
+
> Use `/elsabro:plan` to turn consensus into an executable plan
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# PRD: {{project_name}}
|
|
2
|
+
|
|
3
|
+
> Generated by ELSABRO Analyst (BMAD Profile)
|
|
4
|
+
> Version: 1.0 | Date: {{date}}
|
|
5
|
+
|
|
6
|
+
## 1. Problem Statement
|
|
7
|
+
|
|
8
|
+
{{one_sentence_problem}}
|
|
9
|
+
|
|
10
|
+
## 2. Target Users
|
|
11
|
+
|
|
12
|
+
| Persona | Description | Primary Need | Pain Point |
|
|
13
|
+
|---------|-------------|-------------|------------|
|
|
14
|
+
| {{persona_1}} | {{desc}} | {{need}} | {{pain}} |
|
|
15
|
+
| {{persona_2}} | {{desc}} | {{need}} | {{pain}} |
|
|
16
|
+
|
|
17
|
+
## 3. User Stories
|
|
18
|
+
|
|
19
|
+
### Epic: {{epic_name}}
|
|
20
|
+
|
|
21
|
+
#### Story {{N}}: {{story_title}}
|
|
22
|
+
|
|
23
|
+
**As a** {{persona}},
|
|
24
|
+
**I want to** {{action}},
|
|
25
|
+
**So that** {{benefit}}.
|
|
26
|
+
|
|
27
|
+
**Acceptance Criteria:**
|
|
28
|
+
- [ ] **Given** {{context}}, **when** {{action}}, **then** {{expected_result}}
|
|
29
|
+
- [ ] **Given** {{context}}, **when** {{action}}, **then** {{expected_result}}
|
|
30
|
+
|
|
31
|
+
**Priority:** P0 | P1 | P2
|
|
32
|
+
**Complexity:** Low | Medium | High
|
|
33
|
+
**Dependencies:** {{list or "None"}}
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 4. Non-Functional Requirements
|
|
38
|
+
|
|
39
|
+
### Performance
|
|
40
|
+
- {{perf_criteria}}
|
|
41
|
+
|
|
42
|
+
### Security
|
|
43
|
+
- {{security_criteria}}
|
|
44
|
+
|
|
45
|
+
### Accessibility
|
|
46
|
+
- {{a11y_criteria}}
|
|
47
|
+
|
|
48
|
+
### Scalability
|
|
49
|
+
- {{scale_criteria}}
|
|
50
|
+
|
|
51
|
+
## 5. Out of Scope
|
|
52
|
+
|
|
53
|
+
> Explicitly listing what this PRD does NOT cover prevents scope creep.
|
|
54
|
+
|
|
55
|
+
- {{explicit_exclusion_1}}
|
|
56
|
+
- {{explicit_exclusion_2}}
|
|
57
|
+
- {{explicit_exclusion_3}}
|
|
58
|
+
|
|
59
|
+
## 6. Success Metrics
|
|
60
|
+
|
|
61
|
+
| Metric | Target | How to Measure |
|
|
62
|
+
|--------|--------|----------------|
|
|
63
|
+
| {{metric_1}} | {{target}} | {{measurement}} |
|
|
64
|
+
| {{metric_2}} | {{target}} | {{measurement}} |
|
|
65
|
+
|
|
66
|
+
## 7. Technical Constraints
|
|
67
|
+
|
|
68
|
+
> These constraints come from the Control Manifest (if available).
|
|
69
|
+
|
|
70
|
+
- Language: {{language}}
|
|
71
|
+
- Framework: {{framework}}
|
|
72
|
+
- Database: {{database}}
|
|
73
|
+
|
|
74
|
+
## 8. Open Questions
|
|
75
|
+
|
|
76
|
+
- [ ] {{question_1}}
|
|
77
|
+
- [ ] {{question_2}}
|
|
78
|
+
|
|
79
|
+
## 9. Revision History
|
|
80
|
+
|
|
81
|
+
| Version | Date | Author | Changes |
|
|
82
|
+
|---------|------|--------|---------|
|
|
83
|
+
| 1.0 | {{date}} | ELSABRO Analyst | Initial PRD |
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Solution Design: {{feature_name}}
|
|
2
|
+
|
|
3
|
+
> Generated by ELSABRO Planner (BMAD Profile)
|
|
4
|
+
> PRD Reference: {{prd_path}}
|
|
5
|
+
> Control Manifest: {{manifest_path}}
|
|
6
|
+
> Date: {{date}}
|
|
7
|
+
|
|
8
|
+
## Architecture Decisions
|
|
9
|
+
|
|
10
|
+
### ADR-001: {{decision_title}}
|
|
11
|
+
|
|
12
|
+
- **Status:** Proposed | Accepted | Deprecated
|
|
13
|
+
- **Context:** {{why this decision is needed}}
|
|
14
|
+
- **Decision:** {{what was decided}}
|
|
15
|
+
- **Alternatives Considered:**
|
|
16
|
+
1. {{alternative_1}} — rejected because {{reason}}
|
|
17
|
+
2. {{alternative_2}} — rejected because {{reason}}
|
|
18
|
+
- **Consequences:** {{positive and negative impact of this decision}}
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Implementation Plan per Story
|
|
23
|
+
|
|
24
|
+
### Story: {{story_title}}
|
|
25
|
+
|
|
26
|
+
**PRD Reference:** Section {{N}}, Story {{M}}
|
|
27
|
+
**Priority:** {{priority}}
|
|
28
|
+
|
|
29
|
+
**Technical Approach:**
|
|
30
|
+
- Files to create: {{list}}
|
|
31
|
+
- Files to modify: {{list}}
|
|
32
|
+
- Dependencies needed: {{list}}
|
|
33
|
+
|
|
34
|
+
**Implementation Steps:**
|
|
35
|
+
1. {{step_1}}
|
|
36
|
+
2. {{step_2}}
|
|
37
|
+
3. {{step_3}}
|
|
38
|
+
|
|
39
|
+
**Verification:**
|
|
40
|
+
```bash
|
|
41
|
+
{{command to verify this story works}}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Acceptance Criteria Mapping:**
|
|
45
|
+
| AC from PRD | Implementation | Test |
|
|
46
|
+
|-------------|---------------|------|
|
|
47
|
+
| Given X, When Y, Then Z | {{how it's implemented}} | {{test file/case}} |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Data Flow
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
{{user_action}}
|
|
55
|
+
→ {{frontend_component}}
|
|
56
|
+
→ {{api_endpoint}}
|
|
57
|
+
→ {{service_layer}}
|
|
58
|
+
→ {{database}}
|
|
59
|
+
← {{response}}
|
|
60
|
+
← {{rendered_result}}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## API Contracts (if applicable)
|
|
64
|
+
|
|
65
|
+
### {{endpoint_name}}
|
|
66
|
+
```
|
|
67
|
+
{{METHOD}} /api/{{path}}
|
|
68
|
+
|
|
69
|
+
Request:
|
|
70
|
+
Headers: {{required_headers}}
|
|
71
|
+
Body: {
|
|
72
|
+
{{field}}: {{type}} // {{description}}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
Response (200):
|
|
76
|
+
{
|
|
77
|
+
{{field}}: {{type}}
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
Response (4xx/5xx):
|
|
81
|
+
{
|
|
82
|
+
error: string,
|
|
83
|
+
code: string
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Database Changes (if applicable)
|
|
88
|
+
|
|
89
|
+
### New Tables/Collections
|
|
90
|
+
```sql
|
|
91
|
+
{{schema changes}}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Migrations
|
|
95
|
+
- {{migration_description}}
|
|
96
|
+
|
|
97
|
+
## Compliance with Control Manifest
|
|
98
|
+
|
|
99
|
+
| Constraint | Status | Implementation Notes |
|
|
100
|
+
|-----------|--------|---------------------|
|
|
101
|
+
| {{constraint_1}} | Compliant | {{how it complies}} |
|
|
102
|
+
| {{constraint_2}} | Compliant | {{how it complies}} |
|
|
103
|
+
| {{constraint_3}} | BLOCKED | {{why it can't comply + proposed alternative}} |
|
|
104
|
+
|
|
105
|
+
## Risk Assessment
|
|
106
|
+
|
|
107
|
+
| Risk | Probability | Impact | Mitigation |
|
|
108
|
+
|------|------------|--------|------------|
|
|
109
|
+
| {{risk_1}} | Low/Med/High | Low/Med/High | {{mitigation}} |
|
|
110
|
+
|
|
111
|
+
## Estimated Effort
|
|
112
|
+
|
|
113
|
+
| Story | Complexity | Estimated Waves |
|
|
114
|
+
|-------|-----------|----------------|
|
|
115
|
+
| {{story_1}} | {{low/med/high}} | Wave {{N}} |
|
|
116
|
+
| {{story_2}} | {{low/med/high}} | Wave {{N}} |
|
|
117
|
+
|
|
118
|
+
## Revision History
|
|
119
|
+
|
|
120
|
+
| Version | Date | Author | Changes |
|
|
121
|
+
|---------|------|--------|---------|
|
|
122
|
+
| 1.0 | {{date}} | ELSABRO Planner | Initial solution design |
|