fix(skillset): 技能組稽核修正與第九支 hook #52

Merged
admin merged 5 commits from fix/skill-check-compliance-and-flow into develop 2026-08-31 03:53:57 +00:00
Member

摘要

  • 需求描述:這一輪技能組稽核的修正。新增第九支 hook「寫入與提交閘門」,把三條原本只寫在技能內文的規則落到程式層;修好一個會蓋掉整份異常目錄的覆寫風險,以及兩道閘門把唯一的 hook 修復路徑一起鎖死的自鎖問題;補齊各腳本檔頭的結束碼宣告,並把文件與流程對齊實際的九支 hook 與五道關卡。外掛版本推進到 0.3.2。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
hooks/write-guard.sh 新增第九支 hook。四種模式:stage 在計畫與分析階段鎖著時擋下寫檔、review 在稽核技能執行中擋下寫檔、commit 擋下整包提交與非繁體中文的提交訊息、release 供稽核技能收尾時清掉認人用的紀錄。原本這三條規則只靠模型自律。另修掉一個嚴重缺陷:原本先載入共用函式庫再靠 || true 容錯,而 dash 載不到檔案時會就地結束整支殼層,|| true 一次都跑不到,回的 2 在寫檔前置鉤子正是「擋下」,等於每一次寫檔與提交都被無聲擋死。改成先確認檔案讀得到再載入
hooks/hooks.json 把 stage 與 review 接在寫檔工具,把 commit 接在指令工具。不接線,閘門等於沒有
tools/wire-cli.sh 接線、唯讀盤點、冒煙三處都要認得新的第九支 hook,盤點逐一驗三種模式有沒有接上。新增 JSC_READONLY=1 唯讀模式:只准 status 與 smoke,清除與接線一律拒絕並回 exit 6,體檢類技能不再靠呼叫端自我約束。冒煙改成自己數結果行並自我斷言,因為散文裡硬寫的舊行數這一輪就誤導過判斷
tools/report-error.sh 覆寫風險。原本 wiki 讀取失敗會一路落到套範本那一步,金鑰失效或 API 出狀況時就拿空白範本蓋掉整份異常目錄,而寫入不做合併也不留備份。改成依結束碼分流:只有頁面確定不存在才建新頁,讀取失敗代表舊內容未知,放棄目錄頁寫入並回報
hooks/version-guard.sh 豁免清單漏了 hook 修復技能,hook 壞掉時唯一的修復路徑被閘門自己擋住。補上後為七項。同時新增唯讀的建議子命令,把版本比對表收斂成一行結論,部署技能不必自己再解一次那張表
hooks/restart-gate.sh 同一個自鎖問題,豁免清單同樣補上 hook 修復技能,補上後為十項;擋下時印出的可用清單一併更新
hooks/sdlc-gate.sh 工作包閘門擋下計畫階段是誤擋:計畫是純邏輯階段、不碰程式碼,而閘門只知道有 PR 未合併,判不出跟新計畫有沒有關聯。改成只注入提醒並放行,放棄的在製品上限與代價寫在檔頭。另補全子命令的結束碼宣告
tools/scan-hook-errors.sh 自家 hook 判定只認得早期那五支,後來加的四支出錯會被當成第三方的,只回報不修正。改成逐支列出九支腳本,再加一條安裝路徑判定當保險
skills/repair/SKILL.md 三個指向其他技能組的路徑指到不存在的位置,照著走一定撲空,改指到擁有它的技能組。各步驟補上結束碼的判讀方式,並寫明本技能豁免於版本閘門與重啟閘門的原因
skills/hooks-install/SKILL.md 流程寫四道關卡,實際上有五道(唯讀盤點漏寫)。兩段中文說明混在英文內文裡,改回英文。CLI 清單改成優先接收呼叫端傳進來的那一份,取不到才自己偵測,同一批執行檔不必探測兩次。補上新 hook 的接線與冒煙敘述
hooks/lib.sh 補上檔頭說明:這是被 source 的函式庫,真正要防的是載入失敗。POSIX 殼層找不到檔案時會就地結束並回 2,接在寫檔前置鉤子上等於無聲擋人
hooks/session-timer.sh 補上結束碼宣告:四個子命令都一律 exit 0,唯一的非零來源是共用函式庫載入失敗
hooks/skill-usage.sh 補上結束碼宣告與安靜降級的條件
hooks/ste100-guard.sh 補上結束碼宣告:只印規則到 stdout,沒有任何擋人路徑
tools/scan-logs.sh 補上結束碼宣告,並註明「載入失敗回 2」與「用法錯誤回 2」同碼、要怎麼分辨
README.md 文件停在八支 hook 的舊敘述,會讓人誤判覆蓋範圍。改寫成九支,補上新閘門一列、建議子命令、JSC_READONLY、JSC_WRITE_GUARD、JSC_WRITE_GUARD_TTL、JSC_TOOL_COMMAND,並把兩份豁免清單、五道關卡與異常目錄的附加語意一併對齊
AGENTS.md 補上一條新規則:新閘門只有 claude 接得上,談覆蓋範圍要據實講;它只讀既有狀態檔,簡繁判定一律轉呼叫語言守門,不留第二份樣式
templates/error-contents.md 補上寫入語意:一律先讀回舊頁再附加,禁止整頁覆蓋,也不得改動別人的列。語意只寫在腳本裡,換一支工具來寫就會整頁覆蓋
plugin.json 版本推進到 0.3.2,描述加上新閘門,相依補上 git 與 meta 兩個技能組。版本不推,版本前置檢查看不出機器上載入的是舊版
.claude-plugin/plugin.json 同上,三份設定檔要同步,不然不同 CLI 讀到不一樣的宣告
.codex-plugin/plugin.json 同上

設計重點

  • 閘門不得鎖掉解除自己的路徑。這一條貫穿三處改動:新閘門補 release 模式讓稽核技能自己按解除鍵;兩道舊閘門的豁免清單補上 hook 修復技能;跨兩次工具呼叫的整包提交刻意不擋,因為那要記跨呼叫狀態,而被擋下的人沒有辦法讓那個狀態自己消失。
  • 判定規則只留一份。新閘門的階段鎖直接讀階段閘門那一份狀態檔、技能名讀技能用量那一份紀錄,自己不寫狀態檔;簡繁、亂碼與編碼判定整段轉呼叫語言守門,字表仍是 hooks/simplified.txt。兩邊各存一份就會漂移。
  • 數字由程式自己數、自己斷言。冒煙印出結果行數並與腳本內宣告的預期條數逐類比對,不符就回非零;文件只引用那一行。這一輪正是被散文裡的舊行數誤導過。
  • 唯讀契約由程式把關。JSC_READONLY=1 之下清除與接線直接回 exit 6,不靠呼叫端記得只打 status。
  • 目錄頁一律附加、不整頁覆蓋。頁上每一列都是別人的回報,讀不回舊內容就不寫,寧可少一列索引也不刪掉別人的紀錄。
  • 覆蓋範圍據實回報。只有 claude 有寫檔前置鉤子,新閘門的三種擋人模式只在 claude 上擋得下來;其餘四支 CLI 一條都接不上,那四支上這三條規則仍只剩技能內文。腳本、技能說明與說明文件三處都照這樣寫,不暗示每支 CLI 都有保護。

測試結果

實際跑過、結果如下:

  • 語法檢查:bash -n 與 dash -n 各跑一次 hooks/*.sh 與 tools/*.sh,全部通過(重定基底之後再跑一次,仍全數通過)。
  • 設定檔解析:三份 plugin 設定檔與 hooks/hooks.json 都解析得過。
  • 共用函式庫缺席時的行為:把新閘門單獨複製到一個沒有函式庫的目錄,以 dash 跑四種模式,全部 exit 0(放行)。這正是這次修掉的缺陷,改前會全部變成無聲的 exit 2(擋下)。另以最小案例實測確認 dash 對不存在的 . 會直接結束整支殼層並回 2,而 bash 會走到後面的容錯,兩者行為確實不同。
  • 提交訊息判定:含簡體字的訊息 exit 2(擋下)、繁體中文訊息 exit 0(放行)、git add -A 接單次提交 exit 2(擋下),三條都與宣告相符。
  • 豁免清單:修復技能確實出現在版本閘門與重啟閘門兩份清單中。
  • 重定基底後的交叉驗證:develop 上的模型來源改動(可驗證模型來源、Codex session 記錄、冒煙的模型案例)與本輪改動同時存在,兩邊都沒有被覆蓋掉。
  • 提交訊息簡體字檢查:四則訊息逐字比對本存取庫的簡體字表(1006 字),零命中。

沒有跑、據實列出:

  • 完整的 wire-cli.sh smoke {cli}。它會用本機真正的狀態目錄跑一輪,本輪不動使用者環境,所以沒有執行;冒煙的自我斷言條數因此沒有實機驗證過。
  • 實際的接線與清除:本輪不動任何 CLI 設定。
  • report-error.sh 的 wiki 寫入分流:要有可用的 Gitea 金鑰與可寫的 wiki 才驗得出三條分支,本輪只做程式碼審閱。
  • scan-hook-errors.sh 的判定:沒有現成的錯誤紀錄可掃。
  • codex、copilot、antigravity、kiro 四支 CLI 上的行為完全沒有驗證。

前置 Push Request

  • 無
## 摘要 - 需求描述:這一輪技能組稽核的修正。新增第九支 hook「寫入與提交閘門」,把三條原本只寫在技能內文的規則落到程式層;修好一個會蓋掉整份異常目錄的覆寫風險,以及兩道閘門把唯一的 hook 修復路徑一起鎖死的自鎖問題;補齊各腳本檔頭的結束碼宣告,並把文件與流程對齊實際的九支 hook 與五道關卡。外掛版本推進到 0.3.2。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `hooks/write-guard.sh` | 新增第九支 hook。四種模式:`stage` 在計畫與分析階段鎖著時擋下寫檔、`review` 在稽核技能執行中擋下寫檔、`commit` 擋下整包提交與非繁體中文的提交訊息、`release` 供稽核技能收尾時清掉認人用的紀錄。原本這三條規則只靠模型自律。另修掉一個嚴重缺陷:原本先載入共用函式庫再靠 `\|\| true` 容錯,而 dash 載不到檔案時會就地結束整支殼層,`\|\| true` 一次都跑不到,回的 2 在寫檔前置鉤子正是「擋下」,等於每一次寫檔與提交都被無聲擋死。改成先確認檔案讀得到再載入 | | `hooks/hooks.json` | 把 `stage` 與 `review` 接在寫檔工具,把 `commit` 接在指令工具。不接線,閘門等於沒有 | | `tools/wire-cli.sh` | 接線、唯讀盤點、冒煙三處都要認得新的第九支 hook,盤點逐一驗三種模式有沒有接上。新增 `JSC_READONLY=1` 唯讀模式:只准 `status` 與 `smoke`,清除與接線一律拒絕並回 exit 6,體檢類技能不再靠呼叫端自我約束。冒煙改成自己數結果行並自我斷言,因為散文裡硬寫的舊行數這一輪就誤導過判斷 | | `tools/report-error.sh` | 覆寫風險。原本 wiki 讀取失敗會一路落到套範本那一步,金鑰失效或 API 出狀況時就拿空白範本蓋掉整份異常目錄,而寫入不做合併也不留備份。改成依結束碼分流:只有頁面確定不存在才建新頁,讀取失敗代表舊內容未知,放棄目錄頁寫入並回報 | | `hooks/version-guard.sh` | 豁免清單漏了 hook 修復技能,hook 壞掉時唯一的修復路徑被閘門自己擋住。補上後為七項。同時新增唯讀的建議子命令,把版本比對表收斂成一行結論,部署技能不必自己再解一次那張表 | | `hooks/restart-gate.sh` | 同一個自鎖問題,豁免清單同樣補上 hook 修復技能,補上後為十項;擋下時印出的可用清單一併更新 | | `hooks/sdlc-gate.sh` | 工作包閘門擋下計畫階段是誤擋:計畫是純邏輯階段、不碰程式碼,而閘門只知道有 PR 未合併,判不出跟新計畫有沒有關聯。改成只注入提醒並放行,放棄的在製品上限與代價寫在檔頭。另補全子命令的結束碼宣告 | | `tools/scan-hook-errors.sh` | 自家 hook 判定只認得早期那五支,後來加的四支出錯會被當成第三方的,只回報不修正。改成逐支列出九支腳本,再加一條安裝路徑判定當保險 | | `skills/repair/SKILL.md` | 三個指向其他技能組的路徑指到不存在的位置,照著走一定撲空,改指到擁有它的技能組。各步驟補上結束碼的判讀方式,並寫明本技能豁免於版本閘門與重啟閘門的原因 | | `skills/hooks-install/SKILL.md` | 流程寫四道關卡,實際上有五道(唯讀盤點漏寫)。兩段中文說明混在英文內文裡,改回英文。CLI 清單改成優先接收呼叫端傳進來的那一份,取不到才自己偵測,同一批執行檔不必探測兩次。補上新 hook 的接線與冒煙敘述 | | `hooks/lib.sh` | 補上檔頭說明:這是被 source 的函式庫,真正要防的是載入失敗。POSIX 殼層找不到檔案時會就地結束並回 2,接在寫檔前置鉤子上等於無聲擋人 | | `hooks/session-timer.sh` | 補上結束碼宣告:四個子命令都一律 exit 0,唯一的非零來源是共用函式庫載入失敗 | | `hooks/skill-usage.sh` | 補上結束碼宣告與安靜降級的條件 | | `hooks/ste100-guard.sh` | 補上結束碼宣告:只印規則到 stdout,沒有任何擋人路徑 | | `tools/scan-logs.sh` | 補上結束碼宣告,並註明「載入失敗回 2」與「用法錯誤回 2」同碼、要怎麼分辨 | | `README.md` | 文件停在八支 hook 的舊敘述,會讓人誤判覆蓋範圍。改寫成九支,補上新閘門一列、建議子命令、`JSC_READONLY`、`JSC_WRITE_GUARD`、`JSC_WRITE_GUARD_TTL`、`JSC_TOOL_COMMAND`,並把兩份豁免清單、五道關卡與異常目錄的附加語意一併對齊 | | `AGENTS.md` | 補上一條新規則:新閘門只有 claude 接得上,談覆蓋範圍要據實講;它只讀既有狀態檔,簡繁判定一律轉呼叫語言守門,不留第二份樣式 | | `templates/error-contents.md` | 補上寫入語意:一律先讀回舊頁再附加,禁止整頁覆蓋,也不得改動別人的列。語意只寫在腳本裡,換一支工具來寫就會整頁覆蓋 | | `plugin.json` | 版本推進到 0.3.2,描述加上新閘門,相依補上 git 與 meta 兩個技能組。版本不推,版本前置檢查看不出機器上載入的是舊版 | | `.claude-plugin/plugin.json` | 同上,三份設定檔要同步,不然不同 CLI 讀到不一樣的宣告 | | `.codex-plugin/plugin.json` | 同上 | ## 設計重點 - 閘門不得鎖掉解除自己的路徑。這一條貫穿三處改動:新閘門補 `release` 模式讓稽核技能自己按解除鍵;兩道舊閘門的豁免清單補上 hook 修復技能;跨兩次工具呼叫的整包提交刻意不擋,因為那要記跨呼叫狀態,而被擋下的人沒有辦法讓那個狀態自己消失。 - 判定規則只留一份。新閘門的階段鎖直接讀階段閘門那一份狀態檔、技能名讀技能用量那一份紀錄,自己不寫狀態檔;簡繁、亂碼與編碼判定整段轉呼叫語言守門,字表仍是 `hooks/simplified.txt`。兩邊各存一份就會漂移。 - 數字由程式自己數、自己斷言。冒煙印出結果行數並與腳本內宣告的預期條數逐類比對,不符就回非零;文件只引用那一行。這一輪正是被散文裡的舊行數誤導過。 - 唯讀契約由程式把關。`JSC_READONLY=1` 之下清除與接線直接回 exit 6,不靠呼叫端記得只打 `status`。 - 目錄頁一律附加、不整頁覆蓋。頁上每一列都是別人的回報,讀不回舊內容就不寫,寧可少一列索引也不刪掉別人的紀錄。 - 覆蓋範圍據實回報。只有 claude 有寫檔前置鉤子,新閘門的三種擋人模式只在 claude 上擋得下來;其餘四支 CLI 一條都接不上,那四支上這三條規則仍只剩技能內文。腳本、技能說明與說明文件三處都照這樣寫,不暗示每支 CLI 都有保護。 ## 測試結果 實際跑過、結果如下: - 語法檢查:`bash -n` 與 `dash -n` 各跑一次 `hooks/*.sh` 與 `tools/*.sh`,全部通過(重定基底之後再跑一次,仍全數通過)。 - 設定檔解析:三份 plugin 設定檔與 `hooks/hooks.json` 都解析得過。 - 共用函式庫缺席時的行為:把新閘門單獨複製到一個沒有函式庫的目錄,以 dash 跑四種模式,全部 exit 0(放行)。這正是這次修掉的缺陷,改前會全部變成無聲的 exit 2(擋下)。另以最小案例實測確認 dash 對不存在的 `.` 會直接結束整支殼層並回 2,而 bash 會走到後面的容錯,兩者行為確實不同。 - 提交訊息判定:含簡體字的訊息 exit 2(擋下)、繁體中文訊息 exit 0(放行)、`git add -A` 接單次提交 exit 2(擋下),三條都與宣告相符。 - 豁免清單:修復技能確實出現在版本閘門與重啟閘門兩份清單中。 - 重定基底後的交叉驗證:develop 上的模型來源改動(可驗證模型來源、Codex session 記錄、冒煙的模型案例)與本輪改動同時存在,兩邊都沒有被覆蓋掉。 - 提交訊息簡體字檢查:四則訊息逐字比對本存取庫的簡體字表(1006 字),零命中。 沒有跑、據實列出: - 完整的 `wire-cli.sh smoke {cli}`。它會用本機真正的狀態目錄跑一輪,本輪不動使用者環境,所以沒有執行;冒煙的自我斷言條數因此沒有實機驗證過。 - 實際的接線與清除:本輪不動任何 CLI 設定。 - `report-error.sh` 的 wiki 寫入分流:要有可用的 Gitea 金鑰與可寫的 wiki 才驗得出三條分支,本輪只做程式碼審閱。 - `scan-hook-errors.sh` 的判定:沒有現成的錯誤紀錄可掃。 - codex、copilot、antigravity、kiro 四支 CLI 上的行為完全沒有驗證。 ## 前置 Push Request - 無
jiantw83 added 5 commits 2026-08-31 03:49:55 +00:00
新增第九支 hook,共四種模式。stage 在計畫與分析階段鎖著時擋下寫檔。
review 在稽核類技能執行中擋下寫檔。commit 擋下「一次加入全部變更再提交」的
單一指令,也擋下含簡體字、亂碼或非 UTF-8 編碼的提交訊息。
release 不接 hook,由稽核技能收尾時自己呼叫,清掉認人用的那份紀錄,
讓呼叫端接手修改時不會被剛跑完的稽核擋住。

這三條規則原本只寫在技能內文,靠模型自律。稽核技能會順手改程式碼,
計畫階段會寫出不該寫的檔案,整包提交會把型別與功能分組壓成一次。
規則要真的生效,就得由程式擋。release 模式是必要的:紀錄記的是最近一次
載入的技能,不是還在跑的技能,沒有它,稽核跑完之後呼叫端每一次寫入都被擋,
閘門會把解除自己的路徑一起鎖掉。

接線設定把 stage 與 review 接在寫檔工具,把 commit 接在指令工具。
閘門只讀階段閘門的狀態鎖與技能用量的紀錄,不自己寫狀態檔;
簡繁與編碼判定整段轉呼叫語言守門,不留第二份字表。
接線腳本的接線、唯讀盤點與冒煙各補上這一支,冒煙自備暫時的狀態目錄,
逐條比對每種模式的結束碼。接線腳本另補唯讀模式,體檢類技能全程帶著它跑,
清除與接線一律拒絕並回非零,子命令打錯一個字也改不到環境。
冒煙改成自己數結果行並自我斷言,散文只引用那一行,不再各抄一份數字。

限制據實寫在檔頭:只有 claude 有寫檔前置鉤子,其餘四支 CLI 一條都接不上,
那四支上這三條規則仍只剩技能內文。
異常回報依 wiki 讀取的結束碼分流,只有頁面確定不存在才套範本建新頁。
版本閘門與重啟閘門的豁免清單各補上 hook 修復技能。
階段閘門把計畫階段移出擋人名單,改成只注入提醒。
錯誤掃描的自家 hook 判定補齊九支腳本,並加一條路徑判定。
修復技能與接線技能的內文改成真的走得到的路徑與真的存在的關卡數。

原本 wiki 讀取失敗會一路落到套範本那一步,金鑰失效或 API 出狀況時,
就拿一份空白範本蓋掉整份異常目錄,而寫入不做合併也不留備份,蓋掉就救不回來。
兩道閘門把唯一的 hook 修復路徑一起擋住,hook 一壞就沒有任何方法修回來,
閘門等於鎖掉解除自己的路徑。工作包閘門擋下計畫階段是誤擋:
計畫是純邏輯階段、不碰程式碼,而閘門只知道有 PR 未合併,判不出跟新計畫有沒有關聯。
自家 hook 判定只認得早期那五支,後來加的四支出錯會被當成第三方的,只回報不修正。
修復技能裡三個指向流程的路徑指到不存在的位置,照著走一定撲空;
接線流程寫四道關卡,實際上有五道,兩段中文說明也混在英文內文裡。

異常目錄改成先讀回舊頁、把新列附在文末、再整頁寫回;讀不回來就放棄寫目錄頁並回報,
寧可少一列索引,也不覆蓋別人的紀錄。兩份豁免清單各補一項,理由逐項寫在腳本檔頭。
計畫階段改印提醒後放行,放棄的在製品上限與代價一併寫在檔頭。
自家 hook 判定逐支列出腳本名,再加一條安裝路徑判定,日後新增 hook 忘了補清單也還認得出來。
三個路徑改指到擁有它的技能組,關卡數改成五道並逐關寫明結束碼,兩段中文說明改回英文。
版本閘門在同一次改動另補唯讀的建議子命令,把版本比對表收斂成一行結論,
部署技能不必自己再解一次那張表。
共用函式庫與各支腳本的檔頭各補一段結束碼宣告,逐個子命令寫明哪些情況放行、
哪些情況擋下。說明文件改寫成九支 hook 的現況,補上寫入與提交閘門、唯讀模式、
建議子命令與新的環境變數。異常目錄範本補上「一律附加、不整頁覆蓋」的寫入語意。

呼叫端要靠結束碼決定下一步,但多數腳本只寫用法、沒寫結束碼,
讀的人得自己翻程式碼推,推錯就把安靜降級當成失敗處理。
共用函式庫載不到時,殼層會就地結束並回非零,接在工具呼叫前的閘門遇到這一下
等於無聲擋人,腳本自己的放行路徑一條都跑不到,這件事非寫進每一支檔頭不可。
文件停在八支 hook 的舊敘述,看的人會誤判覆蓋範圍,以為每支 CLI 都擋得住。
目錄頁的寫入語意只寫在腳本裡,換一支工具來寫就會整頁覆蓋。

一支腳本一段檔頭,逐子命令列出結束碼,並各自註明共用函式庫載入失敗會回哪一個碼。
文件的行數一律引用腳本自己印出來的那一行,不另抄一份數字,
判定路徑增減時就不會漂移。覆蓋範圍逐支 CLI 分開寫,接不上的就寫接不上。
三份外掛設定檔的版本一起往上推,描述加上寫入與提交閘門,
相依清單補上 git 與 meta 兩個技能組。

這一輪新增一支 hook,也改了兩道閘門的行為。版本不推上去,
版本前置檢查就看不出機器上載入的是舊版,使用者會拿舊的閘門跑新的流程。
描述是使用者在市集看到的那一行,少一項就會漏掉新閘門。
寫入閘門擋下整包提交時,改法指向 git 技能組的分組流程;
語言規則的正文則在 meta 技能組。這兩個相依本來就成立,只是先前沒有寫進清單。

三份設定檔改成同一個版本,描述與相依清單三份同步,
避免不同 CLI 讀到不一樣的宣告。
重定基底到 develop 後,冒煙測試併入了 sdlc-gate.sh 取模型代號的四條來源
判定,但那支輸出函式沒有自己的計數器,四個預期值也沒跟著加。結果是實際
印出六十四條結果行、四類計數器只算到六十條,收尾的自我斷言當場判定不符,
smoke 一律以 exit 4 收場。

補上第五個計數器 smoke_n_model 與對應的 SMOKE_EXPECT_MODEL,計數放在該
函式開頭,連建不出暫存目錄那條也算得到;總數、逐類比對訊息與結果摘要一併
納入模型來源這一類。五支 CLI 的 smoke 都回 status=ok,行數與各類條數三邊
一致。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
admin merged commit 5ee91bc045 into develop 2026-08-31 03:53:57 +00:00
admin deleted branch fix/skill-check-compliance-and-flow 2026-08-31 03:53:57 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/hooks#52