以 install.js 產生並移除各平台轉接檔 #17

Closed
opened 2026-09-17 03:51:24 +00:00 by jiantw83 · 2 comments
Member

母議題

#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 移除轉接檔且不更動流程正本
  • 支援 command 的四個平台產生 command 轉接檔;不支援的三個產生 SKILL.md 轉接檔
  • 轉接檔內容為一行指向正本,路徑於產生時替換為絕對路徑
  • 所有 description 前綴為「僅由 /sdlc-xxx 指令叫用。」;支援關閉自動觸發的平台設定對應旗標
  • 缺少 Node/tea 等執行環境時印出安裝指引並中止,不自動安裝
  • 測試在臨時家目錄上驗證偵測、產生、--uninstall 後無殘留
  • README 更新為 tea-sdlc 的安裝/更新/移除說明
  • 補上 tea-sdlc status 的 platforms 欄位:偵測到的平台、各平台已裝轉接檔數、以產生標記判定的過時狀態(自 #25 移入)
  • README 補上更新/移除的完整指令表,明寫「不要用 npm update -g」與「移除要先 tea-sdlc uninstall 再 npm rm -g」(自 #25 移入)

阻擋於

  • #4 — 以 sdlc-plan 把口語需求轉成結構化需求議題
## 母議題 #1 — tea-sdlc:以 tea 驅動 SDLC 全流程的跨平台指令組 ## 要做出什麼 使用者在任何一台機器上跑一次安裝,六個流程指令就在他裝了的每個 agent 平台上可用;換工具不必重寫流程。 安裝腳本偵測機器上裝了哪些平台,列出來讓使用者勾選(預設全勾),不在沒裝的平台留下孤兒目錄。也可以用參數直接指定安裝對象,供 CI 或腳本非互動使用。解除安裝只移除轉接檔,正本一動不動。 流程正本只有一份,改規則不會出現各平台版本分歧——轉接檔內容就是一行指向正本,路徑在產生時替換為絕對路徑。 支援 command 的四個平台產生 command 轉接檔,不支援的三個產生 `SKILL.md` 轉接檔。所有 description 統一前綴「僅由 /sdlc-xxx 指令叫用。」,在支援關閉自動觸發的平台設對應旗標。已接受的取捨:三個平台無法關閉自動觸發,靠窄化 description 降低誤觸。 不自動安裝 Node、tea 或任何執行環境,缺失時印出安裝指引並中止。 ## 驗收標準 - [x] 偵測 `~/.claude/`、`~/.codex/`、`~/.config/opencode/`、`~/.omp/`、`~/.kiro/`、`~/.gemini/`、`.github/` 後列出勾選,預設全勾 - [x] `--platform a,b` 可非互動指定安裝對象 - [x] `--uninstall` 移除轉接檔且不更動流程正本 - [x] 支援 command 的四個平台產生 command 轉接檔;不支援的三個產生 `SKILL.md` 轉接檔 - [ ] 轉接檔內容為一行指向正本,路徑於產生時替換為絕對路徑 - [x] 所有 description 前綴為「僅由 /sdlc-xxx 指令叫用。」;支援關閉自動觸發的平台設定對應旗標 - [ ] 缺少 Node/tea 等執行環境時印出安裝指引並中止,不自動安裝 - [x] 測試在臨時家目錄上驗證偵測、產生、`--uninstall` 後無殘留 - [x] README 更新為 tea-sdlc 的安裝/更新/移除說明 - [x] 補上 `tea-sdlc status` 的 `platforms` 欄位:偵測到的平台、各平台已裝轉接檔數、以產生標記判定的過時狀態(自 #25 移入) - [x] README 補上更新/移除的完整指令表,明寫「不要用 `npm update -g`」與「移除要先 `tea-sdlc uninstall` 再 `npm rm -g`」(自 #25 移入) ## 阻擋於 - #4 — 以 sdlc-plan 把口語需求轉成結構化需求議題
jiantw83 added the ready-for-agent label 2026-09-17 03:51:24 +00:00
jiantw83 added a new dependency 2026-09-17 03:51:42 +00:00
jiantw83 added a new dependency 2026-09-17 05:51:29 +00:00
Author
Member

已於 #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(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`。該條驗收標準的實質(移除轉接檔且不更動流程正本)已達成並有測試覆蓋。 若要把上述任一條改回字面規格,動的地方都很小。
Author
Member

實作已交付並合併(#36 / dcbd71c),但本票無法關閉:Gitea 的相依機制擋下關閉動作(HTTP 412),因為本票阻擋於母議題 #25,而 #25 仍為開啟狀態(其底下的 #30 尚未完成)。

待 #25 關閉後本票即可一併關閉;在那之前保持開啟,不代表還有工作未做。

實作已交付並合併(#36 / `dcbd71c`),但本票**無法關閉**:Gitea 的相依機制擋下關閉動作(HTTP 412),因為本票阻擋於母議題 #25,而 #25 仍為開啟狀態(其底下的 #30 尚未完成)。 待 #25 關閉後本票即可一併關閉;在那之前保持開啟,不代表還有工作未做。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: plugins/tea-sdlc#17