agileflow 2.33.1 β 2.35.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/LICENSE +22 -0
- package/README.md +536 -0
- package/package.json +1 -1
- package/src/core/agents/adr-writer.md +3 -19
- package/src/core/agents/api.md +9 -43
- package/src/core/agents/ci.md +8 -40
- package/src/core/agents/configuration/archival.md +301 -0
- package/src/core/agents/configuration/attribution.md +318 -0
- package/src/core/agents/configuration/ci.md +1077 -0
- package/src/core/agents/configuration/git-config.md +511 -0
- package/src/core/agents/configuration/hooks.md +507 -0
- package/src/core/agents/configuration/verify.md +540 -0
- package/src/core/agents/devops.md +7 -35
- package/src/core/agents/documentation.md +0 -1
- package/src/core/agents/epic-planner.md +3 -22
- package/src/core/agents/mentor.md +8 -24
- package/src/core/agents/research.md +0 -7
- package/src/core/agents/security.md +0 -5
- package/src/core/agents/ui.md +8 -42
- package/src/core/commands/PATTERNS-AskUserQuestion.md +474 -0
- package/src/core/commands/adr.md +5 -0
- package/src/core/commands/agent.md +4 -0
- package/src/core/commands/assign.md +1 -0
- package/src/core/commands/auto.md +1 -1
- package/src/core/commands/babysit.md +147 -31
- package/src/core/commands/baseline.md +7 -0
- package/src/core/commands/blockers.md +2 -0
- package/src/core/commands/board.md +9 -0
- package/src/core/commands/configure.md +415 -0
- package/src/core/commands/context.md +1 -0
- package/src/core/commands/deps.md +2 -0
- package/src/core/commands/diagnose.md +0 -41
- package/src/core/commands/epic.md +8 -0
- package/src/core/commands/handoff.md +4 -0
- package/src/core/commands/impact.md +1 -1
- package/src/core/commands/metrics.md +10 -0
- package/src/core/commands/research.md +3 -0
- package/src/core/commands/retro.md +11 -1
- package/src/core/commands/sprint.md +2 -1
- package/src/core/commands/status.md +1 -0
- package/src/core/commands/story-validate.md +1 -1
- package/src/core/commands/story.md +29 -2
- package/src/core/commands/template.md +8 -0
- package/src/core/commands/update.md +1 -1
- package/src/core/commands/velocity.md +9 -0
- package/src/core/commands/verify.md +6 -0
- package/src/core/templates/validate-tokens.sh +0 -15
- package/src/core/templates/worktrees-guide.md +0 -4
- package/tools/agileflow-npx.js +21 -9
- package/tools/cli/commands/config.js +284 -0
- package/tools/cli/commands/doctor.js +221 -4
- package/tools/cli/commands/setup.js +4 -1
- package/tools/cli/commands/update.js +59 -15
- package/tools/cli/installers/core/installer.js +369 -37
- package/tools/cli/installers/ide/claude-code.js +1 -1
- package/tools/cli/installers/ide/cursor.js +1 -1
- package/tools/cli/installers/ide/windsurf.js +1 -1
- package/tools/cli/lib/docs-setup.js +52 -28
- package/tools/cli/lib/npm-utils.js +62 -0
- package/tools/cli/lib/ui.js +9 -2
- package/tools/postinstall.js +71 -13
- package/src/core/agents/context7.md +0 -164
- package/src/core/commands/setup.md +0 -708
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
# AskUserQuestion Tool - Usage Patterns & Best Practices
|
|
2
|
+
|
|
3
|
+
This document provides reusable patterns for using the AskUserQuestion tool across all AgileFlow commands.
|
|
4
|
+
|
|
5
|
+
## Core Format
|
|
6
|
+
|
|
7
|
+
```xml
|
|
8
|
+
<invoke name="AskUserQuestion">
|
|
9
|
+
<parameter name="questions">[{
|
|
10
|
+
"question": "Your question text here",
|
|
11
|
+
"header": "Short label (max 12 chars)",
|
|
12
|
+
"multiSelect": false,
|
|
13
|
+
"options": [
|
|
14
|
+
{"label": "Option 1", "description": "Detailed description of option 1"},
|
|
15
|
+
{"label": "Option 2", "description": "Detailed description of option 2"}
|
|
16
|
+
]
|
|
17
|
+
}]</parameter>
|
|
18
|
+
</invoke>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Key Principles
|
|
22
|
+
|
|
23
|
+
### 1. Always Include Recommendations
|
|
24
|
+
Mark the recommended option and explain WHY it's recommended:
|
|
25
|
+
- Bad: `"label": "Yes"`
|
|
26
|
+
- Good: `"label": "Yes, create workflow", "description": "Write .github/workflows/ci.yml (Recommended - standard team setup)"`
|
|
27
|
+
|
|
28
|
+
### 2. Be Specific in Labels
|
|
29
|
+
- Bad: `"Continue?"` or `"Yes/No"`
|
|
30
|
+
- Good: `"Yes, create story"` or `"Skip this step"`
|
|
31
|
+
|
|
32
|
+
### 3. Provide Context in Descriptions
|
|
33
|
+
- Bad: `"description": "Proceed with action"`
|
|
34
|
+
- Good: `"description": "Write 3 files, update status.json, run tests (Recommended - follows Definition of Ready)"`
|
|
35
|
+
|
|
36
|
+
### 4. Give Users Control
|
|
37
|
+
Always offer 3 options minimum:
|
|
38
|
+
- Recommended action (with reason)
|
|
39
|
+
- Alternative approach
|
|
40
|
+
- Skip/Cancel/Pause
|
|
41
|
+
|
|
42
|
+
### 5. Headers Must Be β€12 Characters
|
|
43
|
+
- Bad: `"header": "Create new story"`
|
|
44
|
+
- Good: `"header": "Create"`
|
|
45
|
+
|
|
46
|
+
## Common Patterns
|
|
47
|
+
|
|
48
|
+
### Pattern 1: YES/NO Confirmation (File Operations)
|
|
49
|
+
|
|
50
|
+
**Old Way:**
|
|
51
|
+
```
|
|
52
|
+
Show diff. Proceed? (YES/NO)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**New Way:**
|
|
56
|
+
```xml
|
|
57
|
+
<invoke name="AskUserQuestion">
|
|
58
|
+
<parameter name="questions">[{
|
|
59
|
+
"question": "Apply these changes to [filename]?",
|
|
60
|
+
"header": "Confirm",
|
|
61
|
+
"multiSelect": false,
|
|
62
|
+
"options": [
|
|
63
|
+
{
|
|
64
|
+
"label": "Yes, apply changes",
|
|
65
|
+
"description": "Write the shown diff to the file (Recommended - changes look good)"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"label": "No, revise first",
|
|
69
|
+
"description": "I want to modify the changes before applying"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"label": "Skip this file",
|
|
73
|
+
"description": "Skip this change and move to next step"
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}]</parameter>
|
|
77
|
+
</invoke>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Pattern 2: YES/NO Confirmation (Command Execution)
|
|
81
|
+
|
|
82
|
+
**Old Way:**
|
|
83
|
+
```
|
|
84
|
+
Run command: npm test
|
|
85
|
+
Proceed? (YES/NO)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**New Way:**
|
|
89
|
+
```xml
|
|
90
|
+
<invoke name="AskUserQuestion">
|
|
91
|
+
<parameter name="questions">[{
|
|
92
|
+
"question": "Run this command: [command]?",
|
|
93
|
+
"header": "Run cmd",
|
|
94
|
+
"multiSelect": false,
|
|
95
|
+
"options": [
|
|
96
|
+
{
|
|
97
|
+
"label": "Yes, run it",
|
|
98
|
+
"description": "Execute the command as shown (Recommended - safe operation)"
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
"label": "No, modify first",
|
|
102
|
+
"description": "I want to adjust the command"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"label": "Skip",
|
|
106
|
+
"description": "Don't run this command"
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}]</parameter>
|
|
110
|
+
</invoke>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Pattern 3: Next Action Confirmation
|
|
114
|
+
|
|
115
|
+
**Old Way:**
|
|
116
|
+
```
|
|
117
|
+
Next action I can take β Create story US-0042
|
|
118
|
+
Proceed? (YES/NO)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**New Way:**
|
|
122
|
+
```xml
|
|
123
|
+
<invoke name="AskUserQuestion">
|
|
124
|
+
<parameter name="questions">[{
|
|
125
|
+
"question": "Next action: Create US-0042 with AC from requirements. Proceed?",
|
|
126
|
+
"header": "Next step",
|
|
127
|
+
"multiSelect": false,
|
|
128
|
+
"options": [
|
|
129
|
+
{
|
|
130
|
+
"label": "Yes, proceed",
|
|
131
|
+
"description": "Create story file, test stub, update status.json (Recommended - story is READY)"
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
"label": "No, different approach",
|
|
135
|
+
"description": "I want to adjust the plan or take a different direction"
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
"label": "Pause here",
|
|
139
|
+
"description": "Stop here - I'll review and come back later"
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}]</parameter>
|
|
143
|
+
</invoke>
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Pattern 4: Multiple Choice Selection
|
|
147
|
+
|
|
148
|
+
**Old Way:**
|
|
149
|
+
```
|
|
150
|
+
Select CI provider:
|
|
151
|
+
1. GitHub Actions
|
|
152
|
+
2. GitLab CI
|
|
153
|
+
3. CircleCI
|
|
154
|
+
|
|
155
|
+
Your choice (1-3):
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**New Way:**
|
|
159
|
+
```xml
|
|
160
|
+
<invoke name="AskUserQuestion">
|
|
161
|
+
<parameter name="questions">[{
|
|
162
|
+
"question": "Which CI/CD provider would you like to configure?",
|
|
163
|
+
"header": "CI Provider",
|
|
164
|
+
"multiSelect": false,
|
|
165
|
+
"options": [
|
|
166
|
+
{
|
|
167
|
+
"label": "GitHub Actions",
|
|
168
|
+
"description": "Best for GitHub repos - free for public, 2000 min/month private (Recommended)"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"label": "GitLab CI",
|
|
172
|
+
"description": "Best for GitLab repos - unlimited minutes, powerful pipelines"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"label": "CircleCI",
|
|
176
|
+
"description": "Universal platform - works with any Git provider"
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"label": "Skip CI setup",
|
|
180
|
+
"description": "Configure CI later"
|
|
181
|
+
}
|
|
182
|
+
]
|
|
183
|
+
}]</parameter>
|
|
184
|
+
</invoke>
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Pattern 5: Intelligent Recommendations (from analysis)
|
|
188
|
+
|
|
189
|
+
Use this when presenting options based on project analysis:
|
|
190
|
+
|
|
191
|
+
```xml
|
|
192
|
+
<invoke name="AskUserQuestion">
|
|
193
|
+
<parameter name="questions">[{
|
|
194
|
+
"question": "What would you like to work on?",
|
|
195
|
+
"header": "Choose task",
|
|
196
|
+
"multiSelect": false,
|
|
197
|
+
"options": [
|
|
198
|
+
{
|
|
199
|
+
"label": "US-0042: User Login API (READY) β",
|
|
200
|
+
"description": "β
Ready to implement | Epic: Auth | Priority: High | Unblocks 3 stories"
|
|
201
|
+
},
|
|
202
|
+
{
|
|
203
|
+
"label": "US-0038: Password Reset (Blocked)",
|
|
204
|
+
"description": "β οΈ Needs US-0042 first | Clear unblock path"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"label": "EP-0005: Payment (80% done)",
|
|
208
|
+
"description": "π― Near complete | 4/5 stories done | Finish strong"
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
"label": "Research: JWT practices",
|
|
212
|
+
"description": "π Prep for Auth epic | Avoid debugging pain"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"label": "Other",
|
|
216
|
+
"description": "Custom input"
|
|
217
|
+
}
|
|
218
|
+
]
|
|
219
|
+
}]</parameter>
|
|
220
|
+
</invoke>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
**Key Elements**:
|
|
224
|
+
- **Visual markers**: β for READY, β οΈ for blocked, π― for near-complete
|
|
225
|
+
- **Status indicators**: READY, Blocked, % completion
|
|
226
|
+
- **Impact/reason**: "Unblocks 3 stories", "Avoid debugging pain"
|
|
227
|
+
- **Always recommend based on logic**: READY > Unblock > Near-complete > Research > New
|
|
228
|
+
|
|
229
|
+
### Pattern 6: Multi-Select (when user can choose multiple)
|
|
230
|
+
|
|
231
|
+
```xml
|
|
232
|
+
<invoke name="AskUserQuestion">
|
|
233
|
+
<parameter name="questions">[{
|
|
234
|
+
"question": "Which commands should run in CI? (Select multiple)",
|
|
235
|
+
"header": "CI Commands",
|
|
236
|
+
"multiSelect": true,
|
|
237
|
+
"options": [
|
|
238
|
+
{
|
|
239
|
+
"label": "Install dependencies",
|
|
240
|
+
"description": "Run before other commands (Recommended)"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"label": "Run tests",
|
|
244
|
+
"description": "Execute test suite (Recommended)"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"label": "Run linter",
|
|
248
|
+
"description": "Check code style"
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
"label": "Type checker",
|
|
252
|
+
"description": "Verify TypeScript types"
|
|
253
|
+
}
|
|
254
|
+
]
|
|
255
|
+
}]</parameter>
|
|
256
|
+
</invoke>
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
Note: `"multiSelect": true` allows selecting 0 or more options
|
|
260
|
+
|
|
261
|
+
### Pattern 7: Batch Multiple Questions (max 4)
|
|
262
|
+
|
|
263
|
+
When you need to ask multiple related questions:
|
|
264
|
+
|
|
265
|
+
```xml
|
|
266
|
+
<invoke name="AskUserQuestion">
|
|
267
|
+
<parameter name="questions">[
|
|
268
|
+
{
|
|
269
|
+
"question": "What command runs your tests?",
|
|
270
|
+
"header": "Test cmd",
|
|
271
|
+
"multiSelect": false,
|
|
272
|
+
"options": [
|
|
273
|
+
{"label": "npm test", "description": "Standard npm test script (Recommended)"},
|
|
274
|
+
{"label": "jest", "description": "Run Jest directly"},
|
|
275
|
+
{"label": "vitest", "description": "Run Vitest directly"}
|
|
276
|
+
]
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"question": "What command runs your linter?",
|
|
280
|
+
"header": "Lint cmd",
|
|
281
|
+
"multiSelect": false,
|
|
282
|
+
"options": [
|
|
283
|
+
{"label": "npm run lint", "description": "Standard lint script (Recommended)"},
|
|
284
|
+
{"label": "eslint .", "description": "Run ESLint directly"},
|
|
285
|
+
{"label": "biome check", "description": "Use Biome linter"}
|
|
286
|
+
]
|
|
287
|
+
}
|
|
288
|
+
]</parameter>
|
|
289
|
+
</invoke>
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
**Limit**: Max 4 questions per invocation
|
|
293
|
+
|
|
294
|
+
## Recommendation Logic
|
|
295
|
+
|
|
296
|
+
When adding "(Recommended)" to an option, base it on these priorities:
|
|
297
|
+
|
|
298
|
+
### For Story/Task Selection:
|
|
299
|
+
1. **READY status** β Always recommend first
|
|
300
|
+
2. **Blocked but clear unblock** β Recommend with "Clear path to unblock"
|
|
301
|
+
3. **Near-complete epic** β Recommend with "Finish what's started"
|
|
302
|
+
4. **Roadmap priority** β Recommend with "High-priority item"
|
|
303
|
+
5. **Research before implementation** β Recommend with "Avoid debugging pain"
|
|
304
|
+
|
|
305
|
+
### For Configuration:
|
|
306
|
+
1. **Standard/default setup** β "(Recommended - standard team setup)"
|
|
307
|
+
2. **Most popular option** β "(Recommended - most teams use this)"
|
|
308
|
+
3. **Project-specific detection** β "(Recommended - detected in your package.json)"
|
|
309
|
+
|
|
310
|
+
### For File Operations:
|
|
311
|
+
1. **Changes look good** β "(Recommended - changes look good)"
|
|
312
|
+
2. **Follows practices** β "(Recommended - follows docs/02-practices/)"
|
|
313
|
+
3. **Safe operation** β "(Recommended - safe operation)"
|
|
314
|
+
|
|
315
|
+
### For Dangerous Operations:
|
|
316
|
+
- **Never** mark dangerous operations as "(Recommended)"
|
|
317
|
+
- Always require explicit opt-in
|
|
318
|
+
- Example: Force push, delete files, destructive operations
|
|
319
|
+
|
|
320
|
+
## Migration Checklist
|
|
321
|
+
|
|
322
|
+
When updating a command from old YES/NO to AskUserQuestion:
|
|
323
|
+
|
|
324
|
+
- [ ] Replace "Proceed? (YES/NO)" with AskUserQuestion
|
|
325
|
+
- [ ] Replace "(y/n)" prompts with AskUserQuestion
|
|
326
|
+
- [ ] Replace numbered lists with AskUserQuestion
|
|
327
|
+
- [ ] Add recommendations with reasoning
|
|
328
|
+
- [ ] Include 3+ options (recommended, alternative, skip/cancel)
|
|
329
|
+
- [ ] Keep header β€12 characters
|
|
330
|
+
- [ ] Add visual markers for priority (ββ οΈπ―ππ‘)
|
|
331
|
+
- [ ] Provide specific, actionable descriptions
|
|
332
|
+
- [ ] Use multiSelect: true only when multiple selections make sense
|
|
333
|
+
- [ ] Update TODO list to reference AskUserQuestion instead of YES/NO
|
|
334
|
+
|
|
335
|
+
## Examples by Command Type
|
|
336
|
+
|
|
337
|
+
### /AgileFlow:story
|
|
338
|
+
```xml
|
|
339
|
+
<invoke name="AskUserQuestion">
|
|
340
|
+
<parameter name="questions">[{
|
|
341
|
+
"question": "Create story <STORY>: <TITLE> with these files?",
|
|
342
|
+
"header": "Create story",
|
|
343
|
+
"multiSelect": false,
|
|
344
|
+
"options": [
|
|
345
|
+
{"label": "Yes, create story", "description": "Write story file, test stub, update status.json (Recommended)"},
|
|
346
|
+
{"label": "No, revise first", "description": "Modify content before creating"},
|
|
347
|
+
{"label": "Cancel", "description": "Don't create this story"}
|
|
348
|
+
]
|
|
349
|
+
}]</parameter>
|
|
350
|
+
</invoke>
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### /AgileFlow:epic
|
|
354
|
+
```xml
|
|
355
|
+
<invoke name="AskUserQuestion">
|
|
356
|
+
<parameter name="questions">[{
|
|
357
|
+
"question": "Create epic <EPIC>: <TITLE> with <N> stories?",
|
|
358
|
+
"header": "Create epic",
|
|
359
|
+
"multiSelect": false,
|
|
360
|
+
"options": [
|
|
361
|
+
{"label": "Yes, create epic", "description": "Create epic file, stories, update status (Recommended)"},
|
|
362
|
+
{"label": "No, adjust stories", "description": "Modify story list first"},
|
|
363
|
+
{"label": "Cancel", "description": "Don't create this epic"}
|
|
364
|
+
]
|
|
365
|
+
}]</parameter>
|
|
366
|
+
</invoke>
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
### /AgileFlow:babysit (initial suggestions)
|
|
370
|
+
```xml
|
|
371
|
+
<invoke name="AskUserQuestion">
|
|
372
|
+
<parameter name="questions">[{
|
|
373
|
+
"question": "What would you like to work on?",
|
|
374
|
+
"header": "Choose task",
|
|
375
|
+
"multiSelect": false,
|
|
376
|
+
"options": [
|
|
377
|
+
{"label": "US-0042: Login API (READY) β", "description": "β
Ready | High priority | Unblocks 3 stories"},
|
|
378
|
+
{"label": "EP-0005: Payment (80% done)", "description": "π― Near complete | Finish strong"},
|
|
379
|
+
{"label": "Research: JWT practices", "description": "π Prep work | Avoid bugs"},
|
|
380
|
+
{"label": "Create new epic/story", "description": "π‘ Start something new"},
|
|
381
|
+
{"label": "Other", "description": "Custom input"}
|
|
382
|
+
]
|
|
383
|
+
}]</parameter>
|
|
384
|
+
</invoke>
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
### /AgileFlow:configure
|
|
388
|
+
```xml
|
|
389
|
+
<invoke name="AskUserQuestion">
|
|
390
|
+
<parameter name="questions">[{
|
|
391
|
+
"question": "Which features would you like to configure? (Select multiple)",
|
|
392
|
+
"header": "Features",
|
|
393
|
+
"multiSelect": true,
|
|
394
|
+
"options": [
|
|
395
|
+
{"label": "Git Repository", "description": "Initialize git and add remote"},
|
|
396
|
+
{"label": "Hooks System", "description": "Event-driven automation (Recommended - enables auto-archival)"},
|
|
397
|
+
{"label": "Auto-Archival", "description": "Manage status.json size (Recommended - prevents token limit)"},
|
|
398
|
+
{"label": "CI/CD", "description": "Automated testing"}
|
|
399
|
+
]
|
|
400
|
+
}]</parameter>
|
|
401
|
+
</invoke>
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
## Common Mistakes to Avoid
|
|
405
|
+
|
|
406
|
+
### β DON'T: Vague options
|
|
407
|
+
```json
|
|
408
|
+
{"label": "Yes", "description": "Proceed"}
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### β
DO: Specific, actionable options
|
|
412
|
+
```json
|
|
413
|
+
{"label": "Yes, create workflow", "description": "Write .github/workflows/ci.yml, runs on PR (Recommended)"}
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
### β DON'T: Missing recommendations
|
|
419
|
+
```json
|
|
420
|
+
{"label": "Option A", "description": "Do thing A"}
|
|
421
|
+
{"label": "Option B", "description": "Do thing B"}
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
### β
DO: Clear recommendations with reasoning
|
|
425
|
+
```json
|
|
426
|
+
{"label": "GitHub Actions", "description": "Free for public repos, 2000 min/month (Recommended - you're using GitHub)"}
|
|
427
|
+
{"label": "GitLab CI", "description": "Alternative if you prefer GitLab"}
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
---
|
|
431
|
+
|
|
432
|
+
### β DON'T: Only 2 options (yes/no clone)
|
|
433
|
+
```json
|
|
434
|
+
{"label": "Yes", "description": "Do it"}
|
|
435
|
+
{"label": "No", "description": "Don't do it"}
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
### β
DO: Give users control with 3+ options
|
|
439
|
+
```json
|
|
440
|
+
{"label": "Yes, proceed", "description": "Create files (Recommended)"}
|
|
441
|
+
{"label": "No, customize", "description": "Adjust before creating"}
|
|
442
|
+
{"label": "Cancel", "description": "Don't create"}
|
|
443
|
+
```
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
|
|
447
|
+
### β DON'T: Header too long
|
|
448
|
+
```json
|
|
449
|
+
{"header": "Create new story with AC"} // 24 chars - TOO LONG
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
### β
DO: Header β€12 chars
|
|
453
|
+
```json
|
|
454
|
+
{"header": "Create"} // 6 chars - GOOD
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
## Tool Constraints
|
|
458
|
+
|
|
459
|
+
- **Max 4 questions** per invocation
|
|
460
|
+
- **Max header length**: 12 characters
|
|
461
|
+
- **Min options**: 2 (but recommend 3+ for better UX)
|
|
462
|
+
- **Max options**: No hard limit, but 4-6 is optimal (avoid decision paralysis)
|
|
463
|
+
- **User always gets "Other"** option automatically for custom text input
|
|
464
|
+
|
|
465
|
+
## Testing Your AskUserQuestion
|
|
466
|
+
|
|
467
|
+
Before committing, verify:
|
|
468
|
+
1. [ ] XML is valid (proper closing tags)
|
|
469
|
+
2. [ ] JSON is valid (proper quotes, commas, brackets)
|
|
470
|
+
3. [ ] Header β€12 characters
|
|
471
|
+
4. [ ] At least one option has "(Recommended)" with reasoning
|
|
472
|
+
5. [ ] Descriptions are specific and actionable
|
|
473
|
+
6. [ ] Labels are not just "Yes/No" but describe the action
|
|
474
|
+
7. [ ] Question is specific (not "Continue?" but "Create US-0042 with these AC?")
|
package/src/core/commands/adr.md
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Create an Architecture Decision Record
|
|
3
|
+
argument-hint: NUMBER=<4-digit> TITLE=<text> CONTEXT=<text> DECISION=<text> CONSEQUENCES=<text> [LINKS=<text>]
|
|
3
4
|
allowed-tools: Bash, Read, Edit, Write, Glob, Grep
|
|
4
5
|
---
|
|
5
6
|
|
|
@@ -26,6 +27,10 @@ NUMBER=<4-digit> TITLE=<Decision Title>
|
|
|
26
27
|
CONTEXT=<short context> DECISION=<choice>
|
|
27
28
|
CONSEQUENCES=<trade-offs> LINKS=<optional bullets>
|
|
28
29
|
|
|
30
|
+
TEMPLATE
|
|
31
|
+
Use the following ADR template structure:
|
|
32
|
+
@packages/cli/src/core/templates/adr-template.md
|
|
33
|
+
|
|
29
34
|
ACTION
|
|
30
35
|
Create docs/03-decisions/adr-<NUMBER>-<slug>.md from adr-template.md (date=now; status=Accepted unless specified).
|
|
31
36
|
|
|
@@ -15,6 +15,10 @@ INPUTS
|
|
|
15
15
|
AGENT_ID=<AG-UI|AG-API|AG-CI or custom> ROLE=<role>
|
|
16
16
|
TOOLS=[list] SCOPE=<directories & story tags>
|
|
17
17
|
|
|
18
|
+
TEMPLATE
|
|
19
|
+
Use the following agent profile template:
|
|
20
|
+
@packages/cli/src/core/templates/agent-profile-template.md
|
|
21
|
+
|
|
18
22
|
ACTIONS
|
|
19
23
|
1) Create docs/02-practices/prompts/agents/agent-<AGENT_ID>.md from agent-profile-template.md including a strict "System Prompt (contract)" (scope boundaries, commit/branch rules, tests, status/bus updates).
|
|
20
24
|
2) Update docs/09-agents/roster.yaml (create if missing) mapping idβrole/tools/scope.
|
|
@@ -29,7 +29,7 @@ TODO LIST TRACKING
|
|
|
29
29
|
Mark each step complete as you finish it. This ensures nothing is forgotten during the multi-step generation process.
|
|
30
30
|
|
|
31
31
|
OBJECTIVE
|
|
32
|
-
|
|
32
|
+
Analyze and parse product documentation to generate actionable user stories with acceptance criteria. Evaluate feature boundaries, assess story complexity, and consider dependencies to ensure comprehensive coverage.
|
|
33
33
|
|
|
34
34
|
INPUTS
|
|
35
35
|
- SOURCE=<file path or URL> (required: PRD, mockup, API spec, etc.)
|