@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.
- package/LICENSE +1 -1
- package/README.md +35 -18
- package/dist/{BranchNamingService-B5PVRR7F.js → BranchNamingService-FLPUUFOB.js} +2 -2
- package/dist/ClaudeContextManager-KE5TBZVZ.js +14 -0
- package/dist/ClaudeService-CRSETT3A.js +13 -0
- package/dist/{GitHubService-S2OGUTDR.js → GitHubService-O7U4UQ7N.js} +3 -3
- package/dist/{LoomLauncher-5LFM4LXB.js → LoomLauncher-NL65LSKP.js} +6 -6
- package/dist/{MetadataManager-DFI73J3G.js → MetadataManager-XJ2YB762.js} +2 -2
- package/dist/PRManager-2ABCWXHW.js +16 -0
- package/dist/{ProjectCapabilityDetector-S5FLNCFI.js → ProjectCapabilityDetector-IA56AUE6.js} +3 -3
- package/dist/{PromptTemplateManager-C3DK6XZL.js → PromptTemplateManager-7L3HJQQU.js} +2 -2
- package/dist/README.md +35 -18
- package/dist/{SettingsManager-35F5RUJH.js → SettingsManager-YU4VYPTW.js} +2 -2
- package/dist/agents/iloom-framework-detector.md +78 -9
- package/dist/agents/iloom-issue-analyze-and-plan.md +42 -17
- package/dist/agents/iloom-issue-analyzer.md +14 -14
- package/dist/agents/iloom-issue-complexity-evaluator.md +38 -15
- package/dist/agents/iloom-issue-enhancer.md +15 -15
- package/dist/agents/iloom-issue-implementer.md +44 -15
- package/dist/agents/iloom-issue-planner.md +121 -17
- package/dist/agents/iloom-issue-reviewer.md +15 -15
- package/dist/{build-FJVYP7EV.js → build-HQ5HGA3T.js} +9 -9
- package/dist/{chunk-VU3QMIP2.js → chunk-453NC377.js} +91 -15
- package/dist/chunk-453NC377.js.map +1 -0
- package/dist/{chunk-UQIXZ3BA.js → chunk-5V74K5ZA.js} +2 -2
- package/dist/{chunk-7WANFUIK.js → chunk-6TL3BYH6.js} +2 -2
- package/dist/{chunk-ZPSTA5PR.js → chunk-7GLZVDPQ.js} +2 -2
- package/dist/{chunk-64O2UIWO.js → chunk-AFRICMSW.js} +4 -4
- package/dist/{chunk-5TXLVEXT.js → chunk-C3AKFAIR.js} +2 -2
- package/dist/{chunk-K7SEEHKO.js → chunk-CNSTXBJ3.js} +7 -419
- package/dist/chunk-CNSTXBJ3.js.map +1 -0
- package/dist/{chunk-2A7WQKBE.js → chunk-DAOS6EC3.js} +96 -6
- package/dist/chunk-DAOS6EC3.js.map +1 -0
- package/dist/{chunk-TRQ76ISK.js → chunk-ELJKYFSH.js} +9 -9
- package/dist/{chunk-VDA5JMB4.js → chunk-EPPPDVHD.js} +21 -8
- package/dist/chunk-EPPPDVHD.js.map +1 -0
- package/dist/{chunk-LVBRMTE6.js → chunk-FEAJR6PN.js} +6 -6
- package/dist/{chunk-6YSFTPKW.js → chunk-FM4KBPVA.js} +18 -13
- package/dist/chunk-FM4KBPVA.js.map +1 -0
- package/dist/{chunk-AEIMYF4P.js → chunk-FP7G7DG3.js} +6 -2
- package/dist/chunk-FP7G7DG3.js.map +1 -0
- package/dist/{chunk-LT3SGBR7.js → chunk-GCPAZSGV.js} +36 -2
- package/dist/{chunk-LT3SGBR7.js.map → chunk-GCPAZSGV.js.map} +1 -1
- package/dist/chunk-GJMEKEI5.js +517 -0
- package/dist/chunk-GJMEKEI5.js.map +1 -0
- package/dist/{chunk-7Q66W4OH.js → chunk-HBJITKSZ.js} +37 -1
- package/dist/chunk-HBJITKSZ.js.map +1 -0
- package/dist/{chunk-7HIRPCKU.js → chunk-HVQNVRAF.js} +2 -2
- package/dist/{chunk-6U6VI4SZ.js → chunk-KVS4XGBQ.js} +4 -4
- package/dist/{chunk-SN3Z6EZO.js → chunk-N7FVXZNI.js} +2 -2
- package/dist/{chunk-I75JMBNB.js → chunk-QQFBMCAH.js} +54 -43
- package/dist/chunk-QQFBMCAH.js.map +1 -0
- package/dist/{chunk-AXX3QIKK.js → chunk-RD7I2Q2F.js} +2 -2
- package/dist/chunk-TIYJEEVO.js +79 -0
- package/dist/chunk-TIYJEEVO.js.map +1 -0
- package/dist/{chunk-EK3XCAAS.js → chunk-UDRZY65Y.js} +2 -2
- package/dist/{chunk-3PT7RKL5.js → chunk-USJSNHGG.js} +2 -2
- package/dist/{chunk-CFUWQHCJ.js → chunk-VWGKGNJP.js} +114 -35
- package/dist/chunk-VWGKGNJP.js.map +1 -0
- package/dist/{chunk-F6WVM437.js → chunk-WFQ5CLTR.js} +6 -3
- package/dist/chunk-WFQ5CLTR.js.map +1 -0
- package/dist/{chunk-BXCPJJYM.js → chunk-XPKN3QWY.js} +24 -6
- package/dist/chunk-XPKN3QWY.js.map +1 -0
- package/dist/chunk-YQNSZKKT.js +822 -0
- package/dist/chunk-YQNSZKKT.js.map +1 -0
- package/dist/{chunk-GEXP5IOF.js → chunk-ZA575VLF.js} +21 -8
- package/dist/chunk-ZA575VLF.js.map +1 -0
- package/dist/{claude-H33OQMXO.js → claude-6H36IBHO.js} +4 -2
- package/dist/{cleanup-BRUAINKE.js → cleanup-77U5ATYI.js} +20 -16
- package/dist/cleanup-77U5ATYI.js.map +1 -0
- package/dist/cli.js +361 -954
- package/dist/cli.js.map +1 -1
- package/dist/commit-ONRXU67O.js +237 -0
- package/dist/commit-ONRXU67O.js.map +1 -0
- package/dist/{compile-ULNO5F7Q.js → compile-CT7IR7O2.js} +9 -9
- package/dist/{contribute-Q6GX6AXK.js → contribute-GXKOIA42.js} +5 -5
- package/dist/{dev-server-4RCDJ5MU.js → dev-server-UKAPBGUR.js} +22 -74
- package/dist/dev-server-UKAPBGUR.js.map +1 -0
- package/dist/{feedback-O4Q55SVS.js → feedback-K3A4QUSG.js} +10 -10
- package/dist/{git-FVMGBHC2.js → git-ENLT2VNI.js} +6 -4
- package/dist/hooks/iloom-hook.js +30 -2
- package/dist/{ignite-VHV65WEZ.js → ignite-YUAOJ5PP.js} +20 -20
- package/dist/ignite-YUAOJ5PP.js.map +1 -0
- package/dist/index.d.ts +71 -27
- package/dist/index.js +196 -266
- package/dist/index.js.map +1 -1
- package/dist/init-XQQMFDM6.js +21 -0
- package/dist/{lint-5JMCWE4Y.js → lint-HAVU4U34.js} +9 -9
- package/dist/mcp/issue-management-server.js +359 -13
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/mcp/recap-server.js +13 -4
- package/dist/mcp/recap-server.js.map +1 -1
- package/dist/{open-WHVUYGPY.js → open-QI63XQ4F.js} +25 -76
- package/dist/open-QI63XQ4F.js.map +1 -0
- package/dist/{projects-SA76I4TZ.js → projects-TWY4RT2Z.js} +11 -4
- package/dist/projects-TWY4RT2Z.js.map +1 -0
- package/dist/prompts/init-prompt.txt +119 -51
- package/dist/prompts/issue-prompt.txt +132 -63
- package/dist/prompts/pr-prompt.txt +3 -3
- package/dist/prompts/regular-prompt.txt +16 -18
- package/dist/prompts/session-summary-prompt.txt +13 -13
- package/dist/{rebase-Y4AS6LQW.js → rebase-QYCRF7JG.js} +53 -8
- package/dist/rebase-QYCRF7JG.js.map +1 -0
- package/dist/{recap-VOOUXOGP.js → recap-ZKGHZCX6.js} +6 -6
- package/dist/{run-NCRK5NPR.js → run-YDVYORT2.js} +25 -76
- package/dist/run-YDVYORT2.js.map +1 -0
- package/dist/schema/settings.schema.json +14 -3
- package/dist/{shell-SBLXVOVJ.js → shell-2NNSIU34.js} +6 -6
- package/dist/{summary-CVFAMDOJ.js → summary-G6L3VAKK.js} +11 -10
- package/dist/{summary-CVFAMDOJ.js.map → summary-G6L3VAKK.js.map} +1 -1
- package/dist/{test-3KIVXI6J.js → test-75WAA6DU.js} +9 -9
- package/dist/{test-git-ZB6AGGRW.js → test-git-E2BLXR6M.js} +4 -4
- package/dist/{test-prefix-FBGXKMPA.js → test-prefix-A7JGGYAA.js} +4 -4
- package/dist/{test-webserver-YVQD42W6.js → test-webserver-NRMGT2HB.js} +29 -8
- package/dist/test-webserver-NRMGT2HB.js.map +1 -0
- package/package.json +3 -1
- package/dist/ClaudeContextManager-6J2EB4QU.js +0 -14
- package/dist/ClaudeService-O2PB22GX.js +0 -13
- package/dist/PRManager-GB3FOJ2W.js +0 -14
- package/dist/chunk-2A7WQKBE.js.map +0 -1
- package/dist/chunk-6YSFTPKW.js.map +0 -1
- package/dist/chunk-7Q66W4OH.js.map +0 -1
- package/dist/chunk-AEIMYF4P.js.map +0 -1
- package/dist/chunk-BXCPJJYM.js.map +0 -1
- package/dist/chunk-CFUWQHCJ.js.map +0 -1
- package/dist/chunk-F6WVM437.js.map +0 -1
- package/dist/chunk-GEXP5IOF.js.map +0 -1
- package/dist/chunk-I75JMBNB.js.map +0 -1
- package/dist/chunk-K7SEEHKO.js.map +0 -1
- package/dist/chunk-VDA5JMB4.js.map +0 -1
- package/dist/chunk-VU3QMIP2.js.map +0 -1
- package/dist/chunk-W6WVRHJ6.js +0 -251
- package/dist/chunk-W6WVRHJ6.js.map +0 -1
- package/dist/cleanup-BRUAINKE.js.map +0 -1
- package/dist/dev-server-4RCDJ5MU.js.map +0 -1
- package/dist/ignite-VHV65WEZ.js.map +0 -1
- package/dist/init-UTYRHNJJ.js +0 -21
- package/dist/open-WHVUYGPY.js.map +0 -1
- package/dist/projects-SA76I4TZ.js.map +0 -1
- package/dist/rebase-Y4AS6LQW.js.map +0 -1
- package/dist/run-NCRK5NPR.js.map +0 -1
- package/dist/test-webserver-YVQD42W6.js.map +0 -1
- /package/dist/{BranchNamingService-B5PVRR7F.js.map → BranchNamingService-FLPUUFOB.js.map} +0 -0
- /package/dist/{ClaudeContextManager-6J2EB4QU.js.map → ClaudeContextManager-KE5TBZVZ.js.map} +0 -0
- /package/dist/{ClaudeService-O2PB22GX.js.map → ClaudeService-CRSETT3A.js.map} +0 -0
- /package/dist/{GitHubService-S2OGUTDR.js.map → GitHubService-O7U4UQ7N.js.map} +0 -0
- /package/dist/{LoomLauncher-5LFM4LXB.js.map → LoomLauncher-NL65LSKP.js.map} +0 -0
- /package/dist/{MetadataManager-DFI73J3G.js.map → MetadataManager-XJ2YB762.js.map} +0 -0
- /package/dist/{PRManager-GB3FOJ2W.js.map → PRManager-2ABCWXHW.js.map} +0 -0
- /package/dist/{ProjectCapabilityDetector-S5FLNCFI.js.map → ProjectCapabilityDetector-IA56AUE6.js.map} +0 -0
- /package/dist/{PromptTemplateManager-C3DK6XZL.js.map → PromptTemplateManager-7L3HJQQU.js.map} +0 -0
- /package/dist/{SettingsManager-35F5RUJH.js.map → SettingsManager-YU4VYPTW.js.map} +0 -0
- /package/dist/{build-FJVYP7EV.js.map → build-HQ5HGA3T.js.map} +0 -0
- /package/dist/{chunk-UQIXZ3BA.js.map → chunk-5V74K5ZA.js.map} +0 -0
- /package/dist/{chunk-7WANFUIK.js.map → chunk-6TL3BYH6.js.map} +0 -0
- /package/dist/{chunk-ZPSTA5PR.js.map → chunk-7GLZVDPQ.js.map} +0 -0
- /package/dist/{chunk-64O2UIWO.js.map → chunk-AFRICMSW.js.map} +0 -0
- /package/dist/{chunk-5TXLVEXT.js.map → chunk-C3AKFAIR.js.map} +0 -0
- /package/dist/{chunk-TRQ76ISK.js.map → chunk-ELJKYFSH.js.map} +0 -0
- /package/dist/{chunk-LVBRMTE6.js.map → chunk-FEAJR6PN.js.map} +0 -0
- /package/dist/{chunk-7HIRPCKU.js.map → chunk-HVQNVRAF.js.map} +0 -0
- /package/dist/{chunk-6U6VI4SZ.js.map → chunk-KVS4XGBQ.js.map} +0 -0
- /package/dist/{chunk-SN3Z6EZO.js.map → chunk-N7FVXZNI.js.map} +0 -0
- /package/dist/{chunk-AXX3QIKK.js.map → chunk-RD7I2Q2F.js.map} +0 -0
- /package/dist/{chunk-EK3XCAAS.js.map → chunk-UDRZY65Y.js.map} +0 -0
- /package/dist/{chunk-3PT7RKL5.js.map → chunk-USJSNHGG.js.map} +0 -0
- /package/dist/{claude-H33OQMXO.js.map → claude-6H36IBHO.js.map} +0 -0
- /package/dist/{compile-ULNO5F7Q.js.map → compile-CT7IR7O2.js.map} +0 -0
- /package/dist/{contribute-Q6GX6AXK.js.map → contribute-GXKOIA42.js.map} +0 -0
- /package/dist/{feedback-O4Q55SVS.js.map → feedback-K3A4QUSG.js.map} +0 -0
- /package/dist/{git-FVMGBHC2.js.map → git-ENLT2VNI.js.map} +0 -0
- /package/dist/{init-UTYRHNJJ.js.map → init-XQQMFDM6.js.map} +0 -0
- /package/dist/{lint-5JMCWE4Y.js.map → lint-HAVU4U34.js.map} +0 -0
- /package/dist/{recap-VOOUXOGP.js.map → recap-ZKGHZCX6.js.map} +0 -0
- /package/dist/{shell-SBLXVOVJ.js.map → shell-2NNSIU34.js.map} +0 -0
- /package/dist/{test-3KIVXI6J.js.map → test-75WAA6DU.js.map} +0 -0
- /package/dist/{test-git-ZB6AGGRW.js.map → test-git-E2BLXR6M.js.map} +0 -0
- /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
|
-
{{#
|
|
302
|
-
Parameters: { number: string, body: "markdown content", type: "pr" }{{/
|
|
303
|
-
Parameters: { number: string, body: "markdown content", type: "issue" }{{/
|
|
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
|
-
{{#
|
|
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
|
-
}){{/
|
|
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
|
-
}){{/
|
|
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
|
-
{{#
|
|
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
|
-
}){{/
|
|
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
|
-
}){{/
|
|
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
|
-
{{#
|
|
183
|
-
Parameters: { number: string, body: "markdown content", type: "pr" }{{/
|
|
184
|
-
Parameters: { number: string, body: "markdown content", type: "issue" }{{/
|
|
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
|
-
{{#
|
|
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
|
-
}){{/
|
|
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
|
-
}){{/
|
|
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
|
-
{{#
|
|
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
|
-
}){{/
|
|
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
|
-
}){{/
|
|
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
|
-
{{#
|
|
107
|
-
Parameters: { number: string, body: "markdown content", type: "pr" }{{/
|
|
108
|
-
Parameters: { number: string, body: "markdown content", type: "issue" }{{/
|
|
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
|
-
{{#
|
|
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
|
-
}){{/
|
|
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
|
-
}){{/
|
|
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
|
-
{{#
|
|
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
|
-
}){{/
|
|
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
|
-
}){{/
|
|
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
|
-
{{#
|
|
31
|
-
Parameters: { number: string, body: "markdown content", type: "pr" }{{/
|
|
32
|
-
Parameters: { number: string, body: "markdown content", type: "issue" }{{/
|
|
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
|
-
{{#
|
|
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
|
-
}){{/
|
|
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
|
-
}){{/
|
|
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
|
-
{{#
|
|
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
|
-
}){{/
|
|
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
|
-
}){{/
|
|
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
|
-
{{#
|
|
47
|
-
Parameters: { number: string, body: "markdown content", type: "pr" }{{/
|
|
48
|
-
Parameters: { number: string, body: "markdown content", type: "issue" }{{/
|
|
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
|
-
{{#
|
|
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
|
-
}){{/
|
|
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
|
-
}){{/
|
|
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
|
-
{{#
|
|
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
|
-
}){{/
|
|
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
|
-
}){{/
|
|
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
|
-
###
|
|
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
|
-
|
|
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).
|