@iloom/cli 0.9.2 → 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.
- package/LICENSE +1 -1
- package/README.md +159 -40
- package/dist/{BranchNamingService-K6XNWQ6C.js → BranchNamingService-ECJHBB67.js} +2 -2
- package/dist/ClaudeContextManager-QXX6ZFST.js +14 -0
- package/dist/ClaudeService-NJNK2SUH.js +13 -0
- package/dist/{GitHubService-TGWJN4V4.js → GitHubService-MEHKHUQP.js} +4 -4
- package/dist/IssueTrackerFactory-NG53YX5S.js +14 -0
- package/dist/{LoomLauncher-73NXL2CL.js → LoomLauncher-L64HHS3T.js} +9 -9
- package/dist/{MetadataManager-W3C54UYT.js → MetadataManager-5QZSTKNN.js} +2 -2
- package/dist/{ProjectCapabilityDetector-N5L7T4IY.js → ProjectCapabilityDetector-5KSYUTBJ.js} +3 -3
- package/dist/{PromptTemplateManager-36YLQRHP.js → PromptTemplateManager-DULSVRRE.js} +2 -2
- package/dist/README.md +159 -40
- package/dist/{SettingsManager-AW3JTJHD.js → SettingsManager-BQDQA3FK.js} +4 -2
- package/dist/agents/iloom-artifact-reviewer.md +11 -0
- package/dist/agents/iloom-code-reviewer.md +14 -0
- package/dist/agents/iloom-issue-analyze-and-plan.md +55 -12
- package/dist/agents/iloom-issue-analyzer.md +49 -6
- package/dist/agents/iloom-issue-complexity-evaluator.md +47 -6
- package/dist/agents/iloom-issue-enhancer.md +86 -7
- package/dist/agents/iloom-issue-implementer.md +48 -7
- package/dist/agents/iloom-issue-planner.md +115 -62
- package/dist/{build-THZI572G.js → build-5GO3XW26.js} +9 -9
- package/dist/{chunk-NUACL52E.js → chunk-3D7WQM7I.js} +2 -2
- package/dist/chunk-4232AHNQ.js +35 -0
- package/dist/chunk-4232AHNQ.js.map +1 -0
- package/dist/{chunk-QN47QVBX.js → chunk-4WJNIR5O.js} +1 -1
- package/dist/chunk-4WJNIR5O.js.map +1 -0
- package/dist/{chunk-A7NJF73J.js → chunk-5MWV33NN.js} +4 -4
- package/dist/{chunk-3I4ONZRT.js → chunk-6EU6TCF6.js} +10 -10
- package/dist/chunk-6EU6TCF6.js.map +1 -0
- package/dist/{chunk-CWRI4JC3.js → chunk-FB47TIJG.js} +29 -11
- package/dist/chunk-FB47TIJG.js.map +1 -0
- package/dist/chunk-HEXKPKCK.js +1396 -0
- package/dist/chunk-HEXKPKCK.js.map +1 -0
- package/dist/{chunk-KAYXR544.js → chunk-J5S7DFYC.js} +2 -2
- package/dist/{chunk-ULSWCPQG.js → chunk-JO2LZ6EQ.js} +476 -5
- package/dist/chunk-JO2LZ6EQ.js.map +1 -0
- package/dist/{chunk-KBEIQP4G.js → chunk-KB64WNBZ.js} +43 -3
- package/dist/chunk-KB64WNBZ.js.map +1 -0
- package/dist/{chunk-OFDN5NKS.js → chunk-KXDRI47U.js} +69 -12
- package/dist/chunk-KXDRI47U.js.map +1 -0
- package/dist/{chunk-R4YWBGY6.js → chunk-LXLMMXXY.js} +54 -14
- package/dist/chunk-LXLMMXXY.js.map +1 -0
- package/dist/{chunk-AR5QKYNE.js → chunk-MNHZB4Z2.js} +4 -4
- package/dist/{chunk-TL72BGP6.js → chunk-MORRVYPT.js} +2 -2
- package/dist/{chunk-KJTVU3HZ.js → chunk-NRSWLOAZ.js} +8 -8
- package/dist/chunk-NRSWLOAZ.js.map +1 -0
- package/dist/{chunk-FO5GGFOV.js → chunk-ONQYPICO.js} +13 -5
- package/dist/chunk-ONQYPICO.js.map +1 -0
- package/dist/{chunk-7ZEHSSUP.js → chunk-P4O6EH46.js} +4 -4
- package/dist/chunk-QZWEJVWV.js +207 -0
- package/dist/chunk-QZWEJVWV.js.map +1 -0
- package/dist/chunk-RSYT7MVI.js +202 -0
- package/dist/chunk-RSYT7MVI.js.map +1 -0
- package/dist/{chunk-Z2TWEXR7.js → chunk-RYWFS37M.js} +6 -6
- package/dist/chunk-RYWFS37M.js.map +1 -0
- package/dist/{chunk-B7U6OKUR.js → chunk-SF2P22EE.js} +11 -3
- package/dist/chunk-SF2P22EE.js.map +1 -0
- package/dist/{chunk-6IIL5M2L.js → chunk-SN3SQCFK.js} +10 -8
- package/dist/{chunk-6IIL5M2L.js.map → chunk-SN3SQCFK.js.map} +1 -1
- package/dist/{chunk-SOSQILHO.js → chunk-UD3WJDIV.js} +92 -82
- package/dist/chunk-UD3WJDIV.js.map +1 -0
- package/dist/{chunk-KXGQYLFZ.js → chunk-UKBAJ2QQ.js} +61 -7
- package/dist/chunk-UKBAJ2QQ.js.map +1 -0
- package/dist/{chunk-W6DP5RVR.js → chunk-UVD4CZKS.js} +3 -3
- package/dist/chunk-UWGVCXRF.js +207 -0
- package/dist/chunk-UWGVCXRF.js.map +1 -0
- package/dist/{chunk-NWMORW3U.js → chunk-VECNX6VX.js} +2 -2
- package/dist/{chunk-4CO6KG5S.js → chunk-VG45TUYK.js} +53 -7
- package/dist/{chunk-4CO6KG5S.js.map → chunk-VG45TUYK.js.map} +1 -1
- package/dist/{chunk-TC7APDKU.js → chunk-VGGST52X.js} +2 -2
- package/dist/{chunk-4LKGCFGG.js → chunk-WWKOVDWC.js} +2 -2
- package/dist/{chunk-YKFCCV6S.js → chunk-WY4QBK43.js} +7 -7
- package/dist/chunk-WY4QBK43.js.map +1 -0
- package/dist/chunk-Y4YZTHZE.js +73 -0
- package/dist/chunk-Y4YZTHZE.js.map +1 -0
- package/dist/{chunk-VOGGLPG5.js → chunk-YQ57ORTV.js} +14 -1
- package/dist/chunk-YQ57ORTV.js.map +1 -0
- package/dist/{chunk-RI2YL6TK.js → chunk-YYAKPQBT.js} +65 -18
- package/dist/chunk-YYAKPQBT.js.map +1 -0
- package/dist/{chunk-IZIYLYPK.js → chunk-ZEWU5PZK.js} +2 -2
- package/dist/{chunk-VPTAX5TR.js → chunk-ZHPNZC75.js} +12 -12
- package/dist/chunk-ZHPNZC75.js.map +1 -0
- package/dist/{chunk-DGG2VY7B.js → chunk-ZW2LKWWE.js} +9 -9
- package/dist/chunk-ZW2LKWWE.js.map +1 -0
- package/dist/{claude-TP2QO3BU.js → claude-P3NQR6IJ.js} +2 -2
- package/dist/{cleanup-PJRIFFU4.js → cleanup-6UCPVMFG.js} +81 -32
- package/dist/cleanup-6UCPVMFG.js.map +1 -0
- package/dist/cli.js +638 -349
- package/dist/cli.js.map +1 -1
- package/dist/{commit-IVP3M4HG.js → commit-L3EPY5QG.js} +21 -20
- package/dist/commit-L3EPY5QG.js.map +1 -0
- package/dist/{compile-R2J65HBQ.js → compile-ZS4HYRX5.js} +9 -9
- package/dist/{contribute-VDZXHK5Y.js → contribute-ORDDQGSL.js} +14 -6
- package/dist/contribute-ORDDQGSL.js.map +1 -0
- package/dist/{dev-server-7F622OEO.js → dev-server-FYZ2AQIH.js} +29 -15
- package/dist/dev-server-FYZ2AQIH.js.map +1 -0
- package/dist/{feedback-E7VET7CL.js → feedback-TMBXSCM5.js} +15 -15
- package/dist/{git-2QDQ2X2S.js → git-ET64COO3.js} +4 -4
- package/dist/hooks/iloom-hook.js +15 -0
- package/dist/ignite-CGOV3TD4.js +1393 -0
- package/dist/ignite-CGOV3TD4.js.map +1 -0
- package/dist/index.d.ts +382 -53
- package/dist/index.js +1167 -36
- package/dist/index.js.map +1 -1
- package/dist/{init-676DHF6R.js → init-GFQ5W7GK.js} +57 -21
- package/dist/init-GFQ5W7GK.js.map +1 -0
- package/dist/{issues-PJSOLOBJ.js → issues-T4ZZSPEG.js} +61 -20
- package/dist/issues-T4ZZSPEG.js.map +1 -0
- package/dist/{lint-CJM7BAIM.js → lint-6TQXDZ3T.js} +9 -9
- package/dist/mcp/issue-management-server.js +2471 -256
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/mcp/recap-server.js +144 -21
- package/dist/mcp/recap-server.js.map +1 -1
- package/dist/{neon-helpers-VVFFTLXE.js → neon-helpers-CQN2PB4S.js} +3 -3
- package/dist/neon-helpers-CQN2PB4S.js.map +1 -0
- package/dist/{open-544H7JF5.js → open-5QZGXQRF.js} +15 -15
- package/dist/open-5QZGXQRF.js.map +1 -0
- package/dist/{plan-Q7ELXDLC.js → plan-U7ZQWLFY.js} +41 -25
- package/dist/plan-U7ZQWLFY.js.map +1 -0
- package/dist/{projects-LH362JZQ.js → projects-2UOXFLNZ.js} +4 -4
- package/dist/prompts/CLAUDE.md +62 -0
- package/dist/prompts/init-prompt.txt +347 -26
- package/dist/prompts/issue-prompt.txt +427 -54
- package/dist/prompts/plan-prompt.txt +97 -16
- package/dist/prompts/pr-prompt.txt +44 -1
- package/dist/prompts/regular-prompt.txt +42 -1
- package/dist/prompts/session-summary-prompt.txt +14 -0
- package/dist/prompts/swarm-orchestrator-prompt.txt +437 -0
- package/dist/{rebase-YND35CIE.js → rebase-DWIB77KV.js} +10 -10
- package/dist/{recap-3W7COH7D.js → recap-MX63HAKV.js} +47 -19
- package/dist/recap-MX63HAKV.js.map +1 -0
- package/dist/{run-QUXJKDQQ.js → run-O3TFNQFC.js} +15 -15
- package/dist/run-O3TFNQFC.js.map +1 -0
- package/dist/schema/package-iloom.schema.json +58 -0
- package/dist/schema/settings.schema.json +115 -15
- package/dist/{shell-QGECBLST.js → shell-G6VC2CYR.js} +14 -7
- package/dist/shell-G6VC2CYR.js.map +1 -0
- package/dist/{summary-G2T4452H.js → summary-FWHAX55O.js} +27 -25
- package/dist/summary-FWHAX55O.js.map +1 -0
- package/dist/{test-EA5NQFDC.js → test-F7JNJZYP.js} +9 -9
- package/dist/{test-git-M7LSLEFL.js → test-git-BTAOIUE2.js} +4 -4
- package/dist/test-jira-CHYNV33F.js +96 -0
- package/dist/test-jira-CHYNV33F.js.map +1 -0
- package/dist/{test-prefix-64NAAUON.js → test-prefix-Q6TFSU6F.js} +4 -4
- package/dist/{test-webserver-OK6Z5FJM.js → test-webserver-EONCG7E7.js} +6 -6
- package/dist/{vscode-AR5NNXXI.js → vscode-VA5X4P25.js} +7 -7
- package/package.json +5 -1
- package/dist/ClaudeContextManager-HR5JQKAI.js +0 -14
- package/dist/ClaudeService-TK7FMC2X.js +0 -13
- package/dist/chunk-3I4ONZRT.js.map +0 -1
- package/dist/chunk-B7U6OKUR.js.map +0 -1
- package/dist/chunk-CWRI4JC3.js.map +0 -1
- package/dist/chunk-DGG2VY7B.js.map +0 -1
- package/dist/chunk-FJDRTVJX.js +0 -520
- package/dist/chunk-FJDRTVJX.js.map +0 -1
- package/dist/chunk-FO5GGFOV.js.map +0 -1
- package/dist/chunk-KBEIQP4G.js.map +0 -1
- package/dist/chunk-KJTVU3HZ.js.map +0 -1
- package/dist/chunk-KXGQYLFZ.js.map +0 -1
- package/dist/chunk-OFDN5NKS.js.map +0 -1
- package/dist/chunk-QN47QVBX.js.map +0 -1
- package/dist/chunk-R4YWBGY6.js.map +0 -1
- package/dist/chunk-RI2YL6TK.js.map +0 -1
- package/dist/chunk-SOSQILHO.js.map +0 -1
- package/dist/chunk-ULSWCPQG.js.map +0 -1
- package/dist/chunk-VOGGLPG5.js.map +0 -1
- package/dist/chunk-VPTAX5TR.js.map +0 -1
- package/dist/chunk-WHI5KEOX.js +0 -121
- package/dist/chunk-WHI5KEOX.js.map +0 -1
- package/dist/chunk-YKFCCV6S.js.map +0 -1
- package/dist/chunk-Z2TWEXR7.js.map +0 -1
- package/dist/cleanup-PJRIFFU4.js.map +0 -1
- package/dist/commit-IVP3M4HG.js.map +0 -1
- package/dist/contribute-VDZXHK5Y.js.map +0 -1
- package/dist/dev-server-7F622OEO.js.map +0 -1
- package/dist/ignite-IW35CDBD.js +0 -784
- package/dist/ignite-IW35CDBD.js.map +0 -1
- package/dist/init-676DHF6R.js.map +0 -1
- package/dist/issues-PJSOLOBJ.js.map +0 -1
- package/dist/open-544H7JF5.js.map +0 -1
- package/dist/plan-Q7ELXDLC.js.map +0 -1
- package/dist/recap-3W7COH7D.js.map +0 -1
- package/dist/run-QUXJKDQQ.js.map +0 -1
- package/dist/shell-QGECBLST.js.map +0 -1
- package/dist/summary-G2T4452H.js.map +0 -1
- /package/dist/{BranchNamingService-K6XNWQ6C.js.map → BranchNamingService-ECJHBB67.js.map} +0 -0
- /package/dist/{ClaudeContextManager-HR5JQKAI.js.map → ClaudeContextManager-QXX6ZFST.js.map} +0 -0
- /package/dist/{ClaudeService-TK7FMC2X.js.map → ClaudeService-NJNK2SUH.js.map} +0 -0
- /package/dist/{GitHubService-TGWJN4V4.js.map → GitHubService-MEHKHUQP.js.map} +0 -0
- /package/dist/{MetadataManager-W3C54UYT.js.map → IssueTrackerFactory-NG53YX5S.js.map} +0 -0
- /package/dist/{LoomLauncher-73NXL2CL.js.map → LoomLauncher-L64HHS3T.js.map} +0 -0
- /package/dist/{ProjectCapabilityDetector-N5L7T4IY.js.map → MetadataManager-5QZSTKNN.js.map} +0 -0
- /package/dist/{PromptTemplateManager-36YLQRHP.js.map → ProjectCapabilityDetector-5KSYUTBJ.js.map} +0 -0
- /package/dist/{SettingsManager-AW3JTJHD.js.map → PromptTemplateManager-DULSVRRE.js.map} +0 -0
- /package/dist/{claude-TP2QO3BU.js.map → SettingsManager-BQDQA3FK.js.map} +0 -0
- /package/dist/{build-THZI572G.js.map → build-5GO3XW26.js.map} +0 -0
- /package/dist/{chunk-NUACL52E.js.map → chunk-3D7WQM7I.js.map} +0 -0
- /package/dist/{chunk-A7NJF73J.js.map → chunk-5MWV33NN.js.map} +0 -0
- /package/dist/{chunk-KAYXR544.js.map → chunk-J5S7DFYC.js.map} +0 -0
- /package/dist/{chunk-AR5QKYNE.js.map → chunk-MNHZB4Z2.js.map} +0 -0
- /package/dist/{chunk-TL72BGP6.js.map → chunk-MORRVYPT.js.map} +0 -0
- /package/dist/{chunk-7ZEHSSUP.js.map → chunk-P4O6EH46.js.map} +0 -0
- /package/dist/{chunk-W6DP5RVR.js.map → chunk-UVD4CZKS.js.map} +0 -0
- /package/dist/{chunk-NWMORW3U.js.map → chunk-VECNX6VX.js.map} +0 -0
- /package/dist/{chunk-TC7APDKU.js.map → chunk-VGGST52X.js.map} +0 -0
- /package/dist/{chunk-4LKGCFGG.js.map → chunk-WWKOVDWC.js.map} +0 -0
- /package/dist/{chunk-IZIYLYPK.js.map → chunk-ZEWU5PZK.js.map} +0 -0
- /package/dist/{git-2QDQ2X2S.js.map → claude-P3NQR6IJ.js.map} +0 -0
- /package/dist/{compile-R2J65HBQ.js.map → compile-ZS4HYRX5.js.map} +0 -0
- /package/dist/{feedback-E7VET7CL.js.map → feedback-TMBXSCM5.js.map} +0 -0
- /package/dist/{neon-helpers-VVFFTLXE.js.map → git-ET64COO3.js.map} +0 -0
- /package/dist/{lint-CJM7BAIM.js.map → lint-6TQXDZ3T.js.map} +0 -0
- /package/dist/{projects-LH362JZQ.js.map → projects-2UOXFLNZ.js.map} +0 -0
- /package/dist/{rebase-YND35CIE.js.map → rebase-DWIB77KV.js.map} +0 -0
- /package/dist/{test-EA5NQFDC.js.map → test-F7JNJZYP.js.map} +0 -0
- /package/dist/{test-git-M7LSLEFL.js.map → test-git-BTAOIUE2.js.map} +0 -0
- /package/dist/{test-prefix-64NAAUON.js.map → test-prefix-Q6TFSU6F.js.map} +0 -0
- /package/dist/{test-webserver-OK6Z5FJM.js.map → test-webserver-EONCG7E7.js.map} +0 -0
- /package/dist/{vscode-AR5NNXXI.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
|
-
##
|
|
23
|
+
## How can your team trust the code your AI wrote, when you don't?
|
|
24
24
|
|
|
25
|
-
|
|
26
|
-
[](https://www.typescriptlang.org/)
|
|
27
|
-
[](https://nextjs.org/)
|
|
28
|
-
[](https://neon.tech/)
|
|
29
|
-
[](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
|
-
|
|
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
|
|
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.
|
|
48
28
|
|
|
49
|
-
|
|
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.
|
|
50
30
|
|
|
51
|
-
|
|
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.
|
|
58
|
-
|
|
59
|
-
|
|
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
|
|
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
|
|
@@ -547,6 +579,88 @@ il plan --yolo "Add GitLab integration"
|
|
|
547
579
|
|
|
548
580
|
See the [Complete Command Reference](docs/iloom-commands.md#il-plan) for all options including `--model`, `--planner`, and `--reviewer` flags.
|
|
549
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
|
+
|
|
550
664
|
System Requirements & Limitations
|
|
551
665
|
---------------------------------
|
|
552
666
|
|
|
@@ -608,6 +722,11 @@ This command:
|
|
|
608
722
|
|
|
609
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.
|
|
610
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
|
+
|
|
611
730
|
License & Name
|
|
612
731
|
--------------
|
|
613
732
|
|
|
@@ -619,7 +738,7 @@ License & Name
|
|
|
619
738
|
|
|
620
739
|
* ❌ You cannot resell iloom itself as a product or SaaS.
|
|
621
740
|
|
|
622
|
-
* Converts to Apache 2.0 on 2030-02-
|
|
741
|
+
* Converts to Apache 2.0 on 2030-02-23.
|
|
623
742
|
|
|
624
743
|
|
|
625
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-
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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. **
|
|
644
|
-
7. **
|
|
645
|
-
8. **
|
|
646
|
-
9. **
|
|
647
|
-
10. **Section
|
|
648
|
-
11. **
|
|
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
|
|
|
@@ -6,6 +6,18 @@ color: pink
|
|
|
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 or ask questions. Proceed with your best judgment.
|
|
17
|
+
- **Concise output**: Return a structured analysis result suitable for the orchestrator.
|
|
18
|
+
- **Full research still required**: Perform the same comprehensive research as in non-swarm mode. Thoroughness is critical even in autonomous execution.
|
|
19
|
+
- **No state to done**: Do NOT call `recap.set_loom_state` with state `done` — only the swarm worker may do that after committing.
|
|
20
|
+
{{else}}
|
|
9
21
|
{{#if DRAFT_PR_MODE}}
|
|
10
22
|
## Comment Routing: Draft PR Mode
|
|
11
23
|
|
|
@@ -20,6 +32,7 @@ Do NOT write comments to the issue - only to the draft PR.
|
|
|
20
32
|
|
|
21
33
|
- **Read and write** to Issue #{{ISSUE_NUMBER}} using `type: "issue"`
|
|
22
34
|
{{/if}}
|
|
35
|
+
{{/if}}
|
|
23
36
|
|
|
24
37
|
You are Claude, an elite issue analyst specializing in deep technical investigation and root cause analysis. Your expertise lies in methodically researching codebases, identifying patterns, and documenting technical findings with surgical precision.
|
|
25
38
|
|
|
@@ -41,7 +54,11 @@ The recap panel helps users stay oriented without reading all your output. Captu
|
|
|
41
54
|
## Core Workflow
|
|
42
55
|
|
|
43
56
|
### Step 1: Fetch the Issue
|
|
57
|
+
{{#if SWARM_MODE}}
|
|
58
|
+
Read the issue using `mcp__issue_management__get_issue` with the issue number from metadata or invocation arguments.
|
|
59
|
+
{{else}}
|
|
44
60
|
Please read the referenced issue and comments using the MCP tool `mcp__issue_management__get_issue` with `{ number: {{ISSUE_NUMBER}}, includeComments: true }`
|
|
61
|
+
{{/if}}
|
|
45
62
|
|
|
46
63
|
### Step 2: Perform Comprehensive Research
|
|
47
64
|
|
|
@@ -144,6 +161,7 @@ N. [file:line] - [FinalLayer] consumes value for [purpose]
|
|
|
144
161
|
- What problem is this feature/fix trying to solve?
|
|
145
162
|
- Who are the users and what are their needs?
|
|
146
163
|
- What constraints exist (performance, compatibility, UX)?
|
|
164
|
+
- What behavior already exists in this area? Does the system already handle this case without changes?
|
|
147
165
|
|
|
148
166
|
2. **Alternative Approaches**
|
|
149
167
|
- How do similar projects solve this problem?
|
|
@@ -295,6 +313,7 @@ Use domain-specific MCP tools when available (Figma MCP, Database MCPs, etc.) as
|
|
|
295
313
|
- **Do NOT use outdated information** - verify version compatibility
|
|
296
314
|
- **Do NOT stop at first result** - cross-reference for critical behaviors
|
|
297
315
|
- **Do NOT include irrelevant research** - this is slop
|
|
316
|
+
- **Do NOT assume an operation is necessary** just because the issue describes it — verify that the system doesn't already exhibit the desired behavior without the change
|
|
298
317
|
|
|
299
318
|
## If this is a web front end issue:
|
|
300
319
|
- Be mindful of different responsive breakpoints
|
|
@@ -304,6 +323,20 @@ Use domain-specific MCP tools when available (Figma MCP, Database MCPs, etc.) as
|
|
|
304
323
|
<comment_tool_info>
|
|
305
324
|
IMPORTANT: You have been provided with MCP tools for issue management during this workflow.
|
|
306
325
|
|
|
326
|
+
**CRITICAL FORMAT REQUIREMENT:**
|
|
327
|
+
All comment content MUST use **GitHub-Flavored Markdown** syntax.
|
|
328
|
+
NEVER use Jira Wiki format - it will corrupt the output when converted.
|
|
329
|
+
|
|
330
|
+
| Do NOT use (Jira Wiki) | Use instead (Markdown) |
|
|
331
|
+
|------------------------|------------------------|
|
|
332
|
+
| `{code}...{code}` | ` ``` ` code blocks |
|
|
333
|
+
| `h1. Title` | `# Title` |
|
|
334
|
+
| `*bold*` | `**bold**` |
|
|
335
|
+
| `_italic_` | `*italic*` |
|
|
336
|
+
| `{quote}...{quote}` | `> ` blockquotes |
|
|
337
|
+
| `[link text\|url]` | `[link text](url)` |
|
|
338
|
+
| `-` or `*` at line start | `- ` (with space) for lists |
|
|
339
|
+
|
|
307
340
|
Available Tools:
|
|
308
341
|
- mcp__issue_management__get_issue: Fetch issue details
|
|
309
342
|
Parameters: { number: string, includeComments?: boolean }
|
|
@@ -313,9 +346,11 @@ Available Tools:
|
|
|
313
346
|
Parameters: { commentId: string, number: string }
|
|
314
347
|
Returns: { id, body, author, created_at, ... }
|
|
315
348
|
|
|
316
|
-
{{#if
|
|
349
|
+
{{#if SWARM_MODE}}- mcp__issue_management__create_comment: Create a new comment on the issue
|
|
350
|
+
Parameters: { number: string, body: "markdown content", type: "issue" }
|
|
351
|
+
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}}
|
|
317
352
|
Parameters: { number: string, body: "markdown content", type: "pr" }{{else}}- mcp__issue_management__create_comment: Create a new comment on issue {{ISSUE_NUMBER}}
|
|
318
|
-
Parameters: { number: string, body: "markdown content", type: "issue" }{{/if}}
|
|
353
|
+
Parameters: { number: string, body: "markdown content", type: "issue" }{{/if}}{{/if}}
|
|
319
354
|
Returns: { id: string, url: string, created_at: string }
|
|
320
355
|
|
|
321
356
|
- mcp__issue_management__update_comment: Update an existing comment
|
|
@@ -338,7 +373,11 @@ Workflow Comment Strategy:
|
|
|
338
373
|
Example Usage:
|
|
339
374
|
```
|
|
340
375
|
// Start
|
|
341
|
-
{{#if
|
|
376
|
+
{{#if SWARM_MODE}}const comment = await mcp__issue_management__create_comment({
|
|
377
|
+
number: "<issue-number-from-invocation-prompt>",
|
|
378
|
+
body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
|
|
379
|
+
type: "issue"
|
|
380
|
+
}){{else}}{{#if DRAFT_PR_MODE}}const comment = await mcp__issue_management__create_comment({
|
|
342
381
|
number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
|
|
343
382
|
body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
|
|
344
383
|
type: "pr"
|
|
@@ -346,7 +385,7 @@ Example Usage:
|
|
|
346
385
|
number: {{ISSUE_NUMBER}},
|
|
347
386
|
body: "# Analysis Phase\n\n- [ ] Fetch issue details\n- [ ] Analyze requirements",
|
|
348
387
|
type: "issue"
|
|
349
|
-
}){{/if}}
|
|
388
|
+
}){{/if}}{{/if}}
|
|
350
389
|
|
|
351
390
|
// Log the comment as an artifact
|
|
352
391
|
await mcp__recap__add_artifact({
|
|
@@ -356,7 +395,11 @@ await mcp__recap__add_artifact({
|
|
|
356
395
|
})
|
|
357
396
|
|
|
358
397
|
// Update as you progress
|
|
359
|
-
{{#if
|
|
398
|
+
{{#if SWARM_MODE}}await mcp__issue_management__update_comment({
|
|
399
|
+
commentId: comment.id,
|
|
400
|
+
number: "<issue-number-from-invocation-prompt>",
|
|
401
|
+
body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
|
|
402
|
+
}){{else}}{{#if DRAFT_PR_MODE}}await mcp__issue_management__update_comment({
|
|
360
403
|
commentId: comment.id,
|
|
361
404
|
number: {{DRAFT_PR_NUMBER}}{{#unless DRAFT_PR_NUMBER}}/* PR NUMBER MISSING */{{/unless}},
|
|
362
405
|
body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
|
|
@@ -364,7 +407,7 @@ await mcp__recap__add_artifact({
|
|
|
364
407
|
commentId: comment.id,
|
|
365
408
|
number: {{ISSUE_NUMBER}},
|
|
366
409
|
body: "# Analysis Phase\n\n- [x] Fetch issue details\n- [ ] Analyze requirements"
|
|
367
|
-
}){{/if}}
|
|
410
|
+
}){{/if}}{{/if}}
|
|
368
411
|
```
|
|
369
412
|
</comment_tool_info>
|
|
370
413
|
|