@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
package/dist/README.md CHANGED
@@ -18,46 +18,17 @@ iloom
18
18
 
19
19
  #### Links to key sections
20
20
 
21
- [How It Works](#how-it-works-the-multi-agent-workflow) • [Installation](#quick-start) • [Configuration](#configuration) • [Advanced Features](#advanced-features) • [Limitations](#system-requirements--limitations) • [Contributing](#contributing-to-iloom)
21
+ [How It Works](#how-it-works-the-multi-agent-workflow) • [Installation](#quick-start) • [Configuration](#configuration) • [Advanced Features](#advanced-features) • [Swarm Mode](#swarm-mode-epic-orchestration) • [Telemetry](#telemetry) • [Limitations](#system-requirements--limitations) • [Contributing](#contributing-to-iloom)
22
22
 
23
- ## Built For Modern Tools...
23
+ ## How can your team trust the code your AI wrote, when you don't?
24
24
 
25
- [![Node.js](https://img.shields.io/badge/Node.js-339933?style=for-the-badge&logo=nodedotjs&logoColor=white)](https://nodejs.org/)
26
- [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=for-the-badge&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
27
- [![Next.js](https://img.shields.io/badge/Next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white)](https://nextjs.org/)
28
- [![Neon](https://img.shields.io/badge/Neon-00E699?style=for-the-badge)](https://neon.tech/)
29
- [![Claude Code](https://img.shields.io/badge/Claude%20Code-8A6FFF?style=for-the-badge)](https://claude.ai/)
25
+ Your agent just shipped a 2,000-line PR. Why did it restructure that module? What assumptions did it make about the auth flow? Nobody knows. The reasoning evaporated when the chat session ended, and now your teammate is staring at a diff with zero context. Good luck getting that reviewed.
30
26
 
31
- ...To Solve A Very Modern Problem
32
- ---------------------------------
33
-
34
- The promise of AI-assisted development is profound: write more code, ship features faster. But there is a hidden cost. **AI agents write code quickly, but they struggle to stay in sync with their humans.**
35
-
36
- The hard part isn't generating code, it's maintaining the shared mental model of _why_ that code exists. When you rely on ephemeral chat windows, friction piles up:
37
-
38
- * You constantly re-brief the AI on the same context.
39
-
40
- * Hidden assumptions creep in (e.g., "Why did it use Axios instead of fetch?").
41
-
42
- * You spend more time reviewing and "babysitting" the AI than building.
43
-
44
-
45
- **The bottleneck isn't output velocity. It's maintaining alignment between human and AI at scale.**
46
-
47
- ### The iloom Approach: Context as Infrastructure
48
-
49
- iloom stops the "Context Window Tetris." It treats context as a first-class concern, persisting your AI's reasoning in **issue comments** rather than temporary chats.
50
-
51
- * **Stop Babysitting, Start Collaborating:** Instead of arguing with Claude in a chat, you review structured analysis plans in your issue tracker _before_ a single line of code is written.
52
-
53
- * **Scale Understanding:** Because every loom holds its own isolated environment (Git worktree, DB branch, local server), you can switch between 5 complex features without losing your place or your AI's context.
54
-
55
- * **Visible Reasoning:** The AI's decisions are documented publicly. Your team sees the plan, and "future you" knows exactly why a decision was made.
56
-
57
- * **Automatic Session Summaries:** When you finish a loom, iloom captures key insights, decisions, and lessons learned from your Claude session and posts them to the issue. These summaries become institutional knowledge that informs future tasks.
27
+ iloom persists the AI's analysis, plans, decisions, and risks as comments in your issue tracker. Not chat logs you'll never reopen. Not markdown files littering the repo. Your actual tracker, where your team can see what happened and why. That mountain of code you're sending for review? Now it comes with the reasoning behind it.
58
28
 
29
+ This matters because to get the most out of agents, you need to be multitasking across several of them. iloom gives every task its own isolated environment (git worktree, DB branch, unique port), and because all the reasoning is persisted, you can context-switch between tasks without losing the thread. The [VS Code extension](https://marketplace.visualstudio.com/items?itemName=iloom-ai.iloom-vscode) lets you catch up with any agent in seconds. Your teammates can pick up where you left off without a briefing.
59
30
 
60
- _iloom is not just a tool for managing git worktrees - it's a control plane for maintaining alignment between you and your AI assistant._
31
+ When a task outgrows one agent, `il plan` decomposes it into child issues with dependencies, and swarm mode launches parallel agents to execute them, each in its own worktree, running the full iloom workflow. You can one-shot entire features, entire products, and stay aligned. The VS Code extension gives you a Kanban board and dependency graph so you can see what's running, what's blocked, and what's done. The only real limit is your imagination. And maybe your Claude subscription.
61
32
 
62
33
  Quick Start
63
34
  -----------
@@ -105,6 +76,8 @@ Instead of a single generic prompt, iloom uses a pipeline of specialized agents:
105
76
  * **Planner:** Creates an execution plan with parallelization analysis—identifying which steps can run concurrently vs. sequentially. Plans reference specific files and line numbers, making them actionable and precise.
106
77
 
107
78
  * **Implementer:** Executes the plan using the context established in the previous steps. For complex tasks, multiple implementers can run in parallel on independent steps.
79
+
80
+ * **Swarm Orchestrator:** For epics with child issues, iloom enters [swarm mode](#swarm-mode-epic-orchestration)—launching parallel agent teams that implement each child issue autonomously in its own worktree, respecting dependency order.
108
81
 
109
82
 
110
83
  ### 2. Interactive Control
@@ -128,6 +101,15 @@ Each loom is a fully isolated container for your work:
128
101
 
129
102
  * **Environment Variables:** Each loom has its own environment files (`.env`, `.env.local`, `.env.development`, `.env.development.local`). Uses `development` by default, override with `DOTENV_FLOW_NODE_ENV`. See [Secret Storage Limitations](#multi-language-project-support) for frameworks with encrypted credentials.
130
103
 
104
+ When inside a loom shell (`il shell`), the following environment variables are automatically set:
105
+
106
+ | Variable | Description | Example |
107
+ |----------|-------------|---------|
108
+ | `ILOOM_LOOM` | Loom identifier for PS1 customization | `issue-87` |
109
+ | `ILOOM_COLOR_HEX` | Hex color assigned to this loom (if available) | `#dcebff` |
110
+
111
+ `ILOOM_COLOR_HEX` is useful for downstream tools that want to visually distinguish looms. For example, a Vite app can read it via `import.meta.env.VITE_ILOOM_COLOR_HEX` to tint the UI. See [Vite Integration Guide](docs/vite-iloom-color.md) for details.
112
+
131
113
  * **Unique Runtime:**
132
114
 
133
115
  * **Web Apps:** Runs on a deterministic port (e.g., base port 3000 + issue #25 = 3025).
@@ -142,13 +124,13 @@ Command Reference
142
124
 
143
125
  | **Command** | **Alias** | **Description** |
144
126
  | ------ | ----- | -----|
145
- | `il start` | `new` | Create loom, run analysis agents, and launch IDE. |
127
+ | `il start` | `new` | Create loom, run analysis agents, and launch IDE. Auto-detects epics with child issues for [swarm mode](#swarm-mode-epic-orchestration). |
146
128
  | `il commit` | `c` | Commit all files with issue reference (`Refs #N` or `Fixes #N`). |
147
129
  | `il finish` | `dn` | Validate tests/lint, commit, handle conflicts, and merge/PR. |
148
130
  | `il cleanup` | `remove` | Safely remove a loom and its database branch without merging. |
149
- | `il list` | | Show active looms for current project. `--finished` for archived, `--all` for active + archived, `--global` for looms across all projects. |
131
+ | `il list` | | Show active looms for current project. `--finished` for archived, `--all` for active + archived, `--global` for looms across all projects. JSON output includes `swarmIssues` and `dependencyMap` for epic looms. |
150
132
  | `il projects` | | List configured projects (JSON output). |
151
- | `il spin` | | Launch Claude inside the current loom with context auto-detected. |
133
+ | `il spin` | | Launch Claude inside the current loom with context auto-detected. In epic looms, enters [swarm mode](#swarm-mode-epic-orchestration) with parallel agent orchestration. |
152
134
  | `il open` | `run` | Open loom in browser (web) or run your CLI tool. |
153
135
  | `il vscode` | | Install iloom VS Code extension and open workspace in VS Code. |
154
136
  | `il dev-server` | `dev` | Start dev server in foreground for a workspace. |
@@ -162,6 +144,7 @@ Command Reference
162
144
  | `il init` | `config` | Interactive configuration wizard. |
163
145
  | `il feedback` | `f` | Submit bug reports/feedback directly from the CLI. |
164
146
  | `il update` | | Update iloom CLI to the latest version. |
147
+ | `il telemetry` | | Manage anonymous usage telemetry (`on`, `off`, `status`). |
165
148
 
166
149
  For detailed documentation including all command options, flags, and examples, see the [Complete Command Reference](docs/iloom-commands.md).
167
150
 
@@ -439,12 +422,61 @@ Integrations
439
422
 
440
423
  ### Issue Trackers
441
424
 
442
- iloom supports the tools you already use. Unless you use JIRA.
425
+ iloom supports multiple issue tracking providers to fit your team's workflow.
443
426
 
444
427
  | **Provider** | **Setup** | **Notes** |
445
428
  |--------------|-----------|-----------|
446
429
  | **GitHub** | `gh auth login` | Default. Supports Issues and Pull Requests automatically. |
447
430
  | **Linear** | `il init` | Requires API token. Supports full read/write on Linear issues. |
431
+ | **Jira** | Configure in `.iloom/settings.json` | Atlassian Cloud. Requires API token. See [Jira Setup](#jira-setup) below. |
432
+
433
+ ### Jira Setup
434
+
435
+ To use Jira as your issue tracker, add this configuration:
436
+
437
+ **.iloom/settings.json (Committed)**
438
+ ```json
439
+ {
440
+ "issueManagement": {
441
+ "provider": "jira",
442
+ "jira": {
443
+ "host": "https://yourcompany.atlassian.net",
444
+ "username": "your.email@company.com",
445
+ "projectKey": "PROJ",
446
+ "boardId": "123",
447
+ "doneStatuses": ["Done", "Closed"],
448
+ "transitionMappings": {
449
+ "In Review": "Start Review"
450
+ }
451
+ }
452
+ }
453
+ }
454
+ ```
455
+
456
+ **.iloom/settings.local.json (Gitignored - Never commit this file)**
457
+ ```json
458
+ {
459
+ "issueManagement": {
460
+ "jira": {
461
+ "apiToken": "your-jira-api-token-here"
462
+ }
463
+ }
464
+ }
465
+ ```
466
+
467
+ **Generate a Jira API Token:**
468
+ 1. Visit https://id.atlassian.com/manage-profile/security/api-tokens
469
+ 2. Click "Create API token"
470
+ 3. Copy the token to `.iloom/settings.local.json`
471
+
472
+ **Configuration Options:**
473
+ - `host`: Your Jira Cloud instance URL
474
+ - `username`: Your Jira email address
475
+ - `apiToken`: API token (store in settings.local.json only!)
476
+ - `projectKey`: Jira project key (e.g., "PROJ", "ENG")
477
+ - `boardId`: (Optional) Board ID for sprint/workflow operations
478
+ - `doneStatuses`: (Optional) Status names to exclude from `il issues` lists (default: `["Done"]`). Set to match your Jira workflow, e.g., `["Done", "Closed", "Verified"]`
479
+ - `transitionMappings`: (Optional) Map iloom states to your Jira workflow transition names
448
480
 
449
481
 
450
482
  ### IDE Support
@@ -453,7 +485,26 @@ iloom creates isolated workspace settings for your editor. Color synchronization
453
485
  * **Supported:** VS Code, Cursor, Windsurf, Antigravity, WebStorm, IntelliJ, Sublime Text.
454
486
 
455
487
  * **Config:** Set your preference via `il init` or `il start --set ide.type=cursor`.
456
-
488
+
489
+ ### Git Operation Settings
490
+
491
+ Configure git operation timeouts for projects with long-running pre-commit hooks.
492
+
493
+ **.iloom/settings.json**
494
+ ```json
495
+ {
496
+ "git": {
497
+ "commitTimeout": 120000
498
+ }
499
+ }
500
+ ```
501
+
502
+ | Setting | Default | Range | Description |
503
+ |---------|---------|-------|-------------|
504
+ | `git.commitTimeout` | 60000 (60s) | 1000-600000 | Timeout in milliseconds for git commit operations. Increase if pre-commit hooks (linting, tests, type checking) exceed the default timeout. |
505
+
506
+ **When to increase:** If you see timeout errors during `il commit` or `il finish`, your pre-commit hooks are taking longer than the default 60 seconds. Set a higher value based on your typical hook duration.
507
+
457
508
 
458
509
  Advanced Features
459
510
  -----------------
@@ -528,6 +579,88 @@ il plan --yolo "Add GitLab integration"
528
579
 
529
580
  See the [Complete Command Reference](docs/iloom-commands.md#il-plan) for all options including `--model`, `--planner`, and `--reviewer` flags.
530
581
 
582
+ ### Swarm Mode (Epic Orchestration)
583
+
584
+ Swarm mode enables automatic, parallel execution of an entire epic by coordinating a team of AI agents. Each child issue gets its own worktree and agent, all working simultaneously while respecting dependency order.
585
+
586
+ **Prerequisite:** Decompose your epic into child issues with dependencies first, using `il plan` or manually creating child issues and setting up blocking relationships.
587
+
588
+ **How to trigger:**
589
+
590
+ ```bash
591
+ # Auto-detect: iloom checks for child issues and prompts
592
+ il start 100
593
+
594
+ # Force epic mode (skip prompt)
595
+ il start 100 --epic
596
+
597
+ # Force normal loom even if children exist
598
+ il start 100 --no-epic
599
+ ```
600
+
601
+ When you run `il spin` inside the epic loom, swarm mode activates:
602
+
603
+ 1. **Child worktrees** are created for each child issue, branched off the epic branch
604
+ 2. **Swarm agents and skill files** are rendered into the epic loom's `.claude/` directory
605
+ 3. **Dependency DAG** is fetched from your issue tracker (blocking relationships between children)
606
+ 4. **Orchestrator launches** with Claude's experimental agent teams, using `bypassPermissions` mode
607
+ 5. **Parallel agents** are spawned for all unblocked child issues simultaneously
608
+ 6. As agents complete, their work is **rebased and fast-forward merged** into the epic branch
609
+ 7. **Newly unblocked issues** are spawned automatically as their dependencies finish
610
+ 8. **Failed children** are isolated — they don't block unrelated issues
611
+
612
+ **Example workflow:**
613
+
614
+ ```bash
615
+ # 1. Plan and decompose your epic
616
+ il plan 100
617
+
618
+ # 2. Start the epic loom (auto-detects children)
619
+ il start 100 --epic
620
+
621
+ # 3. Launch swarm mode
622
+ il spin
623
+ # The orchestrator takes over — parallel agents implement each child issue,
624
+ # merge completed work, and handle failures autonomously.
625
+ ```
626
+
627
+ Each child issue tracks its lifecycle state: `pending` -> `in_progress` -> `done` / `failed`. Use `il list --json` to see `swarmIssues` with per-child states and the `dependencyMap` for epic looms.
628
+
629
+ For detailed reference on swarm mode behavior, see the [Complete Command Reference](docs/iloom-commands.md#swarm-mode-epic-orchestration).
630
+
631
+ Telemetry
632
+ ---------
633
+
634
+ iloom collects anonymous usage data to help improve the product. This data helps us understand which features are used, identify common errors, and prioritize development efforts.
635
+
636
+ **What IS collected:**
637
+ - Anonymous event data: command usage, feature adoption, and error types
638
+ - An anonymous identifier (not linked to your identity)
639
+
640
+ **What is NOT collected:**
641
+ - GitHub/Linear/Jira usernames or emails
642
+ - Repository names or URLs
643
+ - Issue titles, descriptions, or content
644
+ - File paths or code content
645
+ - Branch names
646
+ - AI analysis or plan content
647
+ - Anything that could identify a specific project or person
648
+
649
+ **Opt out at any time:**
650
+
651
+ ```bash
652
+ # Disable telemetry
653
+ il telemetry off
654
+
655
+ # Check current status
656
+ il telemetry status
657
+
658
+ # Re-enable telemetry
659
+ il telemetry on
660
+ ```
661
+
662
+ On first run, iloom displays a disclosure message informing you that telemetry is enabled and how to opt out.
663
+
531
664
  System Requirements & Limitations
532
665
  ---------------------------------
533
666
 
@@ -589,6 +722,11 @@ This command:
589
722
 
590
723
  The draft PR workflow is ideal for open source: as you work, iloom posts the AI's analysis, implementation plan, and progress directly to that draft PR—giving maintainers full context before the code is even ready for review.
591
724
 
725
+ Acknowledgments
726
+ ----------------
727
+
728
+ - [@NoahCardoza](https://github.com/NoahCardoza) — Jira Cloud integration (PR [#588](https://github.com/iloom-ai/iloom-cli/pull/588)): JiraApiClient, JiraIssueTracker, ADF/Markdown conversion, MCP provider, sprint/mine filtering, and `il issues` Jira support.
729
+
592
730
  License & Name
593
731
  --------------
594
732
 
@@ -600,7 +738,7 @@ License & Name
600
738
 
601
739
  * ❌ You cannot resell iloom itself as a product or SaaS.
602
740
 
603
- * Converts to Apache 2.0 on 2030-02-11.
741
+ * Converts to Apache 2.0 on 2030-02-23.
604
742
 
605
743
 
606
744
  See [LICENSE](https://raw.githubusercontent.com/iloom-ai/iloom-cli/main/LICENSE) for complete terms.
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import {
3
3
  AgentSettingsSchema,
4
+ BaseAgentSettingsSchema,
4
5
  CapabilitiesSettingsSchema,
5
6
  CapabilitiesSettingsSchemaNoDefaults,
6
7
  DatabaseProvidersSettingsSchema,
@@ -15,10 +16,11 @@ import {
15
16
  WorkflowPermissionSchemaNoDefaults,
16
17
  WorkflowsSettingsSchema,
17
18
  WorkflowsSettingsSchemaNoDefaults
18
- } from "./chunk-XFEK2X2D.js";
19
+ } from "./chunk-YYAKPQBT.js";
19
20
  import "./chunk-VT4PDUYT.js";
20
21
  export {
21
22
  AgentSettingsSchema,
23
+ BaseAgentSettingsSchema,
22
24
  CapabilitiesSettingsSchema,
23
25
  CapabilitiesSettingsSchemaNoDefaults,
24
26
  DatabaseProvidersSettingsSchema,
@@ -34,4 +36,4 @@ export {
34
36
  WorkflowsSettingsSchema,
35
37
  WorkflowsSettingsSchemaNoDefaults
36
38
  };
37
- //# sourceMappingURL=SettingsManager-QR7V2IW2.js.map
39
+ //# sourceMappingURL=SettingsManager-BQDQA3FK.js.map
@@ -7,6 +7,17 @@ color: yellow
7
7
 
8
8
  You are a skeptical senior staff engineer reviewing work produced by AI agents before it gets posted to a GitHub issue. Your job is to catch errors, invented requirements, and flawed reasoning before they reach humans.
9
9
 
10
+ {{#if SWARM_MODE}}
11
+ ## Swarm Mode
12
+
13
+ **You are running in swarm mode as part of an autonomous workflow.**
14
+
15
+ - **No human interaction**: Do NOT pause for user input. Return your review verdict directly.
16
+ - **Concise output**: Return structured review results suitable for the orchestrator.
17
+ - **Autonomous decisions**: If improvements are needed, provide actionable feedback in the response.
18
+ - **No state to done**: Do NOT call `recap.set_loom_state` with state `done` — only the swarm worker may do that after committing.
19
+ {{/if}}
20
+
10
21
  {{#if HAS_ARTIFACT_REVIEW_GEMINI}}
11
22
  **CRITICAL: This agent must run in FOREGROUND mode to access MCP tools. Background subagents cannot access MCP.**
12
23
  {{else}}
@@ -7,6 +7,17 @@ color: cyan
7
7
 
8
8
  You are an expert code reviewer. Your task is to analyze uncommitted code changes and provide actionable feedback.
9
9
 
10
+ {{#if SWARM_MODE}}
11
+ ## Swarm Mode
12
+
13
+ **You are running in swarm mode as part of an autonomous workflow.**
14
+
15
+ - **State transition**: Call `recap.set_loom_state` with state `code_review` at the start of your review. Do NOT set state to `done` — only the swarm worker may do that after committing.
16
+ - **No human interaction**: Do NOT ask the user about critical issues. Report all findings directly to the caller.
17
+ - **Concise output**: Return structured review results suitable for the orchestrator to process.
18
+ - **Autonomous handling**: If critical issues are found, report them but do NOT wait for user confirmation.
19
+ {{/if}}
20
+
10
21
  ## Do NOT Review Temporal Information
11
22
 
12
23
  **IMPORTANT:** Do NOT flag issues related to information that may have changed since your training data cutoff. This includes:
@@ -164,6 +175,7 @@ Look for:
164
175
  - Nested ternary operators (more than 2 levels)
165
176
  - Overly complex conditionals that could be simplified
166
177
  - Unnecessary abstractions
178
+ - Unnecessary operations (e.g., writing config/state that matches application defaults, creating files the system doesn't need)
167
179
  - Code that could be more explicit/readable
168
180
  - Duplicated logic that could be extracted
169
181
 
@@ -382,6 +394,7 @@ Look for:
382
394
  - Nested ternary operators (more than 2 levels)
383
395
  - Overly complex conditionals that could be simplified
384
396
  - Unnecessary abstractions
397
+ - Unnecessary operations (e.g., writing config/state that matches application defaults, creating files the system doesn't need)
385
398
  - Code that could be more explicit/readable
386
399
  - Duplicated logic that could be extracted
387
400
 
@@ -611,6 +624,7 @@ Look for:
611
624
  - Nested ternary operators (more than 2 levels)
612
625
  - Overly complex conditionals that could be simplified
613
626
  - Unnecessary abstractions
627
+ - Unnecessary operations (e.g., writing config/state that matches application defaults, creating files the system doesn't need)
614
628
  - Code that could be more explicit/readable
615
629
  - Duplicated logic that could be extracted
616
630
 
@@ -6,6 +6,17 @@ color: teal
6
6
  model: opus
7
7
  ---
8
8
 
9
+ {{#if SWARM_MODE}}
10
+ ## Swarm Mode
11
+
12
+ **You are running in swarm mode as part of an autonomous workflow.**
13
+
14
+ - **Issue context**: Read the issue number from `iloom-metadata.json` in the worktree root, or accept it as an invocation argument. Do NOT rely on a baked-in issue number.
15
+ - **Comment routing**: Post comments to the issue. Get the issue number from your invocation prompt. Use `type: "issue"` with `mcp__issue_management__create_comment`.
16
+ - **No human interaction**: Do NOT pause for user input. Make your best judgment and proceed.
17
+ - **Concise output**: Return a structured result suitable for the orchestrator, including the Execution Plan.
18
+ - **No state to done**: Do NOT call `recap.set_loom_state` with state `done` — only the swarm worker may do that after committing.
19
+ {{else}}
9
20
  {{#if DRAFT_PR_MODE}}
10
21
  ## Comment Routing: Draft PR Mode
11
22
 
@@ -20,6 +31,7 @@ Do NOT write comments to the issue - only to the draft PR.
20
31
 
21
32
  - **Read and write** to Issue #{{ISSUE_NUMBER}} using `type: "issue"`
22
33
  {{/if}}
34
+ {{/if}}
23
35
 
24
36
  You are Claude, an AI assistant specialized in combined analysis and planning for simple issues. You excel at efficiently handling straightforward tasks that have been pre-classified as SIMPLE by the complexity evaluator.
25
37
 
@@ -50,6 +62,9 @@ The recap panel helps users stay oriented without reading all your output. Captu
50
62
 
51
63
  ### Step 1: Fetch the Issue
52
64
 
65
+ {{#if SWARM_MODE}}
66
+ Read the issue using `mcp__issue_management__get_issue` with the issue number from metadata or invocation arguments. Extract the issue body, title, comments, and the complexity evaluation comment.
67
+ {{else}}
53
68
  Read the issue thoroughly 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.
54
69
 
55
70
  Extract:
@@ -58,6 +73,7 @@ Extract:
58
73
  - Specific requirements and constraints
59
74
 
60
75
  NOTE: 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).
76
+ {{/if}}
61
77
 
62
78
  ### Step 2: Perform Lightweight Research
63
79
 
@@ -199,6 +215,7 @@ With this analysis, you will:
199
215
  - [ ] Any architectural constraints or principles to follow?
200
216
  - [ ] Edge cases to consider?
201
217
  - [ ] Check README, CLAUDE.md, related issues for context
218
+ - [ ] **Necessity check**: For features involving config/state/files — what is the current behavior without those changes? Are the proposed values already the application defaults? If so, the operation may be unnecessary.
202
219
 
203
220
  **2. Third-Party Tools (if applicable)**
204
221
  - [ ] Skills: Check for relevant approach guidance
@@ -231,6 +248,20 @@ Based on the lightweight analysis, create a detailed plan following the project'
231
248
  <comment_tool_info>
232
249
  IMPORTANT: You have been provided with MCP tools for issue management during this workflow.
233
250
 
251
+ **CRITICAL FORMAT REQUIREMENT:**
252
+ All comment content MUST use **GitHub-Flavored Markdown** syntax.
253
+ NEVER use Jira Wiki format - it will corrupt the output when converted.
254
+
255
+ | Do NOT use (Jira Wiki) | Use instead (Markdown) |
256
+ |------------------------|------------------------|
257
+ | `{code}...{code}` | ` ``` ` code blocks |
258
+ | `h1. Title` | `# Title` |
259
+ | `*bold*` | `**bold**` |
260
+ | `_italic_` | `*italic*` |
261
+ | `{quote}...{quote}` | `> ` blockquotes |
262
+ | `[link text\|url]` | `[link text](url)` |
263
+ | `-` or `*` at line start | `- ` (with space) for lists |
264
+
234
265
  Available Tools:
235
266
  - mcp__issue_management__get_issue: Fetch issue details
236
267
  Parameters: { number: string, includeComments?: boolean }
@@ -240,9 +271,11 @@ Available Tools:
240
271
  Parameters: { commentId: string, number: string }
241
272
  Returns: { id, body, author, created_at, ... }
242
273
 
243
- {{#if DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}[PR NUMBER MISSING]{{/unless}}
274
+ {{#if SWARM_MODE}}- mcp__issue_management__create_comment: Create a new comment on the issue
275
+ Parameters: { number: string, body: "markdown content", type: "issue" }
276
+ Note: Use the issue number from your invocation prompt.{{else}}{{#if DRAFT_PR_MODE}}- mcp__issue_management__create_comment: Create a new comment on PR {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}[PR NUMBER MISSING]{{/unless}}
244
277
  Parameters: { number: string, body: "markdown content", type: "pr" }{{else}}- mcp__issue_management__create_comment: Create a new comment on issue {{ISSUE_NUMBER}}
245
- Parameters: { number: string, body: "markdown content", type: "issue" }{{/if}}
278
+ Parameters: { number: string, body: "markdown content", type: "issue" }{{/if}}{{/if}}
246
279
  Returns: { id: string, url: string, created_at: string }
247
280
 
248
281
  - mcp__issue_management__update_comment: Update an existing comment
@@ -265,7 +298,11 @@ Workflow Comment Strategy:
265
298
  Example Usage:
266
299
  ```
267
300
  // Start
268
- {{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
301
+ {{#if SWARM_MODE}}const comment = await mcp__issue_management__create_comment({
302
+ number: "<issue-number-from-invocation-prompt>",
303
+ body: "# Combined Analysis and Planning\n\n- [ ] Perform lightweight analysis\n- [ ] Create implementation plan",
304
+ type: "issue"
305
+ }){{else}}{{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
269
306
  number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
270
307
  body: "# Combined Analysis and Planning\n\n- [ ] Perform lightweight analysis\n- [ ] Create implementation plan",
271
308
  type: "pr"
@@ -273,7 +310,7 @@ Example Usage:
273
310
  number: {{ISSUE_NUMBER}},
274
311
  body: "# Combined Analysis and Planning\n\n- [ ] Perform lightweight analysis\n- [ ] Create implementation plan",
275
312
  type: "issue"
276
- }){{/if}}
313
+ }){{/if}}{{/if}}
277
314
 
278
315
  // Log the comment as an artifact
279
316
  await mcp__recap__add_artifact({
@@ -283,7 +320,11 @@ await mcp__recap__add_artifact({
283
320
  })
284
321
 
285
322
  // Update as you progress
286
- {{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
323
+ {{#if SWARM_MODE}}await mcp__issue_management__update_comment({
324
+ commentId: comment.id,
325
+ number: "<issue-number-from-invocation-prompt>",
326
+ body: "# Combined Analysis and Planning\n\n- [x] Perform lightweight analysis\n- [ ] Create implementation plan"
327
+ }){{else}}{{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
287
328
  commentId: comment.id,
288
329
  number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
289
330
  body: "# Combined Analysis and Planning\n\n- [x] Perform lightweight analysis\n- [ ] Create implementation plan"
@@ -291,7 +332,7 @@ await mcp__recap__add_artifact({
291
332
  commentId: comment.id,
292
333
  number: {{ISSUE_NUMBER}},
293
334
  body: "# Combined Analysis and Planning\n\n- [x] Perform lightweight analysis\n- [ ] Create implementation plan"
294
- }){{/if}}
335
+ }){{/if}}{{/if}}
295
336
  ```
296
337
  </comment_tool_info>
297
338
 
@@ -603,6 +644,7 @@ copySettingsFile() {
603
644
  - **No unnecessary backwards compatibility**: Codebase is deployed atomically
604
645
  - **No placeholder functionality**: Plan for real functionality as specified
605
646
  - **No invented requirements**: DO NOT add features not explicitly requested
647
+ - **Minimal implementation**: Before planning file writes, config creation, or state changes, verify the operation is needed. If the system already behaves correctly without the change (e.g., proposed defaults match built-in defaults), omit it. The simplest correct implementation wins.
606
648
  - **User experience ownership**: The human defines UX - don't make UX decisions autonomously
607
649
  - **IMPORTANT: No integration tests with git/filesystem/APIs**: NEVER plan integration tests that interact with git, filesystem, or 3rd party APIs
608
650
 
@@ -640,12 +682,13 @@ When including code, configuration, or examples:
640
682
  3. **Keep Analysis Brief**: Max 30% of effort on analysis, 70% on planning (unless escalating)
641
683
  4. **Focus on Planning**: Detailed plan is more important than exhaustive analysis
642
684
  5. **Stay Focused**: Only analyze/plan what's specified in the issue
643
- 6. **Be Precise**: Use exact file paths, line numbers, and clear specifications
644
- 7. **No Execution**: You are analyzing and planning only, not implementing
645
- 8. **Evidence-Based**: All claims must be backed by code references
646
- 9. **Section 1 Scannable**: <5 minutes to read - ruthlessly prioritize
647
- 10. **Section 2 Concise**: Brief, actionable, no "AI slop"
648
- 11. **One-Sentence Rule**: Apply throughout Section 2 for descriptions and risks
685
+ 6. **Question Literal Requirements**: Issue descriptions may over-specify implementation. If requirements say "write X with values Y" but the system already defaults to Y, the write is unnecessary. Plan for the actual need, not the literal phrasing.
686
+ 7. **Be Precise**: Use exact file paths, line numbers, and clear specifications
687
+ 8. **No Execution**: You are analyzing and planning only, not implementing
688
+ 9. **Evidence-Based**: All claims must be backed by code references
689
+ 10. **Section 1 Scannable**: <5 minutes to read - ruthlessly prioritize
690
+ 11. **Section 2 Concise**: Brief, actionable, no "AI slop"
691
+ 12. **One-Sentence Rule**: Apply throughout Section 2 for descriptions and risks
649
692
 
650
693
  ## Quality Assurance
651
694