以 install.js 產生並移除各平台轉接檔 #17
Notifications
Due Date
No due date set.
Depends on
#4 以 sdlc-plan 把口語需求轉成結構化需求議題
plugins/tea-sdlc
#25 以 npm 佈署並提供 tea-sdlc 指令
plugins/tea-sdlc
Reference: plugins/tea-sdlc#17
Reference in New Issue
Block a user
母議題
#1 — tea-sdlc:以 tea 驅動 SDLC 全流程的跨平台指令組
要做出什麼
使用者在任何一台機器上跑一次安裝,六個流程指令就在他裝了的每個 agent 平台上可用;換工具不必重寫流程。
安裝腳本偵測機器上裝了哪些平台,列出來讓使用者勾選(預設全勾),不在沒裝的平台留下孤兒目錄。也可以用參數直接指定安裝對象,供 CI 或腳本非互動使用。解除安裝只移除轉接檔,正本一動不動。
流程正本只有一份,改規則不會出現各平台版本分歧——轉接檔內容就是一行指向正本,路徑在產生時替換為絕對路徑。
支援 command 的四個平台產生 command 轉接檔,不支援的三個產生
SKILL.md轉接檔。所有 description 統一前綴「僅由 /sdlc-xxx 指令叫用。」,在支援關閉自動觸發的平台設對應旗標。已接受的取捨:三個平台無法關閉自動觸發,靠窄化 description 降低誤觸。不自動安裝 Node、tea 或任何執行環境,缺失時印出安裝指引並中止。
驗收標準
~/.claude/、~/.codex/、~/.config/opencode/、~/.omp/、~/.kiro/、~/.gemini/、.github/後列出勾選,預設全勾--platform a,b可非互動指定安裝對象--uninstall移除轉接檔且不更動流程正本SKILL.md轉接檔--uninstall後無殘留tea-sdlc status的platforms欄位:偵測到的平台、各平台已裝轉接檔數、以產生標記判定的過時狀態(自 #25 移入)npm update -g」與「移除要先tea-sdlc uninstall再npm rm -g」(自 #25 移入)阻擋於
已於 #36(merge commit
dcbd71c)交付,十一條驗收標準勾了九條。兩條未勾,都是刻意偏離,理由如下。未勾選 1:「轉接檔內容為一行指向正本,路徑於產生時替換為絕對路徑」。
被母議題 #25 的重新設計取代。#25 指出寫死路徑在用版本管理器管 Node 的機器上是壞的:fnm 把 Node 版號寫進全域安裝路徑,升一次 Node,七個平台的轉接檔會同時指向不存在的檔案,而使用者不會收到任何錯誤。實作改為轉接檔不持有路徑,只寫
tea-sdlc prompt --name <指令名> --adapter-version <版本>,正本位置由 PATH 上的tea-sdlc自己回推。此偏離已與需求提出者確認。未勾選 2:「缺少 Node/tea 等執行環境時印出安裝指引並中止,不自動安裝」。
同樣被 #25 推翻,其「前置檢查的分工」一節明寫:install 只跑第一層(執行環境)且只警告不中止——「缺 tea 完全不影響轉接檔產生,硬擋等於逼使用者為了裝 plugin 先去裝 tea」。實作照 #25:缺什麼會列在輸出的
missingBinaries與warning,但照樣把轉接檔裝好。「不自動安裝」這半條有守住,本工具不會替使用者裝任何東西。另一處字面差異:
--uninstall是子指令而非旗標。 #26 定義了install/uninstall/prompt/status四個子指令名,因此移除走tea-sdlc uninstall。該條驗收標準的實質(移除轉接檔且不更動流程正本)已達成並有測試覆蓋。若要把上述任一條改回字面規格,動的地方都很小。
實作已交付並合併(#36 /
dcbd71c),但本票無法關閉:Gitea 的相依機制擋下關閉動作(HTTP 412),因為本票阻擋於母議題 #25,而 #25 仍為開啟狀態(其底下的 #30 尚未完成)。待 #25 關閉後本票即可一併關閉;在那之前保持開啟,不代表還有工作未做。