@iloom/cli 0.9.1 → 0.10.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 (222) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +179 -41
  3. package/dist/{BranchNamingService-K6XNWQ6C.js → BranchNamingService-ECJHBB67.js} +2 -2
  4. package/dist/ClaudeContextManager-QXX6ZFST.js +14 -0
  5. package/dist/ClaudeService-NJNK2SUH.js +13 -0
  6. package/dist/{GitHubService-O7T6CFAJ.js → GitHubService-MEHKHUQP.js} +4 -4
  7. package/dist/IssueTrackerFactory-NG53YX5S.js +14 -0
  8. package/dist/{LoomLauncher-3I47SUPV.js → LoomLauncher-L64HHS3T.js} +9 -9
  9. package/dist/{MetadataManager-W3C54UYT.js → MetadataManager-5QZSTKNN.js} +2 -2
  10. package/dist/{ProjectCapabilityDetector-N5L7T4IY.js → ProjectCapabilityDetector-5KSYUTBJ.js} +3 -3
  11. package/dist/{PromptTemplateManager-36YLQRHP.js → PromptTemplateManager-DULSVRRE.js} +2 -2
  12. package/dist/README.md +179 -41
  13. package/dist/{SettingsManager-QR7V2IW2.js → SettingsManager-BQDQA3FK.js} +4 -2
  14. package/dist/agents/iloom-artifact-reviewer.md +11 -0
  15. package/dist/agents/iloom-code-reviewer.md +14 -0
  16. package/dist/agents/iloom-issue-analyze-and-plan.md +55 -12
  17. package/dist/agents/iloom-issue-analyzer.md +49 -6
  18. package/dist/agents/iloom-issue-complexity-evaluator.md +47 -6
  19. package/dist/agents/iloom-issue-enhancer.md +86 -7
  20. package/dist/agents/iloom-issue-implementer.md +48 -7
  21. package/dist/agents/iloom-issue-planner.md +115 -62
  22. package/dist/{build-IC4CJRMP.js → build-5GO3XW26.js} +9 -9
  23. package/dist/{chunk-USSL2X4A.js → chunk-3D7WQM7I.js} +2 -2
  24. package/dist/chunk-4232AHNQ.js +35 -0
  25. package/dist/chunk-4232AHNQ.js.map +1 -0
  26. package/dist/{chunk-QN47QVBX.js → chunk-4WJNIR5O.js} +1 -1
  27. package/dist/chunk-4WJNIR5O.js.map +1 -0
  28. package/dist/{chunk-2JPXGGP4.js → chunk-5MWV33NN.js} +4 -4
  29. package/dist/{chunk-POU2UMWN.js → chunk-6EU6TCF6.js} +10 -10
  30. package/dist/chunk-6EU6TCF6.js.map +1 -0
  31. package/dist/{chunk-Y5O2ALDZ.js → chunk-FB47TIJG.js} +29 -11
  32. package/dist/chunk-FB47TIJG.js.map +1 -0
  33. package/dist/chunk-HEXKPKCK.js +1396 -0
  34. package/dist/chunk-HEXKPKCK.js.map +1 -0
  35. package/dist/{chunk-KAYXR544.js → chunk-J5S7DFYC.js} +2 -2
  36. package/dist/{chunk-OK7LUTRW.js → chunk-JO2LZ6EQ.js} +476 -5
  37. package/dist/chunk-JO2LZ6EQ.js.map +1 -0
  38. package/dist/{chunk-KBEIQP4G.js → chunk-KB64WNBZ.js} +43 -3
  39. package/dist/chunk-KB64WNBZ.js.map +1 -0
  40. package/dist/{chunk-Y5HSSIK2.js → chunk-KXDRI47U.js} +71 -13
  41. package/dist/chunk-KXDRI47U.js.map +1 -0
  42. package/dist/{chunk-HZXBHMVM.js → chunk-LXLMMXXY.js} +54 -14
  43. package/dist/chunk-LXLMMXXY.js.map +1 -0
  44. package/dist/{chunk-H6ST2TGP.js → chunk-MNHZB4Z2.js} +4 -4
  45. package/dist/{chunk-TL72BGP6.js → chunk-MORRVYPT.js} +2 -2
  46. package/dist/{chunk-TGRK3CHF.js → chunk-NRSWLOAZ.js} +8 -8
  47. package/dist/chunk-NRSWLOAZ.js.map +1 -0
  48. package/dist/{chunk-FO5GGFOV.js → chunk-ONQYPICO.js} +13 -5
  49. package/dist/chunk-ONQYPICO.js.map +1 -0
  50. package/dist/{chunk-7ZEHSSUP.js → chunk-P4O6EH46.js} +4 -4
  51. package/dist/chunk-QZWEJVWV.js +207 -0
  52. package/dist/chunk-QZWEJVWV.js.map +1 -0
  53. package/dist/chunk-RSYT7MVI.js +202 -0
  54. package/dist/chunk-RSYT7MVI.js.map +1 -0
  55. package/dist/{chunk-OAVJR4PM.js → chunk-RYWFS37M.js} +6 -6
  56. package/dist/chunk-RYWFS37M.js.map +1 -0
  57. package/dist/{chunk-B7U6OKUR.js → chunk-SF2P22EE.js} +11 -3
  58. package/dist/chunk-SF2P22EE.js.map +1 -0
  59. package/dist/{chunk-MZPRBNYC.js → chunk-SN3SQCFK.js} +10 -8
  60. package/dist/{chunk-MZPRBNYC.js.map → chunk-SN3SQCFK.js.map} +1 -1
  61. package/dist/{chunk-4ZIHFUPN.js → chunk-UD3WJDIV.js} +145 -107
  62. package/dist/chunk-UD3WJDIV.js.map +1 -0
  63. package/dist/{chunk-3P6J4IZZ.js → chunk-UKBAJ2QQ.js} +61 -7
  64. package/dist/chunk-UKBAJ2QQ.js.map +1 -0
  65. package/dist/{chunk-RD7OPXZK.js → chunk-UVD4CZKS.js} +3 -3
  66. package/dist/chunk-UWGVCXRF.js +207 -0
  67. package/dist/chunk-UWGVCXRF.js.map +1 -0
  68. package/dist/{chunk-JT5LZRMI.js → chunk-VECNX6VX.js} +2 -2
  69. package/dist/{chunk-TRUMP4DA.js → chunk-VG45TUYK.js} +75 -6
  70. package/dist/chunk-VG45TUYK.js.map +1 -0
  71. package/dist/{chunk-4GAJJUYS.js → chunk-VGGST52X.js} +2 -2
  72. package/dist/{chunk-4LKGCFGG.js → chunk-WWKOVDWC.js} +2 -2
  73. package/dist/{chunk-2HZX6AMR.js → chunk-WY4QBK43.js} +7 -7
  74. package/dist/chunk-WY4QBK43.js.map +1 -0
  75. package/dist/chunk-Y4YZTHZE.js +73 -0
  76. package/dist/chunk-Y4YZTHZE.js.map +1 -0
  77. package/dist/{chunk-VOGGLPG5.js → chunk-YQ57ORTV.js} +14 -1
  78. package/dist/chunk-YQ57ORTV.js.map +1 -0
  79. package/dist/{chunk-XFEK2X2D.js → chunk-YYAKPQBT.js} +73 -20
  80. package/dist/chunk-YYAKPQBT.js.map +1 -0
  81. package/dist/{chunk-NTTSUAVM.js → chunk-ZEWU5PZK.js} +2 -2
  82. package/dist/{chunk-5LVVQGB3.js → chunk-ZHPNZC75.js} +17 -17
  83. package/dist/chunk-ZHPNZC75.js.map +1 -0
  84. package/dist/{chunk-I3HMNWQQ.js → chunk-ZW2LKWWE.js} +9 -9
  85. package/dist/chunk-ZW2LKWWE.js.map +1 -0
  86. package/dist/{claude-TP2QO3BU.js → claude-P3NQR6IJ.js} +2 -2
  87. package/dist/{cleanup-D3CSRBBZ.js → cleanup-6UCPVMFG.js} +81 -32
  88. package/dist/cleanup-6UCPVMFG.js.map +1 -0
  89. package/dist/cli.js +640 -350
  90. package/dist/cli.js.map +1 -1
  91. package/dist/{commit-IWGT42XN.js → commit-L3EPY5QG.js} +23 -21
  92. package/dist/commit-L3EPY5QG.js.map +1 -0
  93. package/dist/{compile-EOWJORKO.js → compile-ZS4HYRX5.js} +9 -9
  94. package/dist/{contribute-WSJTV2RX.js → contribute-ORDDQGSL.js} +14 -6
  95. package/dist/contribute-ORDDQGSL.js.map +1 -0
  96. package/dist/{dev-server-Q6M62ATG.js → dev-server-FYZ2AQIH.js} +29 -15
  97. package/dist/dev-server-FYZ2AQIH.js.map +1 -0
  98. package/dist/{feedback-QPNDZQRV.js → feedback-TMBXSCM5.js} +15 -15
  99. package/dist/{git-W3XUIFTR.js → git-ET64COO3.js} +4 -4
  100. package/dist/hooks/iloom-hook.js +15 -0
  101. package/dist/ignite-CGOV3TD4.js +1393 -0
  102. package/dist/ignite-CGOV3TD4.js.map +1 -0
  103. package/dist/index.d.ts +397 -53
  104. package/dist/index.js +1178 -40
  105. package/dist/index.js.map +1 -1
  106. package/dist/{init-ALYWKNWG.js → init-GFQ5W7GK.js} +57 -21
  107. package/dist/init-GFQ5W7GK.js.map +1 -0
  108. package/dist/issues-T4ZZSPEG.js +179 -0
  109. package/dist/issues-T4ZZSPEG.js.map +1 -0
  110. package/dist/{lint-IHUH45OC.js → lint-6TQXDZ3T.js} +9 -9
  111. package/dist/mcp/issue-management-server.js +2472 -257
  112. package/dist/mcp/issue-management-server.js.map +1 -1
  113. package/dist/mcp/recap-server.js +144 -21
  114. package/dist/mcp/recap-server.js.map +1 -1
  115. package/dist/{neon-helpers-VVFFTLXE.js → neon-helpers-CQN2PB4S.js} +3 -3
  116. package/dist/neon-helpers-CQN2PB4S.js.map +1 -0
  117. package/dist/{open-KWOV2OFO.js → open-5QZGXQRF.js} +15 -15
  118. package/dist/open-5QZGXQRF.js.map +1 -0
  119. package/dist/{plan-BRJBFJHF.js → plan-U7ZQWLFY.js} +41 -25
  120. package/dist/plan-U7ZQWLFY.js.map +1 -0
  121. package/dist/{projects-LH362JZQ.js → projects-2UOXFLNZ.js} +4 -4
  122. package/dist/prompts/CLAUDE.md +62 -0
  123. package/dist/prompts/init-prompt.txt +386 -47
  124. package/dist/prompts/issue-prompt.txt +427 -54
  125. package/dist/prompts/plan-prompt.txt +97 -16
  126. package/dist/prompts/pr-prompt.txt +44 -1
  127. package/dist/prompts/regular-prompt.txt +42 -1
  128. package/dist/prompts/session-summary-prompt.txt +14 -0
  129. package/dist/prompts/swarm-orchestrator-prompt.txt +437 -0
  130. package/dist/{rebase-AJOJOZUG.js → rebase-DWIB77KV.js} +10 -10
  131. package/dist/{recap-GKJXMDXW.js → recap-MX63HAKV.js} +47 -19
  132. package/dist/recap-MX63HAKV.js.map +1 -0
  133. package/dist/{run-QEUVZF7J.js → run-O3TFNQFC.js} +15 -15
  134. package/dist/run-O3TFNQFC.js.map +1 -0
  135. package/dist/schema/package-iloom.schema.json +58 -0
  136. package/dist/schema/settings.schema.json +130 -15
  137. package/dist/{shell-DAAVG4YN.js → shell-G6VC2CYR.js} +14 -7
  138. package/dist/shell-G6VC2CYR.js.map +1 -0
  139. package/dist/{summary-ZKOA35PT.js → summary-FWHAX55O.js} +27 -25
  140. package/dist/summary-FWHAX55O.js.map +1 -0
  141. package/dist/{test-5GPWWO3P.js → test-F7JNJZYP.js} +9 -9
  142. package/dist/{test-git-EJUKDB7F.js → test-git-BTAOIUE2.js} +4 -4
  143. package/dist/test-jira-CHYNV33F.js +96 -0
  144. package/dist/test-jira-CHYNV33F.js.map +1 -0
  145. package/dist/{test-prefix-23TOBUXY.js → test-prefix-Q6TFSU6F.js} +4 -4
  146. package/dist/{test-webserver-CKROHFBQ.js → test-webserver-EONCG7E7.js} +6 -6
  147. package/dist/{vscode-6TOLFCI2.js → vscode-VA5X4P25.js} +7 -7
  148. package/package.json +5 -1
  149. package/dist/ClaudeContextManager-X2Y72GRL.js +0 -14
  150. package/dist/ClaudeService-7P32TTES.js +0 -13
  151. package/dist/chunk-2HZX6AMR.js.map +0 -1
  152. package/dist/chunk-3P6J4IZZ.js.map +0 -1
  153. package/dist/chunk-4ZIHFUPN.js.map +0 -1
  154. package/dist/chunk-5LVVQGB3.js.map +0 -1
  155. package/dist/chunk-B7U6OKUR.js.map +0 -1
  156. package/dist/chunk-ENGCJIYQ.js +0 -520
  157. package/dist/chunk-ENGCJIYQ.js.map +0 -1
  158. package/dist/chunk-FO5GGFOV.js.map +0 -1
  159. package/dist/chunk-HZXBHMVM.js.map +0 -1
  160. package/dist/chunk-I3HMNWQQ.js.map +0 -1
  161. package/dist/chunk-J7FJ6PUT.js +0 -121
  162. package/dist/chunk-J7FJ6PUT.js.map +0 -1
  163. package/dist/chunk-KBEIQP4G.js.map +0 -1
  164. package/dist/chunk-OAVJR4PM.js.map +0 -1
  165. package/dist/chunk-OK7LUTRW.js.map +0 -1
  166. package/dist/chunk-POU2UMWN.js.map +0 -1
  167. package/dist/chunk-QN47QVBX.js.map +0 -1
  168. package/dist/chunk-TGRK3CHF.js.map +0 -1
  169. package/dist/chunk-TRUMP4DA.js.map +0 -1
  170. package/dist/chunk-VOGGLPG5.js.map +0 -1
  171. package/dist/chunk-XFEK2X2D.js.map +0 -1
  172. package/dist/chunk-Y5HSSIK2.js.map +0 -1
  173. package/dist/chunk-Y5O2ALDZ.js.map +0 -1
  174. package/dist/cleanup-D3CSRBBZ.js.map +0 -1
  175. package/dist/commit-IWGT42XN.js.map +0 -1
  176. package/dist/contribute-WSJTV2RX.js.map +0 -1
  177. package/dist/dev-server-Q6M62ATG.js.map +0 -1
  178. package/dist/ignite-OPO6EDYT.js +0 -784
  179. package/dist/ignite-OPO6EDYT.js.map +0 -1
  180. package/dist/init-ALYWKNWG.js.map +0 -1
  181. package/dist/issues-L7TBUPXT.js +0 -116
  182. package/dist/issues-L7TBUPXT.js.map +0 -1
  183. package/dist/open-KWOV2OFO.js.map +0 -1
  184. package/dist/plan-BRJBFJHF.js.map +0 -1
  185. package/dist/recap-GKJXMDXW.js.map +0 -1
  186. package/dist/run-QEUVZF7J.js.map +0 -1
  187. package/dist/shell-DAAVG4YN.js.map +0 -1
  188. package/dist/summary-ZKOA35PT.js.map +0 -1
  189. /package/dist/{BranchNamingService-K6XNWQ6C.js.map → BranchNamingService-ECJHBB67.js.map} +0 -0
  190. /package/dist/{ClaudeContextManager-X2Y72GRL.js.map → ClaudeContextManager-QXX6ZFST.js.map} +0 -0
  191. /package/dist/{ClaudeService-7P32TTES.js.map → ClaudeService-NJNK2SUH.js.map} +0 -0
  192. /package/dist/{GitHubService-O7T6CFAJ.js.map → GitHubService-MEHKHUQP.js.map} +0 -0
  193. /package/dist/{MetadataManager-W3C54UYT.js.map → IssueTrackerFactory-NG53YX5S.js.map} +0 -0
  194. /package/dist/{LoomLauncher-3I47SUPV.js.map → LoomLauncher-L64HHS3T.js.map} +0 -0
  195. /package/dist/{ProjectCapabilityDetector-N5L7T4IY.js.map → MetadataManager-5QZSTKNN.js.map} +0 -0
  196. /package/dist/{PromptTemplateManager-36YLQRHP.js.map → ProjectCapabilityDetector-5KSYUTBJ.js.map} +0 -0
  197. /package/dist/{SettingsManager-QR7V2IW2.js.map → PromptTemplateManager-DULSVRRE.js.map} +0 -0
  198. /package/dist/{claude-TP2QO3BU.js.map → SettingsManager-BQDQA3FK.js.map} +0 -0
  199. /package/dist/{build-IC4CJRMP.js.map → build-5GO3XW26.js.map} +0 -0
  200. /package/dist/{chunk-USSL2X4A.js.map → chunk-3D7WQM7I.js.map} +0 -0
  201. /package/dist/{chunk-2JPXGGP4.js.map → chunk-5MWV33NN.js.map} +0 -0
  202. /package/dist/{chunk-KAYXR544.js.map → chunk-J5S7DFYC.js.map} +0 -0
  203. /package/dist/{chunk-H6ST2TGP.js.map → chunk-MNHZB4Z2.js.map} +0 -0
  204. /package/dist/{chunk-TL72BGP6.js.map → chunk-MORRVYPT.js.map} +0 -0
  205. /package/dist/{chunk-7ZEHSSUP.js.map → chunk-P4O6EH46.js.map} +0 -0
  206. /package/dist/{chunk-RD7OPXZK.js.map → chunk-UVD4CZKS.js.map} +0 -0
  207. /package/dist/{chunk-JT5LZRMI.js.map → chunk-VECNX6VX.js.map} +0 -0
  208. /package/dist/{chunk-4GAJJUYS.js.map → chunk-VGGST52X.js.map} +0 -0
  209. /package/dist/{chunk-4LKGCFGG.js.map → chunk-WWKOVDWC.js.map} +0 -0
  210. /package/dist/{chunk-NTTSUAVM.js.map → chunk-ZEWU5PZK.js.map} +0 -0
  211. /package/dist/{git-W3XUIFTR.js.map → claude-P3NQR6IJ.js.map} +0 -0
  212. /package/dist/{compile-EOWJORKO.js.map → compile-ZS4HYRX5.js.map} +0 -0
  213. /package/dist/{feedback-QPNDZQRV.js.map → feedback-TMBXSCM5.js.map} +0 -0
  214. /package/dist/{neon-helpers-VVFFTLXE.js.map → git-ET64COO3.js.map} +0 -0
  215. /package/dist/{lint-IHUH45OC.js.map → lint-6TQXDZ3T.js.map} +0 -0
  216. /package/dist/{projects-LH362JZQ.js.map → projects-2UOXFLNZ.js.map} +0 -0
  217. /package/dist/{rebase-AJOJOZUG.js.map → rebase-DWIB77KV.js.map} +0 -0
  218. /package/dist/{test-5GPWWO3P.js.map → test-F7JNJZYP.js.map} +0 -0
  219. /package/dist/{test-git-EJUKDB7F.js.map → test-git-BTAOIUE2.js.map} +0 -0
  220. /package/dist/{test-prefix-23TOBUXY.js.map → test-prefix-Q6TFSU6F.js.map} +0 -0
  221. /package/dist/{test-webserver-CKROHFBQ.js.map → test-webserver-EONCG7E7.js.map} +0 -0
  222. /package/dist/{vscode-6TOLFCI2.js.map → vscode-VA5X4P25.js.map} +0 -0
@@ -79,6 +79,7 @@ After the subagent completes, include its context summary when sending the plan
79
79
 
80
80
  {{#if USE_GEMINI_REVIEWER}}
81
81
  **Reviewer: Gemini** - Use available Gemini MCP tools (look for tools with "gemini" in the name) to review your plan. Ask for feedback on:
82
+ - **Complexity sizing** (each child issue should target SIMPLE: <5 files, <200 LOC, no cross-cutting changes, no architectural signals)
82
83
  - Proper scoping (1 issue = 1 loom = 1 PR)
83
84
  - Dependency identification and sequencing
84
85
  - Technical architecture and design decisions
@@ -92,6 +93,7 @@ After the subagent completes, include its context summary when sending the plan
92
93
  {{/if}}
93
94
  {{#if USE_CODEX_REVIEWER}}
94
95
  **Reviewer: Codex** - Use available Codex MCP tools (look for tools with "codex" in the name) to review your plan. Ask for feedback on:
96
+ - **Complexity sizing** (each child issue should target SIMPLE: <5 files, <200 LOC, no cross-cutting changes, no architectural signals)
95
97
  - Proper scoping (1 issue = 1 loom = 1 PR)
96
98
  - Dependency identification and sequencing
97
99
  - Technical architecture and design decisions
@@ -105,6 +107,7 @@ After the subagent completes, include its context summary when sending the plan
105
107
  {{/if}}
106
108
  {{#unless USE_GEMINI_REVIEWER}}{{#unless USE_CODEX_REVIEWER}}
107
109
  **Reviewer: Claude** - Review the plan yourself, considering:
110
+ - **Complexity sizing** (each child issue should target SIMPLE: <5 files, <200 LOC, no cross-cutting changes, no architectural signals)
108
111
  - Proper scoping (1 issue = 1 loom = 1 PR)
109
112
  - Dependency identification and sequencing
110
113
  - Technical architecture and design decisions
@@ -118,11 +121,19 @@ After the subagent completes, include its context summary when sending the plan
118
121
 
119
122
  ---
120
123
 
124
+ ## Formatting Rules
125
+
126
+ **Always write in standard GitHub-flavored Markdown.** The MCP issue management tools handle any necessary format conversion automatically (e.g., Markdown to ADF for Jira). This means:
127
+ - Use standard Markdown: `##` headings, `**bold**`, `| tables |`, `` ``` `` code blocks, `- bullet lists`
128
+ - Use `<details><summary>` tags for collapsed/expandable sections — the converter handles these
129
+ - Do NOT use platform-specific markup (e.g., Jira wiki syntax like `h2.`, `||header||`, `{code}`)
130
+
131
+ ---
132
+
121
133
  ## Core Principles
122
134
 
123
135
  **1 Child Issue = 1 Loom = 1 PR**
124
136
  Each issue you help create should represent a single, focused unit of work that:
125
- - Can be completed in a single development session
126
137
  - Results in one pull request when finished
127
138
  - Has clear acceptance criteria
128
139
  - Is independently testable
@@ -195,18 +206,67 @@ AskUserQuestion(
195
206
 
196
207
  ### Phase 3: Issue Decomposition (Writing Plans)
197
208
 
198
- Break the work into granular, actionable tasks. Each task should be:
199
- - Completable in approximately 2-30 minutes of focused work
209
+ Break the work into actionable issues. Each issue should be:
200
210
  - Self-contained with clear inputs and outputs
201
211
  - Ordered by dependencies (what must come first)
202
212
 
213
+ **Right-size your issues.** Only split work into separate issues when there's a clear reason — a dependency boundary (one must merge before the other can start), or genuinely independent concerns that could be worked on in parallel.
214
+
215
+ A sign that issues should be consolidated: several small issues share the same dependencies, touch overlapping files, or have similar scope. For example, "add field X to the schema," "add field X to the API," and "add field X to the UI" are likely one issue if they all depend on the same prior work and would naturally be done together. When the boundaries feel artificial, combine them.
216
+
217
+ **Target SIMPLE complexity for each child issue.** Every child issue should be scoped so that an implementing agent can classify it as SIMPLE (or TRIVIAL). This means each child issue should meet ALL of these criteria:
218
+
219
+ | Metric | Target |
220
+ |--------|--------|
221
+ | Files affected | < 5 (excluding test files) |
222
+ | Lines of code | < 200 (new + modified, excluding tests) |
223
+ | Breaking changes | None |
224
+ | Database migrations | None |
225
+ | Cross-cutting changes | None — avoid issues that pass parameters/config through 3+ architectural layers |
226
+ | Architectural complexity signals | None — the "how" should be obvious from the "what" |
227
+ | Risk level | Low or Medium |
228
+ | File quality | All modified files < 500 LOC, or well-architected if larger |
229
+
230
+ **When an issue would naturally be COMPLEX, decompose further.** If a piece of work would touch 5+ files, require 200+ LOC, or involve cross-cutting parameter threading, split it into smaller issues that each stay within SIMPLE bounds. Common decomposition strategies:
231
+
232
+ - **Layer by layer**: Instead of one issue that threads a new option from CLI → Manager → Service → Utility, create separate issues for each layer boundary (e.g., "Add option to CLI interface" then "Wire option through to Service layer")
233
+ - **Vertical slices**: Instead of one issue that adds a full feature, split into "Add core logic" then "Add UI/CLI surface" then "Add tests and validation"
234
+ - **New pattern then apply**: If a new pattern is needed, create one issue to establish the pattern in a single location, then a follow-up to apply it elsewhere
235
+
236
+ **Resist the urge to create COMPLEX child issues.** A common mistake is creating child issues that are individually large and complex. The goal is many small, focused issues — not a few big ones. If you find yourself writing a child issue that requires architectural decisions, coordinating multiple systems, or modifying large poorly-structured files, it's a signal to split further.
237
+
238
+ **But don't over-split into TRIVIAL busywork either.** Each child issue should represent a meaningful, coherent unit of work — not a single function rename or a one-line config change. Signs you've split too far:
239
+ - Multiple child issues touch the same file for closely related changes
240
+ - A child issue has no meaningful acceptance criteria beyond "change X to Y"
241
+ - The dependency chain is long and linear with no parallelism (A → B → C → D → E), where each step is tiny
242
+ - You're creating issues that an engineer would naturally do as part of a larger change (e.g., "update imports" as its own issue)
243
+
244
+ **The sweet spot is SIMPLE, not TRIVIAL.** Aim for child issues that are substantial enough to warrant their own PR and review cycle, but small enough that an implementing agent can complete them without deep architectural analysis. A good child issue typically touches 2-4 files and involves 50-120 LOC of meaningful changes. When you're on the fence about whether to split, lean toward splitting — smaller issues enable more parallelism and are easier for agents to get right on the first attempt.
245
+
246
+ **Maximize Parallel Execution.** The entire value of swarm mode is running many issues concurrently. Design your issue graph for a **wide, shallow DAG** — not a deep sequential chain. Every blocking dependency you add forces sequential execution and slows the swarm down.
247
+
248
+ **Use contract-based parallelism instead of blocking dependencies.** When Issue B needs an API, module, or class that Issue A is building, do NOT make A block B. Instead:
249
+ 1. Define the shared contract (interface, function signature, module API) explicitly in both issue descriptions
250
+ 2. Let both issues execute in parallel — each implements against the agreed contract
251
+ 3. A later integration step (or the PR review) catches any mismatches
252
+
253
+ **Example:** If Issue A creates a `UserService` class and Issue B needs to call `UserService.getById()`, don't block B on A. Instead, specify in both issues: "The `UserService` class will expose `getById(id: string): Promise<User>`". Both agents implement against this contract simultaneously.
254
+
255
+ **Only create hard blocking dependencies when truly necessary:**
256
+ - Issue B literally modifies files that Issue A creates from scratch (not just imports them)
257
+ - Issue B requires a database migration or schema change from Issue A
258
+ - Issue B cannot define any meaningful contract without Issue A's output (rare)
259
+
260
+ **A sign your plan needs more parallelism:** If your dependency graph is mostly linear (A → B → C → D), rethink the decomposition. Ask: "Can I define contracts so these run concurrently?" Usually the answer is yes.
261
+
203
262
  **Issue Structure:**
204
263
  Each child issue should include:
205
264
  1. **Summary**: One-sentence description of what this issue accomplishes
206
265
  2. **Context**: Why this issue exists (relationship to parent feature)
207
266
  3. **Acceptance Criteria**: Clear, testable conditions for "done"
208
- 4. **Dependencies**: Which issues must be completed first (if any)
209
- 5. **Scope Boundaries**: What is explicitly NOT included
267
+ 4. **Dependencies**: Which issues must be completed first (if any) — keep these minimal
268
+ 5. **Shared Contracts**: If this issue produces or consumes an interface/API that other parallel issues depend on, specify the exact contract (function signatures, types, module exports)
269
+ 6. **Scope Boundaries**: What is explicitly NOT included
210
270
 
211
271
  ---
212
272
 
@@ -283,16 +343,16 @@ Wait for the subagent to complete, then present its summary to the user for plan
283
343
  - Do NOT create a new parent epic - use the existing issue #{{PARENT_ISSUE_NUMBER}}
284
344
  2. **Set up blocking dependencies between children**
285
345
  - Use `create_dependency` to define execution order
286
- - If Issue B depends on work from Issue A, create a dependency where A blocks B
346
+ - Only create a blocking dependency (A blocks B) when B truly cannot start without A's output prefer contract-based parallelism over blocking dependencies (see "Maximize Parallel Execution" above)
287
347
  3. **Post Architectural Decision Record (ADR) as comment on parent issue**
288
348
  - Use `create_comment` with `number: "{{PARENT_ISSUE_NUMBER}}"`, `type: "issue"`
289
349
  - Include: Design rationale, key decisions, trade-offs, recommended execution order
290
350
  4. **Output next steps to the user**
291
351
  - Tell them what was created: "Created N child issues for #{{PARENT_ISSUE_NUMBER}}."
292
352
  {{#if IS_VSCODE_MODE}}
293
- - Recommend where to start: "Exit this session, then use the iloom explorer panel to create a new loom for issue Z to begin with [first task title]."
353
+ - Recommend: "In the iloom explorer panel, add a loom for issue #{{PARENT_ISSUE_NUMBER}} it will detect the child issues and launch the swarm workflow automatically."
294
354
  {{else}}
295
- - Recommend where to start: "Exit this session and run `il start Z` to begin with [first task title]."
355
+ - Recommend: "Run `il start {{PARENT_ISSUE_NUMBER}}` it will detect the child issues and launch the swarm workflow automatically."
296
356
  {{/if}}
297
357
  {{else}}
298
358
  **Fresh Planning Mode - Issue Creation Order:**
@@ -304,16 +364,16 @@ Wait for the subagent to complete, then present its summary to the user for plan
304
364
  - Each child represents one focused unit of work (1 loom = 1 PR)
305
365
  3. **Set up blocking dependencies between children**
306
366
  - Use `create_dependency` to define execution order
307
- - If Issue B depends on work from Issue A, create a dependency where A blocks B
367
+ - Only create a blocking dependency (A blocks B) when B truly cannot start without A's output prefer contract-based parallelism over blocking dependencies (see "Maximize Parallel Execution" above)
308
368
  4. **Post Architectural Decision Record (ADR) as first comment on parent epic**
309
369
  - Use `create_comment` with `number: <parent epic number>`, `type: "issue"`
310
370
  - Include: Design rationale, key decisions, trade-offs, recommended execution order
311
371
  5. **Output next steps to the user**
312
372
  - Tell them what was created: "Created Epic #X with Y child issues."
313
373
  {{#if IS_VSCODE_MODE}}
314
- - Recommend where to start: "Exit this session, then use the iloom explorer panel to create a new loom for issue Z to begin with [first task title]."
374
+ - Recommend: "In the iloom explorer panel, add a loom for Epic #X it will detect the child issues and launch the swarm workflow automatically."
315
375
  {{else}}
316
- - Recommend where to start: "Exit this session and run `il start Z` to begin with [first task title]."
376
+ - Recommend: "Run `il start X` it will detect the child issues and launch the swarm workflow automatically."
317
377
  {{/if}}
318
378
  {{/if}}
319
379
 
@@ -326,9 +386,9 @@ Use clear, action-oriented titles:
326
386
  **Summary Comment with Dependency Diagram:**
327
387
  After creating all child issues and dependencies, post a summary comment on the parent epic that includes:
328
388
  1. A list of the child issues created with their numbers and titles
329
- 2. A Mermaid diagram visualizing the dependency DAG
389
+ 2. A dependency diagram visualizing the DAG
330
390
 
331
- The Mermaid diagram should:
391
+ **For GitHub and Linear**, use a Mermaid diagram. The Mermaid diagram should:
332
392
  - Use `graph TD` (top-down) format
333
393
  - Include each child issue as a node with format: `ISSUE_ID[Short Title]`
334
394
  - Use the appropriate issue ID format for the tracker:
@@ -384,6 +444,27 @@ graph TD
384
444
  ```
385
445
  ```
386
446
 
447
+ **For Jira**, use ASCII art diagrams instead of Mermaid:
448
+ - Jira does not render Mermaid diagrams — they appear as raw text. Use simple ASCII box-and-arrow diagrams instead.
449
+ - **Write in standard Markdown, NOT Jira wiki markup.** The MCP tools automatically convert Markdown to Atlassian Document Format (ADF) before sending to Jira. If you write Jira wiki markup (e.g., `h2.`, `||header||`, `{code}`), it will be treated as literal text and displayed raw. Use standard Markdown headings (`##`), tables (`| col |`), code blocks (`` ``` ``), etc.
450
+
451
+ Example summary comment format (Jira):
452
+ ```
453
+ ## Child Issues Created
454
+
455
+ | Issue | Title | Dependencies |
456
+ |-------|-------|--------------|
457
+ | PROJ-101 | Bootstrap plan command | None |
458
+ | PROJ-102 | Add dependency management | None |
459
+ | PROJ-103 | Implement creation flow | PROJ-101, PROJ-102 |
460
+
461
+ ## Dependency Graph
462
+
463
+ PROJ-101 [Bootstrap plan command] ──┐
464
+ ├──> PROJ-103 [Implement creation flow]
465
+ PROJ-102 [Add dependency management] ──┘
466
+ ```
467
+
387
468
  Use `mcp__issue_management__create_comment` to post this summary to the parent epic after all issues and dependencies are created.
388
469
 
389
470
  ---
@@ -424,10 +505,10 @@ Direct the user to **open the epic issue** - this is the parent issue that conta
424
505
 
425
506
  {{#if IS_VSCODE_MODE}}
426
507
  **Next Steps Message (VS Code Mode):**
427
- End your summary with: "Exit this session and open the epic at [EPIC_URL] to review the plan and child issues. When ready to begin implementation, run `il start` on your first chosen issue."
508
+ End your summary with: "Review the epic and child issues at [EPIC_URL]. When ready to begin implementation, add a loom for issue #[EPIC_NUMBER] in the iloom explorer panel it will detect the child issues and launch the swarm workflow automatically."
428
509
  {{else}}
429
510
  **Next Steps Message (CLI Mode):**
430
- End your summary with: "Exit this session and open the epic at [EPIC_URL] to review the plan and child issues. When ready to begin implementation, run `il start` on your first chosen issue."
511
+ End your summary with: "Review the epic and child issues at [EPIC_URL]. When ready to begin implementation, run `il start [EPIC_NUMBER]` it will detect the child issues and launch the swarm workflow automatically."
431
512
  {{/if}}
432
513
 
433
- Replace `[EPIC_URL]` with the actual URL of the epic issue you created.
514
+ Replace `[EPIC_URL]` and `[EPIC_NUMBER]` with actual values from the epic issue you created.
@@ -56,6 +56,7 @@ Use these Recap MCP tools:
56
56
  ## Comment Routing: PR Mode
57
57
 
58
58
  - **Read PR details** using `mcp__issue_management__get_pr` with `{ number: "{{PR_NUMBER}}", includeComments: true }`
59
+ - **Read inline code review comments** using `mcp__issue_management__get_review_comments` with `{ number: "{{PR_NUMBER}}" }`
59
60
  - **Write comments** to PR #{{PR_NUMBER}} using `type: "pr"`
60
61
 
61
62
  When calling `mcp__issue_management__create_comment`:
@@ -67,6 +68,16 @@ When calling `mcp__issue_management__create_comment`:
67
68
  }
68
69
  ```
69
70
 
71
+ When calling `mcp__issue_management__update_comment`:
72
+ ```
73
+ {
74
+ commentId: "COMMENT_ID",
75
+ number: "{{PR_NUMBER}}",
76
+ body: "updated comment content",
77
+ type: "pr"
78
+ }
79
+ ```
80
+
70
81
  This ensures PR comments always go to GitHub regardless of the configured issue tracker.
71
82
 
72
83
  ---
@@ -82,6 +93,14 @@ This will give you:
82
93
  - Commit history (commits) and changed files (files)
83
94
  - Current state and branch metadata (headRefName, baseRefName)
84
95
 
96
+ To read inline code review comments (comments on specific files and lines), use:
97
+ `mcp__issue_management__get_review_comments` with `{ number: "{{PR_NUMBER}}" }`
98
+
99
+ This returns:
100
+ - Inline comments on specific files and lines (path, line number, diff side)
101
+ - Review comment threads and replies (inReplyToId)
102
+ - Optionally filter by review ID: `{ number: "{{PR_NUMBER}}", reviewId: "REVIEW_ID" }`
103
+
85
104
  Also check if the branch name contains an issue number (like issue-123) and if so, read that issue for context:
86
105
  `mcp__issue_management__get_issue` with `{ number: "{{ISSUE_NUMBER}}", includeComments: true }`
87
106
 
@@ -117,12 +136,17 @@ When the user requests help, **prefer subagents** to preserve your context windo
117
136
  | Deep questions (how/why something works) | `@agent-iloom-issue-analyzer` |
118
137
  | Code review request | `@agent-iloom-code-reviewer` (foreground) |
119
138
  | Out-of-scope requests | Ask user: help anyway, create new issue, or skip |
139
+ | Epic decomposition / large task breakdown | Recommend `il plan <epic-number>` then `il start <epic-number>` (see below) |
120
140
  | Ready to wrap up | Show Wrapping Up Instructions (see below) |
121
141
 
122
142
  After handling each request, summarize what was done and confirm you're still available.
123
143
 
124
144
  Use `recap.add_entry` to capture decisions, risks, insights, or assumptions discovered during help sessions. Do not log status updates or task completions.
125
145
 
146
+ ### Epic Decomposition
147
+
148
+ When an epic issue is created or the user wants to break a large task into child issues, recommend they run `il plan <epic-number>` to decompose the epic into child issues with dependency analysis, then `il start <epic-number>` to launch swarm mode for parallel implementation. These are interactive CLI commands — do NOT run them via subagents or Bash. Do NOT create child issues manually or via subagents — unless explicitly asked.
149
+
126
150
  {{#if ARTIFACT_REVIEW_ENABLED}}
127
151
  ---
128
152
 
@@ -245,6 +269,24 @@ This is NOT optional - if the reviewer requests Claude Local Review, it must be
245
269
 
246
270
  When the user says they're done or ready to wrap up, provide these instructions:
247
271
 
272
+ {{#if IS_VSCODE_MODE}}
273
+ "## Wrapping Up
274
+
275
+ To complete the workflow and merge your changes:
276
+
277
+ 1. In the iloom Explorer panel, click the **Finish** flag on this loom
278
+
279
+ This will automatically detect the current PR and:
280
+ - Stop any running web servers for this PR
281
+ - Merge your changes back to the main branch
282
+ - Clean up the worktree
283
+ - Delete the database branch (if applicable)
284
+ - Remove the workspace
285
+
286
+ Alternatively, you can exit this Claude session (type `/exit`) and run `iloom finish` from the terminal.
287
+
288
+ 2. Once the finish process completes, you can close any IDE windows that were opened specifically for this PR"
289
+ {{else}}
248
290
  "## Wrapping Up
249
291
 
250
292
  To complete the workflow and merge your changes:
@@ -262,4 +304,5 @@ This will automatically detect the current PR and:
262
304
  - Delete the database branch (if applicable)
263
305
  - Remove the workspace
264
306
 
265
- 3. Once the finish command completes, you can close any terminal or IDE windows that were opened specifically for this PR"
307
+ 3. Once the finish command completes, you can close any terminal or IDE windows that were opened specifically for this PR"
308
+ {{/if}}
@@ -80,6 +80,16 @@ When calling `mcp__issue_management__create_comment`:
80
80
  }
81
81
  ```
82
82
 
83
+ When calling `mcp__issue_management__update_comment`:
84
+ ```
85
+ {
86
+ commentId: "COMMENT_ID",
87
+ number: "{{DRAFT_PR_NUMBER}}",
88
+ body: "updated comment content",
89
+ type: "pr"
90
+ }
91
+ ```
92
+
83
93
  This keeps all AI workflow comments on the draft PR for visibility and traceability.
84
94
  {{/if}}
85
95
  {{#if STANDARD_BRANCH_MODE}}
@@ -768,18 +778,48 @@ When the user requests help, **prefer subagents** to preserve your context windo
768
778
  | New features / complex changes | `@agent-iloom-issue-analyze-and-plan` → if approved, `@agent-iloom-issue-implementer` |
769
779
  | Deep questions (how/why something works) | `@agent-iloom-issue-analyzer` |
770
780
  | Out-of-scope requests | Ask user: help anyway, create new issue, or skip |
781
+ | Epic decomposition / large task breakdown | Recommend `il plan <epic-number>` then `il start <epic-number>` (see below) |
771
782
  | Ready to wrap up | Show Wrapping Up Instructions (see below) |
772
783
 
773
784
  After handling each request, summarize what was done and confirm you're still available.
774
785
 
775
786
  Use `recap.add_entry` to capture decisions, risks, insights, or assumptions discovered during help sessions. Do not log status updates or task completions.
776
787
 
788
+ ### Epic Decomposition
789
+
790
+ When an epic issue is created or the user wants to break a large task into child issues, recommend they run `il plan <epic-number>` to decompose the epic into child issues with dependency analysis, then `il start <epic-number>` to launch swarm mode for parallel implementation. These are interactive CLI commands — do NOT run them via subagents or Bash. Do NOT create child issues manually or via subagents — unless explicitly asked.
791
+
777
792
  ---
778
793
 
779
794
  ## Wrapping Up Instructions
780
795
 
781
796
  When the user says they're done or ready to wrap up, provide these instructions:
782
797
 
798
+ {{#if IS_VSCODE_MODE}}
799
+ "## Wrapping Up
800
+
801
+ Your changes have been implemented in the current branch.
802
+
803
+ **Note: This was branch mode - no GitHub issue is associated with this work. Context from this session is ephemeral and not persisted.**
804
+
805
+ If you want to track this work formally:
806
+ - Create a GitHub issue to document the changes
807
+ - Or create a pull request directly from this branch
808
+
809
+ To finish and merge this branch:
810
+ 1. In the iloom Explorer panel, click the **Finish** flag on this loom
811
+
812
+ This will automatically:
813
+ - Stop any running web servers
814
+ - Merge your changes back to the main branch
815
+ - Clean up the worktree
816
+ - Delete the database branch (if applicable)
817
+ - Remove the workspace
818
+
819
+ Alternatively, you can exit this Claude session (type `/exit`) and run `iloom finish` from the terminal.
820
+
821
+ 2. Once the finish process completes, you can close any IDE windows that were opened for this branch"
822
+ {{else}}
783
823
  "## Wrapping Up
784
824
 
785
825
  Your changes have been implemented in the current branch.
@@ -802,4 +842,5 @@ This will automatically:
802
842
  - Merge your changes back to the main branch
803
843
  - Clean up the worktree
804
844
  - Delete the database branch (if applicable)
805
- - Remove the workspace"
845
+ - Remove the workspace"
846
+ {{/if}}
@@ -89,6 +89,20 @@ The reader doesn't care about your internal process. They care about:
89
89
  - Any explanation of what you're doing
90
90
  - Any text after the closing `</details>` tag
91
91
 
92
+ **CRITICAL FORMAT REQUIREMENT:**
93
+ All comment content MUST use **GitHub-Flavored Markdown** syntax.
94
+ NEVER use Jira Wiki format - it will corrupt the output when converted.
95
+
96
+ | Do NOT use (Jira Wiki) | Use instead (Markdown) |
97
+ |------------------------|------------------------|
98
+ | `{code}...{code}` | ` ``` ` code blocks |
99
+ | `h1. Title` | `# Title` |
100
+ | `*bold*` | `**bold**` |
101
+ | `_italic_` | `*italic*` |
102
+ | `{quote}...{quote}` | `> ` blockquotes |
103
+ | `[link text\|url]` | `[link text](url)` |
104
+ | `-` or `*` at line start | `- ` (with space) for lists |
105
+
92
106
  **Output ONLY the markdown content below, starting with `## iloom Session Summary` and ending with `</details>`.**
93
107
 
94
108
  Structure it with key themes visible at the top, then detailed sections wrapped in collapsible tags: