@iloom/cli 0.6.1 → 0.7.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 +35 -18
- package/dist/{BranchNamingService-B5PVRR7F.js → BranchNamingService-FLPUUFOB.js} +2 -2
- package/dist/ClaudeContextManager-KE5TBZVZ.js +14 -0
- package/dist/ClaudeService-CRSETT3A.js +13 -0
- package/dist/{GitHubService-S2OGUTDR.js → GitHubService-O7U4UQ7N.js} +3 -3
- package/dist/{LoomLauncher-5LFM4LXB.js → LoomLauncher-NL65LSKP.js} +6 -6
- package/dist/{MetadataManager-DFI73J3G.js → MetadataManager-XJ2YB762.js} +2 -2
- package/dist/PRManager-2ABCWXHW.js +16 -0
- package/dist/{ProjectCapabilityDetector-S5FLNCFI.js → ProjectCapabilityDetector-IA56AUE6.js} +3 -3
- package/dist/{PromptTemplateManager-C3DK6XZL.js → PromptTemplateManager-7L3HJQQU.js} +2 -2
- package/dist/README.md +35 -18
- package/dist/{SettingsManager-35F5RUJH.js → SettingsManager-YU4VYPTW.js} +2 -2
- package/dist/agents/iloom-framework-detector.md +78 -9
- package/dist/agents/iloom-issue-analyze-and-plan.md +42 -17
- package/dist/agents/iloom-issue-analyzer.md +14 -14
- package/dist/agents/iloom-issue-complexity-evaluator.md +38 -15
- package/dist/agents/iloom-issue-enhancer.md +15 -15
- package/dist/agents/iloom-issue-implementer.md +44 -15
- package/dist/agents/iloom-issue-planner.md +121 -17
- package/dist/agents/iloom-issue-reviewer.md +15 -15
- package/dist/{build-FJVYP7EV.js → build-HQ5HGA3T.js} +9 -9
- package/dist/{chunk-VU3QMIP2.js → chunk-453NC377.js} +91 -15
- package/dist/chunk-453NC377.js.map +1 -0
- package/dist/{chunk-UQIXZ3BA.js → chunk-5V74K5ZA.js} +2 -2
- package/dist/{chunk-7WANFUIK.js → chunk-6TL3BYH6.js} +2 -2
- package/dist/{chunk-ZPSTA5PR.js → chunk-7GLZVDPQ.js} +2 -2
- package/dist/{chunk-64O2UIWO.js → chunk-AFRICMSW.js} +4 -4
- package/dist/{chunk-5TXLVEXT.js → chunk-C3AKFAIR.js} +2 -2
- package/dist/{chunk-K7SEEHKO.js → chunk-CNSTXBJ3.js} +7 -419
- package/dist/chunk-CNSTXBJ3.js.map +1 -0
- package/dist/{chunk-2A7WQKBE.js → chunk-DAOS6EC3.js} +96 -6
- package/dist/chunk-DAOS6EC3.js.map +1 -0
- package/dist/{chunk-TRQ76ISK.js → chunk-ELJKYFSH.js} +9 -9
- package/dist/{chunk-VDA5JMB4.js → chunk-EPPPDVHD.js} +21 -8
- package/dist/chunk-EPPPDVHD.js.map +1 -0
- package/dist/{chunk-LVBRMTE6.js → chunk-FEAJR6PN.js} +6 -6
- package/dist/{chunk-6YSFTPKW.js → chunk-FM4KBPVA.js} +18 -13
- package/dist/chunk-FM4KBPVA.js.map +1 -0
- package/dist/{chunk-AEIMYF4P.js → chunk-FP7G7DG3.js} +6 -2
- package/dist/chunk-FP7G7DG3.js.map +1 -0
- package/dist/{chunk-LT3SGBR7.js → chunk-GCPAZSGV.js} +36 -2
- package/dist/{chunk-LT3SGBR7.js.map → chunk-GCPAZSGV.js.map} +1 -1
- package/dist/chunk-GJMEKEI5.js +517 -0
- package/dist/chunk-GJMEKEI5.js.map +1 -0
- package/dist/{chunk-7Q66W4OH.js → chunk-HBJITKSZ.js} +37 -1
- package/dist/chunk-HBJITKSZ.js.map +1 -0
- package/dist/{chunk-7HIRPCKU.js → chunk-HVQNVRAF.js} +2 -2
- package/dist/{chunk-6U6VI4SZ.js → chunk-KVS4XGBQ.js} +4 -4
- package/dist/{chunk-SN3Z6EZO.js → chunk-N7FVXZNI.js} +2 -2
- package/dist/{chunk-I75JMBNB.js → chunk-QQFBMCAH.js} +54 -43
- package/dist/chunk-QQFBMCAH.js.map +1 -0
- package/dist/{chunk-AXX3QIKK.js → chunk-RD7I2Q2F.js} +2 -2
- package/dist/chunk-TIYJEEVO.js +79 -0
- package/dist/chunk-TIYJEEVO.js.map +1 -0
- package/dist/{chunk-EK3XCAAS.js → chunk-UDRZY65Y.js} +2 -2
- package/dist/{chunk-3PT7RKL5.js → chunk-USJSNHGG.js} +2 -2
- package/dist/{chunk-CFUWQHCJ.js → chunk-VWGKGNJP.js} +114 -35
- package/dist/chunk-VWGKGNJP.js.map +1 -0
- package/dist/{chunk-F6WVM437.js → chunk-WFQ5CLTR.js} +6 -3
- package/dist/chunk-WFQ5CLTR.js.map +1 -0
- package/dist/{chunk-BXCPJJYM.js → chunk-XPKN3QWY.js} +24 -6
- package/dist/chunk-XPKN3QWY.js.map +1 -0
- package/dist/chunk-YQNSZKKT.js +822 -0
- package/dist/chunk-YQNSZKKT.js.map +1 -0
- package/dist/{chunk-GEXP5IOF.js → chunk-ZA575VLF.js} +21 -8
- package/dist/chunk-ZA575VLF.js.map +1 -0
- package/dist/{claude-H33OQMXO.js → claude-6H36IBHO.js} +4 -2
- package/dist/{cleanup-BRUAINKE.js → cleanup-77U5ATYI.js} +20 -16
- package/dist/cleanup-77U5ATYI.js.map +1 -0
- package/dist/cli.js +361 -954
- package/dist/cli.js.map +1 -1
- package/dist/commit-ONRXU67O.js +237 -0
- package/dist/commit-ONRXU67O.js.map +1 -0
- package/dist/{compile-ULNO5F7Q.js → compile-CT7IR7O2.js} +9 -9
- package/dist/{contribute-Q6GX6AXK.js → contribute-GXKOIA42.js} +5 -5
- package/dist/{dev-server-4RCDJ5MU.js → dev-server-UKAPBGUR.js} +22 -74
- package/dist/dev-server-UKAPBGUR.js.map +1 -0
- package/dist/{feedback-O4Q55SVS.js → feedback-K3A4QUSG.js} +10 -10
- package/dist/{git-FVMGBHC2.js → git-ENLT2VNI.js} +6 -4
- package/dist/hooks/iloom-hook.js +30 -2
- package/dist/{ignite-VHV65WEZ.js → ignite-YUAOJ5PP.js} +20 -20
- package/dist/ignite-YUAOJ5PP.js.map +1 -0
- package/dist/index.d.ts +71 -27
- package/dist/index.js +196 -266
- package/dist/index.js.map +1 -1
- package/dist/init-XQQMFDM6.js +21 -0
- package/dist/{lint-5JMCWE4Y.js → lint-HAVU4U34.js} +9 -9
- package/dist/mcp/issue-management-server.js +359 -13
- package/dist/mcp/issue-management-server.js.map +1 -1
- package/dist/mcp/recap-server.js +13 -4
- package/dist/mcp/recap-server.js.map +1 -1
- package/dist/{open-WHVUYGPY.js → open-QI63XQ4F.js} +25 -76
- package/dist/open-QI63XQ4F.js.map +1 -0
- package/dist/{projects-SA76I4TZ.js → projects-TWY4RT2Z.js} +11 -4
- package/dist/projects-TWY4RT2Z.js.map +1 -0
- package/dist/prompts/init-prompt.txt +119 -51
- package/dist/prompts/issue-prompt.txt +132 -63
- package/dist/prompts/pr-prompt.txt +3 -3
- package/dist/prompts/regular-prompt.txt +16 -18
- package/dist/prompts/session-summary-prompt.txt +13 -13
- package/dist/{rebase-Y4AS6LQW.js → rebase-QYCRF7JG.js} +53 -8
- package/dist/rebase-QYCRF7JG.js.map +1 -0
- package/dist/{recap-VOOUXOGP.js → recap-ZKGHZCX6.js} +6 -6
- package/dist/{run-NCRK5NPR.js → run-YDVYORT2.js} +25 -76
- package/dist/run-YDVYORT2.js.map +1 -0
- package/dist/schema/settings.schema.json +14 -3
- package/dist/{shell-SBLXVOVJ.js → shell-2NNSIU34.js} +6 -6
- package/dist/{summary-CVFAMDOJ.js → summary-G6L3VAKK.js} +11 -10
- package/dist/{summary-CVFAMDOJ.js.map → summary-G6L3VAKK.js.map} +1 -1
- package/dist/{test-3KIVXI6J.js → test-75WAA6DU.js} +9 -9
- package/dist/{test-git-ZB6AGGRW.js → test-git-E2BLXR6M.js} +4 -4
- package/dist/{test-prefix-FBGXKMPA.js → test-prefix-A7JGGYAA.js} +4 -4
- package/dist/{test-webserver-YVQD42W6.js → test-webserver-NRMGT2HB.js} +29 -8
- package/dist/test-webserver-NRMGT2HB.js.map +1 -0
- package/package.json +3 -1
- package/dist/ClaudeContextManager-6J2EB4QU.js +0 -14
- package/dist/ClaudeService-O2PB22GX.js +0 -13
- package/dist/PRManager-GB3FOJ2W.js +0 -14
- package/dist/chunk-2A7WQKBE.js.map +0 -1
- package/dist/chunk-6YSFTPKW.js.map +0 -1
- package/dist/chunk-7Q66W4OH.js.map +0 -1
- package/dist/chunk-AEIMYF4P.js.map +0 -1
- package/dist/chunk-BXCPJJYM.js.map +0 -1
- package/dist/chunk-CFUWQHCJ.js.map +0 -1
- package/dist/chunk-F6WVM437.js.map +0 -1
- package/dist/chunk-GEXP5IOF.js.map +0 -1
- package/dist/chunk-I75JMBNB.js.map +0 -1
- package/dist/chunk-K7SEEHKO.js.map +0 -1
- package/dist/chunk-VDA5JMB4.js.map +0 -1
- package/dist/chunk-VU3QMIP2.js.map +0 -1
- package/dist/chunk-W6WVRHJ6.js +0 -251
- package/dist/chunk-W6WVRHJ6.js.map +0 -1
- package/dist/cleanup-BRUAINKE.js.map +0 -1
- package/dist/dev-server-4RCDJ5MU.js.map +0 -1
- package/dist/ignite-VHV65WEZ.js.map +0 -1
- package/dist/init-UTYRHNJJ.js +0 -21
- package/dist/open-WHVUYGPY.js.map +0 -1
- package/dist/projects-SA76I4TZ.js.map +0 -1
- package/dist/rebase-Y4AS6LQW.js.map +0 -1
- package/dist/run-NCRK5NPR.js.map +0 -1
- package/dist/test-webserver-YVQD42W6.js.map +0 -1
- /package/dist/{BranchNamingService-B5PVRR7F.js.map → BranchNamingService-FLPUUFOB.js.map} +0 -0
- /package/dist/{ClaudeContextManager-6J2EB4QU.js.map → ClaudeContextManager-KE5TBZVZ.js.map} +0 -0
- /package/dist/{ClaudeService-O2PB22GX.js.map → ClaudeService-CRSETT3A.js.map} +0 -0
- /package/dist/{GitHubService-S2OGUTDR.js.map → GitHubService-O7U4UQ7N.js.map} +0 -0
- /package/dist/{LoomLauncher-5LFM4LXB.js.map → LoomLauncher-NL65LSKP.js.map} +0 -0
- /package/dist/{MetadataManager-DFI73J3G.js.map → MetadataManager-XJ2YB762.js.map} +0 -0
- /package/dist/{PRManager-GB3FOJ2W.js.map → PRManager-2ABCWXHW.js.map} +0 -0
- /package/dist/{ProjectCapabilityDetector-S5FLNCFI.js.map → ProjectCapabilityDetector-IA56AUE6.js.map} +0 -0
- /package/dist/{PromptTemplateManager-C3DK6XZL.js.map → PromptTemplateManager-7L3HJQQU.js.map} +0 -0
- /package/dist/{SettingsManager-35F5RUJH.js.map → SettingsManager-YU4VYPTW.js.map} +0 -0
- /package/dist/{build-FJVYP7EV.js.map → build-HQ5HGA3T.js.map} +0 -0
- /package/dist/{chunk-UQIXZ3BA.js.map → chunk-5V74K5ZA.js.map} +0 -0
- /package/dist/{chunk-7WANFUIK.js.map → chunk-6TL3BYH6.js.map} +0 -0
- /package/dist/{chunk-ZPSTA5PR.js.map → chunk-7GLZVDPQ.js.map} +0 -0
- /package/dist/{chunk-64O2UIWO.js.map → chunk-AFRICMSW.js.map} +0 -0
- /package/dist/{chunk-5TXLVEXT.js.map → chunk-C3AKFAIR.js.map} +0 -0
- /package/dist/{chunk-TRQ76ISK.js.map → chunk-ELJKYFSH.js.map} +0 -0
- /package/dist/{chunk-LVBRMTE6.js.map → chunk-FEAJR6PN.js.map} +0 -0
- /package/dist/{chunk-7HIRPCKU.js.map → chunk-HVQNVRAF.js.map} +0 -0
- /package/dist/{chunk-6U6VI4SZ.js.map → chunk-KVS4XGBQ.js.map} +0 -0
- /package/dist/{chunk-SN3Z6EZO.js.map → chunk-N7FVXZNI.js.map} +0 -0
- /package/dist/{chunk-AXX3QIKK.js.map → chunk-RD7I2Q2F.js.map} +0 -0
- /package/dist/{chunk-EK3XCAAS.js.map → chunk-UDRZY65Y.js.map} +0 -0
- /package/dist/{chunk-3PT7RKL5.js.map → chunk-USJSNHGG.js.map} +0 -0
- /package/dist/{claude-H33OQMXO.js.map → claude-6H36IBHO.js.map} +0 -0
- /package/dist/{compile-ULNO5F7Q.js.map → compile-CT7IR7O2.js.map} +0 -0
- /package/dist/{contribute-Q6GX6AXK.js.map → contribute-GXKOIA42.js.map} +0 -0
- /package/dist/{feedback-O4Q55SVS.js.map → feedback-K3A4QUSG.js.map} +0 -0
- /package/dist/{git-FVMGBHC2.js.map → git-ENLT2VNI.js.map} +0 -0
- /package/dist/{init-UTYRHNJJ.js.map → init-XQQMFDM6.js.map} +0 -0
- /package/dist/{lint-5JMCWE4Y.js.map → lint-HAVU4U34.js.map} +0 -0
- /package/dist/{recap-VOOUXOGP.js.map → recap-ZKGHZCX6.js.map} +0 -0
- /package/dist/{shell-SBLXVOVJ.js.map → shell-2NNSIU34.js.map} +0 -0
- /package/dist/{test-3KIVXI6J.js.map → test-75WAA6DU.js.map} +0 -0
- /package/dist/{test-git-ZB6AGGRW.js.map → test-git-E2BLXR6M.js.map} +0 -0
- /package/dist/{test-prefix-FBGXKMPA.js.map → test-prefix-A7JGGYAA.js.map} +0 -0
|
@@ -7,6 +7,35 @@
|
|
|
7
7
|
|
|
8
8
|
**If NO to all → IMMEDIATELY decline and redirect to exit session**
|
|
9
9
|
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 🍴 FORK CONTRIBUTOR RULE - APPLIES TO ALL FILE DECISIONS
|
|
13
|
+
|
|
14
|
+
**CRITICAL: Check this FIRST before recommending ANY iloom configuration file.**
|
|
15
|
+
|
|
16
|
+
**Fork Detection Check:**
|
|
17
|
+
If BOTH "origin" AND "upstream" git remotes are detected → This is a FORK.
|
|
18
|
+
|
|
19
|
+
**When Fork Detected:**
|
|
20
|
+
ALL iloom configuration files should default to their `.local` variants:
|
|
21
|
+
- `settings.local.json` (NOT `settings.json`)
|
|
22
|
+
- `package.iloom.local.json` (NOT `package.iloom.json`)
|
|
23
|
+
|
|
24
|
+
**Why:**
|
|
25
|
+
- Local variants are globally gitignored and won't appear in PRs to upstream
|
|
26
|
+
- Prevents personal iloom configuration from polluting upstream repository
|
|
27
|
+
- Your code changes should be the only thing in your PRs - not iloom settings
|
|
28
|
+
|
|
29
|
+
**How to Apply:**
|
|
30
|
+
1. At the START of any configuration session, check for fork pattern
|
|
31
|
+
2. If fork detected, set mental "fork mode" flag for the entire session
|
|
32
|
+
3. When ANY file creation/recommendation is made, default to `.local` variant
|
|
33
|
+
4. Remind the user why local files are recommended for forks
|
|
34
|
+
|
|
35
|
+
**This rule supersedes other file location recommendations when fork is detected.**
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
10
39
|
## 🚫 FILE ACCESS RULES - STRICTLY ENFORCE
|
|
11
40
|
|
|
12
41
|
**SETTINGS FILES (.iloom/settings.json and .iloom/settings.local.json):**
|
|
@@ -67,7 +96,7 @@ When the documentation below and the settings schema conflict, ALWAYS follow the
|
|
|
67
96
|
|
|
68
97
|
### Main Project Documentation
|
|
69
98
|
|
|
70
|
-
README_CONTENT
|
|
99
|
+
{{README_CONTENT}}
|
|
71
100
|
|
|
72
101
|
---
|
|
73
102
|
|
|
@@ -130,7 +159,7 @@ The following JSON Schema defines valid iloom settings:
|
|
|
130
159
|
},
|
|
131
160
|
"noVerify": {
|
|
132
161
|
"type": "boolean",
|
|
133
|
-
"description": "Skip pre-commit hooks (--no-verify) when committing during finish
|
|
162
|
+
"description": "Skip pre-commit hooks (--no-verify) when committing during commit and finish workflows"
|
|
134
163
|
},
|
|
135
164
|
"startIde": {
|
|
136
165
|
"type": "boolean",
|
|
@@ -175,7 +204,7 @@ The following JSON Schema defines valid iloom settings:
|
|
|
175
204
|
},
|
|
176
205
|
"noVerify": {
|
|
177
206
|
"type": "boolean",
|
|
178
|
-
"description": "Skip pre-commit hooks (--no-verify) when committing during finish
|
|
207
|
+
"description": "Skip pre-commit hooks (--no-verify) when committing during commit and finish workflows"
|
|
179
208
|
},
|
|
180
209
|
"startIde": {
|
|
181
210
|
"type": "boolean",
|
|
@@ -220,7 +249,7 @@ The following JSON Schema defines valid iloom settings:
|
|
|
220
249
|
},
|
|
221
250
|
"noVerify": {
|
|
222
251
|
"type": "boolean",
|
|
223
|
-
"description": "Skip pre-commit hooks (--no-verify) when committing during finish
|
|
252
|
+
"description": "Skip pre-commit hooks (--no-verify) when committing during commit and finish workflows"
|
|
224
253
|
},
|
|
225
254
|
"startIde": {
|
|
226
255
|
"type": "boolean",
|
|
@@ -324,6 +353,17 @@ The following JSON Schema defines valid iloom settings:
|
|
|
324
353
|
"capabilities": {
|
|
325
354
|
"type": "object",
|
|
326
355
|
"properties": {
|
|
356
|
+
"capabilities": {
|
|
357
|
+
"type": "array",
|
|
358
|
+
"items": {
|
|
359
|
+
"type": "string",
|
|
360
|
+
"enum": [
|
|
361
|
+
"cli",
|
|
362
|
+
"web"
|
|
363
|
+
]
|
|
364
|
+
},
|
|
365
|
+
"description": "Explicitly declared project capabilities (auto-detected if not specified)"
|
|
366
|
+
},
|
|
327
367
|
"web": {
|
|
328
368
|
"type": "object",
|
|
329
369
|
"properties": {
|
|
@@ -509,7 +549,7 @@ The following JSON Schema defines valid iloom settings:
|
|
|
509
549
|
}
|
|
510
550
|
```
|
|
511
551
|
|
|
512
|
-
{{#
|
|
552
|
+
{{#if SETTINGS_JSON}}
|
|
513
553
|
## Existing Configuration (Shared)
|
|
514
554
|
|
|
515
555
|
**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 +557,11 @@ The following JSON Schema defines valid iloom settings:
|
|
|
517
557
|
The user has shared configuration at `.iloom/settings.json`:
|
|
518
558
|
|
|
519
559
|
```json
|
|
520
|
-
SETTINGS_JSON
|
|
560
|
+
{{SETTINGS_JSON}}
|
|
521
561
|
```
|
|
522
|
-
{{/
|
|
562
|
+
{{/if}}
|
|
523
563
|
|
|
524
|
-
{{#
|
|
564
|
+
{{#if SETTINGS_LOCAL_JSON}}
|
|
525
565
|
## Existing Configuration (Local)
|
|
526
566
|
|
|
527
567
|
**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 +569,11 @@ SETTINGS_JSON
|
|
|
529
569
|
The user has local configuration at `.iloom/settings.local.json`:
|
|
530
570
|
|
|
531
571
|
```json
|
|
532
|
-
SETTINGS_LOCAL_JSON
|
|
572
|
+
{{SETTINGS_LOCAL_JSON}}
|
|
533
573
|
```
|
|
534
|
-
{{/
|
|
574
|
+
{{/if}}
|
|
535
575
|
|
|
536
|
-
{{#
|
|
576
|
+
{{#if SETTINGS_GLOBAL_JSON}}
|
|
537
577
|
## Global Configuration (User-Level)
|
|
538
578
|
|
|
539
579
|
**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 +581,9 @@ SETTINGS_LOCAL_JSON
|
|
|
541
581
|
The user has global configuration at `~/.config/iloom-ai/settings.json`:
|
|
542
582
|
|
|
543
583
|
```json
|
|
544
|
-
SETTINGS_GLOBAL_JSON
|
|
584
|
+
{{SETTINGS_GLOBAL_JSON}}
|
|
545
585
|
```
|
|
546
|
-
{{/
|
|
586
|
+
{{/if}}
|
|
547
587
|
|
|
548
588
|
## Settings Hierarchy & Recommendations
|
|
549
589
|
|
|
@@ -565,15 +605,15 @@ SETTINGS_GLOBAL_JSON
|
|
|
565
605
|
- Machine-specific overrides (port conflicts, local database URLs)
|
|
566
606
|
- Personal preferences that differ from team defaults
|
|
567
607
|
|
|
568
|
-
{{#
|
|
608
|
+
{{#if SETTINGS_JSON}}{{#if SETTINGS_LOCAL_JSON}}
|
|
569
609
|
**Configuration Priority**: Local settings (settings.local.json) override shared settings (settings.json) when both exist.
|
|
570
|
-
{{/
|
|
610
|
+
{{/if}}{{/if}}
|
|
571
611
|
|
|
572
|
-
{{#
|
|
612
|
+
{{#if SETTINGS_JSON}}{{#if SETTINGS_LOCAL_JSON}}
|
|
573
613
|
You should present the combined configuration as defaults when asking questions, with local values taking precedence over shared values.
|
|
574
|
-
{{/
|
|
614
|
+
{{/if}}{{/if}}
|
|
575
615
|
|
|
576
|
-
{{#
|
|
616
|
+
{{#if SETTINGS_JSON}}{{#if SETTINGS_LOCAL_JSON}}{{/if}}{{/if}}
|
|
577
617
|
|
|
578
618
|
## Configuration Workflow
|
|
579
619
|
|
|
@@ -583,14 +623,14 @@ Follow these steps to guide the user through configuration:
|
|
|
583
623
|
|
|
584
624
|
**BEFORE doing anything else, extract current values from existing configuration:**
|
|
585
625
|
|
|
586
|
-
{{#
|
|
626
|
+
{{#if SETTINGS_JSON}}{{#if SETTINGS_LOCAL_JSON}}
|
|
587
627
|
Parse both settings.json and settings.local.json. Merge them with local taking precedence over shared.
|
|
588
|
-
{{/
|
|
628
|
+
{{/if}}{{/if}}
|
|
589
629
|
|
|
590
|
-
{{#
|
|
591
|
-
{{#
|
|
592
|
-
{{#
|
|
593
|
-
{{/
|
|
630
|
+
{{#if SETTINGS_JSON}}{{#if SETTINGS_LOCAL_JSON}}{{/if}}
|
|
631
|
+
{{#if SETTINGS_LOCAL_JSON}}Parse settings.local.json to get current values.{{/if}}
|
|
632
|
+
{{#if SETTINGS_JSON}}Parse settings.json to get current values.{{/if}}
|
|
633
|
+
{{/if}}
|
|
594
634
|
|
|
595
635
|
Extract these current values if they exist:
|
|
596
636
|
- `currentMainBranch` from `mainBranch` field (default: "main")
|
|
@@ -615,7 +655,7 @@ Base Port: [currentBasePort or "3000 (default)"]
|
|
|
615
655
|
IDE: [currentIdeType or "vscode (default)"]
|
|
616
656
|
Issue Tracker: [currentIssueProvider or "github (default)"]
|
|
617
657
|
Linear Team ID: [currentLinearTeamId] (only if currentIssueProvider == linear)
|
|
618
|
-
{{#
|
|
658
|
+
{{#if MULTIPLE_REMOTES}}GitHub Remote: [currentGitHubRemote] (only if currentIssueProvider == github){{/if}}
|
|
619
659
|
```
|
|
620
660
|
|
|
621
661
|
**Then ask the user what they want to do:**
|
|
@@ -629,9 +669,9 @@ Linear Team ID: [currentLinearTeamId] (only if currentIssueProvider == linear)
|
|
|
629
669
|
|
|
630
670
|
**Based on their answer:**
|
|
631
671
|
- **Modify existing settings** → Proceed to Phase 1 to update settings
|
|
632
|
-
{{#
|
|
672
|
+
{{#if MULTIPLE_REMOTES}}
|
|
633
673
|
- **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
|
-
{{/
|
|
674
|
+
{{/if}}
|
|
635
675
|
- **Add advanced configuration** → Skip to Phase 9 to help with advanced options
|
|
636
676
|
- **Start fresh** → Proceed to Phase 1 to reconfigure from scratch
|
|
637
677
|
- **Nothing/Exit** → Show Phase 9 wrap-up message and end session
|
|
@@ -645,7 +685,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
|
|
|
645
685
|
**Create a single AskUserQuestion call with these questions:**
|
|
646
686
|
|
|
647
687
|
1. **Main Branch**
|
|
648
|
-
- Question format: "What is your main/primary branch name?{{#
|
|
688
|
+
- Question format: "What is your main/primary branch name?{{#if currentMainBranch}} (Currently: [currentMainBranch]){{/if}}"
|
|
649
689
|
- Options (as examples, user can type "Other" to provide custom):
|
|
650
690
|
- "main" - Standard default
|
|
651
691
|
- "master" - Legacy default
|
|
@@ -655,7 +695,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
|
|
|
655
695
|
- Store answer as: `mainBranch`
|
|
656
696
|
|
|
657
697
|
2. **Worktree Prefix**
|
|
658
|
-
- Question format: "What prefix should iloom use for worktree directories?{{#
|
|
698
|
+
- Question format: "What prefix should iloom use for worktree directories?{{#if currentWorktreePrefix}} (Currently: [currentWorktreePrefix]){{/if}} Leave empty to use default (<repo-name>-looms)."
|
|
659
699
|
- Options (as examples):
|
|
660
700
|
- Use default prefix (recommened)
|
|
661
701
|
- "looms" - Simple 'looms-' prefix
|
|
@@ -666,7 +706,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
|
|
|
666
706
|
- Note: If user specifies default, omit this field from settings, it they say empty, add an empty string to the settings
|
|
667
707
|
|
|
668
708
|
3. **Permission Mode for Issue Workflows**
|
|
669
|
-
- Question format: "What permission mode should Claude use when working on issues?{{#
|
|
709
|
+
- Question format: "What permission mode should Claude use when working on issues?{{#if currentPermissionMode}} (Currently: [currentPermissionMode]){{/if}}"
|
|
670
710
|
- Options:
|
|
671
711
|
- "default" - Use Claude Code's default behavior
|
|
672
712
|
- "acceptEdits" - Claude executes with your confirmation (recommended)
|
|
@@ -677,7 +717,7 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
|
|
|
677
717
|
- Store answer as: `workflows.issue.permissionMode` - NOTE: this is a personal preference - recommend it be stored in the gitignored local settings file.
|
|
678
718
|
|
|
679
719
|
4. **Base Port**
|
|
680
|
-
- Question format: "What base port should web development servers use?{{#
|
|
720
|
+
- Question format: "What base port should web development servers use?{{#if currentBasePort}} (Currently: [currentBasePort]){{/if}}"
|
|
681
721
|
- Options (as examples):
|
|
682
722
|
- "3000" - Common Node.js default
|
|
683
723
|
- "8000" - Common Python default
|
|
@@ -692,11 +732,13 @@ Use AskUserQuestion to ask ALL local development settings questions **IN A SINGL
|
|
|
692
732
|
- Users can select "Other" on any question to provide custom input
|
|
693
733
|
- Process all answers at once when the user submits
|
|
694
734
|
|
|
695
|
-
{{#
|
|
735
|
+
{{#if NO_PACKAGE_JSON}}
|
|
696
736
|
### Phase 1.5: Framework Detection (Non-Node.js Project) - DO NOT SKIP
|
|
697
737
|
|
|
698
738
|
iloom needs to detect the project's language and framework to configure build/test/dev scripts.
|
|
699
739
|
|
|
740
|
+
**IMPORTANT - Fork Mode Reminder:** If fork was detected earlier (origin + upstream remotes), pass this context to the framework detector. The detector should recommend `package.iloom.local.json` instead of `package.iloom.json` for fork contributors.
|
|
741
|
+
|
|
700
742
|
**Invoke the framework detector agent** using the `iloom-framework-detector` agent:
|
|
701
743
|
|
|
702
744
|
The agent will:
|
|
@@ -756,7 +798,7 @@ If the framework detector did not set capabilities, or if you need to ask the us
|
|
|
756
798
|
- No clear indicators -> ask user explicitly
|
|
757
799
|
|
|
758
800
|
After the framework detector agent completes (and capabilities are set), proceed to Phase 2.
|
|
759
|
-
{{/
|
|
801
|
+
{{/if}}
|
|
760
802
|
|
|
761
803
|
### Phase 2: Tooling Configuration
|
|
762
804
|
|
|
@@ -764,12 +806,12 @@ This phase configures external tooling integrations. Use AskUserQuestion to gath
|
|
|
764
806
|
|
|
765
807
|
**Step 1: Issue Tracker Provider**
|
|
766
808
|
|
|
767
|
-
{{#
|
|
809
|
+
{{#if MULTIPLE_REMOTES}}
|
|
768
810
|
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
|
-
{{/
|
|
811
|
+
{{/if}}
|
|
770
812
|
|
|
771
813
|
1. **Issue Tracker Provider**
|
|
772
|
-
- Question format: "Which issue tracker do you use?{{#
|
|
814
|
+
- Question format: "Which issue tracker do you use?{{#if currentIssueProvider}} (Currently: [currentIssueProvider]){{/if}}"
|
|
773
815
|
- Options:
|
|
774
816
|
- "github" - GitHub Issues (default)
|
|
775
817
|
- "linear" - Linear Issues
|
|
@@ -789,11 +831,11 @@ Based on the answer to Step 1, ask the appropriate follow-up questions:
|
|
|
789
831
|
|
|
790
832
|
**If GitHub was selected:**
|
|
791
833
|
|
|
792
|
-
{{#
|
|
834
|
+
{{#if MULTIPLE_REMOTES}}
|
|
793
835
|
This repository has multiple git remotes detected. iloom needs to know which remote's GitHub repository to use for creating and reading issues.
|
|
794
836
|
|
|
795
837
|
**Detected remotes:**
|
|
796
|
-
REMOTES_INFO
|
|
838
|
+
{{REMOTES_INFO}}
|
|
797
839
|
|
|
798
840
|
2. **GitHub Remote** (only ask if GitHub is selected)
|
|
799
841
|
- Question format: "Which remote should iloom use for GitHub issue operations?"
|
|
@@ -801,20 +843,20 @@ REMOTES_INFO
|
|
|
801
843
|
- **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
844
|
- For other multi-remote scenarios: Default to "origin" if it exists, otherwise the first remote
|
|
803
845
|
- Store answer as: `issueManagement.github.remote`
|
|
804
|
-
{{/
|
|
846
|
+
{{/if}}
|
|
805
847
|
|
|
806
|
-
{{#
|
|
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
|
-
{{/
|
|
848
|
+
{{#if SINGLE_REMOTE}}
|
|
849
|
+
**Note:** Only one remote detected ({{SINGLE_REMOTE_NAME}} pointing to {{SINGLE_REMOTE_URL}}). iloom will use this for GitHub operations. No additional configuration needed.
|
|
850
|
+
{{/if}}
|
|
809
851
|
|
|
810
|
-
{{#
|
|
852
|
+
{{#if NO_REMOTES}}
|
|
811
853
|
**Warning:** No git remotes detected. The user will need to configure a remote before using iloom's GitHub features.
|
|
812
|
-
{{/
|
|
854
|
+
{{/if}}
|
|
813
855
|
|
|
814
856
|
**If Linear was selected:**
|
|
815
857
|
|
|
816
858
|
2. **Linear Team ID** (only ask if issue provider is "linear")
|
|
817
|
-
- Question format: "What is your Linear team ID/key?{{#
|
|
859
|
+
- Question format: "What is your Linear team ID/key?{{#if currentLinearTeamId}} (Currently: [currentLinearTeamId]){{/if}}"
|
|
818
860
|
- Options (as examples):
|
|
819
861
|
- "ENG" - Engineering team
|
|
820
862
|
- "PLAT" - Platform team
|
|
@@ -840,7 +882,7 @@ REMOTES_INFO
|
|
|
840
882
|
**Step 3: IDE Selection**
|
|
841
883
|
|
|
842
884
|
4. **IDE Selection**
|
|
843
|
-
- Question format: "Which IDE should iloom launch when starting a loom?{{#
|
|
885
|
+
- Question format: "Which IDE should iloom launch when starting a loom?{{#if currentIdeType}} (Currently: [currentIdeType]){{/if}}"
|
|
844
886
|
- Options:
|
|
845
887
|
- "vscode" - Visual Studio Code (default)
|
|
846
888
|
- "cursor" - Cursor AI editor
|
|
@@ -857,7 +899,7 @@ REMOTES_INFO
|
|
|
857
899
|
**Step 4: Merge Mode** (only ask if multiple remotes detected OR user requests advanced config)
|
|
858
900
|
|
|
859
901
|
5. **Merge Mode**
|
|
860
|
-
- Question format: "How should iloom handle finishing work?{{#
|
|
902
|
+
- Question format: "How should iloom handle finishing work?{{#if currentMergeMode}} (Currently: [currentMergeMode]){{/if}}"
|
|
861
903
|
- Options:
|
|
862
904
|
- "local" - Merge changes locally (traditional workflow)
|
|
863
905
|
- "github-pr" - Create GitHub PR when finishing (for PR-based workflows)
|
|
@@ -884,7 +926,7 @@ REMOTES_INFO
|
|
|
884
926
|
|
|
885
927
|
After Phase 2, handle color settings based on gitignore status.
|
|
886
928
|
|
|
887
|
-
Analyis of system: Is VSCode Settings ignore? VSCODE_SETTINGS_GITIGNORED
|
|
929
|
+
Analyis of system: Is VSCode Settings ignore? {{VSCODE_SETTINGS_GITIGNORED}}
|
|
888
930
|
|
|
889
931
|
**IMPORTANT DISTINCTION:**
|
|
890
932
|
- Schema defaults are: terminal=true, vscode=false (for safety)
|
|
@@ -932,7 +974,7 @@ Tooling Configuration (Phase 2):
|
|
|
932
974
|
Issue Tracker: [value]
|
|
933
975
|
Linear Team ID: [value] (only if issue tracker is Linear)
|
|
934
976
|
Linear API Token: [configured/not configured] (only if issue tracker is Linear - never show actual token)
|
|
935
|
-
{{#
|
|
977
|
+
{{#if MULTIPLE_REMOTES}}GitHub Remote: [value] (only if issue tracker is GitHub){{/if}}
|
|
936
978
|
IDE: [value or "vscode (default)"]
|
|
937
979
|
Merge Mode: [value] (only if configured)
|
|
938
980
|
```
|
|
@@ -948,7 +990,7 @@ Then ask: "Does this configuration look correct?"
|
|
|
948
990
|
|
|
949
991
|
### Phase 4: Choose Configuration File
|
|
950
992
|
|
|
951
|
-
**Fork/Contributor Check:** If "GitHub Remote Configuration" shows both "origin" and "upstream" remotes (classic fork pattern), display: "
|
|
993
|
+
**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
994
|
|
|
953
995
|
**CRITICAL: You MUST ask the user where to save the configuration. DO NOT make assumptions or decide for them.**
|
|
954
996
|
|
|
@@ -962,7 +1004,7 @@ Ask the user: "Where should this configuration be saved?
|
|
|
962
1004
|
- **Recommend Project for**: Main branch, worktree prefix, base port (when standardized for the team)
|
|
963
1005
|
- **Recommend Local for**: Machine-specific overrides, personal preferences that differ from team defaults
|
|
964
1006
|
|
|
965
|
-
**Fork/Contributor Note:** For fork setups,
|
|
1007
|
+
**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
1008
|
|
|
967
1009
|
**DO NOT:**
|
|
968
1010
|
- Assume what the user wants based on the type of setting
|
|
@@ -1390,6 +1432,32 @@ If users ask about specific configurations, help them add these sections to thei
|
|
|
1390
1432
|
- Running additional commands before/after the standard npm scripts
|
|
1391
1433
|
- Wrapping commands with environment variables or tools
|
|
1392
1434
|
|
|
1435
|
+
**Local Overrides for Fork Contributors:**
|
|
1436
|
+
|
|
1437
|
+
If you're contributing to a forked repository, save your customizations to `.iloom/package.iloom.local.json` instead of `package.iloom.json`. This file:
|
|
1438
|
+
- Is automatically added to global gitignore (won't appear in PRs)
|
|
1439
|
+
- Merges with package.iloom.json (local scripts override base scripts)
|
|
1440
|
+
- Is automatically copied to new looms
|
|
1441
|
+
|
|
1442
|
+
**When to use each file:**
|
|
1443
|
+
- `package.iloom.json` - Shared team configuration, committed to git
|
|
1444
|
+
- `package.iloom.local.json` - Personal overrides, never committed (gitignored globally)
|
|
1445
|
+
|
|
1446
|
+
Example `.iloom/package.iloom.local.json`:
|
|
1447
|
+
```json
|
|
1448
|
+
{
|
|
1449
|
+
"scripts": {
|
|
1450
|
+
"test": "pytest --my-local-options",
|
|
1451
|
+
"dev": "python -m mymodule --debug"
|
|
1452
|
+
}
|
|
1453
|
+
}
|
|
1454
|
+
```
|
|
1455
|
+
|
|
1456
|
+
This is especially useful when:
|
|
1457
|
+
- Working on a fork where upstream has different script requirements
|
|
1458
|
+
- Your local environment needs different commands than the team standard
|
|
1459
|
+
- You want to add debug flags or local-only tooling without affecting others
|
|
1460
|
+
|
|
1393
1461
|
## Important Notes
|
|
1394
1462
|
|
|
1395
1463
|
- **Validate ALL inputs** against the schema before writing files
|