Files
tea-sdlc/AGENTS.md
T
jiantw83andClaude Opus 5 f37fe0bba7 feat(佈署): 以 npm 裝出 tea-sdlc 指令並產生各平台轉接檔
單一入口 bin/tea-sdlc.js 認四個子指令。第一個位置參數是子指令,其餘 argv 原樣
交出去——既有的 flag 解析拒絕位置參數,所以子指令必須在那之前就被取走。

轉接檔裡沒有路徑,只有一句 tea-sdlc prompt --name <指令名>。正本在哪由 PATH 上
的 tea-sdlc 自己回推:fnm 把 Node 版號寫進全域安裝路徑,寫死路徑的話升一次
Node,七個平台的轉接檔會同時指向不存在的檔案,而且不會有任何錯誤訊息。

prompt 是全專案唯一輸出非 JSON 的路徑,理由只有一個:它的輸出要餵給模型讀。
失敗仍走 envelope——成功是內容,失敗才需要結構。

status 的 ok 不兼差表達環境好壞,健康與否放在 data.healthy:呼叫端要分得出
「status 掛了」與「status 成功查到你環境有問題」。

install 只寫進偵測得到的平台;缺 git/tea 只警告不中止,因為那兩個完全不影響
轉接檔產生,硬擋等於逼使用者為了裝 plugin 先去裝 tea。uninstall 只刪帶產生標記
的檔案,使用者自己寫的同名檔案一律留著並在輸出裡交代。裝哪些指令以 prompts/ 裡
實際存在的正本為準,不是寫死的六個名字——裝出指向不存在正本的轉接檔,使用者只會
看到 PROMPT_NOT_FOUND。

流程正本的 description 前綴在抄進轉接檔之前就檢查:有三個平台關不掉自動觸發,
全靠那句話把 description 窄到不會被誤判,不能等使用者發現誤觸才知道漏了。

議題 #26 #27 #28 #29 #17

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 14:53:00 +08:00

2.9 KiB
Raw Blame History

tea-sdlc — 以 tea 驅動 SDLC 全流程的跨平台指令組

本 repo 提供六個顯式指令(/sdlc-plan、/sdlc-analyze、/sdlc-feat、/sdlc-fix、/sdlc-sync、/sdlc-report), 把軟體開發流程的各階段固定成可重複的步驟。流程正本只寫一份平台中立 markdown, 由 scripts/install.js 產生 Claude Code、Codex、Antigravity、Copilot、Kiro、oh-my-pi、OpenCode 各自的薄轉接檔。

本 repo 以 npm 佈署:npm i -g <git url> 裝出 tea-sdlc 指令,tea-sdlc install 產生各平台轉接檔。 轉接檔裡沒有路徑,只有一句 tea-sdlc prompt --name <指令名>,正本在哪由入口自己回推。

六個流程正本尚未到齊,安裝器只佈署 prompts/ 裡已經存在的指令。進度見 議題 #1 底下的工作包。

模組邊界

改動時請先確認要動的東西屬於哪一層,不要讓職責外溢到相鄰目錄。

目錄 職責 邊界
prompts/ 流程正本(sdlc-{plan,analyze,feat,fix,sync,report}.md),唯一的事實來源 平台中立 markdown,不含任何平台專屬語法
scripts/ 所有副作用(Gitea API、git、檔案系統)的唯一出口 Node、零外部套件,僅用內建 fetch / child_process / fs
templates/ 所有產出格式(議題、PR、報表、總覽網頁) 以 {{變數}} 佔位,不含邏輯。唯一例外是 overview-artifact.html:它是一份要在瀏覽器裡開的網頁,需要一段把 mermaid 圖畫出來的腳本
references/ 規則正本(實作規範、註解格式對照表、可行性檢查清單) 由流程正本指名讀取,不自行散落於 prompts
bin/tea-sdlc.js 指令入口:取走子指令,其餘 argv 原樣交出去 不含任何平台目錄知識,也不自己動手做事
scripts/install.js 平台偵測與轉接檔產生/移除 唯一知道各平台目錄結構的地方
skills/ 各助理原生 plugin 機制讀取的 skills 目前為空;指令以轉接檔形式佈署

慣例

  • 零外部套件:package.json 不得出現 dependencies 或 devDependencies。測試用 Node 內建 node:test + node:assert。
  • 契約以議題為正本:腳本的 flag 介面、JSON 輸出形狀、前置檢查與路徑定位規則,正本在議題 #1,實作時以該處為準;本檔不複寫,以免兩邊走鐘。
  • 測試:npm test(等同 node --test)。測試產生的暫存一律寫到 .tmp/,該目錄已被 git 忽略,也不會被測試探索掃到。
  • 不改目標專案:本 plugin 只讀目標專案的程式碼,不寫入目標專案的 CLAUDE.md 或任何設定檔。
  • 不自動觸發:所有指令僅由使用者明確叫用;skill/command 的 description 統一以「僅由 /sdlc-xxx 指令叫用。」起頭。