Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
7.8 KiB
jsc-sdlc — 開發生命週期
jsc 技能組的 sdlc domain:規劃 → 分析 → 實作 → 維護四個階段,全程以 wiki 頁追蹤(PLAN_CONTENTS、PLAN_{HASH}、ANALYZE_CONTENTS、ANALYZE_{HASH}、REPO_CONTENTS、REPO_{HASH}、DELIVER_CONTENTS、DELIVER_{HASH}、MAINTAIN_CONTENTS)。工作包完成即交付:實作階段會詢問交付文件要產生成 DELIVER_{HASH} wiki 頁或 Gitea 議題留言。另有異常頁(ERROR_CONTENTS、ERROR_{HASH})記錄 hook 或流程失敗。每次切換階段先過模型閘門:由 jsc-hooks/hooks/sdlc-gate.sh lock {stage} 從 transcript 讀出實際模型 id,比對該階段的必要能力標籤(plan、analyze 需 reasoning-max;implement 需 coding;maintain 任意),不符就拒絕上鎖、該階段不得執行。判定全在程式層,模型不得自評標籤。通過後鎖定到下一階段的閘門重新上鎖;同一階段內把模型換成不合格的,下一輪提示會被 hook 以 exit 2 擋下。分析前先與使用者確認來源分支,寫檔前先確認目標分支。所有參考與來源分支一律取遠端的 origin/{分支},動作前先 git fetch --prune origin;本地分支不可作為基準,本地與遠端不一致就停下回報。
安裝、更新、移除
Marketplace 統一為 jsc(https://gitea.jsc.idv.tw/plugins/meta.git),安裝 token 為 jsc-sdlc@jsc。每個指令一行:
| CLI | 安裝 | 更新 | 移除 |
|---|---|---|---|
| claude | claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && claude plugin install jsc-sdlc@jsc |
claude plugin marketplace update jsc && claude plugin update jsc-sdlc@jsc |
claude plugin uninstall jsc-sdlc@jsc |
| codex | codex plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && codex plugin add jsc-sdlc@jsc |
codex plugin marketplace upgrade jsc |
codex plugin remove jsc-sdlc@jsc |
| copilot | copilot plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && copilot plugin install jsc-sdlc@jsc |
copilot plugin marketplace update jsc && copilot plugin update jsc-sdlc@jsc |
copilot plugin uninstall jsc-sdlc@jsc |
| antigravity | git clone https://gitea.jsc.idv.tw/plugins/sdlc.git ~/plugins/sdlc && agy plugin install ~/plugins/sdlc |
git -C ~/plugins/sdlc pull && agy plugin uninstall jsc-sdlc && agy plugin install ~/plugins/sdlc |
agy plugin uninstall jsc-sdlc |
| kiro | kiro-cli plugin marketplace add https://gitea.jsc.idv.tw/plugins/meta.git && kiro-cli plugin install jsc-sdlc@jsc |
kiro-cli plugin marketplace update jsc && kiro-cli plugin update jsc-sdlc@jsc |
kiro-cli plugin uninstall jsc-sdlc@jsc |
antigravity 不支援 gitea URL 安裝,改用本地 clone 路徑。批次操作五個 CLI:使用
/jsc-cli:deploy。
舊入口
plugins/jsc已移除,marketplace 正本移到plugins/meta。marketplace 名稱仍是jsc(取自 marketplace.json 的name欄位,與存取庫名無關),安裝 token 不變;已從舊入口安裝過的人先執行claude plugin marketplace remove jsc,再依上表重新 add。
Skills 目錄
呼叫方式:Claude / Antigravity /jsc-sdlc:{name};Codex ${name};Copilot / Kiro 描述需求自動觸發。
plan
規劃:讀計畫目錄 → 補充或新建計畫 → 決策樹持續提問,補全目標、範圍、可行性到達成共識(判定規則見 references/consensus.md,一輪不算問完)→ 產生使用者故事 → 寫回 PLAN_{HASH}。純邏輯,禁止程式碼與修改檔案。
analyze
分析:先確認來源分支 → 持續提問到達成共識(references/consensus.md)→ 搭配現況(工作目錄與 REPO_{HASH} 盤點複用)分析使用者故事 → WBS 產生編號工作包,WP-01 固定是獨立的交付/交接工作包、實作工作包相依於它 → CPM 估工時與天數 → TDD 拆待辦 → 寫回 ANALYZE_{HASH}。純邏輯,禁止程式碼與修改檔案。
implement
實作:先確認目標分支 → 產生工作證鎖定「未完成、無相依、無工作證」的工作包(交付工作包優先)→ 交付工作包開工前先確認交付內容(API 文件/由使用者輸入,見 references/deliver-formats.md)→ 動程式碼前先從 origin/{分析頁來源分支} 建立 worktree(.worktree/{分析頁 HASH}/{repo},分支處理依決策樹詢問)→ 在 worktree 內逐項 TDD 實作、每完成一項立即更新 wiki → 程式碼審查 → 開 PR,成功後才移除 worktree → 詢問交付文件格式(DELIVER_{HASH} wiki 頁或 Gitea 議題留言)並產出 → 詢問是否加入維護目錄。
maintain
維護:讀取維護期內的專案,每個專案一個 sub agent:fetch 後切 develop、master 並對齊 origin/{該分支} → 至少五種建議維護方法 → commit / push / PR → 更新前次維護時間。僅適用於維護期內已交付的專案;尚在實作中或未登記於 MAINTAIN_CONTENTS 的專案不適用。
範本與參考
| 檔案 | 用途 |
|---|---|
templates/plan-page.md、templates/plan-contents.md |
計畫頁與計畫目錄 |
templates/analyze-page.md、templates/analyze-contents.md |
分析頁(WBS、CPM、TDD 待辦)與分析目錄 |
templates/repo-page.md、templates/repo-contents.md |
存取庫盤點頁(功能與端點,附 commit sha)與盤點目錄 |
templates/error-page.md、templates/error-contents.md |
異常頁與異常目錄 |
templates/deliver-page.md、templates/deliver-contents.md |
交付頁(API 文件、新舊參數標示、驗證方式)與交付目錄 |
templates/maintain-contents.md |
維護目錄(截止日 NULL = 永久維護) |
references/tdd.md |
接縫、紅綠循環規則、反模式 |
references/branch.md |
分支規則:一律以遠端 origin/{分支} 為準、動作前先 fetch、分析前確認來源分支、寫檔前確認目標分支、實作一律在 .worktree/{HASH}/{repo} 內進行(建立前問分支、PR 成功後移除)、判定遠端預設分支、不破壞未提交變更 |
references/consensus.md |
規劃與分析的提問規則:一輪不算問完、共識的兩個判定條件、未決項處理 |
references/deliver-formats.md |
交付內容型別:API 文件必備欄位、範例資料優先序、既有端點的新舊參數標示 |
環境變數
Wiki 位置:PLAN_{HASH} / PLAN_CONTENTS 只讀 JSC_WIKI_REPO_PLAN,再退回 JSC_WIKI_REPO;ANALYZE_{HASH} / ANALYZE_CONTENTS 只讀 JSC_WIKI_REPO_ANALYZE,再退回 JSC_WIKI_REPO;REPO_{HASH} / REPO_CONTENTS 只讀 JSC_WIKI_REPO_REPO,再退回 JSC_WIKI_REPO;DELIVER_{HASH} / DELIVER_CONTENTS 只讀 JSC_WIKI_REPO_DELIVER,再退回 JSC_WIKI_REPO;MAINTAIN_CONTENTS 只讀 JSC_WIKI_REPO_MAINTAIN,再退回 JSC_WIKI_REPO。不同類型不可互相代用;兩者都未設定才詢問(見 jsc-gitea)。
HASH 規則:{owner}/{repo} 的共用 wiki hash 一律由 jsc-gitea/tools/hash-id 計算(見 jsc-gitea:wiki),此 domain 不重複實作演算法。