@iloom/cli 0.6.1 → 0.7.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.
Files changed (178) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +35 -18
  3. package/dist/{BranchNamingService-B5PVRR7F.js → BranchNamingService-FLPUUFOB.js} +2 -2
  4. package/dist/ClaudeContextManager-KE5TBZVZ.js +14 -0
  5. package/dist/ClaudeService-CRSETT3A.js +13 -0
  6. package/dist/{GitHubService-S2OGUTDR.js → GitHubService-O7U4UQ7N.js} +3 -3
  7. package/dist/{LoomLauncher-5LFM4LXB.js → LoomLauncher-NL65LSKP.js} +6 -6
  8. package/dist/{MetadataManager-DFI73J3G.js → MetadataManager-XJ2YB762.js} +2 -2
  9. package/dist/PRManager-2ABCWXHW.js +16 -0
  10. package/dist/{ProjectCapabilityDetector-S5FLNCFI.js → ProjectCapabilityDetector-IA56AUE6.js} +3 -3
  11. package/dist/{PromptTemplateManager-C3DK6XZL.js → PromptTemplateManager-7L3HJQQU.js} +2 -2
  12. package/dist/README.md +35 -18
  13. package/dist/{SettingsManager-35F5RUJH.js → SettingsManager-YU4VYPTW.js} +2 -2
  14. package/dist/agents/iloom-framework-detector.md +78 -9
  15. package/dist/agents/iloom-issue-analyze-and-plan.md +42 -17
  16. package/dist/agents/iloom-issue-analyzer.md +14 -14
  17. package/dist/agents/iloom-issue-complexity-evaluator.md +38 -15
  18. package/dist/agents/iloom-issue-enhancer.md +15 -15
  19. package/dist/agents/iloom-issue-implementer.md +44 -15
  20. package/dist/agents/iloom-issue-planner.md +121 -17
  21. package/dist/agents/iloom-issue-reviewer.md +15 -15
  22. package/dist/{build-FJVYP7EV.js → build-HQ5HGA3T.js} +9 -9
  23. package/dist/{chunk-VU3QMIP2.js → chunk-453NC377.js} +91 -15
  24. package/dist/chunk-453NC377.js.map +1 -0
  25. package/dist/{chunk-UQIXZ3BA.js → chunk-5V74K5ZA.js} +2 -2
  26. package/dist/{chunk-7WANFUIK.js → chunk-6TL3BYH6.js} +2 -2
  27. package/dist/{chunk-ZPSTA5PR.js → chunk-7GLZVDPQ.js} +2 -2
  28. package/dist/{chunk-64O2UIWO.js → chunk-AFRICMSW.js} +4 -4
  29. package/dist/{chunk-5TXLVEXT.js → chunk-C3AKFAIR.js} +2 -2
  30. package/dist/{chunk-K7SEEHKO.js → chunk-CNSTXBJ3.js} +7 -419
  31. package/dist/chunk-CNSTXBJ3.js.map +1 -0
  32. package/dist/{chunk-2A7WQKBE.js → chunk-DAOS6EC3.js} +96 -6
  33. package/dist/chunk-DAOS6EC3.js.map +1 -0
  34. package/dist/{chunk-TRQ76ISK.js → chunk-ELJKYFSH.js} +9 -9
  35. package/dist/{chunk-VDA5JMB4.js → chunk-EPPPDVHD.js} +21 -8
  36. package/dist/chunk-EPPPDVHD.js.map +1 -0
  37. package/dist/{chunk-LVBRMTE6.js → chunk-FEAJR6PN.js} +6 -6
  38. package/dist/{chunk-6YSFTPKW.js → chunk-FM4KBPVA.js} +18 -13
  39. package/dist/chunk-FM4KBPVA.js.map +1 -0
  40. package/dist/{chunk-AEIMYF4P.js → chunk-FP7G7DG3.js} +6 -2
  41. package/dist/chunk-FP7G7DG3.js.map +1 -0
  42. package/dist/{chunk-LT3SGBR7.js → chunk-GCPAZSGV.js} +36 -2
  43. package/dist/{chunk-LT3SGBR7.js.map → chunk-GCPAZSGV.js.map} +1 -1
  44. package/dist/chunk-GJMEKEI5.js +517 -0
  45. package/dist/chunk-GJMEKEI5.js.map +1 -0
  46. package/dist/{chunk-7Q66W4OH.js → chunk-HBJITKSZ.js} +37 -1
  47. package/dist/chunk-HBJITKSZ.js.map +1 -0
  48. package/dist/{chunk-7HIRPCKU.js → chunk-HVQNVRAF.js} +2 -2
  49. package/dist/{chunk-6U6VI4SZ.js → chunk-KVS4XGBQ.js} +4 -4
  50. package/dist/{chunk-SN3Z6EZO.js → chunk-N7FVXZNI.js} +2 -2
  51. package/dist/{chunk-I75JMBNB.js → chunk-QQFBMCAH.js} +54 -43
  52. package/dist/chunk-QQFBMCAH.js.map +1 -0
  53. package/dist/{chunk-AXX3QIKK.js → chunk-RD7I2Q2F.js} +2 -2
  54. package/dist/chunk-TIYJEEVO.js +79 -0
  55. package/dist/chunk-TIYJEEVO.js.map +1 -0
  56. package/dist/{chunk-EK3XCAAS.js → chunk-UDRZY65Y.js} +2 -2
  57. package/dist/{chunk-3PT7RKL5.js → chunk-USJSNHGG.js} +2 -2
  58. package/dist/{chunk-CFUWQHCJ.js → chunk-VWGKGNJP.js} +114 -35
  59. package/dist/chunk-VWGKGNJP.js.map +1 -0
  60. package/dist/{chunk-F6WVM437.js → chunk-WFQ5CLTR.js} +6 -3
  61. package/dist/chunk-WFQ5CLTR.js.map +1 -0
  62. package/dist/{chunk-BXCPJJYM.js → chunk-XPKN3QWY.js} +24 -6
  63. package/dist/chunk-XPKN3QWY.js.map +1 -0
  64. package/dist/chunk-YQNSZKKT.js +822 -0
  65. package/dist/chunk-YQNSZKKT.js.map +1 -0
  66. package/dist/{chunk-GEXP5IOF.js → chunk-ZA575VLF.js} +21 -8
  67. package/dist/chunk-ZA575VLF.js.map +1 -0
  68. package/dist/{claude-H33OQMXO.js → claude-6H36IBHO.js} +4 -2
  69. package/dist/{cleanup-BRUAINKE.js → cleanup-77U5ATYI.js} +20 -16
  70. package/dist/cleanup-77U5ATYI.js.map +1 -0
  71. package/dist/cli.js +361 -954
  72. package/dist/cli.js.map +1 -1
  73. package/dist/commit-ONRXU67O.js +237 -0
  74. package/dist/commit-ONRXU67O.js.map +1 -0
  75. package/dist/{compile-ULNO5F7Q.js → compile-CT7IR7O2.js} +9 -9
  76. package/dist/{contribute-Q6GX6AXK.js → contribute-GXKOIA42.js} +5 -5
  77. package/dist/{dev-server-4RCDJ5MU.js → dev-server-UKAPBGUR.js} +22 -74
  78. package/dist/dev-server-UKAPBGUR.js.map +1 -0
  79. package/dist/{feedback-O4Q55SVS.js → feedback-K3A4QUSG.js} +10 -10
  80. package/dist/{git-FVMGBHC2.js → git-ENLT2VNI.js} +6 -4
  81. package/dist/hooks/iloom-hook.js +30 -2
  82. package/dist/{ignite-VHV65WEZ.js → ignite-YUAOJ5PP.js} +20 -20
  83. package/dist/ignite-YUAOJ5PP.js.map +1 -0
  84. package/dist/index.d.ts +71 -27
  85. package/dist/index.js +196 -266
  86. package/dist/index.js.map +1 -1
  87. package/dist/init-XQQMFDM6.js +21 -0
  88. package/dist/{lint-5JMCWE4Y.js → lint-HAVU4U34.js} +9 -9
  89. package/dist/mcp/issue-management-server.js +359 -13
  90. package/dist/mcp/issue-management-server.js.map +1 -1
  91. package/dist/mcp/recap-server.js +13 -4
  92. package/dist/mcp/recap-server.js.map +1 -1
  93. package/dist/{open-WHVUYGPY.js → open-QI63XQ4F.js} +25 -76
  94. package/dist/open-QI63XQ4F.js.map +1 -0
  95. package/dist/{projects-SA76I4TZ.js → projects-TWY4RT2Z.js} +11 -4
  96. package/dist/projects-TWY4RT2Z.js.map +1 -0
  97. package/dist/prompts/init-prompt.txt +119 -51
  98. package/dist/prompts/issue-prompt.txt +132 -63
  99. package/dist/prompts/pr-prompt.txt +3 -3
  100. package/dist/prompts/regular-prompt.txt +16 -18
  101. package/dist/prompts/session-summary-prompt.txt +13 -13
  102. package/dist/{rebase-Y4AS6LQW.js → rebase-QYCRF7JG.js} +53 -8
  103. package/dist/rebase-QYCRF7JG.js.map +1 -0
  104. package/dist/{recap-VOOUXOGP.js → recap-ZKGHZCX6.js} +6 -6
  105. package/dist/{run-NCRK5NPR.js → run-YDVYORT2.js} +25 -76
  106. package/dist/run-YDVYORT2.js.map +1 -0
  107. package/dist/schema/settings.schema.json +14 -3
  108. package/dist/{shell-SBLXVOVJ.js → shell-2NNSIU34.js} +6 -6
  109. package/dist/{summary-CVFAMDOJ.js → summary-G6L3VAKK.js} +11 -10
  110. package/dist/{summary-CVFAMDOJ.js.map → summary-G6L3VAKK.js.map} +1 -1
  111. package/dist/{test-3KIVXI6J.js → test-75WAA6DU.js} +9 -9
  112. package/dist/{test-git-ZB6AGGRW.js → test-git-E2BLXR6M.js} +4 -4
  113. package/dist/{test-prefix-FBGXKMPA.js → test-prefix-A7JGGYAA.js} +4 -4
  114. package/dist/{test-webserver-YVQD42W6.js → test-webserver-NRMGT2HB.js} +29 -8
  115. package/dist/test-webserver-NRMGT2HB.js.map +1 -0
  116. package/package.json +3 -1
  117. package/dist/ClaudeContextManager-6J2EB4QU.js +0 -14
  118. package/dist/ClaudeService-O2PB22GX.js +0 -13
  119. package/dist/PRManager-GB3FOJ2W.js +0 -14
  120. package/dist/chunk-2A7WQKBE.js.map +0 -1
  121. package/dist/chunk-6YSFTPKW.js.map +0 -1
  122. package/dist/chunk-7Q66W4OH.js.map +0 -1
  123. package/dist/chunk-AEIMYF4P.js.map +0 -1
  124. package/dist/chunk-BXCPJJYM.js.map +0 -1
  125. package/dist/chunk-CFUWQHCJ.js.map +0 -1
  126. package/dist/chunk-F6WVM437.js.map +0 -1
  127. package/dist/chunk-GEXP5IOF.js.map +0 -1
  128. package/dist/chunk-I75JMBNB.js.map +0 -1
  129. package/dist/chunk-K7SEEHKO.js.map +0 -1
  130. package/dist/chunk-VDA5JMB4.js.map +0 -1
  131. package/dist/chunk-VU3QMIP2.js.map +0 -1
  132. package/dist/chunk-W6WVRHJ6.js +0 -251
  133. package/dist/chunk-W6WVRHJ6.js.map +0 -1
  134. package/dist/cleanup-BRUAINKE.js.map +0 -1
  135. package/dist/dev-server-4RCDJ5MU.js.map +0 -1
  136. package/dist/ignite-VHV65WEZ.js.map +0 -1
  137. package/dist/init-UTYRHNJJ.js +0 -21
  138. package/dist/open-WHVUYGPY.js.map +0 -1
  139. package/dist/projects-SA76I4TZ.js.map +0 -1
  140. package/dist/rebase-Y4AS6LQW.js.map +0 -1
  141. package/dist/run-NCRK5NPR.js.map +0 -1
  142. package/dist/test-webserver-YVQD42W6.js.map +0 -1
  143. /package/dist/{BranchNamingService-B5PVRR7F.js.map → BranchNamingService-FLPUUFOB.js.map} +0 -0
  144. /package/dist/{ClaudeContextManager-6J2EB4QU.js.map → ClaudeContextManager-KE5TBZVZ.js.map} +0 -0
  145. /package/dist/{ClaudeService-O2PB22GX.js.map → ClaudeService-CRSETT3A.js.map} +0 -0
  146. /package/dist/{GitHubService-S2OGUTDR.js.map → GitHubService-O7U4UQ7N.js.map} +0 -0
  147. /package/dist/{LoomLauncher-5LFM4LXB.js.map → LoomLauncher-NL65LSKP.js.map} +0 -0
  148. /package/dist/{MetadataManager-DFI73J3G.js.map → MetadataManager-XJ2YB762.js.map} +0 -0
  149. /package/dist/{PRManager-GB3FOJ2W.js.map → PRManager-2ABCWXHW.js.map} +0 -0
  150. /package/dist/{ProjectCapabilityDetector-S5FLNCFI.js.map → ProjectCapabilityDetector-IA56AUE6.js.map} +0 -0
  151. /package/dist/{PromptTemplateManager-C3DK6XZL.js.map → PromptTemplateManager-7L3HJQQU.js.map} +0 -0
  152. /package/dist/{SettingsManager-35F5RUJH.js.map → SettingsManager-YU4VYPTW.js.map} +0 -0
  153. /package/dist/{build-FJVYP7EV.js.map → build-HQ5HGA3T.js.map} +0 -0
  154. /package/dist/{chunk-UQIXZ3BA.js.map → chunk-5V74K5ZA.js.map} +0 -0
  155. /package/dist/{chunk-7WANFUIK.js.map → chunk-6TL3BYH6.js.map} +0 -0
  156. /package/dist/{chunk-ZPSTA5PR.js.map → chunk-7GLZVDPQ.js.map} +0 -0
  157. /package/dist/{chunk-64O2UIWO.js.map → chunk-AFRICMSW.js.map} +0 -0
  158. /package/dist/{chunk-5TXLVEXT.js.map → chunk-C3AKFAIR.js.map} +0 -0
  159. /package/dist/{chunk-TRQ76ISK.js.map → chunk-ELJKYFSH.js.map} +0 -0
  160. /package/dist/{chunk-LVBRMTE6.js.map → chunk-FEAJR6PN.js.map} +0 -0
  161. /package/dist/{chunk-7HIRPCKU.js.map → chunk-HVQNVRAF.js.map} +0 -0
  162. /package/dist/{chunk-6U6VI4SZ.js.map → chunk-KVS4XGBQ.js.map} +0 -0
  163. /package/dist/{chunk-SN3Z6EZO.js.map → chunk-N7FVXZNI.js.map} +0 -0
  164. /package/dist/{chunk-AXX3QIKK.js.map → chunk-RD7I2Q2F.js.map} +0 -0
  165. /package/dist/{chunk-EK3XCAAS.js.map → chunk-UDRZY65Y.js.map} +0 -0
  166. /package/dist/{chunk-3PT7RKL5.js.map → chunk-USJSNHGG.js.map} +0 -0
  167. /package/dist/{claude-H33OQMXO.js.map → claude-6H36IBHO.js.map} +0 -0
  168. /package/dist/{compile-ULNO5F7Q.js.map → compile-CT7IR7O2.js.map} +0 -0
  169. /package/dist/{contribute-Q6GX6AXK.js.map → contribute-GXKOIA42.js.map} +0 -0
  170. /package/dist/{feedback-O4Q55SVS.js.map → feedback-K3A4QUSG.js.map} +0 -0
  171. /package/dist/{git-FVMGBHC2.js.map → git-ENLT2VNI.js.map} +0 -0
  172. /package/dist/{init-UTYRHNJJ.js.map → init-XQQMFDM6.js.map} +0 -0
  173. /package/dist/{lint-5JMCWE4Y.js.map → lint-HAVU4U34.js.map} +0 -0
  174. /package/dist/{recap-VOOUXOGP.js.map → recap-ZKGHZCX6.js.map} +0 -0
  175. /package/dist/{shell-SBLXVOVJ.js.map → shell-2NNSIU34.js.map} +0 -0
  176. /package/dist/{test-3KIVXI6J.js.map → test-75WAA6DU.js.map} +0 -0
  177. /package/dist/{test-git-ZB6AGGRW.js.map → test-git-E2BLXR6M.js.map} +0 -0
  178. /package/dist/{test-prefix-FBGXKMPA.js.map → test-prefix-A7JGGYAA.js.map} +0 -0
@@ -26,7 +26,7 @@ The recap panel helps users stay oriented without reading all your output. Captu
26
26
  ## Core Workflow
27
27
 
28
28
  ### Step 1: Fetch the Issue
29
- Please read the referenced issue and comments using the MCP tool `mcp__issue_management__get_issue` with `{ number: ISSUE_NUMBER, includeComments: true }`
29
+ Please read the referenced issue and comments using the MCP tool `mcp__issue_management__get_issue` with `{ number: {{ISSUE_NUMBER}}, includeComments: true }`
30
30
 
31
31
  ### Step 2: Perform Comprehensive Research
32
32
 
@@ -298,9 +298,9 @@ Available Tools:
298
298
  Parameters: { commentId: string, number: string }
299
299
  Returns: { id, body, author, created_at, ... }
300
300
 
301
- {{#IF DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR DRAFT_PR_NUMBER
302
- Parameters: { number: string, body: "markdown content", type: "pr" }{{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue ISSUE_NUMBER
303
- Parameters: { number: string, body: "markdown content", type: "issue" }{{/IF STANDARD_ISSUE_MODE}}
301
+ {{#if DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR {{DRAFT_PR_NUMBER}}
302
+ Parameters: { number: string, body: "markdown content", type: "pr" }{{/if}}{{#if STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue {{ISSUE_NUMBER}}
303
+ Parameters: { number: string, body: "markdown content", type: "issue" }{{/if}}
304
304
  Returns: { id: string, url: string, created_at: string }
305
305
 
306
306
  - mcp__issue_management__update_comment: Update an existing comment
@@ -323,15 +323,15 @@ Workflow Comment Strategy:
323
323
  Example Usage:
324
324
  ```
325
325
  // Start
326
- {{#IF DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
327
- number: DRAFT_PR_NUMBER,
326
+ {{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
327
+ number: {{DRAFT_PR_NUMBER}},
328
328
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
329
329
  type: "pr"
330
- }){{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
331
- number: ISSUE_NUMBER,
330
+ }){{/if}}{{#if STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
331
+ number: {{ISSUE_NUMBER}},
332
332
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
333
333
  type: "issue"
334
- }){{/IF STANDARD_ISSUE_MODE}}
334
+ }){{/if}}
335
335
 
336
336
  // Log the comment as an artifact
337
337
  await mcp__recap__add_artifact({
@@ -341,15 +341,15 @@ await mcp__recap__add_artifact({
341
341
  })
342
342
 
343
343
  // Update as you progress
344
- {{#IF DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
344
+ {{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
345
345
  commentId: comment.id,
346
- number: DRAFT_PR_NUMBER,
346
+ number: {{DRAFT_PR_NUMBER}},
347
347
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
348
- }){{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
348
+ }){{/if}}{{#if STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
349
349
  commentId: comment.id,
350
- number: ISSUE_NUMBER,
350
+ number: {{ISSUE_NUMBER}},
351
351
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
352
- }){{/IF STANDARD_ISSUE_MODE}}
352
+ }){{/if}}
353
353
  ```
354
354
  </comment_tool_info>
355
355
 
@@ -34,7 +34,7 @@ recap.set_complexity({ complexity: 'simple', reason: 'Few files, low risk' })
34
34
 
35
35
  ### Step 1: Fetch the Issue
36
36
 
37
- Read the issue using the MCP issue management tool: `mcp__issue_management__get_issue` with `{ number: ISSUE_NUMBER, includeComments: true }`
37
+ Read the issue using the MCP issue management tool: `mcp__issue_management__get_issue` with `{ number: {{ISSUE_NUMBER}}, includeComments: true }`
38
38
 
39
39
  ### Step 2: Perform Quick Complexity Assessment
40
40
 
@@ -135,6 +135,25 @@ Estimate the following metrics:
135
135
  - HIGH risks: Core functionality changes, security implications, performance impacts
136
136
  - CRITICAL risks: Data loss potential, system-wide failures, irreversible operations
137
137
 
138
+ 8. **Architectural Complexity Signals** (Any YES = COMPLEX):
139
+ - **CRITICAL**: These signals detect "hidden complexity" that surface metrics miss
140
+
141
+ | Signal | Question |
142
+ |--------|----------|
143
+ | External constraints | Does this depend on third-party system behavior not documented in our codebase? |
144
+ | Uncertain approach | Are there multiple valid implementation approaches with different tradeoffs? |
145
+ | New patterns | Does this require designing new patterns rather than extending existing ones? |
146
+ | Integration points | Does this coordinate between multiple systems (hooks, extensions, APIs)? |
147
+ | "How" clarity | Does the implementation approach NOT follow obviously from requirements? |
148
+
149
+ **Key Heuristic**: If the planner/analyzer would need to make architectural decisions (not just identify files to change), classify as COMPLEX.
150
+
151
+ **Detection Process**:
152
+ 1. Check if issue mentions external tools/APIs with undocumented behavior
153
+ 2. Look for phrases indicating uncertainty: "could", "might", "options", "approach", "design"
154
+ 3. Check if solution requires new coordination mechanisms not in codebase
155
+ 4. Assess whether "how to implement" is obvious from "what to implement"
156
+
138
157
  **Classification Logic:**
139
158
 
140
159
  - **TRIVIAL**: ALL conditions must be met:
@@ -143,6 +162,7 @@ Estimate the following metrics:
143
162
  - No breaking changes
144
163
  - No database migrations
145
164
  - No cross-cutting changes
165
+ - No architectural complexity signals triggered
146
166
  - Risk level = LOW only
147
167
  - All modified files <500 LOC UNLESS changes are isolated to specific functions/handlers in larger files
148
168
  - NOT security/authentication/login related
@@ -157,6 +177,7 @@ Estimate the following metrics:
157
177
  - No breaking changes
158
178
  - No database migrations
159
179
  - No cross-cutting changes
180
+ - No architectural complexity signals triggered
160
181
  - Risk level ≤ MEDIUM
161
182
  - **All modified files <500 LOC OR well-architected**
162
183
 
@@ -164,8 +185,9 @@ Estimate the following metrics:
164
185
  - Any modified file >1000 LOC
165
186
  - Any modified file 500-1000 LOC with poor architecture quality
166
187
  - Multiple modified files >500 LOC (cumulative cognitive load)
188
+ - **Any Architectural Complexity Signal answered YES**
167
189
 
168
- **IMPORTANT**: Cross-cutting changes and large/poorly-architected files automatically trigger COMPLEX classification regardless of other metrics. These changes appear deceptively simple but require complex coordination or significant cognitive load.
190
+ **IMPORTANT**: Cross-cutting changes, architectural complexity signals, and large/poorly-architected files automatically trigger COMPLEX classification regardless of other metrics. These changes appear deceptively simple but require complex coordination, architectural decisions, or significant cognitive load.
169
191
 
170
192
  <comment_tool_info>
171
193
  IMPORTANT: You have been provided with MCP tools for issue management during this workflow.
@@ -179,9 +201,9 @@ Available Tools:
179
201
  Parameters: { commentId: string, number: string }
180
202
  Returns: { id, body, author, created_at, ... }
181
203
 
182
- {{#IF DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR DRAFT_PR_NUMBER
183
- Parameters: { number: string, body: "markdown content", type: "pr" }{{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue ISSUE_NUMBER
184
- Parameters: { number: string, body: "markdown content", type: "issue" }{{/IF STANDARD_ISSUE_MODE}}
204
+ {{#if DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR {{DRAFT_PR_NUMBER}}
205
+ Parameters: { number: string, body: "markdown content", type: "pr" }{{/if}}{{#if STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue {{ISSUE_NUMBER}}
206
+ Parameters: { number: string, body: "markdown content", type: "issue" }{{/if}}
185
207
  Returns: { id: string, url: string, created_at: string }
186
208
 
187
209
  - mcp__issue_management__update_comment: Update an existing comment
@@ -205,15 +227,15 @@ Workflow Comment Strategy:
205
227
  Example Usage:
206
228
  ```
207
229
  // Start
208
- {{#IF DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
209
- number: DRAFT_PR_NUMBER,
230
+ {{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
231
+ number: {{DRAFT_PR_NUMBER}},
210
232
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
211
233
  type: "pr"
212
- }){{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
213
- number: ISSUE_NUMBER,
234
+ }){{/if}}{{#if STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
235
+ number: {{ISSUE_NUMBER}},
214
236
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
215
237
  type: "issue"
216
- }){{/IF STANDARD_ISSUE_MODE}}
238
+ }){{/if}}
217
239
 
218
240
  // Log the comment as an artifact
219
241
  await mcp__recap__add_artifact({
@@ -223,15 +245,15 @@ await mcp__recap__add_artifact({
223
245
  })
224
246
 
225
247
  // Update as you progress
226
- {{#IF DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
248
+ {{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
227
249
  commentId: comment.id,
228
- number: DRAFT_PR_NUMBER,
250
+ number: {{DRAFT_PR_NUMBER}},
229
251
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
230
- }){{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
252
+ }){{/if}}{{#if STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
231
253
  commentId: comment.id,
232
- number: ISSUE_NUMBER,
254
+ number: {{ISSUE_NUMBER}},
233
255
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
234
- }){{/IF STANDARD_ISSUE_MODE}}
256
+ }){{/if}}
235
257
  ```
236
258
  </comment_tool_info>
237
259
 
@@ -251,6 +273,7 @@ await mcp__recap__add_artifact({
251
273
  - Database migrations: [Yes/No]
252
274
  - Cross-cutting changes: [Yes/No]
253
275
  - File architecture quality: [Good/Poor - include largest file size if >500 LOC]
276
+ - Architectural signals triggered: [None / List of triggered signals]
254
277
  - Overall risk level: [Low/Medium/High]
255
278
 
256
279
  **Reasoning**: [1-2 sentence explanation of why this classification was chosen]
@@ -34,7 +34,7 @@ First, determine which mode to operate in by checking if the user input contains
34
34
  - **Direct Prompt Mode**: Input is a text description without an issue identifier
35
35
 
36
36
  ### Step 2: Fetch the Input
37
- - **Issue Mode**: Read the issue using the MCP tool `mcp__issue_management__get_issue` with `{ number: ISSUE_NUMBER, includeComments: true }`. This returns the issue body, title, comments, labels, assignees, and other metadata.
37
+ - **Issue Mode**: Read the issue using the MCP tool `mcp__issue_management__get_issue` with `{ number: {{ISSUE_NUMBER}}, includeComments: true }`. This returns the issue body, title, comments, labels, assignees, and other metadata.
38
38
  - If this command fails due to permissions, authentication, or access issues, return immediately: `Permission denied: [specific error description]`
39
39
  - **Direct Prompt Mode**: Read and thoroughly understand the provided text description
40
40
 
@@ -103,9 +103,9 @@ Available Tools:
103
103
  Parameters: { commentId: string, number: string }
104
104
  Returns: { id, body, author, created_at, ... }
105
105
 
106
- {{#IF DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR DRAFT_PR_NUMBER
107
- Parameters: { number: string, body: "markdown content", type: "pr" }{{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue ISSUE_NUMBER
108
- Parameters: { number: string, body: "markdown content", type: "issue" }{{/IF STANDARD_ISSUE_MODE}}
106
+ {{#if DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR {{DRAFT_PR_NUMBER}}
107
+ Parameters: { number: string, body: "markdown content", type: "pr" }{{/if}}{{#if STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue {{ISSUE_NUMBER}}
108
+ Parameters: { number: string, body: "markdown content", type: "issue" }{{/if}}
109
109
  Returns: { id: string, url: string, created_at: string }
110
110
 
111
111
  - mcp__issue_management__update_comment: Update an existing comment
@@ -129,15 +129,15 @@ Workflow Comment Strategy:
129
129
  Example Usage:
130
130
  ```
131
131
  // Start
132
- {{#IF DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
133
- number: DRAFT_PR_NUMBER,
132
+ {{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
133
+ number: {{DRAFT_PR_NUMBER}},
134
134
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
135
135
  type: "pr"
136
- }){{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
137
- number: ISSUE_NUMBER,
136
+ }){{/if}}{{#if STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
137
+ number: {{ISSUE_NUMBER}},
138
138
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
139
139
  type: "issue"
140
- }){{/IF STANDARD_ISSUE_MODE}}
140
+ }){{/if}}
141
141
 
142
142
  // Log the comment as an artifact
143
143
  await mcp__recap__add_artifact({
@@ -147,15 +147,15 @@ await mcp__recap__add_artifact({
147
147
  })
148
148
 
149
149
  // Update as you progress
150
- {{#IF DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
150
+ {{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
151
151
  commentId: comment.id,
152
- number: DRAFT_PR_NUMBER,
152
+ number: {{DRAFT_PR_NUMBER}},
153
153
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
154
- }){{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
154
+ }){{/if}}{{#if STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
155
155
  commentId: comment.id,
156
- number: ISSUE_NUMBER,
156
+ number: {{ISSUE_NUMBER}},
157
157
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
158
- }){{/IF STANDARD_ISSUE_MODE}}
158
+ }){{/if}}
159
159
  ```
160
160
  </comment_tool_info>
161
161
 
@@ -163,7 +163,7 @@ await mcp__recap__add_artifact({
163
163
 
164
164
  When analyzing input (regardless of mode):
165
165
  1. **Read the input**:
166
- - Issue Mode: Use the MCP tool `mcp__issue_management__get_issue` with `{ number: ISSUE_NUMBER, includeComments: true }`
166
+ - Issue Mode: Use the MCP tool `mcp__issue_management__get_issue` with `{ number: {{ISSUE_NUMBER}}, includeComments: true }`
167
167
  - Direct Prompt Mode: Carefully read the provided text description
168
168
  2. **Assess quality first** (Step 3 from Core Workflow):
169
169
  - Check word count (>250 words?)
@@ -27,9 +27,9 @@ Available Tools:
27
27
  Parameters: { commentId: string, number: string }
28
28
  Returns: { id, body, author, created_at, ... }
29
29
 
30
- {{#IF DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR DRAFT_PR_NUMBER
31
- Parameters: { number: string, body: "markdown content", type: "pr" }{{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue ISSUE_NUMBER
32
- Parameters: { number: string, body: "markdown content", type: "issue" }{{/IF STANDARD_ISSUE_MODE}}
30
+ {{#if DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR {{DRAFT_PR_NUMBER}}
31
+ Parameters: { number: string, body: "markdown content", type: "pr" }{{/if}}{{#if STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue {{ISSUE_NUMBER}}
32
+ Parameters: { number: string, body: "markdown content", type: "issue" }{{/if}}
33
33
  Returns: { id: string, url: string, created_at: string }
34
34
 
35
35
  - mcp__issue_management__update_comment: Update an existing comment
@@ -37,6 +37,15 @@ Available Tools:
37
37
  Returns: { id: string, url: string, updated_at: string }
38
38
 
39
39
  Workflow Comment Strategy:
40
+
41
+ **MULTI-STEP MODE CHECK:** If the orchestrator told you "DO NOT create your own issue comment" or assigned you a specific step (e.g., "You are implementing Step 2"), you are in MULTI-STEP MODE:
42
+ - Do NOT create any issue comments
43
+ - Do NOT call mcp__issue_management__create_comment or update_comment
44
+ - Just implement your assigned step and return results to the orchestrator
45
+ - The orchestrator manages the progress comment
46
+ - Skip the comment strategy below and go directly to implementation
47
+
48
+ **SINGLE-STEP MODE (default):** If no step was assigned, follow this comment strategy:
40
49
  1. When beginning implementation, create a NEW issue comment informing the user you are working on Implementing the issue.
41
50
  2. Store the returned comment ID and URL. After creating the comment, call `mcp__recap__add_artifact` to log it with type='comment', primaryUrl=[comment URL], and a brief description (e.g., "Implementation progress comment").
42
51
  3. Once you have formulated your tasks in a todo format, update the issue comment using mcp__issue_management__update_comment with your tasks formatted as checklists using markdown:
@@ -59,15 +68,15 @@ Workflow Comment Strategy:
59
68
  Example Usage:
60
69
  ```
61
70
  // Start
62
- {{#IF DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
63
- number: DRAFT_PR_NUMBER,
71
+ {{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
72
+ number: {{DRAFT_PR_NUMBER}},
64
73
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
65
74
  type: "pr"
66
- }){{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
67
- number: ISSUE_NUMBER,
75
+ }){{/if}}{{#if STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
76
+ number: {{ISSUE_NUMBER}},
68
77
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
69
78
  type: "issue"
70
- }){{/IF STANDARD_ISSUE_MODE}}
79
+ }){{/if}}
71
80
 
72
81
  // Log the comment as an artifact
73
82
  await mcp__recap__add_artifact({
@@ -77,15 +86,15 @@ await mcp__recap__add_artifact({
77
86
  })
78
87
 
79
88
  // Update as you progress
80
- {{#IF DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
89
+ {{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
81
90
  commentId: comment.id,
82
- number: DRAFT_PR_NUMBER,
91
+ number: {{DRAFT_PR_NUMBER}},
83
92
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
84
- }){{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
93
+ }){{/if}}{{#if STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
85
94
  commentId: comment.id,
86
- number: ISSUE_NUMBER,
95
+ number: {{ISSUE_NUMBER}},
87
96
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
88
- }){{/IF STANDARD_ISSUE_MODE}}
97
+ }){{/if}}
89
98
  ```
90
99
  </comment_tool_info>
91
100
 
@@ -94,7 +103,7 @@ await mcp__recap__add_artifact({
94
103
  ## Core Workflow
95
104
 
96
105
  ### Step 1: Fetch the Issue
97
- You will thoroughly read issues using the MCP tool `mcp__issue_management__get_issue` with `{ number: ISSUE_NUMBER, includeComments: true }` to extract:
106
+ You will thoroughly read issues using the MCP tool `mcp__issue_management__get_issue` with `{ number: {{ISSUE_NUMBER}}, includeComments: true }` to extract:
98
107
  - The complete issue body for context
99
108
  - All comments containing implementation plans
100
109
  - Specific requirements and constraints
@@ -115,6 +124,24 @@ Before implementing, extract and validate the implementation plan:
115
124
 
116
125
  **CRITICAL**: This step prevents wasted time searching for files when the plan already provides exact locations.
117
126
 
127
+ ### Step 1.6: Apply Step Filter (Multi-Step Execution)
128
+
129
+ If the orchestrator assigned you a specific step (e.g., "You are implementing Step 2"):
130
+
131
+ 1. **Parse step assignment**: Extract step index N from the orchestrator's instructions
132
+ 2. **Locate step definition**: In the implementation plan, find "Implementation Steps" or "Detailed Execution Order" section and locate Step N
133
+ 3. **Extract file scope**: Parse the "**Files:**" list for Step N
134
+ 4. **Filter implementation**: During Step 2 implementation, ONLY modify files listed in this step's scope
135
+ 5. **Skip other files**: If the plan references files outside this step's scope, skip them with note: "Skipping [file] - not in Step N scope"
136
+
137
+ **CRITICAL**: When step filtering is active:
138
+ - Only implement changes to files in the step's "**Files:**" list
139
+ - Run validation only for the scope of changes made in this step
140
+ - Do NOT create validation failures for work deferred to other steps
141
+ - Final summary should note: "Implemented Step N of M"
142
+
143
+ If no step was assigned, implement the entire plan as before.
144
+
118
145
  ### Step 2: Implement the Solution
119
146
 
120
147
  2. **Strict Implementation Guidelines**:
@@ -160,7 +187,9 @@ When implementation is complete, use this TWO-SECTION structure for your final c
160
187
  **Target audience:** Human reviewers who need to understand what was done
161
188
 
162
189
  ```markdown
163
- # Implementation Complete - Issue #[NUMBER] ✅
190
+ # Implementation Complete - Issue #[NUMBER] [Step N/M]
191
+
192
+ **Note:** Include "[Step N/M]" only when executing a specific step from a multi-step plan. Omit for single-step implementations.
164
193
 
165
194
  ## Summary
166
195
  [2-3 sentences describing what was implemented]
@@ -43,9 +43,9 @@ Available Tools:
43
43
  Parameters: { commentId: string, number: string }
44
44
  Returns: { id, body, author, created_at, ... }
45
45
 
46
- {{#IF DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR DRAFT_PR_NUMBER
47
- Parameters: { number: string, body: "markdown content", type: "pr" }{{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue ISSUE_NUMBER
48
- Parameters: { number: string, body: "markdown content", type: "issue" }{{/IF STANDARD_ISSUE_MODE}}
46
+ {{#if DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR {{DRAFT_PR_NUMBER}}
47
+ Parameters: { number: string, body: "markdown content", type: "pr" }{{/if}}{{#if STANDARD_ISSUE_MODE}}- mcp__issue_management__create_comment: Create a new comment on issue {{ISSUE_NUMBER}}
48
+ Parameters: { number: string, body: "markdown content", type: "issue" }{{/if}}
49
49
  Returns: { id: string, url: string, created_at: string }
50
50
 
51
51
  - mcp__issue_management__update_comment: Update an existing comment
@@ -68,15 +68,15 @@ Workflow Comment Strategy:
68
68
  Example Usage:
69
69
  ```
70
70
  // Start
71
- {{#IF DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
72
- number: DRAFT_PR_NUMBER,
71
+ {{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
72
+ number: {{DRAFT_PR_NUMBER}},
73
73
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
74
74
  type: "pr"
75
- }){{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
76
- number: ISSUE_NUMBER,
75
+ }){{/if}}{{#if STANDARD_ISSUE_MODE}}const comment = await mcp__issue_management__create_comment({
76
+ number: {{ISSUE_NUMBER}},
77
77
  body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
78
78
  type: "issue"
79
- }){{/IF STANDARD_ISSUE_MODE}}
79
+ }){{/if}}
80
80
 
81
81
  // Log the comment as an artifact
82
82
  await mcp__recap__add_artifact({
@@ -86,15 +86,15 @@ await mcp__recap__add_artifact({
86
86
  })
87
87
 
88
88
  // Update as you progress
89
- {{#IF DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
89
+ {{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
90
90
  commentId: comment.id,
91
- number: DRAFT_PR_NUMBER,
91
+ number: {{DRAFT_PR_NUMBER}},
92
92
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
93
- }){{/IF DRAFT_PR_MODE}}{{#IF STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
93
+ }){{/if}}{{#if STANDARD_ISSUE_MODE}}await mcp__issue_management__update_comment({
94
94
  commentId: comment.id,
95
- number: ISSUE_NUMBER,
95
+ number: {{ISSUE_NUMBER}},
96
96
  body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
97
- }){{/IF STANDARD_ISSUE_MODE}}
97
+ }){{/if}}
98
98
  ```
99
99
  </comment_tool_info>
100
100
 
@@ -103,7 +103,7 @@ await mcp__recap__add_artifact({
103
103
  When analyzing an issue:
104
104
 
105
105
  ### Step 1: Fetch the Issue
106
- First fetch the issue using the MCP tool `mcp__issue_management__get_issue` with `{ number: ISSUE_NUMBER, includeComments: true }`. This returns the issue body, title, comments, labels, assignees, and other metadata.
106
+ First fetch the issue using the MCP tool `mcp__issue_management__get_issue` with `{ number: {{ISSUE_NUMBER}}, includeComments: true }`. This returns the issue body, title, comments, labels, assignees, and other metadata.
107
107
 
108
108
  If no issue number has been provided, use the current branch name to look for an issue number (i.e issue-NN). If there is a pr_NN suffix, look at both the PR and the issue (if one is also referenced in the branch name).
109
109
 
@@ -156,6 +156,37 @@ copySettingsFile() {
156
156
  }
157
157
  ```
158
158
 
159
+ ### Parallelization Planning
160
+
161
+ When creating the Execution Plan, analyze which steps can run in parallel vs. sequentially:
162
+
163
+ **Steps that CAN run in parallel:**
164
+ - Steps touching completely different files/modules
165
+ - Independent feature implementations that don't share state
166
+ - Adding tests for different, unrelated components
167
+ - Documentation updates alongside code changes (different files)
168
+
169
+ **Steps that MUST be sequential:**
170
+ - Steps modifying the same file (one step must complete before another can safely edit)
171
+ - Steps where one creates types/interfaces that another imports
172
+ - Steps where one creates a function/class that another calls
173
+ - Integration layers that depend on multiple components being complete
174
+
175
+ **Decision process for each step:**
176
+ 1. List ALL files the step will touch (create, modify, or delete)
177
+ 2. Compare against other steps' file lists
178
+ 3. If no overlap AND no import/export dependencies → can parallelize
179
+ 4. If overlap OR dependencies → must be sequential
180
+
181
+ **Example analysis:**
182
+ ```
183
+ Step 1: Create types.ts (NEW) → Sequential first (others import from it)
184
+ Step 2: Modify moduleA.ts → Parallel with Step 3 (different file)
185
+ Step 3: Modify moduleB.ts → Parallel with Step 2 (different file)
186
+ Step 4: Modify index.ts (imports from moduleA & moduleB) → Sequential after 2,3
187
+ Step 5: Add tests → Sequential last
188
+ ```
189
+
159
190
  ### General Best Practices
160
191
  - **Read CLAUDE.md for project guidance**: Before planning, read the project's CLAUDE.md file (if it exists) for project-specific conventions, testing approaches, and development workflows. Follow the guidance provided there.
161
192
  - **Use pseudocode, not full implementations**: Plans are reviewed and edited by humans. Use comments or pseudocode to communicate intent - full code implementations make plans hard to review.
@@ -219,6 +250,8 @@ Brief overview of major phases (5-7 phases maximum):
219
250
  2. **Phase Name**: One-sentence description
220
251
  [Continue...]
221
252
 
253
+ **Note:** See "Execution Plan" in Section 2 for detailed parallelization instructions.
254
+
222
255
  ## Quick Stats
223
256
 
224
257
  - X files for deletion (Y lines total)
@@ -324,14 +357,63 @@ If structure is >5 lines:
324
357
 
325
358
  Provide execution steps concisely:
326
359
 
327
- ### Phase 1: [Phase Name]
360
+ ### Step 1: [Step Name]
361
+ **Files:** [List all files this step touches]
328
362
  1. [Action with file:line reference] → Verify: [Expected outcome]
329
363
  2. [Next action] → Verify: [Expected outcome]
330
364
 
331
- [Continue for all phases - keep brief, one line per step...]
365
+ ### Step 2: [Step Name]
366
+ **Files:** [List all files this step touches]
367
+ 1. [Action with file:line reference] → Verify: [Expected outcome]
368
+
369
+ [Continue for all steps - keep brief, one line per action...]
332
370
 
333
371
  **NOTE:** Follow the project's development workflow as specified in CLAUDE.md (e.g., TDD, test-after, or other approaches).
334
372
 
373
+ ## Execution Plan
374
+
375
+ This section tells the orchestrator EXACTLY how to execute the implementation steps. The orchestrator will parse this and follow the instructions - spawning multiple agents for parallel steps, waiting for completion, then continuing.
376
+
377
+ ### Step Consolidation Guidelines
378
+
379
+ **Goal:** Minimize the number of steps to reduce agent invocation overhead while keeping steps manageable.
380
+
381
+ **Consolidation Rules:**
382
+ 1. **Minimize step count** - fewer steps means less overhead and faster execution
383
+ 2. **Combine adjacent sequential steps** unless:
384
+ - They are individually complex (would take significant time)
385
+ - They touch completely unrelated areas of the codebase
386
+ - Combining would make the step too large to understand
387
+ 3. **Prefer parallel execution** - only use sequential when there are real dependencies
388
+
389
+ **Example of over-fragmented steps (avoid this):**
390
+ ```
391
+ 1. Run Step 1 (sequential) - add utility function
392
+ 2. Run Step 2 (sequential) - use utility in client
393
+ ```
394
+
395
+ **Example of properly consolidated steps (prefer this):**
396
+ ```
397
+ 1. Run Step 1 (sequential) - add utility function and use it in client
398
+ ```
399
+
400
+ **Format:** A numbered list specifying execution order and parallelization:
401
+
402
+ ```
403
+ 1. Run Step 1 (sequential - foundation/setup that others depend on)
404
+ 2. Run Steps 2, 3, 4 in parallel (independent file changes)
405
+ 3. Run Step 5 (depends on Steps 2-4 completing)
406
+ 4. Run Step 6 (validation/tests - must run last)
407
+ ```
408
+
409
+ **Example for a feature implementation:**
410
+ ```
411
+ 1. Run Step 1 (sequential - create shared types/interfaces)
412
+ 2. Run Steps 2, 3 in parallel (independent module implementations)
413
+ 3. Run Step 4 (sequential - integration layer depends on Steps 2-3)
414
+ 4. Run Step 5 (sequential - tests and validation)
415
+ ```
416
+
335
417
  ## Dependencies and Configuration
336
418
 
337
419
  - [Package name@version] - [Purpose]
@@ -378,7 +460,7 @@ Provide execution steps concisely:
378
460
 
379
461
  ## Workflow
380
462
 
381
- 1. Use the MCP issue management tool `mcp__issue_management__get_issue` with `{ number: ISSUE_NUMBER, includeComments: true }` to get full context (body, title, comments, labels, assignees, milestone)
463
+ 1. Use the MCP issue management tool `mcp__issue_management__get_issue` with `{ number: {{ISSUE_NUMBER}}, includeComments: true }` to get full context (body, title, comments, labels, assignees, milestone)
382
464
  2. Search and read relevant files in the codebase
383
465
  3. Create detailed implementation plan with exact locations (but, per instructions above, don't write the exact code)
384
466
  4. Write plan to temporary file
@@ -386,3 +468,25 @@ Provide execution steps concisely:
386
468
  6. Confirm plan has been documented
387
469
 
388
470
  You excel at creating implementation plans that are so detailed and precise that any developer can execute them without additional research or planning.
471
+
472
+ ## Returning the Plan to the Caller
473
+
474
+ After posting the planning comment to the issue, you MUST return the plan details to the caller in your final response.
475
+
476
+ **Required format for your final response:**
477
+
478
+ ```
479
+ ## Plan for Caller
480
+
481
+ Comment ID: [COMMENT_ID]
482
+ Comment URL: [FULL_URL_WITH_COMMENT_ID]
483
+
484
+ ## Execution Plan
485
+
486
+ 1. Run Step 1 (sequential)
487
+ 2. Run Steps 2, 3 in parallel
488
+ 3. Run Step 4 (depends on Steps 2-3)
489
+ ...
490
+ ```
491
+
492
+ The orchestrator will use the Comment ID to tell implementers where to find the plan, and parse the Execution Plan to determine how to launch implementer agents (sequentially vs. in parallel).