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.
Files changed (63) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +536 -0
  3. package/package.json +1 -1
  4. package/src/core/agents/adr-writer.md +3 -19
  5. package/src/core/agents/api.md +9 -43
  6. package/src/core/agents/ci.md +8 -40
  7. package/src/core/agents/configuration/archival.md +301 -0
  8. package/src/core/agents/configuration/attribution.md +318 -0
  9. package/src/core/agents/configuration/ci.md +1077 -0
  10. package/src/core/agents/configuration/git-config.md +511 -0
  11. package/src/core/agents/configuration/hooks.md +507 -0
  12. package/src/core/agents/configuration/verify.md +540 -0
  13. package/src/core/agents/devops.md +7 -35
  14. package/src/core/agents/documentation.md +0 -1
  15. package/src/core/agents/epic-planner.md +3 -22
  16. package/src/core/agents/mentor.md +8 -24
  17. package/src/core/agents/research.md +0 -7
  18. package/src/core/agents/security.md +0 -5
  19. package/src/core/agents/ui.md +8 -42
  20. package/src/core/commands/PATTERNS-AskUserQuestion.md +474 -0
  21. package/src/core/commands/adr.md +5 -0
  22. package/src/core/commands/agent.md +4 -0
  23. package/src/core/commands/assign.md +1 -0
  24. package/src/core/commands/auto.md +1 -1
  25. package/src/core/commands/babysit.md +147 -31
  26. package/src/core/commands/baseline.md +7 -0
  27. package/src/core/commands/blockers.md +2 -0
  28. package/src/core/commands/board.md +9 -0
  29. package/src/core/commands/configure.md +415 -0
  30. package/src/core/commands/context.md +1 -0
  31. package/src/core/commands/deps.md +2 -0
  32. package/src/core/commands/diagnose.md +0 -41
  33. package/src/core/commands/epic.md +8 -0
  34. package/src/core/commands/handoff.md +4 -0
  35. package/src/core/commands/impact.md +1 -1
  36. package/src/core/commands/metrics.md +10 -0
  37. package/src/core/commands/research.md +3 -0
  38. package/src/core/commands/retro.md +11 -1
  39. package/src/core/commands/sprint.md +2 -1
  40. package/src/core/commands/status.md +1 -0
  41. package/src/core/commands/story-validate.md +1 -1
  42. package/src/core/commands/story.md +29 -2
  43. package/src/core/commands/template.md +8 -0
  44. package/src/core/commands/update.md +1 -1
  45. package/src/core/commands/velocity.md +9 -0
  46. package/src/core/commands/verify.md +6 -0
  47. package/src/core/templates/validate-tokens.sh +0 -15
  48. package/src/core/templates/worktrees-guide.md +0 -4
  49. package/tools/agileflow-npx.js +21 -9
  50. package/tools/cli/commands/config.js +284 -0
  51. package/tools/cli/commands/doctor.js +221 -4
  52. package/tools/cli/commands/setup.js +4 -1
  53. package/tools/cli/commands/update.js +59 -15
  54. package/tools/cli/installers/core/installer.js +369 -37
  55. package/tools/cli/installers/ide/claude-code.js +1 -1
  56. package/tools/cli/installers/ide/cursor.js +1 -1
  57. package/tools/cli/installers/ide/windsurf.js +1 -1
  58. package/tools/cli/lib/docs-setup.js +52 -28
  59. package/tools/cli/lib/npm-utils.js +62 -0
  60. package/tools/cli/lib/ui.js +9 -2
  61. package/tools/postinstall.js +71 -13
  62. package/src/core/agents/context7.md +0 -164
  63. 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?")
@@ -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.
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  description: Assign or reassign a story to an owner
3
+ argument-hint: STORY=<US-ID> NEW_OWNER=<id> [NEW_STATUS=<status>] [NOTE=<text>]
3
4
  allowed-tools: Bash, Read, Edit, Write, Glob, Grep
4
5
  ---
5
6
 
@@ -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
- Parse product documentation and generate actionable user stories with acceptance criteria.
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.)