chore(release): 放行技能組稽核修正到預設分支 #14

Merged
admin merged 5 commits from develop into master 2026-08-31 03:54:47 +00:00
5 Commits
Author SHA1 Message Date
admin c9e1f52709 Merge pull request 'fix/skill-check-compliance-and-flow' (#13) from fix/skill-check-compliance-and-flow into develop
Reviewed-on: #13
2026-08-31 03:16:17 +00:00
jiantw83 b76f1ab80f chore(plugin): 同步三份外掛描述與相依宣告
What:三份外掛資訊檔的描述改成「先把嫌疑套件釘回舊版重試一次,真失敗才還原」,補上 jsc-hooks 相依,版本號往前推一版。

Why:描述停在「失敗還原」,跟現在的行為不一樣,使用者從外掛清單看到的是錯的說明。技能靠 jsc-hooks 的註解掃描在程式層把關註解內容,相依沒宣告的話,環境缺了它也沒人擋得住。

How:claude、codex 與根目錄三份資訊檔一起改,欄位內容保持一致。

Who:jsc-pkg 外掛的中繼資料。
2026-08-31 11:09:01 +08:00
jiantw83 ab5494a128 docs(readme): 更新工具表與還原前提說明
What:工具表補上還原閘門腳本一列與 `--detect` 用法,新增「還原的破壞性前提」一節,改寫結束碼總表與技能摘要。

Why:新腳本沒進工具表,讀 README 的人找不到它,也不知道還原多了一個必要旗標。原本寫「五支工具都靠 python3」也不對——新的閘門腳本只用 git,安裝那支根本不碰 python3,照著讀會誤判環境需求。還原策略已經改成先釘回舊版再重試,摘要卻還停在舊寫法。

How:工具表逐支列出真正需要的指令。新增一節寫清楚 `git clean -fd` 的風險與那五道前提,並說明判定從嚴、動手從窄。結束碼總表改成「一個數字一個類別」,同一個碼在各工具指的對象寫在該列裡。技能摘要改成先把嫌疑套件釘回舊版重試一次,真失敗才還原。

Who:pkg domain 的說明文件。
2026-08-31 11:09:01 +08:00
jiantw83 1b223bd350 fix(pkg-update): 對齊 stop 的定義與行為,補上釘回舊版的產生路徑
What:改寫 stop 路由的定義,新增「把嫌疑套件釘回舊版重試一次」的路由,把 git 閘門提到最前面,流程由七步併成五步。

Why:原本寫 stop「不改任何檔案」,但流程走到後段才 stop 時,版本來源檔案已經被改寫過。定義跟行為對不上,使用者會以為工作區沒動過,實際上留了一地改過的檔案沒人回報。另外技能要求「套件停留在舊版時要寫註解說明原因」,卻沒有任何一條路由會產生停留在舊版的結果,這個要求等於永遠踩不到。閘門排在套件盤點後面也不划算,工作區髒的時候,整輪全專案掃描白做。

How:stop 照實描述——第一步之前確實沒動過檔案;第二步起的 stop 要一併報出失敗工具與結束碼、已套用的套件、已改寫的版本來源檔案。建置或測試真的失敗時,先從失敗輸出點名嫌疑套件,把它們釘回舊版,重裝後只重試一次;重試過了就算通過,並標記成停留在舊版,仍失敗才走還原。git 閘門移到第一步的第一個動作,建置與測試指令也在動任何檔案之前先問清楚。

Who:pkg-update 的路由表與流程步驟。
2026-08-31 11:09:01 +08:00
jiantw83 338c2da89c feat(tools): 新增 git 還原閘門腳本,建置測試加上唯讀偵測模式
What:新增 `tools/git-guard.sh`,把工作區乾淨檢查與還原序列從技能內文搬進腳本。`tools/build-test.sh` 加上 `--detect` 唯讀模式,只偵測建置與測試指令,不執行。

Why:還原會執行 `git clean -fd`。這個指令刪掉未追蹤的檔案,沒有 reflog 可救,也沒有任何救回的路徑。前提原本只寫在技能內文,讀的人漏掉一行,就可能對著一個根本不該還原的目錄動手,把整個工作區的未追蹤檔案清光。前提要擋得住,就得寫成程式碼。另一件事是「推不出建置與測試指令」,原本要等所有版本來源檔案都改寫完才發現,使用者又答不出指令時,前面全部作廢,還得走一次還原。

How:`revert` 在跑第一個破壞性指令之前擋五道——目錄存在、git 指令存在、確實是 git 工作樹(不是裸存取庫)、呼叫端明確帶 `--confirm-destructive`、目標不是檔案系統根目錄。任何一道不過就直接結束,工作區一個位元組都不動。`check` 的乾淨判定看整個存取庫,`revert` 只作用在專案目錄以下,判定從嚴、動手從窄。`clean` 用 `-fd` 不用 `-fdx`,被 gitignore 的安裝產物要留著。`--detect` 只做偵測與前置檢查,一個檔案都不寫,結束碼與路由跟執行模式完全一致。

Who:套件批次更新的前置檢查與還原路線。
2026-08-31 11:09:01 +08:00