jiantw83
|
6f8afb8ac8
|
chore(marketplace): 把 jsc-assist 登錄進統一 marketplace
What:
- 兩份 marketplace 檔各加一個 jsc-assist 條目,來源網址指向 assist 存放庫。
Why:
- 準則要求每個 domain 存放庫都帶同一份 marketplace 檔,任何一個存放庫都能當註冊入口。副本之間只要有一份沒跟上,稽核就會報出不一致。
- 正本少了這個條目,各 CLI 的安裝指令就找不到 jsc-assist,這個 domain 等於發佈不出去。
How:
- 條目由 meta 的 sync-marketplace.sh 產生,同時寫進正本與每個 domain 存放庫的副本,寫完逐檔比對位元組。這一支存放庫的兩份副本就是那一輪的產物。
- 條目依名稱排序,縮排與非 ASCII 描述的處理都交給同一支腳本,不手改 JSON。
- 這一批是從最新的預設分支重新產生的。前一輪的分支基底早於監控頁型別那批改動,直接合併會把那些改動回退掉,所以整批重做而不是解衝突。
Who:
助理 domain 落地的註冊步驟在這個存放庫的同步。
|
2026-09-01 12:50:04 +08:00 |
|
admin
|
c6bf5a9b03
|
Merge pull request '釋出 jsc-hooks 0.3.6:頁面編號偵測補齊型別與 smoke 斷言修正' (#64) from develop into master
Reviewed-on: #64
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
|
2026-09-01 04:45:04 +00:00 |
|
admin
|
ea50b7d915
|
Merge pull request '釋出 jsc-hooks 0.3.6:頁面編號偵測補齊型別' (#63) from feat/monitor-wiki-page-type/main into develop
Reviewed-on: #63
|
2026-09-01 04:42:59 +00:00 |
|
admin
|
3cf8d82ffd
|
Merge pull request 'feat/monitor-wiki-page-type/page-id-regex' (#62) from feat/monitor-wiki-page-type/page-id-regex into feat/monitor-wiki-page-type/main
Reviewed-on: #62
|
2026-09-01 04:28:26 +00:00 |
|
jiantw83
|
113df37808
|
fix(comment-scope): 頁面編號偵測補齊三種缺漏的型別
What:
- wiki 頁面編號的偵測樣式補上 SKILLSET、TOOLING 與 MONITOR 三種型別。
- 三份 manifest 的版本一起提升。
Why:
- 這支 hook 的職責是擋住把文件追蹤資訊寫進程式碼註解,wiki 頁面編號正是禁止項之一。
- 樣式只列到 REPORT,但實際的頁型清單早就有 SKILLSET 與 TOOLING,現在再加 MONITOR。清單漏掉的那幾種,頁面編號寫進註解就攔不到,等於這條規則對它們不存在。
- SKILLSET 與 TOOLING 的缺漏是既有落差,不是這次新增型別才產生的,一併補齊比較省事,也不會留下第二個要記得的地方。
How:
- 型別的排列順序照 gitea.sh 的 resolve_wiki_repo 走,兩邊一致才看得出有沒有漏。
- 規則正文的唯一來源仍是 jsc-review 的註解範圍文件,這裡只補偵測樣式,不重述規則清單。
- 實測過三種型別各自都攔得下來,命中的說明都是「jsc wiki 頁面編號」,不是旁邊那條前綴加流水號的樣式誤撿。
Who:
技能助理落地帶出來的頁型別需求,四個存放庫同一批改。
|
2026-09-01 12:11:10 +08:00 |
|
admin
|
417fe1a413
|
Merge pull request 'fix/smoke-deny-assertion-per-cli' (#60) from fix/smoke-deny-assertion-per-cli into develop
Reviewed-on: #60
|
2026-09-01 03:50:57 +00:00 |
|
jiantw83
|
fbf0aec9f7
|
fix(smoke): 擋人斷言改依各 CLI 的形態判定
What:
- wire-cli.sh 的 smoke 區段新增四個共用小函式:smoke_deny_rc 給結束碼、smoke_deny_mark 給擋人標記、smoke_deny_ok 做判定、smoke_deny_desc 產生失敗訊息。
- smoke_rs_case 與 smoke_vg_case 的判定改走 smoke_deny_ok,五個呼叫點的預期值由結束碼 2 改成字面值 deny。
- 三份 manifest 的版本一起提升,由 sync-skill-manifest.sh 同步。
Why:
- 兩個函式把「擋下」寫死成結束碼 2,但擋下的形態是由 deny.sh 依 CLI 決定的。claude、codex、copilot 與認不得的代號走 stderr 加結束碼 2;antigravity 改印一行 stdout 的 deny JSON,kiro 只能注入警告,這兩支的結束碼都固定 0。
- 結果是這兩支的 smoke 各有五條判定失敗,回報成執行期錯誤。但擋人訊息其實都正確印出來了,配套的訊息斷言也全部通過,壞的只有結束碼那一項比對——是斷言認錯形態,不是 hook 失效。
- 不能改成一律放寬到 0。那兩支上放行也是 0,放寬之後「該擋沒擋」與「正確擋下」完全同形,這道斷言等於作廢。
How:
- 形態表在 smoke 這側鏡射一份,事實來源仍是 deny.sh 的 case。表只有一份,改一支不會忘了另一支。
- 判定同時比結束碼與擋人標記;預期放行的案例反過來要求標記不得出現,所以「該擋沒擋」與「不該擋卻擋了」兩個方向都守得住。
- 走 stderr 的三支標記為空字串,判定行為與原本完全相同,不產生回歸。
- 斷言條數不增不減,兩個預期條數常數都不必動。
- 反向測試確認斷言仍然有效:拿掉 deny.sh 裡 antigravity 的 deny JSON 輸出,做出該擋卻靜靜放行的情境,smoke 正確判失敗。結束碼相同,靠擋人標記才分得出來。
Who:
接線後的冒煙測試在 antigravity 與 kiro 上判定失敗,追出來的是斷言本身的缺陷。
|
2026-09-01 11:48:13 +08:00 |
|
admin
|
56703c4a54
|
Merge pull request '釋出 jsc-hooks 0.3.4:四支 CLI 的 pre-tool hook 接線修正' (#59) from develop into master
Reviewed-on: #59
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
|
2026-09-01 01:03:07 +00:00 |
|
jiantw83
|
462264a253
|
Merge pull request '收攏四支 CLI 的 pre-tool hook 接線修正與共用腳本' (#58) from feat/cli-hook-rewire/main into develop
|
2026-09-01 00:58:41 +00:00 |
|
jiantw83
|
453b576050
|
Merge pull request '修正四支 CLI 的 pre-tool hook 接線,補上技能名解析與阻擋輸出共用腳本' (#57) from feat/cli-hook-rewire/four-cli-pre-tool into feat/cli-hook-rewire/main
|
2026-09-01 00:56:10 +00:00 |
|
jiantw83
|
3cd4b40ad0
|
chore(release): 版本號同步為 0.3.4
What:plugin.json 與 .claude-plugin/plugin.json 的 version 由 0.3.3 改為 0.3.4。
Why:
- 這一批補上四支 CLI 的 pre-tool hook 接線,屬於新增能力,要發一個新版本。
- 三份 manifest 的版本號必須一致。版本前置檢查比對的就是這個號,對不上會讓 hook 判出錯誤的落後結論。
How:
- 由主流程的 sync-skill-manifest.sh 同步,三份一起改,不手動各寫一次。
- .codex-plugin/plugin.json 那一份的版本號隨接線提交一起進來,因為同一個檔案還加了 hooks 路徑鍵。
Who:jsc-hooks 0.3.4 發佈收尾。
|
2026-08-31 19:05:48 +08:00 |
|
jiantw83
|
f586a6b69f
|
docs(hooks): 同步四支 CLI 的接線位置與驗證等級
What:README.md、references/behaviors.md 與 skills/hooks-install/SKILL.md 同步這一批的接線事實。
Why:
- 文件寫著「這些 CLI 沒有 pre-tool hook」。那句話是錯的,也正是三支 CLI 長期沒有守門的原因。照著它報告,會讓使用者以為只有 claude 有保護、其餘四支本來就接不上。
- kiro 的 degraded 原本被寫成接線缺東西,實際上是那支 CLI 擋不下技能叫用。兩件事的處理方式完全不同。
How:
- 一支 CLI 一列,列出接線位置、事件與 matcher、阻擋形態與判定,並寫明 claude、codex、copilot、antigravity 回 wired,kiro 回 degraded。
- 新增驗證等級表,把「形狀」與「觸發」分開記:形狀是那支 CLI 真的讀得懂設定,觸發是 hook 真的被叫用過。copilot 的形狀未證、antigravity 與 codex 的觸發未驗證,一律照實列出,不含糊帶過。
- README 補上 hooks/skill-name.sh 與 hooks/deny.sh 兩列,並補 COPILOT_HOME、KIRO_HOME、JSC_ANTIGRAVITY_HOOKS、JSC_COPILOT_INSTRUCTIONS、JSC_ANTIGRAVITY_RULES 幾個環境變數。
- kiro 的接線位置從 .kiro/hooks/jsc-hooks.json 全面改寫成 ~/.kiro/agents/jsc.json。
- 講明 write-guard.sh 三個模式與 SDLC 模型鎖在另外三支上是「還沒接」,不是「沒有 hook 可接」。
- behaviors.md 的完成條件與可驗證跡象跟著改,repair 那一列加上「技能名解析改 skill-name.sh、阻擋形態改 deny.sh,兩支是唯一真實來源」。
Who:codex、copilot、antigravity、kiro 四支 CLI 的 pre-tool hook 接線修正。
|
2026-08-31 19:05:48 +08:00 |
|
jiantw83
|
eebe2a2873
|
feat(wire-cli): 接上四支 CLI 的 pre-tool hook
What:
- tools/wire-cli.sh 重寫 codex、copilot、antigravity、kiro 四支的接線、purge、status 與 smoke。
- 新增 hooks/codex-hooks.json,由 hooks/hooks.json 推導產生。
- .codex-plugin/plugin.json 加上 hooks 路徑鍵,指向那份檔案。
Why:這四支其實都有能介入的 pre-tool 事件,原本卻接錯位置,抓到五個同一類的無聲失效——設定看起來正確、CLI 靜默不理、不報錯:
- codex 的 matcher 用 Skill,但 Codex 沒有 Skill 這個工具,技能是模型自己用 Bash 讀 SKILL.md 載入的。
- codex 的 hooks 鍵寫成內嵌物件,實際規格是路徑字串,內嵌物件解析不了。
- antigravity 的 PreToolUse 寫成 Flat,實際要 matcher 加 hooks 包一層的 Grouped。Flat 的那一段整個被丟掉,hook 名稱照樣登記,檔案讀起來還是對的。
- copilot 的設定寫到 $COPILOT_HOME/hooks/,那是 hook 要跑的腳本目錄、不是設定目錄,設定從來不會被讀。
- 三支新接的命令沒帶 JSC_CLI={代號},閘門認不出自己跑在哪支 CLI 上,一次都擋不下來。
How:
- codex:PreToolUse matcher 換成 Bash。codex-hooks.json 由 hooks/hooks.json 整份複製,再把 matcher 的 Skill 改寫成 Bash,其餘事件原樣保留,Claude 那份維持唯一真實來源,第二份絕不手寫。
- copilot:pre-tool hook 併進 ~/.copilot/settings.json 的頂層 hooks 鍵,matcher 用小寫 skill,事件名只寫一種大小寫。那份檔案同時裝著 enabledPlugins 與 extraKnownMarketplaces,所以合併不覆寫:寫前備份、只動 jsc 自己那幾筆、寫後回讀核對最上層鍵與別人的條目,對不上就還原。指引檔改寫到 $COPILOT_HOME 底下。
- antigravity:寫 ~/.gemini/config/hooks.json 的 jsc 段落。PreToolUse 改成 Grouped、matcher 是錨定的 view_file,錨點不能省,省了會連 view_file_outline 一起命中;另接 Flat 的 PreInvocation,攔斜線指令那條不產生工具呼叫的路。
- kiro:hook 宣告搬到 ~/.kiro/agents/jsc.json 的 hooks 鍵,事件只用 agentSpawn、userPromptSubmit、stop,欄位是 command 與 timeout_ms,並把 settings/cli.json 的 chat.defaultAgent 設成 jsc。kiro-cli agent validate 四種情況一律回 0,所以判準看輸出、不看結束碼。
- 四支非 claude 的接線命令一律以 JSC_CLI={代號} 前綴自帶代號,接線時、status 與 smoke 各斷言一次。
- status 從只驗「鍵在不在」改成驗形狀與位置,並新增第三格 unverified,把「驗不了」跟「驗過了」分開,只有 missing 算缺項。
- smoke 新增 26 條接線形狀斷言,每條正向配一條反向,另把五支 CLI 的真實負載直接餵進 restart-gate.sh,驗解析、判定、輸出整條串得起來。前兩段分開看都會顯示正常,中間接不上照樣是全程放行,那正是先前失效的樣子。
Who:codex、copilot、antigravity、kiro 四支 CLI 的 pre-tool hook 接線修正。
|
2026-08-31 19:05:48 +08:00 |
|
jiantw83
|
0e9308f60e
|
feat(hooks): 技能名解析與阻擋輸出共用化
What:
- 新增 hooks/skill-name.sh。五支 CLI 各一個子命令,從各自的負載解析出這一次要用哪一支 jsc 技能,印一行「{domain}<TAB>{技能名}」。解不出來就印空字串並回 0。
- 新增 hooks/deny.sh。依當前 CLI 產出四種阻擋形態,訊息從參數或標準輸入進。
- version-guard.sh 與 restart-gate.sh 改用這兩支,各自那份工具名判定與技能名取值一併移除。
Why:
- 兩道閘門原本都拿 Claude 的工具名 Skill 當通用條件。另外四支 CLI 的工具名分別是 Bash、skill、view_file,一律被擋在判定之外,兩道閘門在那四支上長期完全失效,而且一聲都不吭。
- 阻擋形態每支 CLI 都不一樣,判定卻是同一件事。各自留一份輸出邏輯,改了一支忘了另一支,就會做出「判定擋下、CLI 照樣放行」的無聲失效。
How:
- 技能名取值規則只留 skill-name.sh 這一份,環境變數 JSC_SKILL、SKILL 優先。claude 讀 skill 欄位、codex 認 tool_input.command 裡那條 SKILL.md 路徑、copilot 先剝一層字串化 JSON 再讀 toolArgs、antigravity 讀 toolCall.args.AbsolutePath 並另收提示字串、kiro 取提示開頭那個斜線指令。
- 閘門端用 awk 判 NF == 2 才取值。少一欄就當成解析不出來,免得沒有定位字元時 cut -f2 把整行當成技能名,拼出一個不存在的技能名去比對豁免清單。
- deny.sh 定形態:claude、codex、copilot 走 stderr 加 exit 2;antigravity 印 stdout 的單行 deny JSON 並固定回 0,因為那支 CLI 的結束碼語意兩邊文件都沒寫、絕不可靠;kiro 擋不下技能叫用,改印警告後回 0;認不得的代號走 stderr 加 2 這個保守預設。
- 訊息整段走同一條管線送進 deny.sh。分次呼叫會做出好幾份 deny JSON,antigravity 只認第一份,後面幾段使用者永遠看不到。
- 豁免清單與 fail-open 原則不變。這兩支刻意以子行程呼叫、不用 source 載入:讀不到只會讓技能名解不出來而安靜放行,不會反過來擋掉每一次呼叫。
Who:codex、copilot、antigravity、kiro 四支 CLI 的 pre-tool hook 接線修正。
|
2026-08-31 19:05:48 +08:00 |
|
admin
|
510142c3f6
|
Merge pull request '釋出 jsc-hooks 0.3.3:版本前置檢查新增相依落後擋人,新增技能行為清單' (#56) from develop into master
Reviewed-on: #56
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
|
2026-08-31 08:18:51 +00:00 |
|
jiantw83
|
9ccf0d555c
|
Merge pull request '收攏技能行為清單與版本前置檢查相依擋人改動' (#55) from feat/skill-behaviors-and-version-block/main into develop
|
2026-08-31 08:10:36 +00:00 |
|
jiantw83
|
30c395b4d0
|
Merge pull request '版本前置檢查新增相依落後擋人、新增技能行為清單' (#54) from feat/skill-behaviors-and-version-block/version-guard-requires-block into feat/skill-behaviors-and-version-block/main
|
2026-08-31 08:09:21 +00:00 |
|
 jiantw83andClaude Opus 5
|
6870975e08
|
chore(plugin): 三份外掛設定檔版本推進到 0.3.3
plugin.json、.claude-plugin/plugin.json 與 .codex-plugin/plugin.json
的版本一起從 0.3.2 推到 0.3.3。
這一輪改了版本前置檢查的行為,多擋一種情況。版本不推上去,版本前置檢查
就看不出機器上載入的是舊版,使用者會拿舊的閘門跑新的流程,相依落後
一樣不會被擋下來。
三份設定檔改成同一個版本,避免不同 CLI 讀到不一樣的宣告。
所屬功能:版本前置檢查的相依版本閘門。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-31 13:41:25 +08:00 |
|
 jiantw83andClaude Opus 5
|
63c8073be1
|
docs(references): 新增技能行為清單,作為技能驗證的比對基準
新增 references/behaviors.md,逐支列出本存取庫 hooks-install 與 repair
兩支技能的行為:觸發時機、關鍵步驟、外部呼叫、完成條件與可驗證跡象。
技能驗證原本沒有一份基準可比。驗的人只能回頭讀技能內文,讀到的是當下的
寫法,不是講好的行為;技能改壞了、少走一道關卡,比對不出來。
一支技能一張表,一項一列,內容寫成看得出對錯的敘述,可驗證跡象逐條指到
磁碟上真的留得下的東西。技能異動時,在同一個 PR 內一起更新這一頁。
所屬功能:技能驗證基準。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-31 13:41:25 +08:00 |
|
 jiantw83andClaude Opus 5
|
3485213145
|
docs(readme): 說明文件同步版本閘門的兩種擋人情況與冒煙沙箱
比較表的 version-guard.sh 那一列改寫成擋兩種情況,逐項寫明相依版本檢查
讀哪一份 manifest、比哪一個版本、訊息講到什麼程度,也把新增的四種
fail-open 併進原本的放行清單,並註明兩種擋人情況共用同一份 7 項豁免清單。
wire-cli.sh 那一列補一句新的冒煙沙箱與它涵蓋的判定路徑。
文件停在只擋一種情況的舊敘述,讀的人會以為相依落後照樣放行,被擋下來時
找不到規則的出處。冒煙那一列不提新沙箱,維護者也看不出相依版本這一段
已經有斷言守著。
兩種擋人情況、fail-open 清單與共用的豁免清單都寫進表格,清單的唯一真實
來源仍然指向 hooks/version-guard.sh 的檔頭。冒煙那一句只講沙箱與涵蓋範圍,
不抄斷言條數;條數以腳本自己印出來的 lines 那一行為準,散文不另記一份數字。
所屬功能:版本前置檢查的相依版本閘門。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-31 13:41:25 +08:00 |
|
 jiantw83andClaude Opus 5
|
15f7dcc5fb
|
test(smoke): 接線腳本冒煙補上相依版本檢查的十三條判定斷言
接線腳本的 smoke 多一個沙箱,逐條跑相依版本檢查的判定路徑並比對結束碼:
相依落後的擋人與訊息內容、相依相等與超前的放行、豁免技能在相依落後時
照樣放行、同一個 plugin 底下非豁免技能照樣被擋、四種 fail-open、
逃生門蓋過相依落後,另加一條回歸——多行縮排的 manifest,jsc.requires
的最後一個鍵也要解得到。
原本的 hook 模式只驗那支腳本跑得完,相依版本這一段一條判定路徑都沒走到。
新的擋人情況判錯方向,不是把每一次技能呼叫鎖死,就是整道護欄形同虛設,
沒有斷言就看不出來。多行縮排是真實 manifest 的樣子,解析漏掉最後一個鍵
會讓落後的相依靜靜被放行,那一條非釘住不可。
沙箱自備一份暫時的 HOME,註冊檔路徑由 $HOME 決定,不覆寫就會讀到使用者
真正的安裝清單。假的 installed_plugins.json 與各 plugin 的 manifest 都放進
那份 HOME,註冊欄位故意寫成很新的版本、installPath 底下的 manifest 寫舊版,
把「只認 installPath 底下那份檔案」的規則一起釘住。GITEA_HOST 一律清空,
放行的案例才不會往下走到遠端比對真的連網。擋人的兩條另外比訊息字串,
比的是同一次執行留下的輸出。新增計數器 smoke_n_vg 與預期值
SMOKE_EXPECT_VG,一併納入總數、逐類比對訊息與結果摘要,判定路徑增減時
只改腳本裡的預期值。
所屬功能:版本前置檢查的相依版本閘門。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-31 13:41:25 +08:00 |
|
 jiantw83andClaude Opus 5
|
5c2727bf56
|
feat(version-guard): 版本前置檢查新增相依版本落後的擋人情況
版本前置檢查多一種擋人情況。技能所屬 plugin 的 manifest 在 jsc.requires
宣告的相依 plugin,只要有一項的本機實際載入版本落後宣告的最低版本,
就以 exit 2 擋下這一次技能呼叫。訊息逐項講明哪一個 plugin、需要哪一版、
目前哪一版、怎麼補。
相依宣告原本只有部署那一端會回報,沒有任何一道閘門擋。機器上因此會出現
版本互相搭不起來的 plugin 組合,技能跑到一半才失敗,使用者也看不出要更新
哪一個 plugin。
判定邏輯自己實作,不呼叫 jsc-cli 的 check-requires.sh。hook 一律專屬存放在
jsc-hooks,不可散落到別的 domain;jsc-cli 也已經宣告相依 jsc-hooks,
反向呼叫會做出循環相依。安裝路徑解析抽成 install_path(),與本機載入版本
共用同一條規則,各寫一份就會漂移。相依檢查排在豁免清單與逃生門之後、
遠端比對之前,全部讀本機檔案,離線的機器也判得動。豁免沿用同一份 7 項清單,
相依落後不另立短清單:這幾支同樣是更新與修復的唯一路徑,用哪一個理由擋
都是死鎖。四種情況一律安靜放行:解不出安裝路徑、讀不到 manifest、
manifest 沒有 jsc.requires、讀不到相依 plugin 的本機載入版本。五支 CLI
只有 claude 讀得到本機載入版本,fail-closed 會把另外四支整批鎖死。
所屬功能:版本前置檢查的相依版本閘門。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-31 13:41:25 +08:00 |
|
admin
|
3608581dac
|
Merge pull request 'chore(release): 放行技能組稽核修正到預設分支' (#53) from develop into master
Reviewed-on: #53
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
|
2026-08-31 03:56:23 +00:00 |
|
admin
|
5ee91bc045
|
Merge pull request 'fix(skillset): 技能組稽核修正與第九支 hook' (#52) from fix/skill-check-compliance-and-flow into develop
Reviewed-on: #52
|
2026-08-31 03:53:56 +00:00 |
|
 jiantw83andClaude Opus 5
|
3ae6dba13f
|
fix(smoke): 模型來源判定補上計數器,冒煙預期條數對回實際路徑
重定基底到 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>
|
2026-08-31 11:26:11 +08:00 |
|
jiantw83
|
99d87f7365
|
chore(plugin): 推進外掛版本與描述,相依清單補上兩個技能組
三份外掛設定檔的版本一起往上推,描述加上寫入與提交閘門,
相依清單補上 git 與 meta 兩個技能組。
這一輪新增一支 hook,也改了兩道閘門的行為。版本不推上去,
版本前置檢查就看不出機器上載入的是舊版,使用者會拿舊的閘門跑新的流程。
描述是使用者在市集看到的那一行,少一項就會漏掉新閘門。
寫入閘門擋下整包提交時,改法指向 git 技能組的分組流程;
語言規則的正文則在 meta 技能組。這兩個相依本來就成立,只是先前沒有寫進清單。
三份設定檔改成同一個版本,描述與相依清單三份同步,
避免不同 CLI 讀到不一樣的宣告。
|
2026-08-31 11:17:28 +08:00 |
|
jiantw83
|
04225a7a2d
|
docs(hooks): 每支腳本檔頭補上結束碼宣告,文件對齊九支 hook 的現況
共用函式庫與各支腳本的檔頭各補一段結束碼宣告,逐個子命令寫明哪些情況放行、
哪些情況擋下。說明文件改寫成九支 hook 的現況,補上寫入與提交閘門、唯讀模式、
建議子命令與新的環境變數。異常目錄範本補上「一律附加、不整頁覆蓋」的寫入語意。
呼叫端要靠結束碼決定下一步,但多數腳本只寫用法、沒寫結束碼,
讀的人得自己翻程式碼推,推錯就把安靜降級當成失敗處理。
共用函式庫載不到時,殼層會就地結束並回非零,接在工具呼叫前的閘門遇到這一下
等於無聲擋人,腳本自己的放行路徑一條都跑不到,這件事非寫進每一支檔頭不可。
文件停在八支 hook 的舊敘述,看的人會誤判覆蓋範圍,以為每支 CLI 都擋得住。
目錄頁的寫入語意只寫在腳本裡,換一支工具來寫就會整頁覆蓋。
一支腳本一段檔頭,逐子命令列出結束碼,並各自註明共用函式庫載入失敗會回哪一個碼。
文件的行數一律引用腳本自己印出來的那一行,不另抄一份數字,
判定路徑增減時就不會漂移。覆蓋範圍逐支 CLI 分開寫,接不上的就寫接不上。
|
2026-08-31 11:17:28 +08:00 |
|
jiantw83
|
e2b08f04a3
|
fix(gates): 修好會蓋掉異常目錄、把修復路徑鎖死與誤擋計畫階段的缺陷
異常回報依 wiki 讀取的結束碼分流,只有頁面確定不存在才套範本建新頁。
版本閘門與重啟閘門的豁免清單各補上 hook 修復技能。
階段閘門把計畫階段移出擋人名單,改成只注入提醒。
錯誤掃描的自家 hook 判定補齊九支腳本,並加一條路徑判定。
修復技能與接線技能的內文改成真的走得到的路徑與真的存在的關卡數。
原本 wiki 讀取失敗會一路落到套範本那一步,金鑰失效或 API 出狀況時,
就拿一份空白範本蓋掉整份異常目錄,而寫入不做合併也不留備份,蓋掉就救不回來。
兩道閘門把唯一的 hook 修復路徑一起擋住,hook 一壞就沒有任何方法修回來,
閘門等於鎖掉解除自己的路徑。工作包閘門擋下計畫階段是誤擋:
計畫是純邏輯階段、不碰程式碼,而閘門只知道有 PR 未合併,判不出跟新計畫有沒有關聯。
自家 hook 判定只認得早期那五支,後來加的四支出錯會被當成第三方的,只回報不修正。
修復技能裡三個指向流程的路徑指到不存在的位置,照著走一定撲空;
接線流程寫四道關卡,實際上有五道,兩段中文說明也混在英文內文裡。
異常目錄改成先讀回舊頁、把新列附在文末、再整頁寫回;讀不回來就放棄寫目錄頁並回報,
寧可少一列索引,也不覆蓋別人的紀錄。兩份豁免清單各補一項,理由逐項寫在腳本檔頭。
計畫階段改印提醒後放行,放棄的在製品上限與代價一併寫在檔頭。
自家 hook 判定逐支列出腳本名,再加一條安裝路徑判定,日後新增 hook 忘了補清單也還認得出來。
三個路徑改指到擁有它的技能組,關卡數改成五道並逐關寫明結束碼,兩段中文說明改回英文。
版本閘門在同一次改動另補唯讀的建議子命令,把版本比對表收斂成一行結論,
部署技能不必自己再解一次那張表。
|
2026-08-31 11:15:24 +08:00 |
|
jiantw83
|
b5219f6549
|
feat(write-guard): 新增寫入與提交閘門,把三條只寫在內文的規則落到程式層
新增第九支 hook,共四種模式。stage 在計畫與分析階段鎖著時擋下寫檔。
review 在稽核類技能執行中擋下寫檔。commit 擋下「一次加入全部變更再提交」的
單一指令,也擋下含簡體字、亂碼或非 UTF-8 編碼的提交訊息。
release 不接 hook,由稽核技能收尾時自己呼叫,清掉認人用的那份紀錄,
讓呼叫端接手修改時不會被剛跑完的稽核擋住。
這三條規則原本只寫在技能內文,靠模型自律。稽核技能會順手改程式碼,
計畫階段會寫出不該寫的檔案,整包提交會把型別與功能分組壓成一次。
規則要真的生效,就得由程式擋。release 模式是必要的:紀錄記的是最近一次
載入的技能,不是還在跑的技能,沒有它,稽核跑完之後呼叫端每一次寫入都被擋,
閘門會把解除自己的路徑一起鎖掉。
接線設定把 stage 與 review 接在寫檔工具,把 commit 接在指令工具。
閘門只讀階段閘門的狀態鎖與技能用量的紀錄,不自己寫狀態檔;
簡繁與編碼判定整段轉呼叫語言守門,不留第二份字表。
接線腳本的接線、唯讀盤點與冒煙各補上這一支,冒煙自備暫時的狀態目錄,
逐條比對每種模式的結束碼。接線腳本另補唯讀模式,體檢類技能全程帶著它跑,
清除與接線一律拒絕並回非零,子命令打錯一個字也改不到環境。
冒煙改成自己數結果行並自我斷言,散文只引用那一行,不再各抄一份數字。
限制據實寫在檔頭:只有 claude 有寫檔前置鉤子,其餘四支 CLI 一條都接不上,
那四支上這三條規則仍只剩技能內文。
|
2026-08-31 11:15:24 +08:00 |
|
admin
|
6b272974b5
|
Merge pull request 'fix/codex-model-gate' (#48) from fix/codex-model-gate into develop
Reviewed-on: #48
|
2026-08-28 10:12:31 +00:00 |
|
admin
|
1a89461b09
|
Merge pull request 'release: 發布 Codex hook 路徑修補' (#51) from release/codex-hook-root into master
Reviewed-on: #51
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
|
2026-08-28 10:11:32 +00:00 |
|
admin
|
ca68de8540
|
Merge pull request 'fix(codex-hooks): 避免 Claude manifest 在 Codex 變成空路徑' (#50) from fix/codex-claude-hook-manifest into develop
Reviewed-on: #50
|
2026-08-28 10:09:31 +00:00 |
|
jiantw83
|
955a36adb9
|
fix(codex-hooks): 避免 Claude manifest 在 Codex 變成空路徑
|
2026-08-28 18:07:20 +08:00 |
|
admin
|
1e728e3729
|
Merge pull request 'fix/report-error-confirm' (#49) from fix/report-error-confirm into develop
Reviewed-on: #49
|
2026-08-28 10:00:49 +00:00 |
|
Jeffery
|
a0a15b6ce5
|
fix(report-error): 寫入前先確認
|
2026-08-28 17:58:52 +08:00 |
|
jiantw83
|
83f6bdf21c
|
fix(model-gate): 支援 Codex 可驗證模型來源
|
2026-08-28 16:45:58 +08:00 |
|
admin
|
9785af335a
|
Merge pull request 'fix(wire-cli): purge 容忍標記行空白' (#47) from fix/hook-purge-marker-whitespace into develop
Reviewed-on: #47
|
2026-08-28 08:07:28 +00:00 |
|
jiantw83
|
49101fefdb
|
fix(wire-cli): purge 容忍標記行空白
|
2026-08-28 16:03:25 +08:00 |
|
admin
|
727b35703f
|
Merge pull request 'release: 發布 jsc-hooks 相依版本宣告' (#46) from develop into master
Reviewed-on: #46
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
|
2026-08-28 06:51:57 +00:00 |
|
admin
|
2d1c8bbc06
|
Merge pull request 'feat/plugin-dependencies/main' (#45) from feat/plugin-dependencies/main into develop
Reviewed-on: #45
|
2026-08-28 04:05:00 +00:00 |
|
admin
|
a2a8e8b837
|
Merge pull request 'feat/plugin-dependencies/declare-requires' (#44) from feat/plugin-dependencies/declare-requires into feat/plugin-dependencies/main
Reviewed-on: #44
|
2026-08-28 04:03:03 +00:00 |
|
jiantw83
|
8a1d9d116e
|
feat(manifest): 宣告 hooks 相依版本
|
2026-08-28 11:59:16 +08:00 |
|
admin
|
88af088881
|
Merge pull request 'release: 發布 jsc-hooks 0.2.8' (#43) from develop into master
Reviewed-on: #43
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
|
2026-08-28 03:38:35 +00:00 |
|
admin
|
d5867623df
|
Merge pull request 'fix/hook-stable-runtime-path' (#42) from fix/hook-stable-runtime-path into develop
Reviewed-on: #42
|
2026-08-28 03:27:49 +00:00 |
|
jiantw83
|
4dc879e202
|
chore(release): 發布 jsc-hooks 0.2.8
|
2026-08-28 11:22:13 +08:00 |
|
jiantw83
|
4e23e49159
|
fix(hooks-install): 使用穩定路徑寫入 hook 接線
|
2026-08-28 11:22:08 +08:00 |
|
admin
|
b385cb2c1b
|
Merge pull request 'develop' (#41) from develop into master
Reviewed-on: #41
Reviewed-by: 系統管理員 <1+admin@noreply.localhost>
|
2026-08-28 01:58:30 +00:00 |
|
admin
|
de6b012356
|
Merge pull request 'feat/change-requests/main' (#40) from feat/change-requests/main into develop
Reviewed-on: #40
|
2026-08-28 01:51:14 +00:00 |
|
admin
|
e37506dffb
|
Merge pull request 'feat/change-requests/state-and-comment-scope' (#39) from feat/change-requests/state-and-comment-scope into feat/change-requests/main
Reviewed-on: #39
|
2026-08-28 01:46:55 +00:00 |
|
jiantw83
|
1477ba7b29
|
feat(comment-scope): 偵測審查流程痕跡
|
2026-08-28 09:30:18 +08:00 |
|