Files
sdlc/README.md
T
jiantw83andClaude Opus 5 4a4feaf6ef feat(sdlc): 四階段收尾一律回報
What:新增 tools/stage-report.sh 與 references/stage-report.md,四支階段技能各加一步收尾回報:模型能力標籤判定、工作日誌連結、所有寫入的 wiki 連結;實作階段再加工作目錄與來源、工作、目標三條分支。

Why:階段跑完該交代什麼是固定的,寫在內文靠模型自己記,少一項看不出來。沒寫工作日誌更是如此——內容只留在對話裡,換一個工作階段就沒了。

How:彙整搬到程式層。頁名換絕對網址、commit 數與推送狀態由 git 現查、來源分支在不在遠端也由腳本判定;模型閘門那一列只轉述 sdlc-gate.sh report,不自評。沒有工作日誌就警告使用者檢查,並把內容交給 jsc-log 的暫存區,下次寫日誌一併寫入。結束碼 1 是警告不是阻擋,提前停下來也要回報。

Who:跑 SDLC 四階段的人,以及接手看紀錄的人。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 09:19:43 +08:00

11 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 議題留言。hook 或流程失敗記在異常頁(ERROR_CONTENTS、ERROR_{HASH}),那組頁面與範本由 jsc-hooks 擁有,本 domain 不放副本。每次切換階段先過模型閘門,判定全在程式層,由 jsc-hooks/hooks/sdlc-gate.sh lock {stage} 執行;各階段必要標籤、阻擋與回報的鐵則見 references/model-gate.md。分析前先與使用者確認來源分支;實作沿用同一條來源分支作為 worktree 基準與 PR 目標。所有參考與來源分支一律取遠端的 origin/{branch},動作前先 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。

工具

腳本 用途
tools/wp-gate.sh 工作包 PR 閘門,把「PR 沒合併就不開下一包」從內文敘述變成程式判定,共兩個用法。check {owner}/{repo} {index} [--since {ISO 時間}] 查 PR:已合併就呼叫 jsc-hooks 的 sdlc-gate.sh wp-unlock 解鎖並印 status=merged;沒合併就印 status=open 或 status=closed-unmerged(被關掉但沒合併不算完成),接著把 issue 留言、審查評語、行內留言全部逐行印出(--since 只印更新的,值取上一輪的 latest=),最後一行印 latest={最新一筆留言的時間戳} 供寫回分析頁。lock {owner}/{repo} {index} 在 PR 開好後轉呼叫 sdlc-gate.sh wp-lock 記下未結清。第一行固定 status=... 供程式判讀,其後為繁中說明;結束碼 0=已合併或無阻擋、1=未合併(擋住,呼叫端必須停下來逐筆修留言)、2=用法錯誤、3=相依工具或 PR 查不到(查不到就擋,不放行)。狀態檔由 jsc-hooks 管($JSC_HOME/wp/{owner}-{repo}.pr,不綁 session,開新對話照樣擋),本檔只負責查詢與結清
tools/stage-report.sh 階段收尾回報,四個階段共用。stage-report.sh {plan|analyze|implement|maintain} 加 --page TYPE:PAGE(本階段寫過的每一頁,可重複)產出繁中回報:模型閘門判定(轉述 sdlc-gate.sh report,不自評)、工作日誌連結(--worklog、--worklog-heading 組出導向條目標題的錨點)、所有寫入的 wiki 絕對網址。實作階段再加 --worktree、--source-branch、--work-branch、--target-branch、--pr,來源分支在不在遠端、工作分支幾個 commit、推送了沒,都由腳本現查。沒有工作日誌時警告使用者檢查,並用 --pending-file、--log-hash 把內容交給 jsc-log/tools/worklog-pending.sh 暫存,下次寫日誌一併寫入。結束碼 0=完整、1=有警告(警告不是阻擋)、2=用法錯誤、3=相依工具找不到

Skills 目錄

呼叫方式:Claude / Antigravity /jsc-sdlc:{name};Codex ${name};Copilot / Kiro 描述需求自動觸發。

plan

規劃:讀計畫目錄 → 補充或新建計畫 → 決策樹持續提問,補全目標、範圍、可行性到達成共識(判定規則見 references/consensus.md,一輪不算問完)→ 產生使用者故事 → 寫回 PLAN_{HASH} → 階段回報(tools/stage-report.sh)。純邏輯,禁止程式碼與修改檔案。

analyze

分析:先確認來源分支 → 持續提問到達成共識(references/consensus.md)→ 搭配現況(工作目錄與 REPO_{HASH} 盤點複用)分析使用者故事 → WBS 產生編號工作包,WP-01 固定是獨立的交付、交接工作包,實作工作包相依於它 → CPM 估工時與天數 → TDD 拆待辦 → 寫回 ANALYZE_{HASH} → 階段回報(tools/stage-report.sh)。純邏輯,禁止程式碼與修改檔案。

implement

實作:先確認來源分支(同時是 PR 目標)→ 產生工作證鎖定「未完成、無相依、無工作證」的工作包(交付工作包優先)→ 交付工作包開工前先確認交付內容(API 文件、由使用者輸入,見 references/deliver-formats.md)→ 動程式碼前先從 origin/{source-branch} 建立 worktree(.worktree/{analysis-HASH}/{repo},分支處理依決策樹詢問)→ 在 worktree 內逐項 TDD 實作、每完成一項立即更新 wiki → 程式碼審查 → 每完成一個工作包就 commit、push、PR 回來源分支(一包一 PR),接著 tools/wp-gate.sh lock 上鎖 → PR 未合併就不開下一包,判定在程式層:領工作包前先跑 tools/wp-gate.sh check,未合併就把全部留言逐筆印出並擋住,以 sub agent 回原 worktree 逐筆修正、推同一條工作分支(不開第二個 PR),修不動或純討論的留言忽略但要在回報裡列出,處理過的時間戳寫回分析頁的 PR 欄位當下一輪的 --since;合併後解鎖並移除 worktree → 詢問交付文件格式(DELIVER_{HASH} wiki 頁或 Gitea 議題留言)並產出 → 詢問是否加入維護目錄 → 階段回報(tools/stage-report.sh,多報工作目錄與來源、工作、目標三條分支)。

maintain

維護:讀取維護期內的專案,每個專案一個 sub agent:fetch 後切 develop、master 並對齊 origin/{branch} → 提出至少五種維護方法,依決策樹讓使用者挑要做哪些 → commit / push / PR → 更新前次維護時間 → 階段回報(tools/stage-report.sh)。僅適用於維護期內已交付的專案;尚在實作中或未登記於 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/deliver-page.md、templates/deliver-contents.md 交付頁(API 文件、新舊參數標示、驗證方式)與交付目錄
templates/maintain-contents.md 維護目錄(截止日 NULL = 永久維護)
references/stage-report.md 階段回報:四階段都要交的三項(模型能力標籤、工作日誌連結、所有寫入的 wiki 連結)、實作階段多交的四項、沒寫日誌時的暫存規則、提前停止也要回報
references/model-gate.md 模型閘門:執行順序、各階段必要標籤、阻擋與回報的鐵則
references/tdd.md 接縫、紅綠循環規則、反模式
references/branch.md 分支規則:一律以遠端 origin/{branch} 為準、動作前先 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:完工後的工作日誌