agileflow 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/CHANGELOG.md +5 -0
  2. package/README.md +57 -85
  3. package/lib/dashboard-automations.js +130 -0
  4. package/lib/dashboard-git.js +254 -0
  5. package/lib/dashboard-inbox.js +64 -0
  6. package/lib/dashboard-protocol.js +1 -0
  7. package/lib/dashboard-server.js +114 -924
  8. package/lib/dashboard-session.js +136 -0
  9. package/lib/dashboard-status.js +72 -0
  10. package/lib/dashboard-terminal.js +354 -0
  11. package/lib/dashboard-websocket.js +88 -0
  12. package/lib/drivers/codex-driver.ts +4 -4
  13. package/lib/logger.js +106 -0
  14. package/package.json +4 -2
  15. package/scripts/agileflow-configure.js +2 -2
  16. package/scripts/agileflow-welcome.js +409 -434
  17. package/scripts/claude-tmux.sh +80 -2
  18. package/scripts/context-loader.js +4 -9
  19. package/scripts/lib/command-prereqs.js +280 -0
  20. package/scripts/lib/configure-detect.js +92 -2
  21. package/scripts/lib/configure-features.js +295 -1
  22. package/scripts/lib/context-formatter.js +468 -233
  23. package/scripts/lib/context-loader.js +27 -15
  24. package/scripts/lib/damage-control-utils.js +8 -1
  25. package/scripts/lib/feature-catalog.js +321 -0
  26. package/scripts/lib/portable-tasks-cli.js +274 -0
  27. package/scripts/lib/portable-tasks.js +479 -0
  28. package/scripts/lib/signal-detectors.js +1 -1
  29. package/scripts/lib/team-events.js +86 -1
  30. package/scripts/obtain-context.js +28 -4
  31. package/scripts/smart-detect.js +17 -0
  32. package/scripts/strip-ai-attribution.js +63 -0
  33. package/scripts/team-manager.js +7 -2
  34. package/scripts/welcome-deferred.js +437 -0
  35. package/src/core/agents/perf-analyzer-assets.md +174 -0
  36. package/src/core/agents/perf-analyzer-bundle.md +165 -0
  37. package/src/core/agents/perf-analyzer-caching.md +160 -0
  38. package/src/core/agents/perf-analyzer-compute.md +165 -0
  39. package/src/core/agents/perf-analyzer-memory.md +182 -0
  40. package/src/core/agents/perf-analyzer-network.md +157 -0
  41. package/src/core/agents/perf-analyzer-queries.md +155 -0
  42. package/src/core/agents/perf-analyzer-rendering.md +156 -0
  43. package/src/core/agents/perf-consensus.md +280 -0
  44. package/src/core/agents/security-analyzer-api.md +199 -0
  45. package/src/core/agents/security-analyzer-auth.md +160 -0
  46. package/src/core/agents/security-analyzer-authz.md +168 -0
  47. package/src/core/agents/security-analyzer-deps.md +147 -0
  48. package/src/core/agents/security-analyzer-infra.md +176 -0
  49. package/src/core/agents/security-analyzer-injection.md +148 -0
  50. package/src/core/agents/security-analyzer-input.md +191 -0
  51. package/src/core/agents/security-analyzer-secrets.md +175 -0
  52. package/src/core/agents/security-consensus.md +276 -0
  53. package/src/core/agents/test-analyzer-assertions.md +181 -0
  54. package/src/core/agents/test-analyzer-coverage.md +183 -0
  55. package/src/core/agents/test-analyzer-fragility.md +185 -0
  56. package/src/core/agents/test-analyzer-integration.md +155 -0
  57. package/src/core/agents/test-analyzer-maintenance.md +173 -0
  58. package/src/core/agents/test-analyzer-mocking.md +178 -0
  59. package/src/core/agents/test-analyzer-patterns.md +189 -0
  60. package/src/core/agents/test-analyzer-structure.md +177 -0
  61. package/src/core/agents/test-consensus.md +294 -0
  62. package/src/core/commands/{legal/audit.md → audit/legal.md} +13 -13
  63. package/src/core/commands/{logic/audit.md → audit/logic.md} +12 -12
  64. package/src/core/commands/audit/performance.md +443 -0
  65. package/src/core/commands/audit/security.md +443 -0
  66. package/src/core/commands/audit/test.md +442 -0
  67. package/src/core/commands/babysit.md +505 -463
  68. package/src/core/commands/configure.md +8 -8
  69. package/src/core/commands/research/ask.md +42 -9
  70. package/src/core/commands/research/import.md +14 -8
  71. package/src/core/commands/research/list.md +17 -16
  72. package/src/core/commands/research/synthesize.md +8 -8
  73. package/src/core/commands/research/view.md +28 -4
  74. package/src/core/commands/whats-new.md +2 -2
  75. package/src/core/experts/devops/expertise.yaml +13 -2
  76. package/src/core/experts/documentation/expertise.yaml +26 -4
  77. package/src/core/profiles/COMPARISON.md +170 -0
  78. package/src/core/profiles/README.md +178 -0
  79. package/src/core/profiles/claude-code.yaml +111 -0
  80. package/src/core/profiles/codex.yaml +103 -0
  81. package/src/core/profiles/cursor.yaml +134 -0
  82. package/src/core/profiles/examples.js +250 -0
  83. package/src/core/profiles/loader.js +235 -0
  84. package/src/core/profiles/windsurf.yaml +159 -0
  85. package/src/core/teams/logic-audit.json +6 -0
  86. package/src/core/teams/perf-audit.json +71 -0
  87. package/src/core/teams/security-audit.json +71 -0
  88. package/src/core/teams/test-audit.json +71 -0
  89. package/src/core/templates/command-prerequisites.yaml +169 -0
  90. package/src/core/templates/damage-control-patterns.yaml +9 -0
  91. package/tools/cli/installers/ide/_base-ide.js +33 -3
  92. package/tools/cli/installers/ide/claude-code.js +2 -69
  93. package/tools/cli/installers/ide/codex.js +9 -9
  94. package/tools/cli/installers/ide/cursor.js +165 -4
  95. package/tools/cli/installers/ide/windsurf.js +237 -6
  96. package/tools/cli/lib/content-transformer.js +234 -9
  97. package/tools/cli/lib/docs-setup.js +1 -1
  98. package/tools/cli/lib/ide-generator.js +357 -0
  99. package/tools/cli/lib/ide-registry.js +2 -2
  100. package/scripts/tmux-task-name.sh +0 -105
  101. package/scripts/tmux-task-watcher.sh +0 -344
@@ -37,12 +37,12 @@ Main Menu → "What would you like to configure?"
37
37
  ├─ Profiles → Apply preset | Apply custom | Save current | Manage
38
38
  │ ├─ Presets: Full | Basic | Minimal | None
39
39
  │ └─ Custom: Save, Export, Import, Delete
40
- ├─ Features → Enable | Disable | View status
41
- │ └─ Hooks (4) + Other Features (4)
40
+ ├─ Features → Enable | Disable | Context Verbosity | View status
41
+ │ └─ Hooks (4) + Other Features (4) + Context Verbosity (full/lite/minimal)
42
42
  ├─ Sessions → Startup mode and Agent Teams configuration
43
43
  │ ├─ Startup Mode: Normal | Skip permissions | Accept edits | No Claude
44
44
  │ └─ Agent Teams: Enable/disable native multi-agent orchestration
45
- ├─ Infrastructure → Visual E2E | Damage Control | CI/CD | Quality Gates
45
+ ├─ Infrastructure → UI Testing | Damage Control | CI/CD | Quality Gates
46
46
  └─ Maintenance → Fix format | Upgrade | Repair | Check status
47
47
  ```
48
48
 
@@ -137,7 +137,7 @@ After handling issues (or if none), present the main category menu:
137
137
  {"label": "Profiles", "description": "Quick setup with preset configurations (full, basic, minimal)"},
138
138
  {"label": "Features", "description": "Enable or disable individual hooks and features"},
139
139
  {"label": "Sessions", "description": "Configure default startup mode for new sessions"},
140
- {"label": "Infrastructure", "description": "Set up Visual E2E, Damage Control, or CI/CD"},
140
+ {"label": "Infrastructure", "description": "Set up UI Testing, Damage Control, or CI/CD"},
141
141
  {"label": "Maintenance", "description": "Fix issues, repair scripts, or check status"}
142
142
  ]
143
143
  }]</parameter>
@@ -612,7 +612,7 @@ Then re-ask the enable/disable question.
612
612
  "header": "Setup",
613
613
  "multiSelect": false,
614
614
  "options": [
615
- {"label": "Visual E2E Testing", "description": "Playwright + screenshot verification workflow"},
615
+ {"label": "UI Testing (Bowser)", "description": "Agentic browser testing + visual verification with Playwright"},
616
616
  {"label": "Damage Control", "description": "Block destructive commands, protect sensitive paths"},
617
617
  {"label": "CI/CD Workflow", "description": "GitHub Actions for automated testing"},
618
618
  {"label": "Quality Gates", "description": "Configure TeammateIdle and TaskCompleted gate thresholds"}
@@ -623,7 +623,7 @@ Then re-ask the enable/disable question.
623
623
 
624
624
  Handle each selection directly:
625
625
 
626
- - **Visual E2E**: `node .agileflow/scripts/agileflow-configure.js --enable=visuale2e`
626
+ - **UI Testing (Bowser)**: `node .agileflow/scripts/agileflow-configure.js --enable=browserqa`
627
627
  - **Damage Control**: `node .agileflow/scripts/agileflow-configure.js --enable=damagecontrol`
628
628
  - **CI/CD**: `node .agileflow/scripts/agileflow-configure.js --enable=ci`
629
629
  - **Quality Gates**: Update `docs/00-meta/agileflow-metadata.json` under the `quality_gates` key with enable/disable for tests, lint, types gates per hook and coverage thresholds
@@ -1120,7 +1120,7 @@ Installed Features:
1120
1120
  ✅ damage-control (v2.94.1) - 31 patterns
1121
1121
  ✅ precompact (v2.94.1) - context preservation
1122
1122
  ✅ status-line (v2.94.1) - story tracking
1123
- visual-e2e (not installed)
1123
+ browserqa (not installed)
1124
1124
  ⚪ hooks (not installed)
1125
1125
 
1126
1126
  Scripts:
@@ -1139,7 +1139,7 @@ Available features:
1139
1139
  - damage-control: Protect against destructive commands
1140
1140
  - precompact: Context preservation during compaction
1141
1141
  - status-line: Story status in Claude Code UI
1142
- - visual-e2e: Screenshot-based testing
1142
+ - browserqa: Agentic browser testing + visual verification
1143
1143
  - hooks: Event-driven automation
1144
1144
  - ci: CI/CD workflow setup
1145
1145
 
@@ -11,7 +11,7 @@ compact_context:
11
11
  - "MUST include exact error messages verbatim if troubleshooting"
12
12
  - "MUST list 2+ approaches already tried with detailed results"
13
13
  - "MUST ask 3+ specific questions (not vague)"
14
- - "NO FILE WRITES - output only, user will copy/paste to external AI"
14
+ - "OUTPUT-ONLY by default - optional save to docs/10-research/prompts/"
15
15
  - "Validation required before output: length, code snippets, error details, attempts, questions"
16
16
  - "If validation fails: gather missing info and regenerate"
17
17
  state_fields:
@@ -202,15 +202,21 @@ Every research prompt MUST have:
202
202
 
203
203
  ---
204
204
 
205
- ### 🚨 RULE #7: NO FILE WRITES
205
+ ### 🚨 RULE #7: OUTPUT-ONLY BY DEFAULT (OPTIONAL SAVE)
206
206
 
207
- **This command outputs a prompt only. User will copy/paste to ChatGPT/Claude/Perplexity.**
207
+ **This command generates a prompt for copy/paste. Optionally save to prompts directory after displaying.**
208
208
 
209
209
  ```
210
- ❌ WRONG: Write prompt to file
211
- ✅ RIGHT: Output prompt in code block, instruct user to copy
210
+ ❌ WRONG: Save prompt WITHOUT also displaying for copy/paste
211
+ ✅ RIGHT: Output prompt in code block, then offer to save to docs/10-research/prompts/
212
212
  ```
213
213
 
214
+ **Save flow (if user selects save):**
215
+ 1. Create `docs/10-research/prompts/` directory if needed
216
+ 2. Save as `docs/10-research/prompts/YYYYMMDD-prompt-<topic-slug>.md`
217
+ 3. Update `docs/10-research/README.md` with 5-column entry (Type=Prompt)
218
+ 4. Confirm save location
219
+
214
220
  ---
215
221
 
216
222
  ### VALIDATION CHECKLIST (BEFORE OUTPUT)
@@ -240,7 +246,7 @@ Every research prompt MUST have:
240
246
  ❌ List no or vague attempted solutions
241
247
  ❌ Ask generic questions without context
242
248
  ❌ Output prompt shorter than 200 lines
243
- ❌ Save prompt to file instead of displaying for copy/paste
249
+ ❌ Save prompt WITHOUT also displaying for copy/paste
244
250
  ❌ Skip validation before outputting
245
251
 
246
252
  ### DO THESE INSTEAD
@@ -252,6 +258,7 @@ Every research prompt MUST have:
252
258
  ✅ Ask 3+ specific, contextualized questions
253
259
  ✅ Validate prompt quality before outputting
254
260
  ✅ Display prompt in code block for user copy/paste
261
+ ✅ Offer to save prompt to docs/10-research/prompts/ after displaying
255
262
  ✅ Instruct user where to paste results back
256
263
 
257
264
  ---
@@ -287,6 +294,7 @@ Every research prompt MUST have:
287
294
  18. Display prompt in code block
288
295
  19. Instruct user: "Copy this prompt and paste into ChatGPT/Claude/Perplexity"
289
296
  20. Provide post-answer instructions: "When you get results, use /agileflow:research:import to save"
297
+ 21. Offer to save prompt to `docs/10-research/prompts/YYYYMMDD-prompt-<topic-slug>.md`
290
298
 
291
299
  ---
292
300
 
@@ -372,7 +380,7 @@ Actual: [What actually happens]
372
380
  - MUST list 2+ attempts with detailed results
373
381
  - MUST ask 3+ specific questions
374
382
  - Validate all checks BEFORE outputting
375
- - NO file writes - output for user to copy/paste
383
+ - Output-only by default - optional save to docs/10-research/prompts/
376
384
  - After user gets results, they use /agileflow:research:import to save
377
385
 
378
386
  <!-- COMPACT_SUMMARY_END -->
@@ -607,6 +615,31 @@ Copy this prompt and paste it into ChatGPT, Claude web, Perplexity, or Gemini.
607
615
  When you get the answer, paste the results here and I'll save them to your research folder using `/agileflow:research:import`.
608
616
  ```
609
617
 
618
+ ### Step 8b: Save Prompt (if user selects save)
619
+
620
+ If the user selects "Save prompt to docs/10-research/prompts/":
621
+
622
+ 1. **Create directories** if they don't exist:
623
+ - Ensure `docs/10-research/` exists (create if needed on fresh projects)
624
+ - Ensure `docs/10-research/prompts/` exists
625
+
626
+ 2. **Generate filename**: `YYYYMMDD-prompt-<topic-slug>.md`
627
+ - Use today's date
628
+ - Slugify the TOPIC (lowercase, hyphens, no special chars)
629
+
630
+ 3. **Save the prompt** to `docs/10-research/prompts/YYYYMMDD-prompt-<topic-slug>.md`
631
+
632
+ 4. **Update README index** - Add entry to `docs/10-research/README.md`:
633
+ ```markdown
634
+ | YYYY-MM-DD | [TOPIC] Research Prompt | Prompt | [prompts/YYYYMMDD-prompt-topic-slug.md](./prompts/YYYYMMDD-prompt-topic-slug.md) | Research prompt for [TOPIC]: [N] files referenced, [M] questions |
635
+ ```
636
+
637
+ 5. **Confirm save**:
638
+ ```
639
+ Saved prompt to docs/10-research/prompts/YYYYMMDD-prompt-<topic-slug>.md
640
+ Updated research index (README.md)
641
+ ```
642
+
610
643
  ---
611
644
 
612
645
  ## Anti-Pattern: Lazy Prompts
@@ -772,7 +805,7 @@ After clicking "Sign in with Google", immediately get unauthorized_client error.
772
805
 
773
806
  ## Rules
774
807
 
775
- - **NO file writes** - This is output-only
808
+ - **Output-only by default** - Display prompt for copy/paste, optionally save to prompts/
776
809
  - **MUST validate quality** before outputting
777
810
  - **MUST include actual code** from the codebase
778
811
  - **MUST be detailed** - 200+ lines minimum
@@ -792,8 +825,8 @@ After generating the research prompt, suggest contextual next steps:
792
825
  "multiSelect": false,
793
826
  "options": [
794
827
  {"label": "Copy & paste to ChatGPT/Perplexity (Recommended)", "description": "Prompt covers [N] files and [M] specific questions - ready to paste"},
828
+ {"label": "Save prompt to docs/10-research/prompts/", "description": "Save as prompts/YYYYMMDD-prompt-[topic-slug].md and update README index"},
795
829
  {"label": "Regenerate with more detail", "description": "Add [missing element: more code from X / error details / attempted solutions]"},
796
- {"label": "Save prompt to docs/10-research/", "description": "Save as [YYYYMMDD]-prompt-[topic-slug].md for later use"},
797
830
  {"label": "Done", "description": "Prompt generated, no further action needed"}
798
831
  ]
799
832
  }]</parameter>
@@ -163,14 +163,20 @@ Phase 4: IMPLEMENTATION IDEATION (If Requested)
163
163
 
164
164
  **After saving, ALWAYS update `docs/10-research/README.md` with new entry.**
165
165
 
166
- Add entry to the top of the table:
166
+ Add entry to the top of the table (5-column format with Type):
167
167
  ```markdown
168
- | Date | Topic | File | Summary |
169
- |------|-------|------|---------|
170
- | 2026-01-07 | New Research Title | 20260107-topic-slug.md | One-line summary |
168
+ | Date | Topic | Type | Path | Summary |
169
+ |------|-------|------|------|---------|
170
+ | 2026-01-07 | New Research Title | Research | [20260107-topic-slug.md](./20260107-topic-slug.md) | One-line summary |
171
171
  | [older entries...] |
172
172
  ```
173
173
 
174
+ **Note**: If existing README.md uses 4-column format (no Type column), migrate first:
175
+ 1. Insert `Type` as the 3rd column in the header row (between Topic and Path)
176
+ 2. Add `------|` to the separator row in the same position
177
+ 3. For existing entries, assign Type = `Research` (safe default)
178
+ 4. Then insert the new 5-column entry
179
+
174
180
  **Never skip this step.** Index is how users discover research.
175
181
 
176
182
  ---
@@ -647,12 +653,12 @@ If YES:
647
653
 
648
654
  ### Step 8: Update Index
649
655
 
650
- Add entry to `docs/10-research/README.md`:
656
+ Add entry to `docs/10-research/README.md` (5-column format):
651
657
 
652
658
  ```markdown
653
- | Date | Topic | File | Summary |
654
- |------|-------|------|---------|
655
- | YYYY-MM-DD | [Topic] | [filename.md] | [One-line summary] |
659
+ | Date | Topic | Type | Path | Summary |
660
+ |------|-------|------|------|---------|
661
+ | YYYY-MM-DD | [Topic] | Research | [filename.md](./filename.md) | [One-line summary] |
656
662
  ```
657
663
 
658
664
  Insert newest entries at the top of the table.
@@ -65,18 +65,19 @@ node .agileflow/scripts/obtain-context.js research:list
65
65
 
66
66
  ### 🚨 RULE #2: READ INDEX FROM docs/10-research/README.md
67
67
 
68
- **Primary source: `docs/10-research/README.md` should contain a table:**
68
+ **Primary source: `docs/10-research/README.md` should contain a 5-column table:**
69
69
 
70
70
  ```markdown
71
71
  ## Research Notes
72
72
 
73
- | Date | Topic | File | Summary |
74
- |------|-------|------|---------|
75
- | 2026-01-07 | OAuth Integration | 20260107-oauth.md | Setup Google OAuth |
76
- | 2026-01-06 | Performance Tips | 20260106-perf.md | Caching strategies |
73
+ | Date | Topic | Type | Path | Summary |
74
+ |------|-------|------|------|---------|
75
+ | 2026-01-07 | OAuth Integration | Research | 20260107-oauth.md | Setup Google OAuth |
76
+ | 2026-01-06 | Performance Tips | Research | 20260106-perf.md | Caching strategies |
77
77
  ```
78
78
 
79
- **If README doesn't exist:** List files from the directory directly.
79
+ **If README doesn't exist:** List files from `docs/10-research/` directory and from `docs/10-research/prompts/` (if it exists), merging results sorted by date.
80
+ **If README uses old 4-column format (no Type):** Handle gracefully - display without Type column and note the format is outdated.
80
81
 
81
82
  ---
82
83
 
@@ -102,11 +103,11 @@ Quick start:
102
103
  Research Notes
103
104
  ==============
104
105
 
105
- | Date | Topic | File |
106
- |------------|------------------------|-----------------------------|
107
- | 2026-01-07 | OAuth Integration | 20260107-oauth.md |
108
- | 2026-01-06 | Performance Tips | 20260106-perf.md |
109
- | 2026-01-05 | Database Migrations | 20260105-migrations.md |
106
+ | Date | Topic | Type | File |
107
+ |------------|------------------------|----------|-----------------------------|
108
+ | 2026-01-07 | OAuth Integration | Research | 20260107-oauth.md |
109
+ | 2026-01-06 | Performance Tips | Research | 20260106-perf.md |
110
+ | 2026-01-05 | DB Migration Guide | Prompt | prompts/20260105-prompt-db-migrations.md |
110
111
 
111
112
  Total: 3 research notes
112
113
  ```
@@ -231,11 +232,11 @@ Format output:
231
232
  ```
232
233
  ## Research Notes
233
234
 
234
- | Date | Topic | File |
235
- |------|-------|------|
236
- | 2024-12-31 | OAuth 2.0 Setup | 20241231-oauth-setup.md |
237
- | 2024-12-30 | Session Tracking | 20241230-session-tracking.md |
238
- | 2024-12-28 | Mermaid Diagrams | 20241228-mermaid-diagrams.md |
235
+ | Date | Topic | Type | File |
236
+ |------|-------|------|------|
237
+ | 2024-12-31 | OAuth 2.0 Setup | Research | 20241231-oauth-setup.md |
238
+ | 2024-12-30 | Session Tracking | Research | 20241230-session-tracking.md |
239
+ | 2024-12-28 | Mermaid Diagrams | Research | 20241228-mermaid-diagrams.md |
239
240
 
240
241
  Total: 3 research notes
241
242
 
@@ -88,13 +88,13 @@ If neither provided, ask user:
88
88
  ### 🚨 RULE #2: SEARCH OR SELECT RESEARCH FILES
89
89
 
90
90
  **If TOPIC provided:**
91
- 1. Search `docs/10-research/*.md` for files containing keyword
91
+ 1. Search `docs/10-research/*.md` AND `docs/10-research/prompts/*.md` for files containing keyword
92
92
  2. Check filename, title (# header), key findings, summary
93
93
  3. Present matching files to user for confirmation
94
94
 
95
95
  **If FILES provided:**
96
- 1. Validate each file exists in `docs/10-research/`
97
- 2. Warn if any file not found
96
+ 1. Validate each file exists in `docs/10-research/` or `docs/10-research/prompts/`
97
+ 2. Warn if any file not found in either location
98
98
  3. Proceed with valid files
99
99
 
100
100
  **Auto-select if <5 matches. Ask user to confirm if 5+ matches.**
@@ -470,7 +470,7 @@ Upon invocation, execute these steps:
470
470
  ### Step 3: Search/Select Research Files
471
471
 
472
472
  **If TOPIC search:**
473
- 1. List all files in `docs/10-research/`
473
+ 1. List all files in `docs/10-research/` and `docs/10-research/prompts/` (if exists)
474
474
  2. For each file, check if topic keyword appears in:
475
475
  - Filename
476
476
  - First `# ` header (title)
@@ -888,11 +888,11 @@ If user chooses to save:
888
888
 
889
889
  **Filename format**: `YYYYMMDD-synthesis-[topic-slug].md`
890
890
 
891
- **Add to docs/10-research/README.md index:**
891
+ **Add to docs/10-research/README.md index (5-column format):**
892
892
  ```markdown
893
- | Date | Topic | File | Summary |
894
- |------|-------|------|---------|
895
- | 2026-01-17 | Synthesis: Authentication | 20260117-synthesis-authentication.md | Cross-research synthesis of N files... |
893
+ | Date | Topic | Type | Path | Summary |
894
+ |------|-------|------|------|---------|
895
+ | 2026-01-17 | Synthesis: Authentication | Synthesis | [20260117-synthesis-authentication.md](./20260117-synthesis-authentication.md) | Cross-research synthesis of N files... |
896
896
  ```
897
897
 
898
898
  **Mark as synthesis type** in file header:
@@ -233,10 +233,16 @@ If FILE not provided, show available files:
233
233
 
234
234
  Read `docs/10-research/[FILE]`.
235
235
 
236
- If file doesn't exist:
236
+ If file doesn't exist, check `docs/10-research/prompts/[FILE]` as a fallback (prompts are stored in a subdirectory).
237
+
238
+ If file doesn't exist in either location:
237
239
  ```
238
240
  Research note not found: [FILE]
239
241
 
242
+ Checked:
243
+ - docs/10-research/[FILE]
244
+ - docs/10-research/prompts/[FILE]
245
+
240
246
  Use /agileflow:research:list to see available notes.
241
247
  ```
242
248
 
@@ -246,8 +252,9 @@ Output the full content of the research note.
246
252
 
247
253
  ### Step 4: Suggest Actions
248
254
 
249
- After displaying, offer contextual actions based on the research content:
255
+ After displaying, count action items (lines starting with `- [ ]` in the file) and build contextual options:
250
256
 
257
+ **If N > 0 action items found:**
251
258
  ```xml
252
259
  <invoke name="AskUserQuestion">
253
260
  <parameter name="questions">[{
@@ -256,15 +263,32 @@ After displaying, offer contextual actions based on the research content:
256
263
  "multiSelect": false,
257
264
  "options": [
258
265
  {"label": "Analyze for implementation in [current epic/project] (Recommended)", "description": "Deploy multi-expert analysis to map research to your codebase"},
259
- {"label": "Synthesize with related notes on [detected topic]", "description": "Cross-reference with [count] other notes on similar topics"},
260
266
  {"label": "Create story from [N] action items", "description": "Turn research action items into trackable stories"},
267
+ {"label": "Synthesize with related notes on [detected topic]", "description": "Cross-reference with [count] other notes on similar topics"},
268
+ {"label": "View another note", "description": "Browse other research notes"}
269
+ ]
270
+ }]</parameter>
271
+ </invoke>
272
+ ```
273
+
274
+ **If N = 0 (no action items - informational research):**
275
+ ```xml
276
+ <invoke name="AskUserQuestion">
277
+ <parameter name="questions">[{
278
+ "question": "Viewed '[TOPIC]' research (reference material). What next?",
279
+ "header": "Actions",
280
+ "multiSelect": false,
281
+ "options": [
282
+ {"label": "Analyze for implementation in [current epic/project] (Recommended)", "description": "Deploy multi-expert analysis to map research to your codebase"},
283
+ {"label": "Import additional research on [detected topic]", "description": "Gather more detailed research to build on this note"},
284
+ {"label": "Synthesize with related notes on [detected topic]", "description": "Cross-reference with [count] other notes on similar topics"},
261
285
  {"label": "View another note", "description": "Browse other research notes"}
262
286
  ]
263
287
  }]</parameter>
264
288
  </invoke>
265
289
  ```
266
290
 
267
- **Key**: Always include specific counts (action items found), detected topics, and reference the current epic if one is active. If no action items exist, replace that option with "Import additional research on [topic]".
291
+ **Key**: Always populate placeholders - `[TOPIC]` from file title, `[N]` from action item count, `[detected topic]` from content keywords, `[current epic/project]` from status.json (or "your project" if none active), `[count]` from related file count.
268
292
 
269
293
  If "Analyze for implementation" selected, invoke:
270
294
  ```
@@ -83,7 +83,7 @@ Parse the CHANGELOG.md and display:
83
83
  ## v2.56.0 (2025-12-27)
84
84
 
85
85
  ### Added
86
- • Dynamic IDE discovery - Codex CLI now in setup
86
+ • Dynamic IDE discovery - OpenAI Codex now in setup
87
87
 
88
88
  ### Changed
89
89
  • Replaced hardcoded IDE list with dynamic loading
@@ -147,7 +147,7 @@ If a newer version exists, show:
147
147
  ## v2.56.0 (2025-12-27)
148
148
 
149
149
  ### Added
150
- • Dynamic IDE discovery - Codex CLI now in setup
150
+ • Dynamic IDE discovery - OpenAI Codex now in setup
151
151
 
152
152
  ### Changed
153
153
  • Replaced hardcoded IDE list with dynamic loading
@@ -1,6 +1,7 @@
1
1
  domain: devops
2
- last_updated: 2025-12-21
3
- version: 1.1
2
+ last_updated: 2026-02-15
3
+ last_audit_date: 2026-02-15
4
+ version: 1.2
4
5
 
5
6
  # AgileFlow-specific file structure (learned from actual codebase)
6
7
  files:
@@ -103,3 +104,13 @@ learnings:
103
104
  context: "Analyzed session hooks"
104
105
  insight: "get-env.js outputs project info on session start; archive-completed-stories.sh runs automatically"
105
106
  source: "CLAUDE.md, .claude/settings.json"
107
+
108
+ - date: 2026-02-15
109
+ context: "Analyzed Claude Code Feb 2026 planning/hooks/MCP research"
110
+ insight: "plansDirectory, PostToolUse ExitPlanMode, --init/--maintenance flags, MCP tool search align well with AgileFlow architecture. Ready for Phase 1 implementation: 2 weeks, 28-40 hours"
111
+ source: "docs/10-research/20260215-claude-code-planning-hooks-mcp-updates.md"
112
+
113
+ - date: 2026-02-15
114
+ context: "Planned Claude Code feature integration"
115
+ insight: "5 features categorized: Phase 1 (plansDirectory, PostToolUse, MCP search - high priority), Phase 2 (--init/--maintenance, PreToolUse context - medium priority). Effort estimate: 13-18 days, 56-76 hours total"
116
+ source: "docs/10-research/20260215-devops-analysis-claude-code-features.md"
@@ -1,6 +1,6 @@
1
1
  domain: documentation
2
- last_updated: 2026-02-03
3
- version: 1.3
2
+ last_updated: 2026-02-14
3
+ version: 1.4
4
4
 
5
5
  # AgileFlow-specific documentation structure (learned from actual codebase)
6
6
  files:
@@ -153,7 +153,7 @@ learnings:
153
153
 
154
154
  - date: 2026-01-09
155
155
  context: "Created IDE Integrations documentation for AgileFlow"
156
- insight: "IDE handler system supports 4 IDEs (Claude Code, Cursor, Windsurf, Codex CLI) through plugin architecture. Each IDE has custom config directory (.claude/, .cursor/, .windsurf/, .codex/) and different installation models. Claude Code most advanced (damage control, spawnable agents), Codex CLI unique (per-repo skills, user-level prompts, AGENTS.md instructions)"
156
+ insight: "IDE handler system supports 4 IDEs (Claude Code, Cursor, Windsurf, OpenAI Codex) through plugin architecture. Each IDE has custom config directory (.claude/, .cursor/, .windsurf/, .codex/) and different installation models. Claude Code most advanced (damage control, spawnable agents), OpenAI Codex unique (per-repo skills, user-level prompts, AGENTS.md instructions)"
157
157
  created_files:
158
158
  - "apps/docs/content/docs/features/ide-integrations.mdx (700+ lines)"
159
159
  - "apps/docs/content/docs/features/index.mdx (updated with IDE section)"
@@ -168,7 +168,7 @@ learnings:
168
168
  - "Claude Code subagent spawning, damage control hooks"
169
169
  - "Cursor unique features, differences from Claude Code"
170
170
  - "Windsurf workflow management, VSCode integration"
171
- - "Codex CLI dual installation model (per-repo skills, user-level prompts, AGENTS.md)"
171
+ - "OpenAI Codex dual installation model (per-repo skills, user-level prompts, AGENTS.md)"
172
172
  - "Dynamic IDE handler system, extensibility guide"
173
173
  - "Content injection system explanation"
174
174
  - "Troubleshooting guide for common issues"
@@ -235,3 +235,25 @@ learnings:
235
235
  - "Formatting consistent (tables, code blocks, bullets) ✓"
236
236
  source: "packages/cli/src/core/commands/*.md vs apps/docs/content/docs/commands/*.mdx"
237
237
  notes: "Used systematic comparison approach: extracted descriptions, parameters, and features from 50 source commands against documentation. Prioritized commands with most feature additions: babysit (Smart Detection, Story Claiming, Logic Audit), configure (profiles, hierarchical menus). All changes preserve source accuracy while making docs more discoverable and comprehensive."
238
+
239
+ - date: 2026-02-14
240
+ context: "Audited README files for v3.0.2 - IDE config locations and badge accuracy"
241
+ insight: "Found and fixed 2 discrepancies between root and npm README files: (1) Cursor IDE config was .cursor/rules/ instead of .cursor/commands/ (verified against cursor.js installer), (2) OpenAI Codex location was incomplete - missing ~/.codex/prompts/ directory for user-level prompts. Both files now synchronized and identical."
242
+ fixed_issues:
243
+ - "packages/cli/README.md line 42: Updated Cursor from .cursor/rules/agileflow/ to .cursor/commands/agileflow/"
244
+ - "packages/cli/README.md line 44: Updated Codex from .codex/skills/ to .codex/skills/ and ~/.codex/prompts/"
245
+ verified:
246
+ - "Badge counts: 93 commands (correct), 45 agents (correct), dynamic skills (correct)"
247
+ - "All 11 referenced documentation files exist"
248
+ - "All 6 example commands/agents exist in source"
249
+ - "External links functional: npm (HTTP 200), GitHub (HTTP 200), docs site (HTTP 200)"
250
+ - "README files now identical (diff shows no differences)"
251
+ quality_gates:
252
+ - "Documentation current with v3.0.2 code ✓"
253
+ - "Counts verified against actual source files ✓"
254
+ - "IDE config verified against installers ✓"
255
+ - "All example commands/agents exist ✓"
256
+ - "No deprecated information remains ✓"
257
+ - "Two README files synchronized ✓"
258
+ source: "README.md, packages/cli/README.md, packages/cli/tools/cli/installers/ide/*.js"
259
+ notes: "Learned that IDE config locations can drift from documentation. Always verify against actual installer code (cursor.js, codex.js, etc.) not assumptions. OpenAI Codex has dual installation model (per-repo .codex/skills/ + user-level ~/.codex/prompts/) - this must be documented completely."
@@ -0,0 +1,170 @@
1
+ # IDE Capability Comparison Matrix
2
+
3
+ Complete comparison of all supported IDEs. Profiles at `/packages/cli/src/core/profiles/`.
4
+
5
+ ## Core Capabilities
6
+
7
+ | Capability | Claude Code | Cursor | Windsurf | Codex |
8
+ |---|---|---|---|---|
9
+ | **File Operations** | ✅ Native tools | ✅ read_file, edit_file | ✅ Native | ⚠️ Via skills |
10
+ | **Shell Execution** | ✅ Bash tool | ✅ run_terminal_cmd | ✅ run_command | ⚠️ Via sandbox |
11
+ | **File Search** | ✅ Glob, Grep | ✅ codebase_search, grep_search | ✅ search_files, search_codebase | ⚠️ Via sandbox |
12
+ | **Interactive Input** | ✅ Structured (AskUserQuestion) | ⚠️ Conversational | ⚠️ Conversational | ⚠️ Text-only |
13
+ | **Sub-Agents** | ✅ Task tool | ✅ Async native agents | ⚠️ Cascades + chaining | ❌ Cannot nest |
14
+ | **Nested Sub-Agents** | ✅ Full nesting | ✅ Full nesting | ❌ Parallel only | ❌ None |
15
+
16
+ ## Planning & Execution
17
+
18
+ | Capability | Claude Code | Cursor | Windsurf | Codex |
19
+ |---|---|---|---|---|
20
+ | **Plan Mode** | ✅ EnterPlanMode/ExitPlanMode | ✅ Native | ✅ Native + "megaplan" | ❌ None |
21
+ | **Plan Editing** | ✅ User can edit | ✅ User can edit | ✅ User can edit | N/A |
22
+ | **Persistent Plans** | ✅ Yes | ✅ Yes | ✅ ~/.windsurf/plans/ | N/A |
23
+
24
+ ## Lifecycle & Hooks
25
+
26
+ | Hook Event | Claude Code | Cursor | Windsurf | Codex |
27
+ |---|---|---|---|---|
28
+ | **SessionStart** | ✅ | ❌ | ❌ | ❌ |
29
+ | **PreToolUse** | ✅ | ❌ | ❌ | ❌ |
30
+ | **PostToolUse** | ✅ | ❌ | ❌ | ❌ |
31
+ | **beforeSubmitPrompt** | ❌ | ✅ | ❌ | ❌ |
32
+ | **beforeShellExecution** | ❌ | ✅ | ❌ | ❌ |
33
+ | **beforeMCPExecution** | ❌ | ✅ | ❌ | ❌ |
34
+ | **beforeReadFile** | ❌ | ✅ | ❌ | ❌ |
35
+ | **afterFileEdit** | ❌ | ✅ | ❌ | ❌ |
36
+ | **pre_read_code** | ❌ | ❌ | ✅ | ❌ |
37
+ | **post_read_code** | ❌ | ❌ | ✅ | ❌ |
38
+ | **pre_write_code** | ❌ | ❌ | ✅ | ❌ |
39
+ | **post_write_code** | ❌ | ❌ | ✅ | ❌ |
40
+ | **pre_run_command** | ❌ | ❌ | ✅ | ❌ |
41
+ | **post_run_command** | ❌ | ❌ | ✅ | ❌ |
42
+ | **pre_mcp_tool_use** | ❌ | ❌ | ✅ | ❌ |
43
+ | **post_mcp_tool_use** | ❌ | ❌ | ✅ | ❌ |
44
+ | **pre_user_prompt** | ❌ | ❌ | ✅ | ❌ |
45
+ | **post_cascade_response** | ❌ | ❌ | ✅ | ❌ |
46
+ | **post_setup_worktree** | ❌ | ❌ | ✅ | ❌ |
47
+ | **Total Hook Events** | 5 | 6 | 11 | 0 |
48
+
49
+ **Status**: SessionStart, PreToolUse, PostToolUse (Claude Code); beforeSubmitPrompt, beforeShellExecution, beforeMCPExecution, beforeReadFile, afterFileEdit (Cursor); stop hook (all IDEs)
50
+
51
+ ## External Integration
52
+
53
+ | Capability | Claude Code | Cursor | Windsurf | Codex |
54
+ |---|---|---|---|---|
55
+ | **Web Search** | ✅ WebSearch | ✅ web_search + @web | ✅ web_search | ❌ |
56
+ | **Web Fetch** | ✅ WebFetch | ✅ @web + MCP | ✅ url_read, view_chunk | ❌ |
57
+ | **MCP Support** | ✅ Full | ✅ Full | ✅ Full | ✅ Extension |
58
+ | **MCP Tool Cap** | **0 (unlimited)** | **40** | **100** | **0 (unlimited)** |
59
+ | **Browser** | ✅ Playwright MCP | ✅ Native browser (v2.0+) | ✅ Browser Preview | ⚠️ Limited |
60
+
61
+ ## Collaboration & Tracking
62
+
63
+ | Capability | Claude Code | Cursor | Windsurf | Codex |
64
+ |---|---|---|---|---|
65
+ | **Task Tracking** | ✅ TaskCreate/Update/List | ❌ Plan checklists only | ❌ Conversation-embedded | ❌ None |
66
+ | **Persistent Tasks** | ✅ Yes | ❌ | ❌ | ❌ |
67
+ | **Git Worktrees** | ✅ EnterWorktree | ⚠️ Background agents use branches | ✅ Native (up to 20) | ⚠️ Manual |
68
+ | **Parallel Execution** | ⚠️ Sequential Tasks | ✅ Async subagents | ✅ @cascade worktrees | ❌ |
69
+
70
+ ## Configuration Paths
71
+
72
+ | Item | Claude Code | Cursor | Windsurf | Codex |
73
+ |---|---|---|---|---|
74
+ | **Config Dir** | `.claude/` | `.cursor/` | `.windsurf/` | `.codex/` |
75
+ | **Commands** | `.claude/commands/agileflow/` | `.cursor/commands/` | `.windsurf/workflows/` | N/A |
76
+ | **Agents** | `.claude/agents/agileflow/` | `.cursor/agents/` | N/A (use workflows) | N/A |
77
+ | **Skills** | `.claude/skills/` | N/A (use agents) | `.windsurf/skills/*/` | `.codex/skills/agileflow-*/` |
78
+ | **Rules** | N/A | `.cursor/rules/` (MDC) | `.windsurf/rules/` | N/A |
79
+ | **Hooks Config** | `.claude/settings.json` | `.cursor/hooks.json` | `.windsurf/hooks.json` | N/A |
80
+ | **MCP Config** | `.claude/settings.json` | `.cursor/mcp.json` | `~/.codeium/windsurf/mcp_config.json` | N/A |
81
+ | **Instructions** | `CLAUDE.md` | `CURSOR.md` | `WINDSURF.md` | `AGENTS.md` |
82
+
83
+ ## Limits & Constraints
84
+
85
+ | Constraint | Claude Code | Cursor | Windsurf | Codex |
86
+ |---|---|---|---|---|
87
+ | **Max File Size** | Unlimited | Unlimited | Unlimited | Unlimited |
88
+ | **Max Command Length** | Unlimited | Unlimited | Unlimited | Unlimited |
89
+ | **Workflow Size** | N/A | N/A | **12,000 chars** | N/A |
90
+ | **MCP Tools** | 0 (unlimited) | **40** | 100 | 0 (unlimited) |
91
+ | **Git Worktrees** | Via tool | Via branches | Up to 20 | Manual |
92
+ | **Parallel Agents** | Sequential | Unlimited | Via @cascade | No nesting |
93
+
94
+ **Key constraint**: Cursor's 40-tool MCP limit is the binding constraint for multi-IDE installations.
95
+
96
+ ## AgileFlow Feature Support
97
+
98
+ | Feature | Claude Code | Cursor | Windsurf | Codex |
99
+ |---|---|---|---|---|
100
+ | **/agileflow:babysit** | ✅ Full | ⚠️ Conversational input | ⚠️ Conversational input | ❌ Limited |
101
+ | **AskUserQuestion** | ✅ Structured menus | ❌ Fallback to text | ❌ Fallback to text | ✅ Text-only |
102
+ | **Task delegation** | ✅ Task tool | ✅ Async agents | ⚠️ Workflow chaining | ❌ Skill suggestions |
103
+ | **Plan mode hooks** | ✅ Full integration | ✅ Native mode | ✅ Native mode | ❌ None |
104
+ | **Sub-agent nesting** | ✅ Full support | ✅ Full support | ⚠️ Parallel only | ❌ None |
105
+ | **Persistent task list** | ✅ Yes | ❌ | ❌ | ❌ |
106
+ | **Async execution** | ❌ Sequential | ✅ Native | ⚠️ @cascade | ❌ |
107
+
108
+ ## Implementation Notes
109
+
110
+ ### Claude Code
111
+ - **Recommended target** for new AgileFlow features
112
+ - All capabilities validated here first
113
+ - Full support for structured user interaction
114
+ - No tool limits for multi-IDE deployments
115
+
116
+ ### Cursor
117
+ - **Fast-follower to Claude Code** (v2.5 Feb 2026)
118
+ - Async native agents eliminate need for Task tool
119
+ - 40-tool MCP cap is **binding constraint** for all IDEs
120
+ - No AskUserQuestion - replace with numbered text prompts
121
+ - Plan mode fully native (no enter/exit needed)
122
+
123
+ ### Windsurf
124
+ - **Most hook events** (11 total) but most restrictive
125
+ - **No true sub-agent spawning** - use workflow chaining or @cascade
126
+ - **12,000 char limit per workflow** - must split large commands
127
+ - **Global MCP config only** - no project-level customization
128
+ - Native worktrees (up to 20)
129
+ - Browser preview built-in to IDE
130
+
131
+ ### Codex
132
+ - **Most restrictive** - use as minimum baseline
133
+ - Skills cannot spawn other skills (no delegation)
134
+ - No plan mode, hooks, or task tracking
135
+ - Text-only user input
136
+ - Best for linear workflows only
137
+
138
+ ## Multi-IDE Deployment Strategy
139
+
140
+ **Canonical source**: Claude Code format
141
+ **Generation**: Read IDE profile → Transform to IDE-native format
142
+ **MCP constraint**: Cap at 40 tools (Cursor's limit) for consistency
143
+
144
+ **Fallback order when feature unavailable**:
145
+ 1. Use native IDE equivalent (if exists)
146
+ 2. Replace with text-based alternative
147
+ 3. Document limitation in profile
148
+
149
+ **Example - AskUserQuestion replacement**:
150
+ ```
151
+ Claude Code:
152
+ AskUserQuestion(options=[{label: "Yes"}, {label: "No"}])
153
+
154
+ Cursor/Windsurf:
155
+ Would you like to continue? (Type "Yes" or "No")
156
+
157
+ Codex:
158
+ Please choose:
159
+ 1. Yes
160
+ 2. No
161
+ ```
162
+
163
+ ## Version Support
164
+
165
+ - **Claude Code**: Latest (no version pinning)
166
+ - **Cursor**: v2.5+ (Feb 2026)
167
+ - **Windsurf**: Wave 13+ (native worktrees, 11 hooks)
168
+ - **Codex**: Latest (limited feature set)
169
+
170
+ Last updated: 2026-02-20 | Source: Cross-IDE Compatibility Findings