以 npm 安裝並建立 tea-sdlc 指令入口 #26

Closed
opened 2026-09-17 06:00:34 +00:00 by jiantw83 · 1 comment
Member

母議題

#25 — 以 npm 佈署並提供 tea-sdlc 指令

要做出什麼

使用者跑一行 npm i -g https://gitea.jsc.idv.tw/plugins/tea-sdlc.git,終端機就多出一個 tea-sdlc 指令。這張票不交付任何實際動作,它把「裝得起來、叫得動、參數錯了會好好講」這條路從打包一路貫穿到終端機。

tea-sdlc 的輸入輸出契約與既有十五支腳本完全一致:只接受具名 flag、輸出單行 JSON {ok, data, error:{code, message}}、exit 0 或 1。差別只在第一個位置參數是子指令——既有的 flag 解析明確拒絕位置參數,所以子指令必須由入口自行取走,其餘 argv 才交出去。

四個子指令的名字此時都要認得:prompt、status 由後續票交付,install、uninstall 由 #17 交付。在各自被實作之前,叫用它們要回一個明確的「尚未實作」錯誤,而不是崩潰或沉默。

打包範圍以白名單決定,不用黑名單。兩者的失敗模式不對稱:白名單漏掉東西會在安裝當下被既有的套件完整性檢查立刻炸出來,黑名單漏掉排除則是沉默地把測試暫存發給使用者。

驗收標準

  • npm i -g <git url> 之後 PATH 上出現可執行的 tea-sdlc
  • 套件 manifest 已移除 private、新增 bin、新增 files 白名單,且未新增 prepare
  • dependencies 與 devDependencies 仍然不存在
  • npm pack --dry-run 的檔案清單包含 prompts/、scripts/、templates/、references/,不包含 test/、.tmp/
  • 未帶子指令時回 MISSING_SUBCOMMAND + exit 1
  • 帶未知子指令時回 UNKNOWN_SUBCOMMAND + exit 1
  • 帶未知 flag 時沿用既有的 UNKNOWN_FLAG + exit 1
  • install、uninstall、prompt、status 四個名字都被認得;尚未實作者回明確錯誤碼而非崩潰
  • 新增 runBin() 測試 helper,以真實子行程執行入口並斷言單行 JSON 與 exit code
  • 既有 runScript() 的單行 JSON 斷言未被放寬

阻擋於

無,可立即開始

## 母議題 #25 — 以 npm 佈署並提供 tea-sdlc 指令 ## 要做出什麼 使用者跑一行 `npm i -g https://gitea.jsc.idv.tw/plugins/tea-sdlc.git`,終端機就多出一個 `tea-sdlc` 指令。這張票不交付任何實際動作,它把「裝得起來、叫得動、參數錯了會好好講」這條路從打包一路貫穿到終端機。 `tea-sdlc` 的輸入輸出契約與既有十五支腳本完全一致:只接受具名 flag、輸出單行 JSON `{ok, data, error:{code, message}}`、exit 0 或 1。差別只在第一個位置參數是子指令——既有的 flag 解析明確拒絕位置參數,所以子指令必須由入口自行取走,其餘 argv 才交出去。 四個子指令的名字此時都要認得:`prompt`、`status` 由後續票交付,`install`、`uninstall` 由 #17 交付。在各自被實作之前,叫用它們要回一個明確的「尚未實作」錯誤,而不是崩潰或沉默。 打包範圍以白名單決定,不用黑名單。兩者的失敗模式不對稱:白名單漏掉東西會在安裝當下被既有的套件完整性檢查立刻炸出來,黑名單漏掉排除則是沉默地把測試暫存發給使用者。 ## 驗收標準 - [x] `npm i -g <git url>` 之後 PATH 上出現可執行的 `tea-sdlc` - [x] 套件 manifest 已移除 `private`、新增 `bin`、新增 `files` 白名單,且未新增 `prepare` - [x] `dependencies` 與 `devDependencies` 仍然不存在 - [x] `npm pack --dry-run` 的檔案清單包含 `prompts/`、`scripts/`、`templates/`、`references/`,不包含 `test/`、`.tmp/` - [x] 未帶子指令時回 `MISSING_SUBCOMMAND` + exit 1 - [x] 帶未知子指令時回 `UNKNOWN_SUBCOMMAND` + exit 1 - [x] 帶未知 flag 時沿用既有的 `UNKNOWN_FLAG` + exit 1 - [x] `install`、`uninstall`、`prompt`、`status` 四個名字都被認得;尚未實作者回明確錯誤碼而非崩潰 - [x] 新增 `runBin()` 測試 helper,以真實子行程執行入口並斷言單行 JSON 與 exit code - [x] 既有 `runScript()` 的單行 JSON 斷言未被放寬 ## 阻擋於 無,可立即開始
jiantw83 added the ready-for-agent label 2026-09-17 06:00:34 +00:00
jiantw83 added a new dependency 2026-09-17 06:00:35 +00:00
jiantw83 added a new dependency 2026-09-17 06:00:36 +00:00
Author
Member

已於 #36(merge commit dcbd71c)交付。npm i -g 兩種情境都實測過:從打包 tarball 安裝時 root 落在 node_modules 底下、linked 為 false;從本地目錄安裝時為 symlink、linked 為 true,兩種都叫得動 tea-sdlc prompt。

已於 #36(merge commit `dcbd71c`)交付。`npm i -g` 兩種情境都實測過:從打包 tarball 安裝時 `root` 落在 `node_modules` 底下、`linked` 為 `false`;從本地目錄安裝時為 symlink、`linked` 為 `true`,兩種都叫得動 `tea-sdlc prompt`。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: plugins/tea-sdlc#26