What(做了什麼):
1. 移除 plan、analyze、implement 三個 skill 及 README.md 中各自重述的 wiki hash 演算法說明(原本各處都各自寫一遍「取 SHA-1 前 8 碼大寫十六進位,開頭若為數字或 A/B/C 則替換為 H 加後 7 碼」),改為統一指向唯一權威工具 jsc-gitea/tools/hash-id(透過 jsc-gitea:wiki 使用)。
2. 移除 plan、analyze、implement、maintain 四個 skill 中重複的 model chain fallback 選擇邏輯說明(原本各自描述「執行 jsc-cli/tools/model-config.sh get {stage},若印出 chain 則取目前 CLI 可用的第一個,fallback 依 chain 順序套用」),改為統一呼叫新的共用子指令 jsc-cli/tools/model-config.sh resolve {stage},由該子指令自行封裝解析邏輯(此 resolve 子指令由另一位 agent 同時在 sibling repo jsc-cli 開的配套 PR 新增,本 PR 依賴該 PR)。
3. implement/SKILL.md 移除自身多餘的「先解析環境變數」步驟(原第 2 步,手動檢查 JSC_WIKI_REPO_ANALYZE、JSC_WIKI_REPO、JSC_WIKI_REPO_QUESTION、GITEA_HOST、GITEA_TOKEN 後才詢問使用者),因為此解析已由 implement 其他步驟委派的 jsc-gitea:wiki 正確處理,屬於死重複邏輯;後續步驟由 2-8 重新編號為 2-7。
4. maintain/SKILL.md 在 frontmatter description 欄位加入明確的負向觸發說明,釐清此 skill 僅用於已交付、仍在維護窗口內的專案,「不適用於仍在實作中或尚未登錄於 MAINTAIN_CONTENTS 的專案」。
5. plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份版本號檔案,由 0.0.3 升版至 0.0.4。
Why(為什麼改):
四個 SDLC skill 各自重述相同的 hash 演算法與 model chain fallback 邏輯,違反 jsc-meta:skill-check 稽核準則中「單一權威來源」的要求,日後維護容易改一處漏一處;implement 的環境變數解析步驟與其他步驟委派的 jsc-gitea:wiki 功能重疊,屬死碼;maintain 的觸發時機描述不夠明確,容易被誤用在尚未進入維護窗口的專案上。
How(怎麼改的):
將重複邏輯抽離,改為指向或呼叫唯一權威工具/skill(jsc-gitea/tools/hash-id、jsc-cli/tools/model-config.sh resolve、jsc-gitea:wiki),移除 implement 中的死步驟並重新編號,於 maintain frontmatter 補上負向觸發描述,並同步升版三份 plugin.json。全程不改變任何對外行為,純屬重構。
Who(誰/哪個需求):
jsc-meta:skill-check 對 plan、analyze、implement、maintain 四個 SDLC skill 的例行合規稽核修正。
jsc-sdlc — 開發生命週期
jsc 技能組的 sdlc domain:規劃 → 分析 → 實作 → 維護四個階段,全程以 wiki 頁追蹤(PLAN_CONTENTS、PLAN_{HASH}、ANALYZE_CONTENTS、ANALYZE_{HASH}、REPO_CONTENTS、REPO_{HASH}、MAINTAIN_CONTENTS)。另有異常頁(ERROR_CONTENTS、ERROR_{HASH})記錄 hook 或流程失敗。每次切換階段先解析該階段的指定模型鏈(jsc-cli/tools/model-config.sh get {stage},專案 .jsc/models 優先於 $JSC_HOME/models.conf);沒有設定才退回模型能力標籤檢查。通過閘門後由 jsc-hooks 的 sdlc-gate hook 鎖定模型,直到下一階段的閘門重新上鎖;同一階段內換模型會被擋下。
安裝、更新、移除
Marketplace 統一為 jsc(https://gitea.jsc.idv.tw/plugins/jsc.git),安裝 token 為 jsc-sdlc@jsc。每個指令一行:
| CLI | 安裝 | 更新 | 移除 |
|---|---|---|---|
| claude | claude plugin marketplace add https://gitea.jsc.idv.tw/plugins/jsc.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/jsc.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/jsc.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/jsc.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。
Skills 目錄
呼叫方式:Claude / Antigravity /jsc-sdlc:{name};Codex ${name};Copilot / Kiro 描述需求自動觸發。
plan
規劃:讀計畫目錄 → 補充或新建計畫 → 決策樹補全目標、範圍、可行性至共識 → 產生使用者故事 → 寫回 PLAN_{HASH}。純邏輯,禁止程式碼與修改檔案。
analyze
分析:搭配現況(工作目錄與 REPO_{HASH} 盤點複用)分析使用者故事 → WBS 產生編號工作包 → CPM 估工時與天數 → TDD 拆待辦 → 寫回 ANALYZE_{HASH}。純邏輯,禁止程式碼與修改檔案。
implement
實作:產生工作證鎖定「未完成、無相依、無工作證」的工作包 → 逐項 TDD 實作、每完成一項立即更新 wiki → 程式碼審查 → 詢問是否加入維護目錄。
maintain
維護:讀取維護期內的專案,每個專案一個 sub agent:切 develop/master → 至少五種建議維護方法 → 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/maintain-contents.md |
維護目錄(截止日 NULL = 永久維護) |
references/tdd.md |
接縫、紅綠循環規則、反模式 |
環境變數
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;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 不重複實作演算法。