feat/sdlc-model-lock-and-wrapper #5

Merged
admin merged 5 commits from feat/sdlc-model-lock-and-wrapper into develop 2026-08-24 03:47:22 +00:00
Member

PR 描述範本

摘要

  • 需求描述:SDLC 跨階段模型鎖定(hook 強制、以 session 為鍵)+無 Hook CLI 的 wrapper/日誌回填方案+STE100 guard 強化(參考 oh-my-pi)
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
hooks/sdlc-gate.sh 新增 SDLC 模型鎖腳本:lock/unlock/check/report 四個子指令,以 session 為鍵寫入 $JSC_HOME/sessions/{sid}.stage,模型不符時注入繁中封鎖提醒
hooks/hooks.json UserPromptSubmit 加掛 sdlc-gate.sh check,讓 Claude 每次提示送出都檢查模型鎖
tools/jsc-wrap.sh 無 hook 系統 CLI 的包裝啟動器:匯出 JSC_CLI、JSC_SESSION_ID,前後接 session-timer.sh,結束時自動跑 scan-logs.sh 並原樣傳遞退出碼
tools/scan-logs.sh 離線回填:解析 copilot、antigravity、codex 原生日誌,把技能用量與階段界線補進 $JSC_HOME,重掃不重複
hooks/ste100-guard.sh 追加送出前自我檢查清單(簡體字、半形句尾標點、套路句、半形斜線並列、諂媚開場),參考 oh-my-pi 做法強化攔截
skills/hooks-install/SKILL.md 接線表改三欄(CLI、接線、驗證),copilot/antigravity 改兩段式 wrapper 接線,codex/kiro 註明模型鎖降級為技能步驟檢查
README.md 補上 sdlc-gate hook、tools 兩支腳本與 JSC_MODEL 環境變數說明
AGENTS.md domain 描述同步加上「SDLC 模型鎖」
plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 版本 0.0.2 升 0.0.3,描述補上「SDLC 模型鎖」

設計重點

  • 模型鎖以 session 為鍵:狀態檔 $JSC_HOME/sessions/{sid}.stage 單行「{stage} {model}」,由 jsc-sdlc 階段技能於閘門通過時 lock、下一個閘門 unlock 或覆寫。
  • check 的目前模型判定順序:stdin JSON model → JSC_MODEL → ~/.claude/settings.json(僅 claude 或未設 JSC_CLI 時);別名互含視為相符(例:opus 對 claude-opus-4-6)。
  • 缺資料一律安靜降級、永遠 exit 0,不中斷宿主 CLI。
  • 無 hook 系統的 CLI 改兩段式落地:jsc-wrap.sh 補計時與用量回填,語言規則仍走規則檔;codex、kiro 的模型鎖降級為技能步驟檢查,鎖檔仍由 SDLC 技能直接呼叫 lock 寫入。

測試結果

  • sdlc-gate.sh 實測通過:lock 後 check 於模型相符時無輸出、不符時輸出繁中封鎖提醒,unlock 後恢復無輸出。
  • jsc-wrap.sh 退出碼傳遞驗證通過:子行程以 rc=7 結束時 wrapper 原樣回傳 7。
  • scan-logs.sh 重掃驗證通過:對同一批日誌重複執行不產生重複記錄。
  • sh -n 語法檢查全數通過(sdlc-gate.sh、jsc-wrap.sh、scan-logs.sh、ste100-guard.sh)。

前置 Push Request

  • 無
# PR 描述範本 ## 摘要 - 需求描述:SDLC 跨階段模型鎖定(hook 強制、以 session 為鍵)+無 Hook CLI 的 wrapper/日誌回填方案+STE100 guard 強化(參考 oh-my-pi) - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | hooks/sdlc-gate.sh | 新增 SDLC 模型鎖腳本:lock/unlock/check/report 四個子指令,以 session 為鍵寫入 $JSC_HOME/sessions/{sid}.stage,模型不符時注入繁中封鎖提醒 | | hooks/hooks.json | UserPromptSubmit 加掛 sdlc-gate.sh check,讓 Claude 每次提示送出都檢查模型鎖 | | tools/jsc-wrap.sh | 無 hook 系統 CLI 的包裝啟動器:匯出 JSC_CLI、JSC_SESSION_ID,前後接 session-timer.sh,結束時自動跑 scan-logs.sh 並原樣傳遞退出碼 | | tools/scan-logs.sh | 離線回填:解析 copilot、antigravity、codex 原生日誌,把技能用量與階段界線補進 $JSC_HOME,重掃不重複 | | hooks/ste100-guard.sh | 追加送出前自我檢查清單(簡體字、半形句尾標點、套路句、半形斜線並列、諂媚開場),參考 oh-my-pi 做法強化攔截 | | skills/hooks-install/SKILL.md | 接線表改三欄(CLI、接線、驗證),copilot/antigravity 改兩段式 wrapper 接線,codex/kiro 註明模型鎖降級為技能步驟檢查 | | README.md | 補上 sdlc-gate hook、tools 兩支腳本與 JSC_MODEL 環境變數說明 | | AGENTS.md | domain 描述同步加上「SDLC 模型鎖」 | | plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json | 版本 0.0.2 升 0.0.3,描述補上「SDLC 模型鎖」 | ## 設計重點 - 模型鎖以 session 為鍵:狀態檔 $JSC_HOME/sessions/{sid}.stage 單行「{stage} {model}」,由 jsc-sdlc 階段技能於閘門通過時 lock、下一個閘門 unlock 或覆寫。 - check 的目前模型判定順序:stdin JSON model → JSC_MODEL → ~/.claude/settings.json(僅 claude 或未設 JSC_CLI 時);別名互含視為相符(例:opus 對 claude-opus-4-6)。 - 缺資料一律安靜降級、永遠 exit 0,不中斷宿主 CLI。 - 無 hook 系統的 CLI 改兩段式落地:jsc-wrap.sh 補計時與用量回填,語言規則仍走規則檔;codex、kiro 的模型鎖降級為技能步驟檢查,鎖檔仍由 SDLC 技能直接呼叫 lock 寫入。 ## 測試結果 - sdlc-gate.sh 實測通過:lock 後 check 於模型相符時無輸出、不符時輸出繁中封鎖提醒,unlock 後恢復無輸出。 - jsc-wrap.sh 退出碼傳遞驗證通過:子行程以 rc=7 結束時 wrapper 原樣回傳 7。 - scan-logs.sh 重掃驗證通過:對同一批日誌重複執行不產生重複記錄。 - `sh -n` 語法檢查全數通過(sdlc-gate.sh、jsc-wrap.sh、scan-logs.sh、ste100-guard.sh)。 ## 前置 Push Request - 無
jiantw83 added 5 commits 2026-08-24 03:37:54 +00:00
What:新增 hooks/sdlc-gate.sh,提供 lock、unlock、check、report 四個子指令;hooks.json 於 UserPromptSubmit 加掛 check。
Why:SDLC 各階段對模型能力有硬性要求,僅靠技能提示無法防止中途切換模型,需要 hook 層強制。
How:以 session 為鍵把「階段 模型」寫入 $JSC_HOME/sessions/{sid}.stage;check 依 stdin JSON、JSC_MODEL、~/.claude/settings.json 順序判定目前模型,別名互含視為相符,不符時注入繁中封鎖提醒;缺資料一律安靜降級、永遠 exit 0。
Who:jsc-sdlc 四個階段技能(plan、analyze、implement、maintain)於閘門通過時上鎖,Claude Code 的 UserPromptSubmit hook 負責攔查。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What:新增 tools/jsc-wrap.sh 包裝啟動器與 tools/scan-logs.sh 離線日誌回填腳本。
Why:copilot、antigravity 沒有 hook 系統,計時與技能用量原本完全缺漏,需要 hook 之外的落地方案。
How:jsc-wrap.sh 匯出 JSC_CLI 與 JSC_SESSION_ID,啟動前後各呼叫一次 session-timer.sh,結束時自動執行 scan-logs.sh 並原樣傳遞子行程退出碼;scan-logs.sh 解析 copilot、antigravity、codex 的原生日誌,把技能用量與階段界線補進 $JSC_HOME,重掃不產生重複記錄。
Who:無 hook 系統的 CLI(copilot、antigravity)與僅有 notify 的 codex,資料供 jsc-log:worklog 與 jsc-log:stats 使用。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What:ste100-guard.sh 追加一行輸出,列出五項送出前自我檢查(簡體字、半形句尾標點、套路句、半形斜線並列、諂媚開場),並附常見例字。
Why:只宣告規則不足以攔下高頻違規,參考 oh-my-pi 的做法,把可自查的具體症狀直接列給模型,命中就先改再送出。
How:在既有規則宣告後追加第二個 echo,維持單行文字、exit 0,不影響任何 CLI 的接線方式。
Who:所有經 UserPromptSubmit hook 或規則檔取得 STE100 規則的 AI CLI 輸出。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What:hooks-install SKILL.md 改寫接線表並加上逐 CLI 驗證欄;README 補上 sdlc-gate、tools 兩支腳本與 JSC_MODEL 變數說明;AGENTS.md 同步 domain 描述。
Why:新增 SDLC 模型鎖與 wrapper 方案後,安裝流程與環境變數契約已改變,文件必須與實作一致,否則接線技能會漏裝。
How:接線表改為三欄(CLI、接線、驗證),copilot 與 antigravity 改兩段式(jsc-wrap.sh 包裝+規則檔追加),codex 與 kiro 註明模型鎖降級為技能步驟檢查;每步補上完成判準。
Who:執行 hooks-install 技能的 AI 助理與維護 jsc-hooks domain 的開發者。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
What:plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 版本由 0.0.2 升至 0.0.3,描述補上「SDLC 模型鎖」。
Why:本次新增 SDLC 模型鎖 hook 與 wrapper 工具屬功能擴充,需升版讓各 CLI 的 plugin 更新機制抓到新版本,描述也要反映新能力。
How:三份 manifest 同步改 version 與 description,維持欄位結構不變。
Who:透過 jsc marketplace 安裝 jsc-hooks 的所有 AI CLI 與 jsc-cli:deploy 佈署流程。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
jiantw83 added a new dependency 2026-08-24 03:38:36 +00:00
admin approved these changes 2026-08-24 03:47:18 +00:00
admin merged commit 125005d59d into develop 2026-08-24 03:47:22 +00:00
admin deleted branch feat/sdlc-model-lock-and-wrapper 2026-08-24 03:47:22 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Reference: plugins/hooks#5