@iloom/cli 0.9.2 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +160 -41
- package/dist/{BranchNamingService-K6XNWQ6C.js → BranchNamingService-25KSZAEM.js} +2 -2
- package/dist/ClaudeContextManager-66GR4BGM.js +14 -0
- package/dist/ClaudeService-7KM5NA5Z.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-TDLZSYG2.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-YOE2SIPG.js} +2 -2
- package/dist/README.md +160 -41
- package/dist/{SettingsManager-AW3JTJHD.js → SettingsManager-FNKCOZMQ.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-VHGEMXBA.js} +9 -9
- package/dist/chunk-4232AHNQ.js +35 -0
- package/dist/chunk-4232AHNQ.js.map +1 -0
- package/dist/chunk-4E7LCFUG.js +24 -0
- package/dist/chunk-4E7LCFUG.js.map +1 -0
- package/dist/{chunk-AR5QKYNE.js → chunk-4FGEGQW4.js} +4 -4
- package/dist/{chunk-R4YWBGY6.js → chunk-5FJWO4IT.js} +67 -22
- package/dist/chunk-5FJWO4IT.js.map +1 -0
- package/dist/{chunk-VPTAX5TR.js → chunk-5RPBYK5Q.js} +35 -30
- package/dist/chunk-5RPBYK5Q.js.map +1 -0
- package/dist/{chunk-YKFCCV6S.js → chunk-63QWFWH3.js} +7 -7
- package/dist/chunk-63QWFWH3.js.map +1 -0
- package/dist/{chunk-RI2YL6TK.js → chunk-7VHJNVLF.js} +80 -23
- package/dist/chunk-7VHJNVLF.js.map +1 -0
- package/dist/{chunk-B7U6OKUR.js → chunk-C6HNNJIV.js} +11 -3
- package/dist/chunk-C6HNNJIV.js.map +1 -0
- package/dist/{chunk-A7NJF73J.js → chunk-CVCTIDDK.js} +4 -4
- package/dist/{chunk-Z2TWEXR7.js → chunk-E6KOWMKA.js} +6 -6
- package/dist/chunk-E6KOWMKA.js.map +1 -0
- package/dist/{chunk-3I4ONZRT.js → chunk-EVPZFV3K.js} +10 -10
- package/dist/chunk-EVPZFV3K.js.map +1 -0
- package/dist/{chunk-IZIYLYPK.js → chunk-G5V75JD5.js} +2 -2
- package/dist/chunk-GRISNU6G.js +651 -0
- package/dist/chunk-GRISNU6G.js.map +1 -0
- package/dist/chunk-HEXKPKCK.js +1396 -0
- package/dist/chunk-HEXKPKCK.js.map +1 -0
- package/dist/{chunk-TC7APDKU.js → chunk-I5T677EA.js} +2 -2
- package/dist/{chunk-KBEIQP4G.js → chunk-KB64WNBZ.js} +43 -3
- package/dist/chunk-KB64WNBZ.js.map +1 -0
- package/dist/{chunk-NWMORW3U.js → chunk-KIK2ZFAL.js} +2 -2
- package/dist/{chunk-CWRI4JC3.js → chunk-KKV5WH5M.js} +30 -31
- package/dist/chunk-KKV5WH5M.js.map +1 -0
- package/dist/{chunk-DGG2VY7B.js → chunk-KVHIAWVT.js} +9 -9
- package/dist/chunk-KVHIAWVT.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-NUACL52E.js → chunk-LLHXQS3C.js} +2 -2
- package/dist/chunk-LUKXJSRI.js +73 -0
- package/dist/chunk-LUKXJSRI.js.map +1 -0
- package/dist/{chunk-TL72BGP6.js → chunk-MORRVYPT.js} +2 -2
- package/dist/chunk-OTGH2HRS.js +1427 -0
- package/dist/chunk-OTGH2HRS.js.map +1 -0
- package/dist/{chunk-7ZEHSSUP.js → chunk-P4O6EH46.js} +4 -4
- package/dist/{chunk-KAYXR544.js → chunk-QVLPWNE3.js} +2 -2
- package/dist/chunk-QZWEJVWV.js +207 -0
- package/dist/chunk-QZWEJVWV.js.map +1 -0
- package/dist/chunk-RJ3VBUFK.js +781 -0
- package/dist/chunk-RJ3VBUFK.js.map +1 -0
- package/dist/chunk-RSYT7MVI.js +202 -0
- package/dist/chunk-RSYT7MVI.js.map +1 -0
- package/dist/{chunk-6IIL5M2L.js → chunk-S7PZA6IV.js} +10 -8
- package/dist/{chunk-6IIL5M2L.js.map → chunk-S7PZA6IV.js.map} +1 -1
- package/dist/chunk-SKSYYBCU.js +229 -0
- package/dist/chunk-SKSYYBCU.js.map +1 -0
- package/dist/{chunk-ULSWCPQG.js → chunk-SWSJWA2S.js} +476 -5
- package/dist/chunk-SWSJWA2S.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-FO5GGFOV.js → chunk-UR5DGNUO.js} +71 -9
- package/dist/chunk-UR5DGNUO.js.map +1 -0
- package/dist/{chunk-QN47QVBX.js → chunk-UUEW5KWB.js} +1 -1
- package/dist/chunk-UUEW5KWB.js.map +1 -0
- 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-4LKGCFGG.js → chunk-WWKOVDWC.js} +2 -2
- package/dist/{chunk-KJTVU3HZ.js → chunk-WXIM2WS7.js} +8 -8
- package/dist/chunk-WXIM2WS7.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-SOSQILHO.js → chunk-ZNMPGMHY.js} +44 -797
- package/dist/chunk-ZNMPGMHY.js.map +1 -0
- package/dist/{claude-TP2QO3BU.js → claude-7GGEWVEM.js} +2 -2
- package/dist/{cleanup-PJRIFFU4.js → cleanup-6PVAC4NI.js} +85 -34
- package/dist/cleanup-6PVAC4NI.js.map +1 -0
- package/dist/cli.js +630 -801
- package/dist/cli.js.map +1 -1
- package/dist/{commit-IVP3M4HG.js → commit-FZR5XDQG.js} +26 -23
- package/dist/commit-FZR5XDQG.js.map +1 -0
- package/dist/{compile-R2J65HBQ.js → compile-7ALJHZ4N.js} +9 -9
- package/dist/{contribute-VDZXHK5Y.js → contribute-5GKLK3BQ.js} +14 -6
- package/dist/contribute-5GKLK3BQ.js.map +1 -0
- package/dist/{dev-server-7F622OEO.js → dev-server-7SMIB7OF.js} +29 -15
- package/dist/dev-server-7SMIB7OF.js.map +1 -0
- package/dist/{feedback-E7VET7CL.js → feedback-G2GJFN2F.js} +18 -16
- package/dist/{feedback-E7VET7CL.js.map → feedback-G2GJFN2F.js.map} +1 -1
- package/dist/{git-2QDQ2X2S.js → git-GTLKAZRJ.js} +4 -4
- package/dist/hooks/iloom-hook.js +15 -0
- package/dist/ignite-H2O5Y5A2.js +34 -0
- package/dist/ignite-H2O5Y5A2.js.map +1 -0
- package/dist/index.d.ts +482 -58
- package/dist/index.js +1340 -44
- package/dist/index.js.map +1 -1
- package/dist/{init-676DHF6R.js → init-32YOKXRL.js} +57 -21
- package/dist/init-32YOKXRL.js.map +1 -0
- package/dist/{issues-PJSOLOBJ.js → issues-4UUAQ5K6.js} +61 -20
- package/dist/issues-4UUAQ5K6.js.map +1 -0
- package/dist/{lint-CJM7BAIM.js → lint-AAN2NZWG.js} +9 -9
- package/dist/mcp/harness-server.js +140 -0
- package/dist/mcp/harness-server.js.map +1 -0
- package/dist/mcp/issue-management-server.js +2599 -262
- 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-FXWW3VI4.js} +15 -15
- package/dist/open-FXWW3VI4.js.map +1 -0
- package/dist/{plan-Q7ELXDLC.js → plan-RQ5FPIGF.js} +358 -40
- package/dist/plan-RQ5FPIGF.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 +430 -34
- package/dist/prompts/issue-prompt.txt +473 -54
- package/dist/prompts/plan-prompt.txt +140 -19
- 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 +464 -0
- package/dist/{rebase-YND35CIE.js → rebase-6NVLX5V7.js} +21 -12
- package/dist/rebase-6NVLX5V7.js.map +1 -0
- package/dist/{recap-3W7COH7D.js → recap-OMBOKJST.js} +47 -19
- package/dist/recap-OMBOKJST.js.map +1 -0
- package/dist/{run-QUXJKDQQ.js → run-BBXLRIZB.js} +15 -15
- package/dist/run-BBXLRIZB.js.map +1 -0
- package/dist/schema/package-iloom.schema.json +58 -0
- package/dist/schema/settings.schema.json +149 -15
- package/dist/{shell-QGECBLST.js → shell-RF7LTND5.js} +14 -7
- package/dist/shell-RF7LTND5.js.map +1 -0
- package/dist/{summary-G2T4452H.js → summary-WTQZ7XG2.js} +27 -25
- package/dist/summary-WTQZ7XG2.js.map +1 -0
- package/dist/{test-EA5NQFDC.js → test-SGO6I5Z7.js} +9 -9
- package/dist/{test-git-M7LSLEFL.js → test-git-XM4TM65W.js} +4 -4
- package/dist/test-jira-LDTOYFSD.js +96 -0
- package/dist/test-jira-LDTOYFSD.js.map +1 -0
- package/dist/{test-prefix-64NAAUON.js → test-prefix-GBO37XCN.js} +4 -4
- package/dist/{test-webserver-OK6Z5FJM.js → test-webserver-NZ3JTVLL.js} +6 -6
- package/dist/{vscode-AR5NNXXI.js → vscode-6XUGHJKL.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-W6DP5RVR.js +0 -101
- package/dist/chunk-W6DP5RVR.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/rebase-YND35CIE.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-25KSZAEM.js.map} +0 -0
- /package/dist/{ClaudeContextManager-HR5JQKAI.js.map → ClaudeContextManager-66GR4BGM.js.map} +0 -0
- /package/dist/{ClaudeService-TK7FMC2X.js.map → ClaudeService-7KM5NA5Z.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-TDLZSYG2.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-YOE2SIPG.js.map} +0 -0
- /package/dist/{claude-TP2QO3BU.js.map → SettingsManager-FNKCOZMQ.js.map} +0 -0
- /package/dist/{build-THZI572G.js.map → build-VHGEMXBA.js.map} +0 -0
- /package/dist/{chunk-AR5QKYNE.js.map → chunk-4FGEGQW4.js.map} +0 -0
- /package/dist/{chunk-A7NJF73J.js.map → chunk-CVCTIDDK.js.map} +0 -0
- /package/dist/{chunk-IZIYLYPK.js.map → chunk-G5V75JD5.js.map} +0 -0
- /package/dist/{chunk-TC7APDKU.js.map → chunk-I5T677EA.js.map} +0 -0
- /package/dist/{chunk-NWMORW3U.js.map → chunk-KIK2ZFAL.js.map} +0 -0
- /package/dist/{chunk-NUACL52E.js.map → chunk-LLHXQS3C.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-KAYXR544.js.map → chunk-QVLPWNE3.js.map} +0 -0
- /package/dist/{chunk-4LKGCFGG.js.map → chunk-WWKOVDWC.js.map} +0 -0
- /package/dist/{git-2QDQ2X2S.js.map → claude-7GGEWVEM.js.map} +0 -0
- /package/dist/{compile-R2J65HBQ.js.map → compile-7ALJHZ4N.js.map} +0 -0
- /package/dist/{neon-helpers-VVFFTLXE.js.map → git-GTLKAZRJ.js.map} +0 -0
- /package/dist/{lint-CJM7BAIM.js.map → lint-AAN2NZWG.js.map} +0 -0
- /package/dist/{projects-LH362JZQ.js.map → projects-2UOXFLNZ.js.map} +0 -0
- /package/dist/{test-EA5NQFDC.js.map → test-SGO6I5Z7.js.map} +0 -0
- /package/dist/{test-git-M7LSLEFL.js.map → test-git-XM4TM65W.js.map} +0 -0
- /package/dist/{test-prefix-64NAAUON.js.map → test-prefix-GBO37XCN.js.map} +0 -0
- /package/dist/{test-webserver-OK6Z5FJM.js.map → test-webserver-NZ3JTVLL.js.map} +0 -0
- /package/dist/{vscode-AR5NNXXI.js.map → vscode-6XUGHJKL.js.map} +0 -0
|
@@ -79,6 +79,7 @@ After the subagent completes, include its context summary when sending the plan
|
|
|
79
79
|
|
|
80
80
|
{{#if USE_GEMINI_REVIEWER}}
|
|
81
81
|
**Reviewer: Gemini** - Use available Gemini MCP tools (look for tools with "gemini" in the name) to review your plan. Ask for feedback on:
|
|
82
|
+
- **Complexity sizing** (each child issue should target SIMPLE: <5 files, <200 LOC, no cross-cutting changes, no architectural signals)
|
|
82
83
|
- Proper scoping (1 issue = 1 loom = 1 PR)
|
|
83
84
|
- Dependency identification and sequencing
|
|
84
85
|
- Technical architecture and design decisions
|
|
@@ -92,6 +93,7 @@ After the subagent completes, include its context summary when sending the plan
|
|
|
92
93
|
{{/if}}
|
|
93
94
|
{{#if USE_CODEX_REVIEWER}}
|
|
94
95
|
**Reviewer: Codex** - Use available Codex MCP tools (look for tools with "codex" in the name) to review your plan. Ask for feedback on:
|
|
96
|
+
- **Complexity sizing** (each child issue should target SIMPLE: <5 files, <200 LOC, no cross-cutting changes, no architectural signals)
|
|
95
97
|
- Proper scoping (1 issue = 1 loom = 1 PR)
|
|
96
98
|
- Dependency identification and sequencing
|
|
97
99
|
- Technical architecture and design decisions
|
|
@@ -105,6 +107,7 @@ After the subagent completes, include its context summary when sending the plan
|
|
|
105
107
|
{{/if}}
|
|
106
108
|
{{#unless USE_GEMINI_REVIEWER}}{{#unless USE_CODEX_REVIEWER}}
|
|
107
109
|
**Reviewer: Claude** - Review the plan yourself, considering:
|
|
110
|
+
- **Complexity sizing** (each child issue should target SIMPLE: <5 files, <200 LOC, no cross-cutting changes, no architectural signals)
|
|
108
111
|
- Proper scoping (1 issue = 1 loom = 1 PR)
|
|
109
112
|
- Dependency identification and sequencing
|
|
110
113
|
- Technical architecture and design decisions
|
|
@@ -118,11 +121,19 @@ After the subagent completes, include its context summary when sending the plan
|
|
|
118
121
|
|
|
119
122
|
---
|
|
120
123
|
|
|
124
|
+
## Formatting Rules
|
|
125
|
+
|
|
126
|
+
**Always write in standard GitHub-flavored Markdown.** The MCP issue management tools handle any necessary format conversion automatically (e.g., Markdown to ADF for Jira). This means:
|
|
127
|
+
- Use standard Markdown: `##` headings, `**bold**`, `| tables |`, `` ``` `` code blocks, `- bullet lists`
|
|
128
|
+
- Use `<details><summary>` tags for collapsed/expandable sections — the converter handles these
|
|
129
|
+
- Do NOT use platform-specific markup (e.g., Jira wiki syntax like `h2.`, `||header||`, `{code}`)
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
121
133
|
## Core Principles
|
|
122
134
|
|
|
123
135
|
**1 Child Issue = 1 Loom = 1 PR**
|
|
124
136
|
Each issue you help create should represent a single, focused unit of work that:
|
|
125
|
-
- Can be completed in a single development session
|
|
126
137
|
- Results in one pull request when finished
|
|
127
138
|
- Has clear acceptance criteria
|
|
128
139
|
- Is independently testable
|
|
@@ -195,18 +206,79 @@ AskUserQuestion(
|
|
|
195
206
|
|
|
196
207
|
### Phase 3: Issue Decomposition (Writing Plans)
|
|
197
208
|
|
|
198
|
-
|
|
199
|
-
|
|
209
|
+
**Step 1: Identify work units, define shared contracts, and design the DAG.**
|
|
210
|
+
|
|
211
|
+
Start by listing the work units at a high level (title + one sentence each). Then, before writing full issue descriptions, design the dependency graph:
|
|
212
|
+
|
|
213
|
+
1. **Assume all issues run in parallel.** This is your starting point — not something you optimize toward later.
|
|
214
|
+
2. **Define shared contracts to keep them parallel.** When Issue B needs an API, module, or type that Issue A is building, do NOT make A block B. Instead, define the shared contract (interface, function signature, module API) explicitly, and specify it in both issue descriptions. Both agents implement against the agreed contract simultaneously — a later integration step catches any mismatches.
|
|
215
|
+
3. **Only add blocking dependencies you truly cannot eliminate with a contract.** Hard blockers are rare — they apply when Issue B literally modifies files that Issue A creates from scratch (not just imports them), or when Issue B requires a database migration from Issue A.
|
|
216
|
+
4. **Check the shape.** Ask: "What is the widest, shallowest DAG I can create?" If the graph is mostly linear (A → B → C → D), rethink the decomposition. The shape of the graph matters as much as the content of individual issues, because a narrow graph kills swarm throughput.
|
|
217
|
+
|
|
218
|
+
**Example:** If Issue A creates a `UserService` class and Issue B needs to call `UserService.getById()`, don't block B on A. Instead, specify the contract in both issues: "`UserService` exposes a `getById(id)` method that returns a user object." Both agents implement against this contract simultaneously.
|
|
219
|
+
|
|
220
|
+
**Compilation errors are expected and OK.** When issues run in parallel against shared contracts, individual branches will have build errors — Issue B imports a module that Issue A hasn't merged yet. This is normal. The errors resolve when branches merge into the epic branch. Agents should not block on or try to fix compilation errors caused by missing contract implementations from parallel issues.
|
|
221
|
+
|
|
222
|
+
**Step 2: Write full issue descriptions.** Now flesh out each node in your DAG. Each issue should be:
|
|
200
223
|
- Self-contained with clear inputs and outputs
|
|
201
|
-
-
|
|
224
|
+
- Connected to other issues via shared contracts (already defined in Step 1) rather than blocking dependencies
|
|
225
|
+
|
|
226
|
+
**Right-size your issues.** Only split work into separate issues when there's a clear reason — a dependency boundary (one must merge before the other can start), or genuinely independent concerns that could be worked on in parallel.
|
|
227
|
+
|
|
228
|
+
A sign that issues should be consolidated: several small issues share the same dependencies, touch overlapping files, or have similar scope. For example, "add field X to the schema," "add field X to the API," and "add field X to the UI" are likely one issue if they all depend on the same prior work and would naturally be done together. When the boundaries feel artificial, combine them.
|
|
229
|
+
|
|
230
|
+
**Target SIMPLE complexity for each child issue.** Every child issue should be scoped so that an implementing agent can classify it as SIMPLE (or TRIVIAL). This means each child issue should meet ALL of these criteria:
|
|
231
|
+
|
|
232
|
+
| Metric | Target |
|
|
233
|
+
|--------|--------|
|
|
234
|
+
| Files affected | < 5 (excluding test files) |
|
|
235
|
+
| Lines of code | < 200 (new + modified, excluding tests) |
|
|
236
|
+
| Breaking changes | None |
|
|
237
|
+
| Database migrations | None |
|
|
238
|
+
| Cross-cutting changes | None — avoid issues that pass parameters/config through 3+ architectural layers |
|
|
239
|
+
| Architectural complexity signals | None — no deep architectural decisions required to implement it |
|
|
240
|
+
| Risk level | Low or Medium |
|
|
241
|
+
| File quality | All modified files < 500 LOC, or well-architected if larger |
|
|
242
|
+
|
|
243
|
+
**When an issue would naturally be COMPLEX, decompose further.** If a piece of work would touch 5+ files, require 200+ LOC, or involve cross-cutting parameter threading, split it into smaller issues that each stay within SIMPLE bounds. Common decomposition strategies:
|
|
244
|
+
|
|
245
|
+
- **Layer by layer**: Instead of one issue that threads a new option from CLI → Manager → Service → Utility, create separate issues for each layer boundary (e.g., "Add option to CLI interface" then "Wire option through to Service layer")
|
|
246
|
+
- **Vertical slices**: Instead of one issue that adds a full feature, split into "Add core logic" then "Add UI/CLI surface" then "Add tests and validation"
|
|
247
|
+
- **New pattern then apply**: If a new pattern is needed, create one issue to establish the pattern in a single location, then a follow-up to apply it elsewhere
|
|
248
|
+
|
|
249
|
+
**Resist the urge to create COMPLEX child issues.** A common mistake is creating child issues that are individually large and complex. The goal is many small, focused issues — not a few big ones. If you find yourself writing a child issue that requires architectural decisions, coordinating multiple systems, or modifying large poorly-structured files, it's a signal to split further.
|
|
250
|
+
|
|
251
|
+
**But don't over-split into TRIVIAL busywork either.** Each child issue should represent a meaningful, coherent unit of work — not a single function rename or a one-line config change. Signs you've split too far:
|
|
252
|
+
- Multiple child issues touch the same file for closely related changes
|
|
253
|
+
- A child issue has no meaningful acceptance criteria beyond "change X to Y"
|
|
254
|
+
- The dependency chain is long and linear with no parallelism (A → B → C → D → E), where each step is tiny
|
|
255
|
+
- You're creating issues that an engineer would naturally do as part of a larger change (e.g., "update imports" as its own issue)
|
|
256
|
+
|
|
257
|
+
**The sweet spot is SIMPLE, not TRIVIAL.** Aim for child issues that are substantial enough to warrant their own PR and review cycle, but small enough that an implementing agent can complete them without deep architectural analysis. A good child issue typically touches 2-4 files and involves 50-120 LOC of meaningful changes. When you're on the fence about whether to split, lean toward splitting — smaller issues enable more parallelism and are easier for agents to get right on the first attempt.
|
|
258
|
+
|
|
259
|
+
**CRITICAL: Issue bodies must NOT contain implementation details.** The implementing agent will discover the *how* through its own codebase research. Baking implementation instructions into the issue body causes agents to skip their research phase and treat your instructions as ground truth, which produces brittle implementations based on potentially stale assumptions.
|
|
260
|
+
|
|
261
|
+
Implementation details include:
|
|
262
|
+
- **Code snippets or pseudocode** — exact TypeScript interfaces, function bodies, logic sequences
|
|
263
|
+
- **File paths** — `src/types/telemetry.ts`, `src/commands/plan.ts`, etc.
|
|
264
|
+
- **Step-by-step implementation instructions** — "Add X to file Y, then call Z"
|
|
265
|
+
- **Pre-written content** — exact documentation text, config blocks, or error messages to paste in
|
|
266
|
+
- **Internal behavior descriptions** — conditional logic, specific APIs to call, error handling patterns
|
|
267
|
+
|
|
268
|
+
A contract describes an *interface boundary* (what a function accepts and returns). Implementation detail describes *how* something works internally. Contracts belong in the issue body. Implementation detail does NOT.
|
|
269
|
+
|
|
270
|
+
**The test:** For every sentence in the issue body, ask: "Does this tell the implementing agent *what* to build, or *how* to build it?" If it's how — remove it.
|
|
202
271
|
|
|
203
272
|
**Issue Structure:**
|
|
204
|
-
Each child issue should include:
|
|
273
|
+
Each child issue should include ONLY these sections:
|
|
205
274
|
1. **Summary**: One-sentence description of what this issue accomplishes
|
|
206
275
|
2. **Context**: Why this issue exists (relationship to parent feature)
|
|
207
|
-
3. **Acceptance Criteria**: Clear, testable conditions for "done"
|
|
208
|
-
4. **
|
|
209
|
-
5. **
|
|
276
|
+
3. **Acceptance Criteria**: Clear, testable, outcome-focused conditions for "done" — describe the desired result, not the implementation mechanism (e.g., "auto-swarm pipeline events are observable" not "tracking calls fire at pipeline start and end")
|
|
277
|
+
4. **Shared Contracts**: Specify the exact contracts defined in Step 1 that this issue produces or consumes (function signatures, types, module exports). A contract is an interface boundary — what one issue exposes for another to consume. Example: `PlanCommand.execute()` gains an optional `autoSwarm?: boolean` 7th parameter. NOT an implementation: do not describe what happens internally when `autoSwarm` is true — that is implementation detail, not a contract.
|
|
278
|
+
5. **Hard Blocking Dependencies** *(minimize these)*: Which issues must be completed first, if any — each one should have been validated in Step 1 as not replaceable by a contract
|
|
279
|
+
6. **Scope Boundaries**: What is explicitly NOT included
|
|
280
|
+
|
|
281
|
+
Do NOT add "Implementation Details", "Technical Approach", or similar sections — these violate the rule above.
|
|
210
282
|
|
|
211
283
|
---
|
|
212
284
|
|
|
@@ -232,6 +304,19 @@ At the end of the planning session, you have MCP tools to create issues:
|
|
|
232
304
|
- `mcp__issue_management__remove_dependency`: Remove a dependency between issues
|
|
233
305
|
- Parameters: `blockingIssue`, `blockedIssue`
|
|
234
306
|
|
|
307
|
+
{{#if AUTO_SWARM_MODE}}
|
|
308
|
+
**Harness Signal Tool:**
|
|
309
|
+
- `mcp__harness__signal`: Signal the auto-swarm harness when planning is complete
|
|
310
|
+
- Call this after all child issues and dependencies have been created
|
|
311
|
+
- Parameters: `type` ("done"), `data` (`{ "epicIssueNumber": "<parent issue number>", "childIssues": [<list of child issue numbers>] }`)
|
|
312
|
+
{{/if}}
|
|
313
|
+
|
|
314
|
+
**Validation Gate — Check Before Presenting Your Plan:**
|
|
315
|
+
Before presenting the plan to the user, audit it against these questions:
|
|
316
|
+
1. **For each blocking dependency:** "Can I replace this with a shared contract so both issues run in parallel?" If yes, rewrite the issues with an explicit contract and remove the dependency.
|
|
317
|
+
2. **DAG shape check:** Is the graph wide and shallow, or narrow and linear? If your longest chain is more than 2 deep, re-examine whether intermediate dependencies are truly hard blockers.
|
|
318
|
+
3. **Contract completeness:** Does every issue that produces or consumes a shared API specify the exact contract (function signatures, types, module exports) in its description?
|
|
319
|
+
|
|
235
320
|
**Before Creating Issues:**
|
|
236
321
|
1. Summarize the proposed issues and their relationships
|
|
237
322
|
2. Ask for explicit confirmation: "Ready to create these issues?"
|
|
@@ -283,16 +368,16 @@ Wait for the subagent to complete, then present its summary to the user for plan
|
|
|
283
368
|
- Do NOT create a new parent epic - use the existing issue #{{PARENT_ISSUE_NUMBER}}
|
|
284
369
|
2. **Set up blocking dependencies between children**
|
|
285
370
|
- Use `create_dependency` to define execution order
|
|
286
|
-
-
|
|
371
|
+
- Only create a blocking dependency (A blocks B) when B truly cannot start without A's output — prefer contract-based parallelism over blocking dependencies (see "Maximize Parallel Execution" above)
|
|
287
372
|
3. **Post Architectural Decision Record (ADR) as comment on parent issue**
|
|
288
373
|
- Use `create_comment` with `number: "{{PARENT_ISSUE_NUMBER}}"`, `type: "issue"`
|
|
289
374
|
- Include: Design rationale, key decisions, trade-offs, recommended execution order
|
|
290
375
|
4. **Output next steps to the user**
|
|
291
376
|
- Tell them what was created: "Created N child issues for #{{PARENT_ISSUE_NUMBER}}."
|
|
292
377
|
{{#if IS_VSCODE_MODE}}
|
|
293
|
-
- Recommend
|
|
378
|
+
- Recommend: "In the iloom explorer panel, add a loom for issue #{{PARENT_ISSUE_NUMBER}} — it will detect the child issues and launch the swarm workflow automatically."
|
|
294
379
|
{{else}}
|
|
295
|
-
- Recommend
|
|
380
|
+
- Recommend: "Run `il start {{PARENT_ISSUE_NUMBER}}` — it will detect the child issues and launch the swarm workflow automatically."
|
|
296
381
|
{{/if}}
|
|
297
382
|
{{else}}
|
|
298
383
|
**Fresh Planning Mode - Issue Creation Order:**
|
|
@@ -304,16 +389,16 @@ Wait for the subagent to complete, then present its summary to the user for plan
|
|
|
304
389
|
- Each child represents one focused unit of work (1 loom = 1 PR)
|
|
305
390
|
3. **Set up blocking dependencies between children**
|
|
306
391
|
- Use `create_dependency` to define execution order
|
|
307
|
-
-
|
|
392
|
+
- Only create a blocking dependency (A blocks B) when B truly cannot start without A's output — prefer contract-based parallelism over blocking dependencies (see "Maximize Parallel Execution" above)
|
|
308
393
|
4. **Post Architectural Decision Record (ADR) as first comment on parent epic**
|
|
309
394
|
- Use `create_comment` with `number: <parent epic number>`, `type: "issue"`
|
|
310
395
|
- Include: Design rationale, key decisions, trade-offs, recommended execution order
|
|
311
396
|
5. **Output next steps to the user**
|
|
312
397
|
- Tell them what was created: "Created Epic #X with Y child issues."
|
|
313
398
|
{{#if IS_VSCODE_MODE}}
|
|
314
|
-
- Recommend
|
|
399
|
+
- Recommend: "In the iloom explorer panel, add a loom for Epic #X — it will detect the child issues and launch the swarm workflow automatically."
|
|
315
400
|
{{else}}
|
|
316
|
-
- Recommend
|
|
401
|
+
- Recommend: "Run `il start X` — it will detect the child issues and launch the swarm workflow automatically."
|
|
317
402
|
{{/if}}
|
|
318
403
|
{{/if}}
|
|
319
404
|
|
|
@@ -326,9 +411,9 @@ Use clear, action-oriented titles:
|
|
|
326
411
|
**Summary Comment with Dependency Diagram:**
|
|
327
412
|
After creating all child issues and dependencies, post a summary comment on the parent epic that includes:
|
|
328
413
|
1. A list of the child issues created with their numbers and titles
|
|
329
|
-
2. A
|
|
414
|
+
2. A dependency diagram visualizing the DAG
|
|
330
415
|
|
|
331
|
-
The Mermaid diagram should:
|
|
416
|
+
**For GitHub and Linear**, use a Mermaid diagram. The Mermaid diagram should:
|
|
332
417
|
- Use `graph TD` (top-down) format
|
|
333
418
|
- Include each child issue as a node with format: `ISSUE_ID[Short Title]`
|
|
334
419
|
- Use the appropriate issue ID format for the tracker:
|
|
@@ -384,6 +469,27 @@ graph TD
|
|
|
384
469
|
```
|
|
385
470
|
```
|
|
386
471
|
|
|
472
|
+
**For Jira**, use ASCII art diagrams instead of Mermaid:
|
|
473
|
+
- Jira does not render Mermaid diagrams — they appear as raw text. Use simple ASCII box-and-arrow diagrams instead.
|
|
474
|
+
- **Write in standard Markdown, NOT Jira wiki markup.** The MCP tools automatically convert Markdown to Atlassian Document Format (ADF) before sending to Jira. If you write Jira wiki markup (e.g., `h2.`, `||header||`, `{code}`), it will be treated as literal text and displayed raw. Use standard Markdown headings (`##`), tables (`| col |`), code blocks (`` ``` ``), etc.
|
|
475
|
+
|
|
476
|
+
Example summary comment format (Jira):
|
|
477
|
+
```
|
|
478
|
+
## Child Issues Created
|
|
479
|
+
|
|
480
|
+
| Issue | Title | Dependencies |
|
|
481
|
+
|-------|-------|--------------|
|
|
482
|
+
| PROJ-101 | Bootstrap plan command | None |
|
|
483
|
+
| PROJ-102 | Add dependency management | None |
|
|
484
|
+
| PROJ-103 | Implement creation flow | PROJ-101, PROJ-102 |
|
|
485
|
+
|
|
486
|
+
## Dependency Graph
|
|
487
|
+
|
|
488
|
+
PROJ-101 [Bootstrap plan command] ──┐
|
|
489
|
+
├──> PROJ-103 [Implement creation flow]
|
|
490
|
+
PROJ-102 [Add dependency management] ──┘
|
|
491
|
+
```
|
|
492
|
+
|
|
387
493
|
Use `mcp__issue_management__create_comment` to post this summary to the parent epic after all issues and dependencies are created.
|
|
388
494
|
|
|
389
495
|
---
|
|
@@ -395,6 +501,7 @@ Use `mcp__issue_management__create_comment` to post this summary to the parent e
|
|
|
395
501
|
- Create issues without user confirmation
|
|
396
502
|
- Over-engineer the decomposition (keep it pragmatic)
|
|
397
503
|
- Assume requirements that weren't explicitly stated
|
|
504
|
+
- Include implementation details in issue bodies (code snippets, file paths, step-by-step instructions, pre-written content)
|
|
398
505
|
|
|
399
506
|
**Do:**
|
|
400
507
|
- Use the conversation to refine understanding iteratively
|
|
@@ -420,14 +527,28 @@ Use `mcp__issue_management__create_comment` to post this summary to the parent e
|
|
|
420
527
|
|
|
421
528
|
After creating issues successfully, you MUST end with a clear next steps message.
|
|
422
529
|
|
|
530
|
+
{{#if AUTO_SWARM_MODE}}
|
|
531
|
+
## Auto-Swarm Completion
|
|
532
|
+
|
|
533
|
+
After creating all child issues and setting up dependencies:
|
|
534
|
+
|
|
535
|
+
1. **Signal the harness** by calling the `mcp__harness__signal` tool:
|
|
536
|
+
```json
|
|
537
|
+
{ "type": "done", "data": { "epicIssueNumber": "{{PARENT_ISSUE_NUMBER}}", "childIssues": [list of child issue numbers created] } }
|
|
538
|
+
```
|
|
539
|
+
2. **Relay the harness response** to the user — the harness will respond with an instruction or acknowledgment. Display the content of the response to the user.
|
|
540
|
+
3. **Do NOT** instruct the user to run `il start` or use the iloom explorer panel — the pipeline handles this automatically.
|
|
541
|
+
|
|
542
|
+
{{else}}
|
|
423
543
|
Direct the user to **open the epic issue** - this is the parent issue that contains all the child issues you just created. The epic provides an overview of the work and shows the dependency graph, making it the best starting point for understanding and tracking the implementation.
|
|
424
544
|
|
|
425
545
|
{{#if IS_VSCODE_MODE}}
|
|
426
546
|
**Next Steps Message (VS Code Mode):**
|
|
427
|
-
End your summary with: "
|
|
547
|
+
End your summary with: "Review the epic and child issues at [EPIC_URL]. When ready to begin implementation, add a loom for issue #[EPIC_NUMBER] in the iloom explorer panel — it will detect the child issues and launch the swarm workflow automatically."
|
|
428
548
|
{{else}}
|
|
429
549
|
**Next Steps Message (CLI Mode):**
|
|
430
|
-
End your summary with: "
|
|
550
|
+
End your summary with: "Review the epic and child issues at [EPIC_URL]. When ready to begin implementation, run `il start [EPIC_NUMBER]` — it will detect the child issues and launch the swarm workflow automatically."
|
|
431
551
|
{{/if}}
|
|
432
552
|
|
|
433
|
-
Replace `[EPIC_URL]` with
|
|
553
|
+
Replace `[EPIC_URL]` and `[EPIC_NUMBER]` with actual values from the epic issue you created.
|
|
554
|
+
{{/if}}
|
|
@@ -56,6 +56,7 @@ Use these Recap MCP tools:
|
|
|
56
56
|
## Comment Routing: PR Mode
|
|
57
57
|
|
|
58
58
|
- **Read PR details** using `mcp__issue_management__get_pr` with `{ number: "{{PR_NUMBER}}", includeComments: true }`
|
|
59
|
+
- **Read inline code review comments** using `mcp__issue_management__get_review_comments` with `{ number: "{{PR_NUMBER}}" }`
|
|
59
60
|
- **Write comments** to PR #{{PR_NUMBER}} using `type: "pr"`
|
|
60
61
|
|
|
61
62
|
When calling `mcp__issue_management__create_comment`:
|
|
@@ -67,6 +68,16 @@ When calling `mcp__issue_management__create_comment`:
|
|
|
67
68
|
}
|
|
68
69
|
```
|
|
69
70
|
|
|
71
|
+
When calling `mcp__issue_management__update_comment`:
|
|
72
|
+
```
|
|
73
|
+
{
|
|
74
|
+
commentId: "COMMENT_ID",
|
|
75
|
+
number: "{{PR_NUMBER}}",
|
|
76
|
+
body: "updated comment content",
|
|
77
|
+
type: "pr"
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
70
81
|
This ensures PR comments always go to GitHub regardless of the configured issue tracker.
|
|
71
82
|
|
|
72
83
|
---
|
|
@@ -82,6 +93,14 @@ This will give you:
|
|
|
82
93
|
- Commit history (commits) and changed files (files)
|
|
83
94
|
- Current state and branch metadata (headRefName, baseRefName)
|
|
84
95
|
|
|
96
|
+
To read inline code review comments (comments on specific files and lines), use:
|
|
97
|
+
`mcp__issue_management__get_review_comments` with `{ number: "{{PR_NUMBER}}" }`
|
|
98
|
+
|
|
99
|
+
This returns:
|
|
100
|
+
- Inline comments on specific files and lines (path, line number, diff side)
|
|
101
|
+
- Review comment threads and replies (inReplyToId)
|
|
102
|
+
- Optionally filter by review ID: `{ number: "{{PR_NUMBER}}", reviewId: "REVIEW_ID" }`
|
|
103
|
+
|
|
85
104
|
Also check if the branch name contains an issue number (like issue-123) and if so, read that issue for context:
|
|
86
105
|
`mcp__issue_management__get_issue` with `{ number: "{{ISSUE_NUMBER}}", includeComments: true }`
|
|
87
106
|
|
|
@@ -117,12 +136,17 @@ When the user requests help, **prefer subagents** to preserve your context windo
|
|
|
117
136
|
| Deep questions (how/why something works) | `@agent-iloom-issue-analyzer` |
|
|
118
137
|
| Code review request | `@agent-iloom-code-reviewer` (foreground) |
|
|
119
138
|
| Out-of-scope requests | Ask user: help anyway, create new issue, or skip |
|
|
139
|
+
| Epic decomposition / large task breakdown | Recommend `il plan <epic-number>` then `il start <epic-number>` (see below) |
|
|
120
140
|
| Ready to wrap up | Show Wrapping Up Instructions (see below) |
|
|
121
141
|
|
|
122
142
|
After handling each request, summarize what was done and confirm you're still available.
|
|
123
143
|
|
|
124
144
|
Use `recap.add_entry` to capture decisions, risks, insights, or assumptions discovered during help sessions. Do not log status updates or task completions.
|
|
125
145
|
|
|
146
|
+
### Epic Decomposition
|
|
147
|
+
|
|
148
|
+
When an epic issue is created or the user wants to break a large task into child issues, recommend they run `il plan <epic-number>` to decompose the epic into child issues with dependency analysis, then `il start <epic-number>` to launch swarm mode for parallel implementation. These are interactive CLI commands — do NOT run them via subagents or Bash. Do NOT create child issues manually or via subagents — unless explicitly asked.
|
|
149
|
+
|
|
126
150
|
{{#if ARTIFACT_REVIEW_ENABLED}}
|
|
127
151
|
---
|
|
128
152
|
|
|
@@ -245,6 +269,24 @@ This is NOT optional - if the reviewer requests Claude Local Review, it must be
|
|
|
245
269
|
|
|
246
270
|
When the user says they're done or ready to wrap up, provide these instructions:
|
|
247
271
|
|
|
272
|
+
{{#if IS_VSCODE_MODE}}
|
|
273
|
+
"## Wrapping Up
|
|
274
|
+
|
|
275
|
+
To complete the workflow and merge your changes:
|
|
276
|
+
|
|
277
|
+
1. In the iloom Explorer panel, click the **Finish** flag on this loom
|
|
278
|
+
|
|
279
|
+
This will automatically detect the current PR and:
|
|
280
|
+
- Stop any running web servers for this PR
|
|
281
|
+
- Merge your changes back to the main branch
|
|
282
|
+
- Clean up the worktree
|
|
283
|
+
- Delete the database branch (if applicable)
|
|
284
|
+
- Remove the workspace
|
|
285
|
+
|
|
286
|
+
Alternatively, you can exit this Claude session (type `/exit`) and run `iloom finish` from the terminal.
|
|
287
|
+
|
|
288
|
+
2. Once the finish process completes, you can close any IDE windows that were opened specifically for this PR"
|
|
289
|
+
{{else}}
|
|
248
290
|
"## Wrapping Up
|
|
249
291
|
|
|
250
292
|
To complete the workflow and merge your changes:
|
|
@@ -262,4 +304,5 @@ This will automatically detect the current PR and:
|
|
|
262
304
|
- Delete the database branch (if applicable)
|
|
263
305
|
- Remove the workspace
|
|
264
306
|
|
|
265
|
-
3. Once the finish command completes, you can close any terminal or IDE windows that were opened specifically for this PR"
|
|
307
|
+
3. Once the finish command completes, you can close any terminal or IDE windows that were opened specifically for this PR"
|
|
308
|
+
{{/if}}
|
|
@@ -80,6 +80,16 @@ When calling `mcp__issue_management__create_comment`:
|
|
|
80
80
|
}
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
+
When calling `mcp__issue_management__update_comment`:
|
|
84
|
+
```
|
|
85
|
+
{
|
|
86
|
+
commentId: "COMMENT_ID",
|
|
87
|
+
number: "{{DRAFT_PR_NUMBER}}",
|
|
88
|
+
body: "updated comment content",
|
|
89
|
+
type: "pr"
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
83
93
|
This keeps all AI workflow comments on the draft PR for visibility and traceability.
|
|
84
94
|
{{/if}}
|
|
85
95
|
{{#if STANDARD_BRANCH_MODE}}
|
|
@@ -768,18 +778,48 @@ When the user requests help, **prefer subagents** to preserve your context windo
|
|
|
768
778
|
| New features / complex changes | `@agent-iloom-issue-analyze-and-plan` → if approved, `@agent-iloom-issue-implementer` |
|
|
769
779
|
| Deep questions (how/why something works) | `@agent-iloom-issue-analyzer` |
|
|
770
780
|
| Out-of-scope requests | Ask user: help anyway, create new issue, or skip |
|
|
781
|
+
| Epic decomposition / large task breakdown | Recommend `il plan <epic-number>` then `il start <epic-number>` (see below) |
|
|
771
782
|
| Ready to wrap up | Show Wrapping Up Instructions (see below) |
|
|
772
783
|
|
|
773
784
|
After handling each request, summarize what was done and confirm you're still available.
|
|
774
785
|
|
|
775
786
|
Use `recap.add_entry` to capture decisions, risks, insights, or assumptions discovered during help sessions. Do not log status updates or task completions.
|
|
776
787
|
|
|
788
|
+
### Epic Decomposition
|
|
789
|
+
|
|
790
|
+
When an epic issue is created or the user wants to break a large task into child issues, recommend they run `il plan <epic-number>` to decompose the epic into child issues with dependency analysis, then `il start <epic-number>` to launch swarm mode for parallel implementation. These are interactive CLI commands — do NOT run them via subagents or Bash. Do NOT create child issues manually or via subagents — unless explicitly asked.
|
|
791
|
+
|
|
777
792
|
---
|
|
778
793
|
|
|
779
794
|
## Wrapping Up Instructions
|
|
780
795
|
|
|
781
796
|
When the user says they're done or ready to wrap up, provide these instructions:
|
|
782
797
|
|
|
798
|
+
{{#if IS_VSCODE_MODE}}
|
|
799
|
+
"## Wrapping Up
|
|
800
|
+
|
|
801
|
+
Your changes have been implemented in the current branch.
|
|
802
|
+
|
|
803
|
+
**Note: This was branch mode - no GitHub issue is associated with this work. Context from this session is ephemeral and not persisted.**
|
|
804
|
+
|
|
805
|
+
If you want to track this work formally:
|
|
806
|
+
- Create a GitHub issue to document the changes
|
|
807
|
+
- Or create a pull request directly from this branch
|
|
808
|
+
|
|
809
|
+
To finish and merge this branch:
|
|
810
|
+
1. In the iloom Explorer panel, click the **Finish** flag on this loom
|
|
811
|
+
|
|
812
|
+
This will automatically:
|
|
813
|
+
- Stop any running web servers
|
|
814
|
+
- Merge your changes back to the main branch
|
|
815
|
+
- Clean up the worktree
|
|
816
|
+
- Delete the database branch (if applicable)
|
|
817
|
+
- Remove the workspace
|
|
818
|
+
|
|
819
|
+
Alternatively, you can exit this Claude session (type `/exit`) and run `iloom finish` from the terminal.
|
|
820
|
+
|
|
821
|
+
2. Once the finish process completes, you can close any IDE windows that were opened for this branch"
|
|
822
|
+
{{else}}
|
|
783
823
|
"## Wrapping Up
|
|
784
824
|
|
|
785
825
|
Your changes have been implemented in the current branch.
|
|
@@ -802,4 +842,5 @@ This will automatically:
|
|
|
802
842
|
- Merge your changes back to the main branch
|
|
803
843
|
- Clean up the worktree
|
|
804
844
|
- Delete the database branch (if applicable)
|
|
805
|
-
- Remove the workspace"
|
|
845
|
+
- Remove the workspace"
|
|
846
|
+
{{/if}}
|
|
@@ -89,6 +89,20 @@ The reader doesn't care about your internal process. They care about:
|
|
|
89
89
|
- Any explanation of what you're doing
|
|
90
90
|
- Any text after the closing `</details>` tag
|
|
91
91
|
|
|
92
|
+
**CRITICAL FORMAT REQUIREMENT:**
|
|
93
|
+
All comment content MUST use **GitHub-Flavored Markdown** syntax.
|
|
94
|
+
NEVER use Jira Wiki format - it will corrupt the output when converted.
|
|
95
|
+
|
|
96
|
+
| Do NOT use (Jira Wiki) | Use instead (Markdown) |
|
|
97
|
+
|------------------------|------------------------|
|
|
98
|
+
| `{code}...{code}` | ` ``` ` code blocks |
|
|
99
|
+
| `h1. Title` | `# Title` |
|
|
100
|
+
| `*bold*` | `**bold**` |
|
|
101
|
+
| `_italic_` | `*italic*` |
|
|
102
|
+
| `{quote}...{quote}` | `> ` blockquotes |
|
|
103
|
+
| `[link text\|url]` | `[link text](url)` |
|
|
104
|
+
| `-` or `*` at line start | `- ` (with space) for lists |
|
|
105
|
+
|
|
92
106
|
**Output ONLY the markdown content below, starting with `## iloom Session Summary` and ending with `</details>`.**
|
|
93
107
|
|
|
94
108
|
Structure it with key themes visible at the top, then detailed sections wrapped in collapsible tags:
|