agileflow 2.93.0 → 2.94.1
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/CHANGELOG.md +10 -0
- package/README.md +6 -6
- package/package.json +1 -1
- package/scripts/agileflow-welcome.js +6 -9
- package/scripts/claude-tmux.sh +76 -3
- package/scripts/session-manager.js +68 -14
- package/scripts/spawn-parallel.js +14 -2
- package/src/core/agents/council-advocate.md +202 -0
- package/src/core/agents/council-analyst.md +248 -0
- package/src/core/agents/council-optimist.md +166 -0
- package/src/core/commands/council.md +517 -0
- package/src/core/commands/help.md +189 -3
- package/src/core/commands/ideate.md +145 -20
- package/src/core/commands/session/end.md +74 -0
- package/src/core/council/sessions/.gitkeep +0 -0
- package/src/core/council/shared_reasoning.template.md +106 -0
- package/tools/cli/lib/content-injector.js +4 -2
|
@@ -0,0 +1,517 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Convene AI Council for strategic decisions with three perspectives (Optimist, Advocate, Analyst)
|
|
3
|
+
argument-hint: <question> [--mode parallel|debate] [--rounds N]
|
|
4
|
+
compact_context:
|
|
5
|
+
priority: high
|
|
6
|
+
preserve_rules:
|
|
7
|
+
- "ACTIVE COMMAND: /agileflow:council - AI Council for strategic decisions"
|
|
8
|
+
- "CRITICAL: Deploy ALL 3 council agents in SINGLE message with parallel Task calls"
|
|
9
|
+
- "MUST wait for all agents via TaskOutput with block=true before synthesis"
|
|
10
|
+
- "Council members: council-optimist, council-advocate, council-analyst"
|
|
11
|
+
- "Modes: parallel (default, single round) or debate (multi-round deliberation)"
|
|
12
|
+
- "Session folder: .agileflow/council/sessions/{timestamp}/"
|
|
13
|
+
state_fields:
|
|
14
|
+
- session_id
|
|
15
|
+
- question
|
|
16
|
+
- mode
|
|
17
|
+
- rounds
|
|
18
|
+
- council_results
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# /agileflow:council
|
|
22
|
+
|
|
23
|
+
Convene an AI Council for strategic decisions. Three perspectives (Optimist, Devil's Advocate, Neutral Analyst) deliberate in parallel to provide balanced, high-quality recommendations.
|
|
24
|
+
|
|
25
|
+
<!-- COMPACT_SUMMARY_START -->
|
|
26
|
+
## Compact Summary
|
|
27
|
+
|
|
28
|
+
**Command**: `/agileflow:council` - Deploy 3-perspective AI Council for strategic decisions
|
|
29
|
+
|
|
30
|
+
**Magic Phrases**: "agents gather", "council assemble", "convene the council"
|
|
31
|
+
|
|
32
|
+
**Quick Usage**:
|
|
33
|
+
```
|
|
34
|
+
/agileflow:council Should we adopt microservices architecture?
|
|
35
|
+
/agileflow:council --mode debate --rounds 2 Is GraphQL better than REST for our API?
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**Council Members**:
|
|
39
|
+
| Role | Agent | Focus |
|
|
40
|
+
|------|-------|-------|
|
|
41
|
+
| Optimist Strategist | council-optimist | Best-case scenarios, opportunities, success pathways |
|
|
42
|
+
| Devil's Advocate | council-advocate | Risks, blind spots, stress-testing assumptions |
|
|
43
|
+
| Neutral Analyst | council-analyst | Trade-offs, evidence synthesis, decision criteria |
|
|
44
|
+
|
|
45
|
+
**Modes**:
|
|
46
|
+
- **parallel** (default): All 3 agents deliberate once, then synthesize
|
|
47
|
+
- **debate**: Multiple rounds where agents respond to each other's perspectives
|
|
48
|
+
|
|
49
|
+
**Critical Rules**:
|
|
50
|
+
- Deploy ALL 3 agents in ONE message with multiple Task calls (not sequential)
|
|
51
|
+
- Wait for all results before synthesis (use TaskOutput with block=true)
|
|
52
|
+
- Create session folder in `.agileflow/council/sessions/{timestamp}/`
|
|
53
|
+
- Write perspectives to `shared_reasoning.md` in session folder
|
|
54
|
+
|
|
55
|
+
**Output Structure**:
|
|
56
|
+
```markdown
|
|
57
|
+
## AI Council Deliberation: [Question]
|
|
58
|
+
|
|
59
|
+
### Perspectives
|
|
60
|
+
- Optimist: [summary]
|
|
61
|
+
- Advocate: [summary]
|
|
62
|
+
- Analyst: [summary]
|
|
63
|
+
|
|
64
|
+
### Synthesis
|
|
65
|
+
- Common Ground: [what all agree on]
|
|
66
|
+
- Key Tensions: [where they differ]
|
|
67
|
+
- Recommendation: [decision with confidence]
|
|
68
|
+
|
|
69
|
+
### Next Steps
|
|
70
|
+
1. [action]
|
|
71
|
+
2. [action]
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
<!-- COMPACT_SUMMARY_END -->
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## When to Use
|
|
79
|
+
|
|
80
|
+
The AI Council is designed for **strategic, non-technical decisions** where balanced perspectives matter:
|
|
81
|
+
|
|
82
|
+
- **Architecture decisions**: "Should we adopt microservices?"
|
|
83
|
+
- **Technology choices**: "GraphQL vs REST for our API?"
|
|
84
|
+
- **Process decisions**: "Should we implement feature flags?"
|
|
85
|
+
- **Business tradeoffs**: "Build vs buy for this feature?"
|
|
86
|
+
- **Strategy questions**: "Should we prioritize mobile or web?"
|
|
87
|
+
|
|
88
|
+
**NOT for**:
|
|
89
|
+
- Code implementation (use domain experts)
|
|
90
|
+
- Simple questions with clear answers
|
|
91
|
+
- Tasks requiring codebase changes
|
|
92
|
+
- Research tasks (use `/agileflow:research:ask`)
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## How It Works
|
|
97
|
+
|
|
98
|
+
```
|
|
99
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
100
|
+
│ USER QUESTION │
|
|
101
|
+
│ "Should we adopt microservices?" │
|
|
102
|
+
└─────────────────────────────────────────────────────────────┘
|
|
103
|
+
│
|
|
104
|
+
▼
|
|
105
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
106
|
+
│ COUNCIL ORCHESTRATOR │
|
|
107
|
+
│ 1. Create session: .agileflow/council/sessions/{ts}/ │
|
|
108
|
+
│ 2. Initialize shared_reasoning.md from template │
|
|
109
|
+
│ 3. Log to bus: {"type":"council","event":"init"} │
|
|
110
|
+
│ 4. Deploy 3 agents IN PARALLEL │
|
|
111
|
+
└─────────────────────────────────────────────────────────────┘
|
|
112
|
+
│
|
|
113
|
+
┌───────────────┼───────────────┐
|
|
114
|
+
▼ ▼ ▼
|
|
115
|
+
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
|
|
116
|
+
│ OPTIMIST │ │ ADVOCATE │ │ ANALYST │
|
|
117
|
+
│ STRATEGIST │ │ (Devil's Adv) │ │ (Neutral) │
|
|
118
|
+
├───────────────┤ ├───────────────┤ ├───────────────┤
|
|
119
|
+
│ Opportunities │ │ Risks │ │ Trade-offs │
|
|
120
|
+
│ Success paths │ │ Blind spots │ │ Evidence │
|
|
121
|
+
│ Enablers │ │ Stress tests │ │ Criteria │
|
|
122
|
+
│ Best case │ │ Mitigations │ │ Synthesis │
|
|
123
|
+
└───────────────┘ └───────────────┘ └───────────────┘
|
|
124
|
+
│ │ │
|
|
125
|
+
└───────────────┼───────────────┘
|
|
126
|
+
▼
|
|
127
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
128
|
+
│ SYNTHESIS │
|
|
129
|
+
│ • Common Ground (all 3 agree) = HIGH CONFIDENCE │
|
|
130
|
+
│ • Optimist Unique = OPPORTUNITIES │
|
|
131
|
+
│ • Advocate Unique = RISKS TO MONITOR │
|
|
132
|
+
│ • Analyst Assessment = RECOMMENDATION │
|
|
133
|
+
└─────────────────────────────────────────────────────────────┘
|
|
134
|
+
│
|
|
135
|
+
▼
|
|
136
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
137
|
+
│ FINAL OUTPUT │
|
|
138
|
+
│ 📊 Confidence: High/Medium/Low │
|
|
139
|
+
│ ✅ Common Ground (all agree) │
|
|
140
|
+
│ 🚀 Opportunities (optimist) │
|
|
141
|
+
│ ⚠️ Risks (advocate) │
|
|
142
|
+
│ 📋 Recommendation (analyst) │
|
|
143
|
+
│ 📌 Next Steps │
|
|
144
|
+
└─────────────────────────────────────────────────────────────┘
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Usage
|
|
150
|
+
|
|
151
|
+
### Basic (Parallel Mode)
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
/agileflow:council Should we adopt microservices architecture?
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
All 3 council members deliberate once in parallel, then results are synthesized.
|
|
158
|
+
|
|
159
|
+
### Debate Mode
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
/agileflow:council --mode debate --rounds 2 Should we use GraphQL?
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Multiple rounds where council members can respond to each other's perspectives:
|
|
166
|
+
1. Round 1: Initial perspectives
|
|
167
|
+
2. Round 2: Responses and rebuttals
|
|
168
|
+
3. Final synthesis
|
|
169
|
+
|
|
170
|
+
### Magic Phrases
|
|
171
|
+
|
|
172
|
+
You can also invoke the council with natural language:
|
|
173
|
+
- "agents gather" + question
|
|
174
|
+
- "council assemble" + question
|
|
175
|
+
- "convene the council" + question
|
|
176
|
+
|
|
177
|
+
Example: "Agents gather - should we implement feature flags?"
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Arguments
|
|
182
|
+
|
|
183
|
+
| Argument | Default | Description |
|
|
184
|
+
|----------|---------|-------------|
|
|
185
|
+
| `<question>` | (required) | The strategic question to deliberate |
|
|
186
|
+
| `--mode` | `parallel` | Deliberation mode: `parallel` or `debate` |
|
|
187
|
+
| `--rounds` | `1` | Number of rounds for debate mode (1-3) |
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Orchestration Instructions
|
|
192
|
+
|
|
193
|
+
When this command is invoked:
|
|
194
|
+
|
|
195
|
+
### STEP 1: Create Session
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
# Create session folder with timestamp
|
|
199
|
+
SESSION_ID=$(date +%Y%m%d-%H%M%S)
|
|
200
|
+
mkdir -p .agileflow/council/sessions/$SESSION_ID
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Initialize `shared_reasoning.md` from template:
|
|
204
|
+
- Replace `{{session_id}}` with timestamp
|
|
205
|
+
- Replace `{{question}}` with user question
|
|
206
|
+
- Replace `{{mode}}` with parallel or debate
|
|
207
|
+
- Replace `{{rounds}}` with number
|
|
208
|
+
|
|
209
|
+
### STEP 2: Log to Bus
|
|
210
|
+
|
|
211
|
+
Append to `docs/09-agents/bus/log.jsonl`:
|
|
212
|
+
```jsonl
|
|
213
|
+
{"ts":"<ISO>","type":"council","event":"init","session_id":"<SESSION_ID>","question":"<QUESTION>","mode":"<MODE>"}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### STEP 3: Deploy Council (CRITICAL - PARALLEL)
|
|
217
|
+
|
|
218
|
+
Deploy ALL 3 agents in a SINGLE message with multiple Task calls:
|
|
219
|
+
|
|
220
|
+
```xml
|
|
221
|
+
<invoke name="Task">
|
|
222
|
+
<parameter name="description">Council Optimist perspective</parameter>
|
|
223
|
+
<parameter name="prompt">
|
|
224
|
+
You are the Optimist Strategist in an AI Council deliberation.
|
|
225
|
+
|
|
226
|
+
SESSION: .agileflow/council/sessions/{SESSION_ID}/
|
|
227
|
+
QUESTION: {QUESTION}
|
|
228
|
+
|
|
229
|
+
Read your agent definition first:
|
|
230
|
+
- .agileflow/agents/council-optimist.md
|
|
231
|
+
|
|
232
|
+
Then write your perspective to:
|
|
233
|
+
- .agileflow/council/sessions/{SESSION_ID}/shared_reasoning.md
|
|
234
|
+
|
|
235
|
+
Focus on:
|
|
236
|
+
1. Key opportunities (at least 3)
|
|
237
|
+
2. Success pathways
|
|
238
|
+
3. Enablers in the codebase
|
|
239
|
+
4. Addressing anticipated concerns
|
|
240
|
+
|
|
241
|
+
Ground all optimism in evidence.
|
|
242
|
+
</parameter>
|
|
243
|
+
<parameter name="subagent_type">agileflow-council-optimist</parameter>
|
|
244
|
+
<parameter name="run_in_background">true</parameter>
|
|
245
|
+
</invoke>
|
|
246
|
+
|
|
247
|
+
<invoke name="Task">
|
|
248
|
+
<parameter name="description">Council Advocate perspective</parameter>
|
|
249
|
+
<parameter name="prompt">
|
|
250
|
+
You are the Devil's Advocate in an AI Council deliberation.
|
|
251
|
+
|
|
252
|
+
SESSION: .agileflow/council/sessions/{SESSION_ID}/
|
|
253
|
+
QUESTION: {QUESTION}
|
|
254
|
+
|
|
255
|
+
Read your agent definition first:
|
|
256
|
+
- .agileflow/agents/council-advocate.md
|
|
257
|
+
|
|
258
|
+
Then write your perspective to:
|
|
259
|
+
- .agileflow/council/sessions/{SESSION_ID}/shared_reasoning.md
|
|
260
|
+
|
|
261
|
+
Focus on:
|
|
262
|
+
1. Key risks (at least 3 with mitigations)
|
|
263
|
+
2. Blind spots and assumptions
|
|
264
|
+
3. Stress tests and edge cases
|
|
265
|
+
4. Alternative approaches
|
|
266
|
+
|
|
267
|
+
Be constructive - offer solutions, not just criticism.
|
|
268
|
+
</parameter>
|
|
269
|
+
<parameter name="subagent_type">agileflow-council-advocate</parameter>
|
|
270
|
+
<parameter name="run_in_background">true</parameter>
|
|
271
|
+
</invoke>
|
|
272
|
+
|
|
273
|
+
<invoke name="Task">
|
|
274
|
+
<parameter name="description">Council Analyst perspective</parameter>
|
|
275
|
+
<parameter name="prompt">
|
|
276
|
+
You are the Neutral Analyst in an AI Council deliberation.
|
|
277
|
+
|
|
278
|
+
SESSION: .agileflow/council/sessions/{SESSION_ID}/
|
|
279
|
+
QUESTION: {QUESTION}
|
|
280
|
+
|
|
281
|
+
Read your agent definition first:
|
|
282
|
+
- .agileflow/agents/council-analyst.md
|
|
283
|
+
|
|
284
|
+
Then write your perspective to:
|
|
285
|
+
- .agileflow/council/sessions/{SESSION_ID}/shared_reasoning.md
|
|
286
|
+
|
|
287
|
+
Focus on:
|
|
288
|
+
1. Evidence summary (for and against)
|
|
289
|
+
2. Trade-off analysis with quantification
|
|
290
|
+
3. Decision criteria
|
|
291
|
+
4. Synthesis and recommendation
|
|
292
|
+
|
|
293
|
+
Be objective - follow the evidence.
|
|
294
|
+
</parameter>
|
|
295
|
+
<parameter name="subagent_type">agileflow-council-analyst</parameter>
|
|
296
|
+
<parameter name="run_in_background">true</parameter>
|
|
297
|
+
</invoke>
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
### STEP 4: Collect Results
|
|
301
|
+
|
|
302
|
+
Wait for all 3 agents to complete:
|
|
303
|
+
|
|
304
|
+
```xml
|
|
305
|
+
<invoke name="TaskOutput">
|
|
306
|
+
<parameter name="task_id">{optimist_task_id}</parameter>
|
|
307
|
+
<parameter name="block">true</parameter>
|
|
308
|
+
</invoke>
|
|
309
|
+
|
|
310
|
+
<invoke name="TaskOutput">
|
|
311
|
+
<parameter name="task_id">{advocate_task_id}</parameter>
|
|
312
|
+
<parameter name="block">true</parameter>
|
|
313
|
+
</invoke>
|
|
314
|
+
|
|
315
|
+
<invoke name="TaskOutput">
|
|
316
|
+
<parameter name="task_id">{analyst_task_id}</parameter>
|
|
317
|
+
<parameter name="block">true</parameter>
|
|
318
|
+
</invoke>
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
### STEP 5: Debate Mode (If Applicable)
|
|
322
|
+
|
|
323
|
+
If mode is `debate` and rounds > 1, for each additional round:
|
|
324
|
+
|
|
325
|
+
1. Log round start: `{"type":"council","event":"debate_round","round":N}`
|
|
326
|
+
2. Have each agent read others' perspectives and respond
|
|
327
|
+
3. Collect updated responses
|
|
328
|
+
4. Repeat for specified rounds
|
|
329
|
+
|
|
330
|
+
### STEP 6: Synthesize
|
|
331
|
+
|
|
332
|
+
Read the complete `shared_reasoning.md` and create final synthesis:
|
|
333
|
+
|
|
334
|
+
1. **Common Ground**: Points where all 3 agree (HIGH CONFIDENCE)
|
|
335
|
+
2. **Opportunities**: Unique insights from Optimist
|
|
336
|
+
3. **Risks**: Unique insights from Advocate
|
|
337
|
+
4. **Trade-offs**: Assessment from Analyst
|
|
338
|
+
5. **Recommendation**: Final decision with confidence level
|
|
339
|
+
6. **Next Steps**: Actionable items
|
|
340
|
+
|
|
341
|
+
### STEP 7: Log Completion
|
|
342
|
+
|
|
343
|
+
```jsonl
|
|
344
|
+
{"ts":"<ISO>","type":"council","event":"synthesis_complete","session_id":"<SESSION_ID>","confidence":"<HIGH|MEDIUM|LOW>"}
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### STEP 8: Offer Next Steps
|
|
348
|
+
|
|
349
|
+
After presenting synthesis, offer:
|
|
350
|
+
- `/agileflow:adr` - Create an ADR documenting this decision
|
|
351
|
+
- `/agileflow:epic` - Create an epic to implement the decision
|
|
352
|
+
- `/agileflow:story` - Create stories for immediate actions
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## Output Format
|
|
357
|
+
|
|
358
|
+
```markdown
|
|
359
|
+
## AI Council Deliberation
|
|
360
|
+
|
|
361
|
+
**Question**: [Original question]
|
|
362
|
+
**Session**: [Session ID]
|
|
363
|
+
**Mode**: [parallel/debate]
|
|
364
|
+
|
|
365
|
+
---
|
|
366
|
+
|
|
367
|
+
### Council Perspectives
|
|
368
|
+
|
|
369
|
+
#### Optimist Strategist
|
|
370
|
+
**Summary**: [1-2 sentence summary]
|
|
371
|
+
|
|
372
|
+
**Key Opportunities**:
|
|
373
|
+
1. [Opportunity] - Evidence: [source]
|
|
374
|
+
2. [Opportunity] - Evidence: [source]
|
|
375
|
+
3. [Opportunity] - Evidence: [source]
|
|
376
|
+
|
|
377
|
+
**Success Pathway**: [Brief description]
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
#### Devil's Advocate
|
|
382
|
+
**Summary**: [1-2 sentence summary]
|
|
383
|
+
|
|
384
|
+
**Key Risks**:
|
|
385
|
+
1. [Risk] - Mitigation: [approach]
|
|
386
|
+
2. [Risk] - Mitigation: [approach]
|
|
387
|
+
3. [Risk] - Mitigation: [approach]
|
|
388
|
+
|
|
389
|
+
**Stress Tests**: [Key scenarios tested]
|
|
390
|
+
|
|
391
|
+
---
|
|
392
|
+
|
|
393
|
+
#### Neutral Analyst
|
|
394
|
+
**Summary**: [1-2 sentence summary]
|
|
395
|
+
|
|
396
|
+
**Trade-offs**:
|
|
397
|
+
| Factor | For | Against | Weight |
|
|
398
|
+
|--------|-----|---------|--------|
|
|
399
|
+
| [Factor] | [Pro] | [Con] | [H/M/L] |
|
|
400
|
+
|
|
401
|
+
**Decision Criteria**: [Key factors]
|
|
402
|
+
|
|
403
|
+
---
|
|
404
|
+
|
|
405
|
+
### Synthesis
|
|
406
|
+
|
|
407
|
+
#### Common Ground (High Confidence)
|
|
408
|
+
*All 3 council members agree:*
|
|
409
|
+
- [Point 1]
|
|
410
|
+
- [Point 2]
|
|
411
|
+
|
|
412
|
+
#### Opportunities (Optimist Unique)
|
|
413
|
+
- [Opportunity not covered by others]
|
|
414
|
+
|
|
415
|
+
#### Risks to Monitor (Advocate Unique)
|
|
416
|
+
- [Risk that needs attention]
|
|
417
|
+
|
|
418
|
+
#### Key Trade-offs
|
|
419
|
+
- [Trade-off 1]: [Assessment]
|
|
420
|
+
- [Trade-off 2]: [Assessment]
|
|
421
|
+
|
|
422
|
+
---
|
|
423
|
+
|
|
424
|
+
### Recommendation
|
|
425
|
+
|
|
426
|
+
**Decision**: [Clear recommendation]
|
|
427
|
+
**Confidence**: [High/Medium/Low]
|
|
428
|
+
|
|
429
|
+
**Rationale**:
|
|
430
|
+
1. [Key reason 1]
|
|
431
|
+
2. [Key reason 2]
|
|
432
|
+
3. [Key reason 3]
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
### Next Steps
|
|
437
|
+
|
|
438
|
+
1. [Immediate action]
|
|
439
|
+
2. [Follow-up action]
|
|
440
|
+
3. [Validation action]
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
### Session Files
|
|
445
|
+
|
|
446
|
+
- Session: `.agileflow/council/sessions/[SESSION_ID]/`
|
|
447
|
+
- Full deliberation: `shared_reasoning.md`
|
|
448
|
+
|
|
449
|
+
---
|
|
450
|
+
|
|
451
|
+
**Want to document this decision?** Run `/agileflow:adr` to create an Architecture Decision Record.
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
## Why Three Perspectives?
|
|
457
|
+
|
|
458
|
+
| Perspective | Purpose | Counterbalances |
|
|
459
|
+
|-------------|---------|-----------------|
|
|
460
|
+
| **Optimist** | Ensures opportunities aren't missed | Claude's risk aversion |
|
|
461
|
+
| **Advocate** | Prevents groupthink and blind spots | Claude's "yes person" tendency |
|
|
462
|
+
| **Analyst** | Grounds decision in evidence | Emotional or biased reasoning |
|
|
463
|
+
|
|
464
|
+
Together, they produce balanced, high-quality recommendations.
|
|
465
|
+
|
|
466
|
+
---
|
|
467
|
+
|
|
468
|
+
## Benefits
|
|
469
|
+
|
|
470
|
+
1. **Context Quality**: Each agent runs with fresh context (avoids 40-50% degradation)
|
|
471
|
+
2. **Balanced Perspectives**: Forces consideration of multiple viewpoints
|
|
472
|
+
3. **Transparency**: `shared_reasoning.md` provides audit trail
|
|
473
|
+
4. **Non-Technical Decisions**: Fills gap - domain experts handle code, council handles strategy
|
|
474
|
+
5. **Debate Mode**: Deeper analysis through multiple rounds
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
## Related Commands
|
|
479
|
+
|
|
480
|
+
- `/agileflow:choose` - Single-perspective decision making
|
|
481
|
+
- `/agileflow:multi-expert` - Domain expert analysis (technical)
|
|
482
|
+
- `/agileflow:adr` - Document architectural decisions
|
|
483
|
+
- `/agileflow:research:ask` - Research before deciding
|
|
484
|
+
- `/agileflow:rpi` - Research-Plan-Implement workflow
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
## Examples
|
|
489
|
+
|
|
490
|
+
### Example 1: Architecture Decision
|
|
491
|
+
|
|
492
|
+
```
|
|
493
|
+
/agileflow:council Should we migrate from monolith to microservices?
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
The council will analyze:
|
|
497
|
+
- **Optimist**: Scalability benefits, team autonomy, deployment flexibility
|
|
498
|
+
- **Advocate**: Complexity increase, distributed systems challenges, team readiness
|
|
499
|
+
- **Analyst**: Current pain points, team capacity, incremental migration options
|
|
500
|
+
|
|
501
|
+
### Example 2: Technology Choice
|
|
502
|
+
|
|
503
|
+
```
|
|
504
|
+
/agileflow:council --mode debate --rounds 2 GraphQL vs REST for our public API?
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
Round 1: Initial perspectives
|
|
508
|
+
Round 2: Respond to each other's arguments
|
|
509
|
+
Final: Synthesized recommendation with confidence
|
|
510
|
+
|
|
511
|
+
### Example 3: Process Decision
|
|
512
|
+
|
|
513
|
+
```
|
|
514
|
+
/agileflow:council Should we adopt trunk-based development?
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
The council evaluates from three angles to provide balanced guidance.
|