Problem / 動機
Original text(使用者原話):
「我覺得 idd 可以新增這個功能,如果是 clone 別人的 repo 要給建議的話,預先設定是這樣,idd 擺放的位置可能有不同設定」
— Source: /idd-issue 互動,2026-06-26
目前 Step 0.5.E 的 fork-aware detection 只區分兩條路:E1 非 fork(直接用 origin + 寫 config,不詢問)、E2 fork(問 Upstream / Own fork / Both)。但有一種常見情境沒被涵蓋:clone 他人的 repo 當參考 / 教學 / 研究素材(origin owner ≠ 你、不是你的 fork、你沒有 push 權限)。
此情境目前的行為缺口:
- E1 把它當「不是 fork → 直接用 origin」,於是 issue 預設會被導向原作者的公開 repo(GitHub 公開 repo 任何登入者都能開 issue)→ 容易誤污染對方 issue tracker。
- IDD 會把
.claude/.idd/local.json 寫進對方的 working tree,使用者得自己想到要用 .git/info/exclude 才不會把工具檔留在別人 repo 裡。
- 完全沒有 guidance 告訴使用者「config 該擺哪、用哪種 ignore 機制」。
本 session 實例:clone kaochenlong/spectra-app + kaochenlong/sherly-app(HTTPS、無 push 權限)。手動設了 .claude/.idd/local.json(pr_policy: never)+ 在 .git/info/exclude 擋掉 .claude/.idd/,才避免污染原作者 repo。這套推導應該變成 IDD 內建建議。
Type
feature / enhancement
Expected(提議行為)
新增「third-party clone」偵測 + 設定建議,接在 Step 0.5.E fork detection 旁:
1. 偵測 — origin owner ≠ gh api user login,AND 不是你擁有的 fork。更精準的訊號是無 push 權限:gh api repos/{owner}/{repo} --jq .permissions.push = false → 標記為 third-party clone。
2. Issue routing 建議(AskUserQuestion,類比 fork 三選項):
| 選項 |
target |
適合 |
| Upstream(原作者 repo) |
origin |
想直接回報 / 提問;提醒:公開可見 |
| 自己的 tracking repo |
you/xxx |
issue 進你名下,原作者 repo 完全不碰(接既有 candidates 機制) |
| Local-only |
— |
不開 GitHub issue |
3. Config 擺放 / ignore 策略矩陣(對應「idd 擺放的位置可能有不同設定」):
| 情境 |
config 放哪 |
ignore 機制 |
| 自己的 repo |
.claude/.idd/local.json,可 commit 或全域忽略 |
視團隊慣例 |
| 他人 clone(本 feature) |
.claude/.idd/local.json(local) |
.git/info/exclude(per-clone、不 commit、不 push、不動對方 tracked 檔 / .gitignore) |
| monorepo / 巢狀 |
walk-up config 放非 git 上層(如 references/x/.claude/.idd/) |
同上 |
預設(third-party clone)→ 自動建議把 .claude/.idd/ 寫進 .git/info/exclude,而非改對方 .gitignore(改 tracked .gitignore 等於在對方 history 疊 commit = 污染)。
4. pr_policy 預設 — third-party clone 無 push 權限 → 預設 pr_policy: never(local direct-commit),避免 idd-implement 嘗試 push 失敗。
Actual(現況)
- Step 0.5.E E1 對「別人的 clone」與「自己的新 repo」一視同仁,直接用 origin、不給任何 ignore / routing 建議。
- IDD config 預設寫進 cwd 的
.claude/.idd/,在他人 repo 內會成為 untracked 噪音,且無防呆阻止被 git add 進對方 working tree。
Impact
- 降低「不小心把 IDD 工具檔留在 / issue 開到別人 repo」的風險(reference / 教學 repo 很常見)。
- 把本 session 手動推導出的 best practice(
.git/info/exclude + tracking 分流 + pr_policy: never)變成 IDD 內建 guidance,不用每次重想。
- 與既有 fork-aware detection 正交:fork detection 處理「你的 fork」,本 feature 處理「純粹別人的 clone」。
Open questions
- 判準用 owner mismatch 還是 push permission?(push permission 更準,但多一次 API call)
- tracking repo 分流要不要自動建 / 沿用既有?(可接 config-protocol 的
candidates 機制)
- 寫
.git/info/exclude 要不要做成跟 Stage 4.5 carve-out 同款的 idempotent helper?
相關
Problem / 動機
目前 Step 0.5.E 的 fork-aware detection 只區分兩條路:E1 非 fork(直接用 origin + 寫 config,不詢問)、E2 fork(問 Upstream / Own fork / Both)。但有一種常見情境沒被涵蓋:clone 他人的 repo 當參考 / 教學 / 研究素材(origin owner ≠ 你、不是你的 fork、你沒有 push 權限)。
此情境目前的行為缺口:
.claude/.idd/local.json寫進對方的 working tree,使用者得自己想到要用.git/info/exclude才不會把工具檔留在別人 repo 裡。本 session 實例:clone
kaochenlong/spectra-app+kaochenlong/sherly-app(HTTPS、無 push 權限)。手動設了.claude/.idd/local.json(pr_policy: never)+ 在.git/info/exclude擋掉.claude/.idd/,才避免污染原作者 repo。這套推導應該變成 IDD 內建建議。Type
feature / enhancement
Expected(提議行為)
新增「third-party clone」偵測 + 設定建議,接在 Step 0.5.E fork detection 旁:
1. 偵測 — origin owner ≠
gh api userlogin,AND 不是你擁有的 fork。更精準的訊號是無 push 權限:gh api repos/{owner}/{repo} --jq .permissions.push=false→ 標記為 third-party clone。2. Issue routing 建議(AskUserQuestion,類比 fork 三選項):
you/xxx3. Config 擺放 / ignore 策略矩陣(對應「idd 擺放的位置可能有不同設定」):
.claude/.idd/local.json,可 commit 或全域忽略.claude/.idd/local.json(local).git/info/exclude(per-clone、不 commit、不 push、不動對方 tracked 檔 /.gitignore)references/x/.claude/.idd/)預設(third-party clone)→ 自動建議把
.claude/.idd/寫進.git/info/exclude,而非改對方.gitignore(改 tracked.gitignore等於在對方 history 疊 commit = 污染)。4. pr_policy 預設 — third-party clone 無 push 權限 → 預設
pr_policy: never(local direct-commit),避免idd-implement嘗試 push 失敗。Actual(現況)
.claude/.idd/,在他人 repo 內會成為 untracked 噪音,且無防呆阻止被git add進對方 working tree。Impact
.git/info/exclude+ tracking 分流 +pr_policy: never)變成 IDD 內建 guidance,不用每次重想。Open questions
candidates機制).git/info/exclude要不要做成跟 Stage 4.5 carve-out 同款的 idempotent helper?相關
skills/idd-issue/SKILL.md)references/config-protocol.mdmechanism 4/5(cascading config + git remote fallback).claude/被 ignore」的問題,可共用偵測 helper)