@iloom/cli 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (179) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +58 -16
  3. package/dist/{BranchNamingService-B5PVRR7F.js → BranchNamingService-FLPUUFOB.js} +2 -2
  4. package/dist/ClaudeContextManager-KE5TBZVZ.js +14 -0
  5. package/dist/ClaudeService-CRSETT3A.js +13 -0
  6. package/dist/{GitHubService-S2OGUTDR.js → GitHubService-O7U4UQ7N.js} +3 -3
  7. package/dist/{LoomLauncher-5LFM4LXB.js → LoomLauncher-NL65LSKP.js} +6 -6
  8. package/dist/{MetadataManager-DFI73J3G.js → MetadataManager-XJ2YB762.js} +2 -2
  9. package/dist/PRManager-2ABCWXHW.js +16 -0
  10. package/dist/{ProjectCapabilityDetector-S5FLNCFI.js → ProjectCapabilityDetector-UZYW32SY.js} +3 -3
  11. package/dist/{PromptTemplateManager-C3DK6XZL.js → PromptTemplateManager-7L3HJQQU.js} +2 -2
  12. package/dist/README.md +58 -16
  13. package/dist/{SettingsManager-35F5RUJH.js → SettingsManager-YU4VYPTW.js} +2 -2
  14. package/dist/agents/iloom-issue-analyze-and-plan.md +42 -17
  15. package/dist/agents/iloom-issue-analyzer.md +14 -14
  16. package/dist/agents/iloom-issue-complexity-evaluator.md +38 -15
  17. package/dist/agents/iloom-issue-enhancer.md +15 -15
  18. package/dist/agents/iloom-issue-implementer.md +44 -15
  19. package/dist/agents/iloom-issue-planner.md +121 -17
  20. package/dist/agents/iloom-issue-reviewer.md +15 -15
  21. package/dist/{build-FJVYP7EV.js → build-O2EJHDEW.js} +9 -9
  22. package/dist/{chunk-ZPSTA5PR.js → chunk-3CDWFEGL.js} +2 -2
  23. package/dist/{chunk-VU3QMIP2.js → chunk-453NC377.js} +91 -15
  24. package/dist/chunk-453NC377.js.map +1 -0
  25. package/dist/{chunk-UQIXZ3BA.js → chunk-5V74K5ZA.js} +2 -2
  26. package/dist/{chunk-7WANFUIK.js → chunk-6TL3BYH6.js} +2 -2
  27. package/dist/{chunk-5TXLVEXT.js → chunk-C3AKFAIR.js} +2 -2
  28. package/dist/{chunk-K7SEEHKO.js → chunk-CNSTXBJ3.js} +7 -419
  29. package/dist/chunk-CNSTXBJ3.js.map +1 -0
  30. package/dist/{chunk-5IWU3HXE.js → chunk-EPPPDVHD.js} +23 -11
  31. package/dist/chunk-EPPPDVHD.js.map +1 -0
  32. package/dist/{chunk-UB4TFAXJ.js → chunk-FEAJR6PN.js} +9 -55
  33. package/dist/chunk-FEAJR6PN.js.map +1 -0
  34. package/dist/{chunk-6YSFTPKW.js → chunk-FM4KBPVA.js} +18 -13
  35. package/dist/chunk-FM4KBPVA.js.map +1 -0
  36. package/dist/{chunk-AEIMYF4P.js → chunk-FP7G7DG3.js} +6 -2
  37. package/dist/chunk-FP7G7DG3.js.map +1 -0
  38. package/dist/{chunk-LT3SGBR7.js → chunk-GCPAZSGV.js} +36 -2
  39. package/dist/{chunk-LT3SGBR7.js.map → chunk-GCPAZSGV.js.map} +1 -1
  40. package/dist/chunk-GJMEKEI5.js +517 -0
  41. package/dist/chunk-GJMEKEI5.js.map +1 -0
  42. package/dist/{chunk-64O2UIWO.js → chunk-GV5X6XUE.js} +4 -4
  43. package/dist/{chunk-7Q66W4OH.js → chunk-HBJITKSZ.js} +37 -1
  44. package/dist/chunk-HBJITKSZ.js.map +1 -0
  45. package/dist/{chunk-7HIRPCKU.js → chunk-HVQNVRAF.js} +2 -2
  46. package/dist/{chunk-BXCPJJYM.js → chunk-ITN64ENQ.js} +1 -1
  47. package/dist/chunk-ITN64ENQ.js.map +1 -0
  48. package/dist/{chunk-6U6VI4SZ.js → chunk-KVS4XGBQ.js} +4 -4
  49. package/dist/{chunk-AXX3QIKK.js → chunk-LLWX3PCW.js} +2 -2
  50. package/dist/{chunk-WIJWIKAN.js → chunk-LQBLDI47.js} +105 -7
  51. package/dist/chunk-LQBLDI47.js.map +1 -0
  52. package/dist/{chunk-SN3Z6EZO.js → chunk-N7FVXZNI.js} +2 -2
  53. package/dist/chunk-NTIZLX42.js +822 -0
  54. package/dist/chunk-NTIZLX42.js.map +1 -0
  55. package/dist/{chunk-PMVWQBWS.js → chunk-S7YMZQUD.js} +31 -45
  56. package/dist/chunk-S7YMZQUD.js.map +1 -0
  57. package/dist/chunk-TIYJEEVO.js +79 -0
  58. package/dist/chunk-TIYJEEVO.js.map +1 -0
  59. package/dist/{chunk-EK3XCAAS.js → chunk-UDRZY65Y.js} +2 -2
  60. package/dist/{chunk-3PT7RKL5.js → chunk-USJSNHGG.js} +2 -2
  61. package/dist/{chunk-CFUWQHCJ.js → chunk-VWGKGNJP.js} +114 -35
  62. package/dist/chunk-VWGKGNJP.js.map +1 -0
  63. package/dist/{chunk-F6WVM437.js → chunk-WFQ5CLTR.js} +6 -3
  64. package/dist/chunk-WFQ5CLTR.js.map +1 -0
  65. package/dist/{chunk-TRQ76ISK.js → chunk-Z6BO53V7.js} +9 -9
  66. package/dist/{chunk-GEXP5IOF.js → chunk-ZA575VLF.js} +21 -8
  67. package/dist/chunk-ZA575VLF.js.map +1 -0
  68. package/dist/{claude-H33OQMXO.js → claude-6H36IBHO.js} +4 -2
  69. package/dist/{cleanup-OU2HFOOG.js → cleanup-ZPOMRSNN.js} +20 -16
  70. package/dist/cleanup-ZPOMRSNN.js.map +1 -0
  71. package/dist/cli.js +511 -959
  72. package/dist/cli.js.map +1 -1
  73. package/dist/commit-6S2RIA2K.js +237 -0
  74. package/dist/commit-6S2RIA2K.js.map +1 -0
  75. package/dist/{compile-ULNO5F7Q.js → compile-LRMAADUT.js} +9 -9
  76. package/dist/{contribute-T7ENST5N.js → contribute-GXKOIA42.js} +99 -31
  77. package/dist/contribute-GXKOIA42.js.map +1 -0
  78. package/dist/{dev-server-4RCDJ5MU.js → dev-server-GREJUEKW.js} +22 -74
  79. package/dist/dev-server-GREJUEKW.js.map +1 -0
  80. package/dist/{feedback-O4Q55SVS.js → feedback-G7G5QCY4.js} +10 -10
  81. package/dist/{git-FVMGBHC2.js → git-ENLT2VNI.js} +6 -4
  82. package/dist/hooks/iloom-hook.js +30 -2
  83. package/dist/{ignite-VHV65WEZ.js → ignite-YUAOJ5PP.js} +20 -20
  84. package/dist/ignite-YUAOJ5PP.js.map +1 -0
  85. package/dist/index.d.ts +71 -27
  86. package/dist/index.js +196 -266
  87. package/dist/index.js.map +1 -1
  88. package/dist/init-XQQMFDM6.js +21 -0
  89. package/dist/{lint-5JMCWE4Y.js → lint-OFVN7FT6.js} +9 -9
  90. package/dist/mcp/issue-management-server.js +359 -13
  91. package/dist/mcp/issue-management-server.js.map +1 -1
  92. package/dist/mcp/recap-server.js +13 -4
  93. package/dist/mcp/recap-server.js.map +1 -1
  94. package/dist/{open-WHVUYGPY.js → open-MCWQAPSZ.js} +25 -76
  95. package/dist/open-MCWQAPSZ.js.map +1 -0
  96. package/dist/{projects-SA76I4TZ.js → projects-PQOTWUII.js} +11 -4
  97. package/dist/projects-PQOTWUII.js.map +1 -0
  98. package/dist/prompts/init-prompt.txt +63 -59
  99. package/dist/prompts/issue-prompt.txt +132 -63
  100. package/dist/prompts/pr-prompt.txt +3 -3
  101. package/dist/prompts/regular-prompt.txt +16 -18
  102. package/dist/prompts/session-summary-prompt.txt +13 -13
  103. package/dist/{rebase-5EY3Q6XP.js → rebase-RKQED567.js} +53 -8
  104. package/dist/rebase-RKQED567.js.map +1 -0
  105. package/dist/{recap-VOOUXOGP.js → recap-ZKGHZCX6.js} +6 -6
  106. package/dist/{run-NCRK5NPR.js → run-CCG24PBC.js} +25 -76
  107. package/dist/run-CCG24PBC.js.map +1 -0
  108. package/dist/schema/settings.schema.json +14 -3
  109. package/dist/{shell-SBLXVOVJ.js → shell-2NNSIU34.js} +6 -6
  110. package/dist/{summary-CVFAMDOJ.js → summary-G6L3VAKK.js} +11 -10
  111. package/dist/{summary-CVFAMDOJ.js.map → summary-G6L3VAKK.js.map} +1 -1
  112. package/dist/{test-3KIVXI6J.js → test-QZDOEUIO.js} +9 -9
  113. package/dist/{test-git-ZB6AGGRW.js → test-git-E2BLXR6M.js} +4 -4
  114. package/dist/{test-prefix-FBGXKMPA.js → test-prefix-A7JGGYAA.js} +4 -4
  115. package/dist/{test-webserver-YVQD42W6.js → test-webserver-NRMGT2HB.js} +29 -8
  116. package/dist/test-webserver-NRMGT2HB.js.map +1 -0
  117. package/package.json +3 -1
  118. package/dist/ClaudeContextManager-6J2EB4QU.js +0 -14
  119. package/dist/ClaudeService-O2PB22GX.js +0 -13
  120. package/dist/PRManager-OCSB2HPT.js +0 -14
  121. package/dist/chunk-5IWU3HXE.js.map +0 -1
  122. package/dist/chunk-6YSFTPKW.js.map +0 -1
  123. package/dist/chunk-7Q66W4OH.js.map +0 -1
  124. package/dist/chunk-AEIMYF4P.js.map +0 -1
  125. package/dist/chunk-BXCPJJYM.js.map +0 -1
  126. package/dist/chunk-CFUWQHCJ.js.map +0 -1
  127. package/dist/chunk-F6WVM437.js.map +0 -1
  128. package/dist/chunk-GEXP5IOF.js.map +0 -1
  129. package/dist/chunk-K7SEEHKO.js.map +0 -1
  130. package/dist/chunk-PMVWQBWS.js.map +0 -1
  131. package/dist/chunk-UB4TFAXJ.js.map +0 -1
  132. package/dist/chunk-VU3QMIP2.js.map +0 -1
  133. package/dist/chunk-W6WVRHJ6.js +0 -251
  134. package/dist/chunk-W6WVRHJ6.js.map +0 -1
  135. package/dist/chunk-WIJWIKAN.js.map +0 -1
  136. package/dist/cleanup-OU2HFOOG.js.map +0 -1
  137. package/dist/contribute-T7ENST5N.js.map +0 -1
  138. package/dist/dev-server-4RCDJ5MU.js.map +0 -1
  139. package/dist/ignite-VHV65WEZ.js.map +0 -1
  140. package/dist/init-HB34Q5FH.js +0 -21
  141. package/dist/open-WHVUYGPY.js.map +0 -1
  142. package/dist/projects-SA76I4TZ.js.map +0 -1
  143. package/dist/rebase-5EY3Q6XP.js.map +0 -1
  144. package/dist/run-NCRK5NPR.js.map +0 -1
  145. package/dist/test-webserver-YVQD42W6.js.map +0 -1
  146. /package/dist/{BranchNamingService-B5PVRR7F.js.map → BranchNamingService-FLPUUFOB.js.map} +0 -0
  147. /package/dist/{ClaudeContextManager-6J2EB4QU.js.map → ClaudeContextManager-KE5TBZVZ.js.map} +0 -0
  148. /package/dist/{ClaudeService-O2PB22GX.js.map → ClaudeService-CRSETT3A.js.map} +0 -0
  149. /package/dist/{GitHubService-S2OGUTDR.js.map → GitHubService-O7U4UQ7N.js.map} +0 -0
  150. /package/dist/{LoomLauncher-5LFM4LXB.js.map → LoomLauncher-NL65LSKP.js.map} +0 -0
  151. /package/dist/{MetadataManager-DFI73J3G.js.map → MetadataManager-XJ2YB762.js.map} +0 -0
  152. /package/dist/{PRManager-OCSB2HPT.js.map → PRManager-2ABCWXHW.js.map} +0 -0
  153. /package/dist/{ProjectCapabilityDetector-S5FLNCFI.js.map → ProjectCapabilityDetector-UZYW32SY.js.map} +0 -0
  154. /package/dist/{PromptTemplateManager-C3DK6XZL.js.map → PromptTemplateManager-7L3HJQQU.js.map} +0 -0
  155. /package/dist/{SettingsManager-35F5RUJH.js.map → SettingsManager-YU4VYPTW.js.map} +0 -0
  156. /package/dist/{build-FJVYP7EV.js.map → build-O2EJHDEW.js.map} +0 -0
  157. /package/dist/{chunk-ZPSTA5PR.js.map → chunk-3CDWFEGL.js.map} +0 -0
  158. /package/dist/{chunk-UQIXZ3BA.js.map → chunk-5V74K5ZA.js.map} +0 -0
  159. /package/dist/{chunk-7WANFUIK.js.map → chunk-6TL3BYH6.js.map} +0 -0
  160. /package/dist/{chunk-5TXLVEXT.js.map → chunk-C3AKFAIR.js.map} +0 -0
  161. /package/dist/{chunk-64O2UIWO.js.map → chunk-GV5X6XUE.js.map} +0 -0
  162. /package/dist/{chunk-7HIRPCKU.js.map → chunk-HVQNVRAF.js.map} +0 -0
  163. /package/dist/{chunk-6U6VI4SZ.js.map → chunk-KVS4XGBQ.js.map} +0 -0
  164. /package/dist/{chunk-AXX3QIKK.js.map → chunk-LLWX3PCW.js.map} +0 -0
  165. /package/dist/{chunk-SN3Z6EZO.js.map → chunk-N7FVXZNI.js.map} +0 -0
  166. /package/dist/{chunk-EK3XCAAS.js.map → chunk-UDRZY65Y.js.map} +0 -0
  167. /package/dist/{chunk-3PT7RKL5.js.map → chunk-USJSNHGG.js.map} +0 -0
  168. /package/dist/{chunk-TRQ76ISK.js.map → chunk-Z6BO53V7.js.map} +0 -0
  169. /package/dist/{claude-H33OQMXO.js.map → claude-6H36IBHO.js.map} +0 -0
  170. /package/dist/{compile-ULNO5F7Q.js.map → compile-LRMAADUT.js.map} +0 -0
  171. /package/dist/{feedback-O4Q55SVS.js.map → feedback-G7G5QCY4.js.map} +0 -0
  172. /package/dist/{git-FVMGBHC2.js.map → git-ENLT2VNI.js.map} +0 -0
  173. /package/dist/{init-HB34Q5FH.js.map → init-XQQMFDM6.js.map} +0 -0
  174. /package/dist/{lint-5JMCWE4Y.js.map → lint-OFVN7FT6.js.map} +0 -0
  175. /package/dist/{recap-VOOUXOGP.js.map → recap-ZKGHZCX6.js.map} +0 -0
  176. /package/dist/{shell-SBLXVOVJ.js.map → shell-2NNSIU34.js.map} +0 -0
  177. /package/dist/{test-3KIVXI6J.js.map → test-QZDOEUIO.js.map} +0 -0
  178. /package/dist/{test-git-ZB6AGGRW.js.map → test-git-E2BLXR6M.js.map} +0 -0
  179. /package/dist/{test-prefix-FBGXKMPA.js.map → test-prefix-A7JGGYAA.js.map} +0 -0
@@ -67,7 +67,7 @@ When the documentation below and the settings schema conflict, ALWAYS follow the
67
67
 
68
68
  ### Main Project Documentation
69
69
 
70
- README_CONTENT
70
+ {{README_CONTENT}}
71
71
 
72
72
  ---
73
73
 
@@ -130,7 +130,7 @@ The following JSON Schema defines valid iloom settings:
130
130
  },
131
131
  "noVerify": {
132
132
  "type": "boolean",
133
- "description": "Skip pre-commit hooks (--no-verify) when committing during finish workflow"
133
+ "description": "Skip pre-commit hooks (--no-verify) when committing during commit and finish workflows"
134
134
  },
135
135
  "startIde": {
136
136
  "type": "boolean",
@@ -175,7 +175,7 @@ The following JSON Schema defines valid iloom settings:
175
175
  },
176
176
  "noVerify": {
177
177
  "type": "boolean",
178
- "description": "Skip pre-commit hooks (--no-verify) when committing during finish workflow"
178
+ "description": "Skip pre-commit hooks (--no-verify) when committing during commit and finish workflows"
179
179
  },
180
180
  "startIde": {
181
181
  "type": "boolean",
@@ -220,7 +220,7 @@ The following JSON Schema defines valid iloom settings:
220
220
  },
221
221
  "noVerify": {
222
222
  "type": "boolean",
223
- "description": "Skip pre-commit hooks (--no-verify) when committing during finish workflow"
223
+ "description": "Skip pre-commit hooks (--no-verify) when committing during commit and finish workflows"
224
224
  },
225
225
  "startIde": {
226
226
  "type": "boolean",
@@ -324,6 +324,17 @@ The following JSON Schema defines valid iloom settings:
324
324
  "capabilities": {
325
325
  "type": "object",
326
326
  "properties": {
327
+ "capabilities": {
328
+ "type": "array",
329
+ "items": {
330
+ "type": "string",
331
+ "enum": [
332
+ "cli",
333
+ "web"
334
+ ]
335
+ },
336
+ "description": "Explicitly declared project capabilities (auto-detected if not specified)"
337
+ },
327
338
  "web": {
328
339
  "type": "object",
329
340
  "properties": {
@@ -509,7 +520,7 @@ The following JSON Schema defines valid iloom settings:
509
520
  }
510
521
  ```
511
522
 
512
- {{#IF SETTINGS_JSON}}
523
+ {{#if SETTINGS_JSON}}
513
524
  ## Existing Configuration (Shared)
514
525
 
515
526
  **CRITICAL: DO NOT read .iloom/settings.json just to get information - the content is provided below. Only read it when you need to modify it.**
@@ -517,11 +528,11 @@ The following JSON Schema defines valid iloom settings:
517
528
  The user has shared configuration at `.iloom/settings.json`:
518
529
 
519
530
  ```json
520
- SETTINGS_JSON
531
+ {{SETTINGS_JSON}}
521
532
  ```
522
- {{/IF SETTINGS_JSON}}
533
+ {{/if}}
523
534
 
524
- {{#IF SETTINGS_LOCAL_JSON}}
535
+ {{#if SETTINGS_LOCAL_JSON}}
525
536
  ## Existing Configuration (Local)
526
537
 
527
538
  **CRITICAL: DO NOT read .iloom/settings.local.json just to get information - the content is provided below. Only read it when you need to modify it.**
@@ -529,11 +540,11 @@ SETTINGS_JSON
529
540
  The user has local configuration at `.iloom/settings.local.json`:
530
541
 
531
542
  ```json
532
- SETTINGS_LOCAL_JSON
543
+ {{SETTINGS_LOCAL_JSON}}
533
544
  ```
534
- {{/IF SETTINGS_LOCAL_JSON}}
545
+ {{/if}}
535
546
 
536
- {{#IF SETTINGS_GLOBAL_JSON}}
547
+ {{#if SETTINGS_GLOBAL_JSON}}
537
548
  ## Global Configuration (User-Level)
538
549
 
539
550
  **CRITICAL: DO NOT read ~/.config/iloom-ai/settings.json just to get information - the content is provided below. Only read it when you need to modify it.**
@@ -541,9 +552,9 @@ SETTINGS_LOCAL_JSON
541
552
  The user has global configuration at `~/.config/iloom-ai/settings.json`:
542
553
 
543
554
  ```json
544
- SETTINGS_GLOBAL_JSON
555
+ {{SETTINGS_GLOBAL_JSON}}
545
556
  ```
546
- {{/IF SETTINGS_GLOBAL_JSON}}
557
+ {{/if}}
547
558
 
548
559
  ## Settings Hierarchy & Recommendations
549
560
 
@@ -565,15 +576,15 @@ SETTINGS_GLOBAL_JSON
565
576
  - Machine-specific overrides (port conflicts, local database URLs)
566
577
  - Personal preferences that differ from team defaults
567
578
 
568
- {{#IF SETTINGS_JSON}}{{#IF SETTINGS_LOCAL_JSON}}
579
+ {{#if SETTINGS_JSON}}{{#if SETTINGS_LOCAL_JSON}}
569
580
  **Configuration Priority**: Local settings (settings.local.json) override shared settings (settings.json) when both exist.
570
- {{/IF SETTINGS_LOCAL_JSON}}{{/IF SETTINGS_JSON}}
581
+ {{/if}}{{/if}}
571
582
 
572
- {{#IF SETTINGS_JSON}}{{#IF SETTINGS_LOCAL_JSON}}
583
+ {{#if SETTINGS_JSON}}{{#if SETTINGS_LOCAL_JSON}}
573
584
  You should present the combined configuration as defaults when asking questions, with local values taking precedence over shared values.
574
- {{/IF SETTINGS_LOCAL_JSON}}{{/IF SETTINGS_JSON}}
585
+ {{/if}}{{/if}}
575
586
 
576
- {{#IF SETTINGS_JSON}}{{#IF SETTINGS_LOCAL_JSON}}{{/IF SETTINGS_LOCAL_JSON}}{{/IF SETTINGS_JSON}}
587
+ {{#if SETTINGS_JSON}}{{#if SETTINGS_LOCAL_JSON}}{{/if}}{{/if}}
577
588
 
578
589
  ## Configuration Workflow
579
590
 
@@ -583,14 +594,14 @@ Follow these steps to guide the user through configuration:
583
594
 
584
595
  **BEFORE doing anything else, extract current values from existing configuration:**
585
596
 
586
- {{#IF SETTINGS_JSON}}{{#IF SETTINGS_LOCAL_JSON}}
597
+ {{#if SETTINGS_JSON}}{{#if SETTINGS_LOCAL_JSON}}
587
598
  Parse both settings.json and settings.local.json. Merge them with local taking precedence over shared.
588
- {{/IF SETTINGS_LOCAL_JSON}}{{/IF SETTINGS_JSON}}
599
+ {{/if}}{{/if}}
589
600
 
590
- {{#IF SETTINGS_JSON}}{{#IF SETTINGS_LOCAL_JSON}}{{/IF SETTINGS_LOCAL_JSON}}
591
- {{#IF SETTINGS_LOCAL_JSON}}Parse settings.local.json to get current values.{{/IF SETTINGS_LOCAL_JSON}}
592
- {{#IF SETTINGS_JSON}}Parse settings.json to get current values.{{/IF SETTINGS_JSON}}
593
- {{/IF SETTINGS_JSON}}
601
+ {{#if SETTINGS_JSON}}{{#if SETTINGS_LOCAL_JSON}}{{/if}}
602
+ {{#if SETTINGS_LOCAL_JSON}}Parse settings.local.json to get current values.{{/if}}
603
+ {{#if SETTINGS_JSON}}Parse settings.json to get current values.{{/if}}
604
+ {{/if}}
594
605
 
595
606
  Extract these current values if they exist:
596
607
  - `currentMainBranch` from `mainBranch` field (default: "main")
@@ -615,7 +626,7 @@ Base Port: [currentBasePort or "3000 (default)"]
615
626
  IDE: [currentIdeType or "vscode (default)"]
616
627
  Issue Tracker: [currentIssueProvider or "github (default)"]
617
628
  Linear Team ID: [currentLinearTeamId] (only if currentIssueProvider == linear)
618
- {{#IF MULTIPLE_REMOTES}}GitHub Remote: [currentGitHubRemote] (only if currentIssueProvider == github){{/IF MULTIPLE_REMOTES}}
629
+ {{#if MULTIPLE_REMOTES}}GitHub Remote: [currentGitHubRemote] (only if currentIssueProvider == github){{/if}}
619
630
  ```
620
631
 
621
632
  **Then ask the user what they want to do:**
@@ -629,9 +640,9 @@ Linear Team ID: [currentLinearTeamId] (only if currentIssueProvider == linear)
629
640
 
630
641
  **Based on their answer:**
631
642
  - **Modify existing settings** → Proceed to Phase 1 to update settings
632
- {{#IF MULTIPLE_REMOTES}}
643
+ {{#if MULTIPLE_REMOTES}}
633
644
  - **Configure GitHub remote** → Go to Phase 2 to configure tooling (including remote selection), then skip to Phase 3 (summary), Phase 4 (choose file), and Phase 6 (save). Do NOT re-ask about Phase 1 settings.
634
- {{/IF MULTIPLE_REMOTES}}
645
+ {{/if}}
635
646
  - **Add advanced configuration** → Skip to Phase 9 to help with advanced options
636
647
  - **Start fresh** → Proceed to Phase 1 to reconfigure from scratch
637
648
  - **Nothing/Exit** → Show Phase 9 wrap-up message and end session
@@ -645,7 +656,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
645
656
  **Create a single AskUserQuestion call with these questions:**
646
657
 
647
658
  1. **Main Branch**
648
- - Question format: "What is your main/primary branch name?{{#IF currentMainBranch}} (Currently: [currentMainBranch]){{/IF currentMainBranch}}"
659
+ - Question format: "What is your main/primary branch name?{{#if currentMainBranch}} (Currently: [currentMainBranch]){{/if}}"
649
660
  - Options (as examples, user can type "Other" to provide custom):
650
661
  - "main" - Standard default
651
662
  - "master" - Legacy default
@@ -655,7 +666,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
655
666
  - Store answer as: `mainBranch`
656
667
 
657
668
  2. **Worktree Prefix**
658
- - Question format: "What prefix should iloom use for worktree directories?{{#IF currentWorktreePrefix}} (Currently: [currentWorktreePrefix]){{/IF currentWorktreePrefix}} Leave empty to use default (<repo-name>-looms)."
669
+ - Question format: "What prefix should iloom use for worktree directories?{{#if currentWorktreePrefix}} (Currently: [currentWorktreePrefix]){{/if}} Leave empty to use default (<repo-name>-looms)."
659
670
  - Options (as examples):
660
671
  - Use default prefix (recommened)
661
672
  - "looms" - Simple 'looms-' prefix
@@ -666,7 +677,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
666
677
  - Note: If user specifies default, omit this field from settings, it they say empty, add an empty string to the settings
667
678
 
668
679
  3. **Permission Mode for Issue Workflows**
669
- - Question format: "What permission mode should Claude use when working on issues?{{#IF currentPermissionMode}} (Currently: [currentPermissionMode]){{/IF currentPermissionMode}}"
680
+ - Question format: "What permission mode should Claude use when working on issues?{{#if currentPermissionMode}} (Currently: [currentPermissionMode]){{/if}}"
670
681
  - Options:
671
682
  - "default" - Use Claude Code's default behavior
672
683
  - "acceptEdits" - Claude executes with your confirmation (recommended)
@@ -677,7 +688,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
677
688
  - Store answer as: `workflows.issue.permissionMode` - NOTE: this is a personal preference - recommend it be stored in the gitignored local settings file.
678
689
 
679
690
  4. **Base Port**
680
- - Question format: "What base port should web development servers use?{{#IF currentBasePort}} (Currently: [currentBasePort]){{/IF currentBasePort}}"
691
+ - Question format: "What base port should web development servers use?{{#if currentBasePort}} (Currently: [currentBasePort]){{/if}}"
681
692
  - Options (as examples):
682
693
  - "3000" - Common Node.js default
683
694
  - "8000" - Common Python default
@@ -692,7 +703,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
692
703
  - Users can select "Other" on any question to provide custom input
693
704
  - Process all answers at once when the user submits
694
705
 
695
- {{#IF NO_PACKAGE_JSON}}
706
+ {{#if NO_PACKAGE_JSON}}
696
707
  ### Phase 1.5: Framework Detection (Non-Node.js Project) - DO NOT SKIP
697
708
 
698
709
  iloom needs to detect the project's language and framework to configure build/test/dev scripts.
@@ -756,7 +767,7 @@ If the framework detector did not set capabilities, or if you need to ask the us
756
767
  - No clear indicators -> ask user explicitly
757
768
 
758
769
  After the framework detector agent completes (and capabilities are set), proceed to Phase 2.
759
- {{/IF NO_PACKAGE_JSON}}
770
+ {{/if}}
760
771
 
761
772
  ### Phase 2: Tooling Configuration
762
773
 
@@ -764,12 +775,12 @@ This phase configures external tooling integrations. Use AskUserQuestion to gath
764
775
 
765
776
  **Step 1: Issue Tracker Provider**
766
777
 
767
- {{#IF MULTIPLE_REMOTES}}
778
+ {{#if MULTIPLE_REMOTES}}
768
779
  Since this repository has multiple git remotes, GitHub Issues is suggested as the default since it integrates with your existing GitHub workflow. However, you can choose Linear if that's your team's issue tracker.
769
- {{/IF MULTIPLE_REMOTES}}
780
+ {{/if}}
770
781
 
771
782
  1. **Issue Tracker Provider**
772
- - Question format: "Which issue tracker do you use?{{#IF currentIssueProvider}} (Currently: [currentIssueProvider]){{/IF currentIssueProvider}}"
783
+ - Question format: "Which issue tracker do you use?{{#if currentIssueProvider}} (Currently: [currentIssueProvider]){{/if}}"
773
784
  - Options:
774
785
  - "github" - GitHub Issues (default)
775
786
  - "linear" - Linear Issues
@@ -789,11 +800,11 @@ Based on the answer to Step 1, ask the appropriate follow-up questions:
789
800
 
790
801
  **If GitHub was selected:**
791
802
 
792
- {{#IF MULTIPLE_REMOTES}}
803
+ {{#if MULTIPLE_REMOTES}}
793
804
  This repository has multiple git remotes detected. iloom needs to know which remote's GitHub repository to use for creating and reading issues.
794
805
 
795
806
  **Detected remotes:**
796
- REMOTES_INFO
807
+ {{REMOTES_INFO}}
797
808
 
798
809
  2. **GitHub Remote** (only ask if GitHub is selected)
799
810
  - Question format: "Which remote should iloom use for GitHub issue operations?"
@@ -801,20 +812,20 @@ REMOTES_INFO
801
812
  - **Classic fork pattern (origin + upstream)**: If both "origin" and "upstream" remotes exist, recommend "upstream" since issues are typically tracked in the original repository, not personal forks. Explain: "In a typical fork workflow, 'upstream' points to the original project where issues are tracked, while 'origin' is your personal fork for submitting PRs."
802
813
  - For other multi-remote scenarios: Default to "origin" if it exists, otherwise the first remote
803
814
  - Store answer as: `issueManagement.github.remote`
804
- {{/IF MULTIPLE_REMOTES}}
815
+ {{/if}}
805
816
 
806
- {{#IF SINGLE_REMOTE}}
807
- **Note:** Only one remote detected (SINGLE_REMOTE_NAME pointing to SINGLE_REMOTE_URL). iloom will use this for GitHub operations. No additional configuration needed.
808
- {{/IF SINGLE_REMOTE}}
817
+ {{#if SINGLE_REMOTE}}
818
+ **Note:** Only one remote detected ({{SINGLE_REMOTE_NAME}} pointing to {{SINGLE_REMOTE_URL}}). iloom will use this for GitHub operations. No additional configuration needed.
819
+ {{/if}}
809
820
 
810
- {{#IF NO_REMOTES}}
821
+ {{#if NO_REMOTES}}
811
822
  **Warning:** No git remotes detected. The user will need to configure a remote before using iloom's GitHub features.
812
- {{/IF NO_REMOTES}}
823
+ {{/if}}
813
824
 
814
825
  **If Linear was selected:**
815
826
 
816
827
  2. **Linear Team ID** (only ask if issue provider is "linear")
817
- - Question format: "What is your Linear team ID/key?{{#IF currentLinearTeamId}} (Currently: [currentLinearTeamId]){{/IF currentLinearTeamId}}"
828
+ - Question format: "What is your Linear team ID/key?{{#if currentLinearTeamId}} (Currently: [currentLinearTeamId]){{/if}}"
818
829
  - Options (as examples):
819
830
  - "ENG" - Engineering team
820
831
  - "PLAT" - Platform team
@@ -840,7 +851,7 @@ REMOTES_INFO
840
851
  **Step 3: IDE Selection**
841
852
 
842
853
  4. **IDE Selection**
843
- - Question format: "Which IDE should iloom launch when starting a loom?{{#IF currentIdeType}} (Currently: [currentIdeType]){{/IF currentIdeType}}"
854
+ - Question format: "Which IDE should iloom launch when starting a loom?{{#if currentIdeType}} (Currently: [currentIdeType]){{/if}}"
844
855
  - Options:
845
856
  - "vscode" - Visual Studio Code (default)
846
857
  - "cursor" - Cursor AI editor
@@ -857,7 +868,7 @@ REMOTES_INFO
857
868
  **Step 4: Merge Mode** (only ask if multiple remotes detected OR user requests advanced config)
858
869
 
859
870
  5. **Merge Mode**
860
- - Question format: "How should iloom handle finishing work?{{#IF currentMergeMode}} (Currently: [currentMergeMode]){{/IF currentMergeMode}}"
871
+ - Question format: "How should iloom handle finishing work?{{#if currentMergeMode}} (Currently: [currentMergeMode]){{/if}}"
861
872
  - Options:
862
873
  - "local" - Merge changes locally (traditional workflow)
863
874
  - "github-pr" - Create GitHub PR when finishing (for PR-based workflows)
@@ -884,7 +895,7 @@ REMOTES_INFO
884
895
 
885
896
  After Phase 2, handle color settings based on gitignore status.
886
897
 
887
- Analyis of system: Is VSCode Settings ignore? VSCODE_SETTINGS_GITIGNORED
898
+ Analyis of system: Is VSCode Settings ignore? {{VSCODE_SETTINGS_GITIGNORED}}
888
899
 
889
900
  **IMPORTANT DISTINCTION:**
890
901
  - Schema defaults are: terminal=true, vscode=false (for safety)
@@ -932,7 +943,7 @@ Tooling Configuration (Phase 2):
932
943
  Issue Tracker: [value]
933
944
  Linear Team ID: [value] (only if issue tracker is Linear)
934
945
  Linear API Token: [configured/not configured] (only if issue tracker is Linear - never show actual token)
935
- {{#IF MULTIPLE_REMOTES}}GitHub Remote: [value] (only if issue tracker is GitHub){{/IF MULTIPLE_REMOTES}}
946
+ {{#if MULTIPLE_REMOTES}}GitHub Remote: [value] (only if issue tracker is GitHub){{/if}}
936
947
  IDE: [value or "vscode (default)"]
937
948
  Merge Mode: [value] (only if configured)
938
949
  ```
@@ -948,7 +959,7 @@ Then ask: "Does this configuration look correct?"
948
959
 
949
960
  ### Phase 4: Choose Configuration File
950
961
 
951
- **Fork/Contributor Check:** If "GitHub Remote Configuration" shows both "origin" and "upstream" remotes (classic fork pattern), display: "It looks like you're working on a fork (origin + upstream remotes detected). For contributors, we recommend saving to settings.local.json to avoid including personal settings in PRs to upstream, but you can still choose shared if needed."
962
+ **Fork/Contributor Check:** If "GitHub Remote Configuration" shows both "origin" and "upstream" remotes (classic fork pattern), display: "**FORK DETECTED**: You're working on a fork (origin + upstream remotes detected). **ALL configuration settings should be saved to settings.local.json** to avoid polluting the upstream repository with your personal settings. When you submit PRs to upstream, only your code changes should be included - not iloom configuration. The Local option below is strongly recommended."
952
963
 
953
964
  **CRITICAL: You MUST ask the user where to save the configuration. DO NOT make assumptions or decide for them.**
954
965
 
@@ -962,7 +973,7 @@ Ask the user: "Where should this configuration be saved?
962
973
  - **Recommend Project for**: Main branch, worktree prefix, base port (when standardized for the team)
963
974
  - **Recommend Local for**: Machine-specific overrides, personal preferences that differ from team defaults
964
975
 
965
- **Fork/Contributor Note:** For fork setups, recommend Local over Project to avoid including personal settings in PRs to upstream.
976
+ **Fork/Contributor Note:** For fork setups, **ALL settings should go to Local (settings.local.json)**, not Project. This prevents your personal iloom configuration from being included in PRs to the upstream repository. Even settings like mainBranch or basePort should be stored locally in fork scenarios to keep your contributions clean.
966
977
 
967
978
  **DO NOT:**
968
979
  - Assume what the user wants based on the type of setting
@@ -1150,14 +1161,7 @@ Reason: mainBranch has same value in both files, so it's removed from local
1150
1161
  - `.iloom/settings.local.json` if user chose Local
1151
1162
  4. Use the Write tool to create/update the file
1152
1163
 
1153
- ### Phase 7: Update .gitignore
1154
-
1155
- If the user chose `.iloom/settings.local.json`, ensure `.gitignore` includes this entry:
1156
- - Read `.gitignore` if it exists
1157
- - Check if `.iloom/settings.local.json` is already listed
1158
- - If not, append it to the file
1159
-
1160
- ### Phase 7.5: Offer to Commit Changes
1164
+ ### Phase 7: Offer to Commit Changes
1161
1165
 
1162
1166
  After making configuration changes, offer to commit the iloom-related files:
1163
1167