Files
sdlc/README.md
T
2026-08-25 12:08:11 +08:00

8.1 KiB
Raw Blame History

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 擋下。分析前先與使用者確認來源分支;實作沿用同一條來源分支作為 worktree 基準與 PR 目標。所有參考與來源分支一律取遠端的 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

實作:先確認來源分支(同時是 PR 目標)→ 產生工作證鎖定「未完成、無相依、無工作證」的工作包(交付工作包優先)→ 交付工作包開工前先確認交付內容(API 文件/由使用者輸入,見 references/deliver-formats.md)→ 動程式碼前先從 origin/{分析頁來源分支} 建立 worktree(.worktree/{分析頁 HASH}/{repo},分支處理依決策樹詢問)→ 在 worktree 內逐項 TDD 實作、每完成一項立即更新 wiki → 程式碼審查 → 每完成一個工作包就 commit、push、PR 回來源分支(一包一 PR)→ PR 未合併就不開下一包;每次要領工作包前先查 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、分析前確認來源分支、實作沿用同一條來源分支作為 PR 目標(一包一 PR、PR 未合併不開下一包)、實作一律在 .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 不重複實作演算法。

相關 domain

  • jsc-cli:模型能力標籤與階段閘門判定(tools/model-tags.sh、references/model-tags.md、jsc-cli:models)、偏好模型鏈(tools/model-config.sh)
  • jsc-hooks:sdlc-gate 階段模型鎖定
  • jsc-gitea:wiki 讀寫
  • jsc-review:實作完成後的程式碼審查
  • jsc-git / jsc-pkg:維護階段的 commit / PR 與套件更新
  • jsc-log:完工後的工作日誌