 jiantw83andClaude Opus 5
|
80665f06bd
|
fix(comment-scope): 色碼不再被當成議題編號
寫一份含樣式表的網頁檔時,註解範圍守門連著兩次擋下來,說有議題編號,指
的其實是樣式表裡宣告墨色的那一行自訂屬性。
錯在兩層。一是註解行判定:SQL 的行首註解是兩個減號,樣式表的自訂屬性開
頭也是兩個減號,判定不管後面接什麼,整份樣式表的變數宣告就被當註解送去
比對。二是議題編號那條樣式咬的是井號接數字,色碼開頭剛好是數字,於是指
著色碼喊編號。
兩層各補一刀。行首兩個減號要求後面接空白:真的註解都留那個空白,自訂屬
性沒有,判定就分得開。白名單再多剪一條,把井號後面含十六進位字母的色碼
先剪掉;議題編號是純十進位,這一刀剪不到真的編號。剪而不是整行放行,維
持原本「同一行可能一半合規、一半違規」的處理方式。
驗過三種情形:含色碼宣告的樣式表不再命中;樣式表註解裡寫井號接兩位數字
照舊命中;SQL 註解裡夾議題編號照舊命中。語法檢查也過。
影響提交前那道註解範圍掃描。吃虧最深的是前端與資料庫這兩類檔案——之前它
們一碰色碼就得靠人判斷是不是誤報,現在守門擋下來的都值得看一眼。
三份 manifest 同步升到 0.5.2,跳過已在別處佔用的版號,避免撞號。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-09-08 15:01:49 +08:00 |
|
 jiantw83andClaude Opus 5
|
1f9f329cd3
|
fix(session-reminder): 內建項收成一行,不逐筆吐
實測踩到:這台機器的佇列八筆全是委派清單種入的內建項,於是每一個工作
階段開頭固定吐八行一模一樣的東西。那不是提醒,是噪音——而這一支自己的
註解裡就寫著「對著一個刻意的決定每個工作階段催一次,那是噪音不是提醒」。
逾期與使用者自己登錄的提醒照舊逐筆點名:人看到就做得了。內建項改成一行
總數,並在那一行講明它會一直出現,直到那幾筆接上入口或被改掉——講明它是
常態,讀的人才不會每次都當成新消息。
分種類的判定在寫佇列那一邊,那裡讀得到 spec_key;這裡只照它標好的種類
決定怎麼印,維持「只印不判」那條界線。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-09-07 13:39:57 +08:00 |
|
 jiantw83andClaude Opus 5
|
f83e1c542f
|
fix(wire-cli): 逐支點名改成從接線那一邊抽名單,五支 CLI 都驗得到
第十支 hook 上線之後實測發現:claude 與 kiro 的盤點點名得出它,codex、
copilot、antigravity 三段的盤點卻各自只驗自己寫死的那兩支。那三支的接線
盤點看不出第十支在不在,而 smoke 那一行還自稱「十支 hook」——兩句話都是
真的,範圍不同,讀的人分不出來。
根因是「接線寫了哪幾支」與「盤點驗了哪幾支」本來是兩份手寫清單。加一支
hook 要記得回來改第二個地方,而漏改的那一天不會有任何東西叫。
改成從接線那一邊實際會寫出去的內容抽名字,兩邊只留一份清單:
- codex 讀的是從 hooks/hooks.json 推導出來的複本,所以名單取自來源那一份,
十支全驗;推導漏掉一支時,盤點說得出漏了哪一支。
- copilot 與 antigravity 只接得上兩道閘門,名單取自各自的條目產生函式。
- copilot 原本一支 hook 都沒點名,只驗「hooks 鍵在」——鍵在而某一支條目掉了
照樣回 present,那正是這一整支腳本一直在防的形態。
codex 接線後的驗證也一起改:原本只確認那兩道閘門有接上,現在逐支對照來源。
推導是整份複製再改 matcher,漏掉任何一支都算推導壞了。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-09-07 12:39:07 +08:00 |
|
 jiantw83andClaude Opus 5
|
cd4cd8b936
|
feat(hooks): 工作階段開始時把助理的未讀提醒帶到前景
助理算得出哪幾筆到期、哪幾筆逾期,但那些結果只寫在監控頁上——人要自己
去翻,或自己跑一次狀態查詢。這一支把它帶到前景。
session-reminder.sh 只讀助理那一輪寫好的提醒佇列,一個判定都不做。
自己拿 due 欄與 next_run 去跟現在比就是第二套到期判定,跟助理那一套遲早
對不上,而對不上的那一天兩邊都說自己是對的。它也要快:這一支跑在每一個
工作階段的開頭。
只印佇列換來一個新的失效模式,正面處理:助理停了,佇列就不再更新,而一份
舊佇列讀起來跟新的一模一樣。所以佇列檔頭帶那一輪的時間戳與 epoch,這裡
算出它多舊;超過心跳門檻或心跳不新鮮,就明說這批提醒是多久以前算的、
助理現在的心跳是什麼狀態。門檻與狀態都取 heartbeat.sh 印的那一行。
佇列空又過期的那一種分兩路:待辦簿有東西才說話,零筆就安靜——人自己按停
也算零筆那一種,對著一個刻意的決定每個工作階段催一次是噪音不是提醒。
助理狀態目錄根本不存在時整支安靜退出,那台機器從沒啟動過助理。
一個工作階段只提一次,記號是 sessions/{代號}.reminded。接不到 session id
的 CLI 全部共用 default,所以 session-timer.sh 的 restart 分支順手清掉那個
記號——不清的話那支 CLI 從第二個工作階段起再也收不到提醒。清除掛在那裡
不掛在這裡:「這是不是新的工作階段」的判準只有那一支知道。
接線與檢核一起改,不留一支沒人驗的 hook:hooks.json 與推導出來的
codex-hooks.json 各加一條、kiro 的 agentSpawn 加一條、claude 的 status
逐支列舉加一項、冒煙測試加一條並把預期條數從 17 改成 18、執行期錯誤掃描
的 jsc 判定加一支腳本名,還有散在文件與回報字串裡的「九支 hook」十處
全部改成十支。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-09-07 11:14:41 +08:00 |
|
 jiantw83andClaude Opus 5
|
3f0e5df673
|
chore(plugin): 版號讓到 0.4.7
0.4.6 讓給另一張同時要合併的。兩張都動到行為清單同一節,順序定下來之後
這一張排第二,版號跟著讓開。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-09-07 09:11:21 +08:00 |
|
 jiantw83andClaude Opus 5
|
7f6e0d9299
|
Merge develop
三份 manifest 取 develop 的版號再往上升一版:分支停在一個比 develop 舊的版號。
行為清單那一節四列兩邊都改過,但改的是不同層面:分支改「目錄頁怎麼寫」——索引
從表格列變成一個報告一個大標題區塊、寫入語意委派給共用工具;develop 改「根目錄
怎麼解」——前置步驟解出兩條字面絕對路徑再拿去叫工具。逐列用差異區間比對過,
兩邊在共同基底上動到的位置完全不重疊,所以照基底的座標把兩組改動一起套回去,
不是取其中一邊。
技能本文那一段同理:分支把整段改寫成區塊語意,develop 只在指令路徑前面補了
根目錄前綴。取分支那一版再補上前綴。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-09-07 09:10:57 +08:00 |
|
 jiantw83andClaude Opus 5
|
d6f1e0e7ba
|
feat(接線): status 加 --verdict,把狀態與成敗兩種語意分開
status 的結束碼帶的是狀態:0 是接好、1 是接好但這支 CLI 做不到、5 是有東西
沒接。那是給人看的三分法,本身沒有錯。
問題出在被當成檢查用。助理的內建檢查項照結束碼判成敗,非零就是那一筆失敗、
失敗次數加一。於是有先天限制的那一支 CLI 每一輪都讓那一筆失敗一次,一天 96
次,而沒有人修得動——那支 CLI 擋不下技能叫用是它的架構限制,不是接線缺漏,
16 個接線項目全部就位。
那個計數存在的理由是指出「有一筆壞掉的項目每輪重試而沒人知道」。被一個修不動
的數字填滿,就等於用假的壞掉把真的壞掉蓋掉。
修在這一邊而不是修在讀的那一邊:狀態與成敗是兩種語意,混在同一個通道上才是
根因。這個旗標把成敗那一種單獨拉出來,status 保持原樣給人看。
--verdict 之下輸出一字不變——degraded 那一行照印,人看得到——只有結束碼換一套
語意:該接的都接了就回 0,先天限制不算;真的缺項目照樣回 5。
只有 status 收這個旗標,別的子命令帶了回 2:另外三個子命令的結束碼本來就是
成敗語意,多一個旗標只會讓人以為它們也有兩套。
實測:五支 CLI 兩種模式各跑一次,只有帶先天限制那一支從 1 變 0;輸出逐字
相同;暫時拿掉一個接線項目之後 --verdict 回 5,還原後回 0;旗標的三條錯誤
路徑都回 2。
三份 manifest 版號 0.4.4 升到 0.4.5。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-09-04 18:04:51 +08:00 |
|
jiantw83
|
1684e5636d
|
chore(plugin): 三份 manifest 升版至 0.4.4
共用函式庫的收尾修正要靠版號才傳得到機器端。
三份 manifest 由 sync-skill-manifest.sh 同步,只動版本欄位。
|
2026-09-03 13:06:35 +08:00 |
|
jiantw83
|
e5a9b05164
|
chore(plugin): 三份 manifest 升版至 0.4.3
路徑解析的修正要靠版號才傳得到機器端,版本前置檢查才會要求更新。
三份 manifest 由 sync-skill-manifest.sh 同步,只動版本欄位。
|
2026-09-03 12:19:27 +08:00 |
|
jiantw83
|
70526244c7
|
chore(plugin): 三份 manifest 升版至 0.4.2
hooks-install 的路徑處理與行為清單都變了,版號要帶得出這批變更,版本前置檢查才會要求機器端更新。
三份 manifest 由 sync-skill-manifest.sh 同步,只動版本欄位,內容一致。
受影響的是靠版號判斷要不要更新的每一台機器。
|
2026-09-03 10:32:22 +08:00 |
|
jiantw83
|
bd1a705ea8
|
chore(plugin 版本): 三份 manifest 升版至 0.4.2
What:
三份 plugin manifest 的版號由 0.4.1 同步升到 0.4.2,README 的技能目錄確認沒有新增或移除小節。
Why:
版本閘門比對相依版本時看的是 manifest 版號。改了內容卻不升版,安裝端拿到新檔案卻還是舊版判定,落後的一方擋不下來。
How:
以 jsc-meta 的技能清單同步工具一次改三份,結束碼 0,避免三份版號各自手改而對不起來。
Who:
安裝或更新 jsc 技能組的操作者。
|
2026-09-02 18:02:20 +08:00 |
|
jiantw83
|
106922d530
|
chore(plugin 版本): 三份 manifest 升版至 0.4.1
|
2026-09-02 15:40:17 +08:00 |
|
jiantw83
|
c0ce4c5c3c
|
chore(plugin 版本): 三份 manifest 升版至 0.4.0
|
2026-09-02 14:57:04 +08:00 |
|
jiantw83
|
9136894837
|
chore(plugin 版本): 三份 manifest 升版至 0.3.9
|
2026-09-02 14:27:18 +08:00 |
|
jiantw83
|
f4871afd19
|
feat(wiki): 異常目錄頁改走專用存取庫,並修正目錄列連結恆空
What:ERROR_CONTENTS 改由 wiki-repo CONTENTS 解析,ERROR_{HASH} 仍走
wiki-repo ERROR,兩者是兩個不同的存取庫。目錄列的連結改用 wiki-url 的絕對網址。
註解掃描的頁面編號樣式補上 40 碼與 H 加 7 碼兩種形狀。
Why:目錄列的網址原本在異常頁寫入之前就取,而頁名的雜湊帶時間戳、每次都是全新頁,
那時查一定是 404,又被吞掉,所以那一格一直都是空的。註解掃描原本只收 8 碼純十六進位,
舊演算法有十三個首碼會改寫成 H 開頭,等於對絕大多數舊頁編號漏偵測。
How:降級語意分兩層——異常頁的存取庫解不出來就整支安靜降級,只有目錄頁解不出來就
只寫異常頁、跳過索引,兩種都維持 exit 0。「只有 exit 4 才准建新頁、7 與 8 一律中止」
那段原樣保留,那是防止把金鑰失效讀成頁面不存在、拿範本蓋掉整頁既有列。
Who:jsc-hooks
|
2026-09-02 11:30:49 +08:00 |
|
jiantw83
|
b5107563dd
|
chore(manifest): 心跳腳本的版本號補上,檔頭改指正確的技能名
What:
- 三份 manifest 的版本一起提升。
- heartbeat.sh 檔頭引用的技能名由 status 改成 assistant。
Why:
- 上一筆加了 heartbeat.sh 卻沒有動版本號。版本不動,別的 domain 就沒有辦法用相依宣告要求「要有這支腳本的那一版」——宣告寫得出來,卻保證不了內容。助理宣告的下限本來會落在一個不含這支腳本的版本上。
- 檔頭寫的技能名是助理落地初期那一支獨立技能。助理主體把三個操作收攏成一支之後,那個名字就不存在了,照著找會找不到東西。
How:
- 版本由 sync-skill-manifest.sh 同步,三份一致。
- 這一支仍然不接線,只是被助理與閘門呼叫的工具。
Who:
助理主體實作時,從相依宣告那一側回頭抓到的兩個缺口。
|
2026-09-01 14:18:49 +08: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 |
|
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 |
|
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 |
|
 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 |
|
jiantw83
|
99d87f7365
|
chore(plugin): 推進外掛版本與描述,相依清單補上兩個技能組
三份外掛設定檔的版本一起往上推,描述加上寫入與提交閘門,
相依清單補上 git 與 meta 兩個技能組。
這一輪新增一支 hook,也改了兩道閘門的行為。版本不推上去,
版本前置檢查就看不出機器上載入的是舊版,使用者會拿舊的閘門跑新的流程。
描述是使用者在市集看到的那一行,少一項就會漏掉新閘門。
寫入閘門擋下整包提交時,改法指向 git 技能組的分組流程;
語言規則的正文則在 meta 技能組。這兩個相依本來就成立,只是先前沒有寫進清單。
三份設定檔改成同一個版本,描述與相依清單三份同步,
避免不同 CLI 讀到不一樣的宣告。
|
2026-08-31 11:17:28 +08:00 |
|
jiantw83
|
955a36adb9
|
fix(codex-hooks): 避免 Claude manifest 在 Codex 變成空路徑
|
2026-08-28 18:07:20 +08:00 |
|
jiantw83
|
49101fefdb
|
fix(wire-cli): purge 容忍標記行空白
|
2026-08-28 16:03:25 +08:00 |
|
jiantw83
|
8a1d9d116e
|
feat(manifest): 宣告 hooks 相依版本
|
2026-08-28 11:59:16 +08:00 |
|
jiantw83
|
4dc879e202
|
chore(release): 發布 jsc-hooks 0.2.8
|
2026-08-28 11:22:13 +08:00 |
|
jiantw83
|
1477ba7b29
|
feat(comment-scope): 偵測審查流程痕跡
|
2026-08-28 09:30:18 +08:00 |
|
jiantw83
|
0556512ebf
|
chore(hooks): 三份 manifest 版本升到 0.2.6
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的 `version` 從 0.2.5 升到 0.2.6,三份同步,description 不動。
Why:這一輪改掉重啟閘門的狀態檔路徑與範圍,是使用者裝上去就會拿到的行為變更。版本不升,`version-guard.sh` 的版本前置檢查與 `jsc-cli:deploy` 的落後判定都看不出本機還是舊版,機器上就不會被提示更新。
How:只改版號一個欄位。三份必須一致:`plugin.json` 給 marketplace、`.claude-plugin` 給 claude、`.codex-plugin` 給 codex,任一份落後都會讓那一路的版本比對抓錯。修的是既有行為的缺陷、沒有新增子命令也沒有改變呼叫介面,所以走修訂號。
Who:`jsc-hooks` 的三份 plugin manifest,配合這一輪重啟閘門的修正發佈。
|
2026-08-27 18:49:58 +08:00 |
|
jiantw83
|
7d67538a2a
|
docs(hooks-install): 豁免清單補齊為九支,與實作和準則對齊
What:`skills/hooks-install/SKILL.md` 的 Notes 段落,重啟閘門的豁免技能清單從六支補到九支,補上 `jsc-ask:ask`、`jsc-git:pr`、`jsc-git:commit`,並寫明「閘門認技能名不認呼叫鏈」以及清單的唯一來源在 `hooks/restart-gate.sh`。
Why:這三支是使用者在同一輪追問後才裁定加入的,實作 `hooks/restart-gate.sh` 與準則 `guidelines.md`「部署後重啟閘門」都已經是九支,只有這份技能文件還停在六支。技能文件是接線時唯一會被讀到的說明,少列三支會讓人以為 `deploy` 問模式、收尾開 PR 都會被擋,反而去下逃生門。
How:只改那一行,補上三支與兩句說明,並指向清單的唯一來源,避免下次又各自維護一份。三份 manifest 版本同步升到 0.2.5。
Who:`jsc-hooks:hooks-install` 技能文件,以及部署後重啟閘門這條規則的說明一致性。
|
2026-08-27 16:49:02 +08:00 |
|
jiantw83
|
4f92c48e10
|
chore(manifest): 三份 manifest 版本升到 0.2.4,描述補齊八支 hook
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的 `version` 由 0.2.3 改為 0.2.4,`description` 的 hook 清單從五支補齊到八支,補上註解範圍守門、繁中編碼守門與部署後強制重啟。
Why:本次新增第八支 hook `restart-gate.sh` 並接進 `hooks.json`,`session-timer.sh` 多了清除閘門這件事,接線與冒煙也跟著改,屬於行為變更,版本要跟著往上走,各 CLI 才知道要更新。`description` 原本只列到「版本前置檢查」,而註解範圍與繁中編碼兩支早就在跑了,`README.md` 與 `AGENTS.md` 也都寫了八支——manifest 是各 CLI 安裝時唯一看得到的說明,落後就會讓人以為這個外掛只有五支 hook。
How:三份只改 `version` 與 `description` 兩個欄位,其餘內容不動,三份保持同一版號與同一段描述。
Who:`jsc-hooks` 外掛的套件描述檔。
|
2026-08-27 16:34:17 +08:00 |
|
jiantw83
|
be75cc4bed
|
chore(manifest): 三份 manifest 版本升到 0.2.3
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的 `version` 由 0.2.2 改為 0.2.3。
Why:本次新增 `wp-claim`、`wp-unclaim` 兩個子命令並改了鎖檔格式,屬於行為變更,版本要跟著往上走,各 CLI 才知道要更新。
How:三份只改 `version` 一個欄位,其餘內容不動,三份保持同一版號。
Who:`jsc-hooks` 外掛的套件描述檔。
|
2026-08-27 11:20:28 +08:00 |
|
jiantw83
|
667b60c8e9
|
feat(manifest): 三份 manifest 版本升到 0.2.2
What:三份 manifest 由 0.2.1 升到 0.2.2。
Why:字表擴充後偵測能力大幅改變,本機沒跟著升版,version-guard.sh 就判不出落後,
使用者不會收到更新提示,繼續用覆蓋率只有兩成的舊字表。
How:以 jsc-meta 的 sync-skill-manifest.sh 統一 bump,三份同步成同一個值。
Who:非程式碼輸出的繁中無亂碼檢查。
|
2026-08-27 09:53:55 +08:00 |
|
jiantw83
|
aee2f19699
|
feat(manifest): 三份 manifest 版本升到 0.2.1
What:把 `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 三份 manifest 的版本由 0.2.0 升到 0.2.1。
Why:0.2.0 已隨前一支 PR 發佈出去,本次新增的第七支 hook 與五個 CLI 的接線沒有跟著升版,`version-guard.sh` 就看不出本機落後,使用者不會收到更新提示。
How:以 jsc-meta 的 `sync-skill-manifest.sh` 統一 bump,patch 進位,三份同步成同一個值。
Who:繁中與編碼檢查 hook 的跨 CLI 支援。
|
2026-08-27 09:50:03 +08:00 |
|
jiantw83
|
542f0aab2c
|
feat(manifest): 三份 manifest 版本升到 0.2.0
What:把 plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份
manifest 的版本由 0.1.9 升到 0.2.0。
Why:0.1.9 已隨前一支 PR 發佈出去,本次新增的 sweep 模式與四支 CLI 的接線
沒有跟著升版,version-guard.sh 就看不出本機落後,使用者不會收到更新提示。
How:以 jsc-meta 的 sync-skill-manifest.sh 統一 bump,minor 進位、patch 歸零,
三份同步成同一個值。
Who:註解範圍檢查 hook 的跨 CLI 支援。
|
2026-08-27 09:20:44 +08:00 |
|
jiantw83
|
7690b697c7
|
feat(manifest): 三份 manifest 版本升到 0.1.9
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 三份 manifest 的 `version` 由 0.1.8 升到 0.1.9。
Why:本次新增了第六支 hook,屬於功能增修。版本不升,`version-guard.sh` 的版本前置檢查與 `jsc-cli:deploy` 的更新判斷都看不出本機落後,使用者不會收到更新提示。
How:三份檔案同步改同一個版本號,維持三份 manifest 版本一致的既有慣例。
Who:`jsc-hooks` 的發佈中繼資料,供 `hooks/version-guard.sh` 與 `jsc-cli:deploy` 比對版本。
|
2026-08-26 19:01:36 +08:00 |
|
jiantw83
|
f1bcdc3d72
|
feat(wire-cli): 新增唯讀的接線盤點子命令
What: wire-cli.sh 新增 status 子命令,只讀設定檔判斷 jsc 標記段落在不在,不寫檔也不執行 hook。每個接線點印一行 item,以 status=wired、degraded、unwired、skipped 回報。
Why: 體檢類技能要問「hook 接線在不在」,但既有三個子命令都會動到環境:不帶子命令會重新接線、purge 會刪掉、smoke 會真的執行 hook。體檢不該有副作用。
How: 沿用底下接線區塊的同一組檔案位置與標記字串,共用 has_block、toml_root_key、json_top_key 三個判讀函式。codex 的 notify 另外單獨檢查是否落在根層,標記在、鍵被歸進表裡時 codex 讀不到,等同沒接。
Who: 供 jsc-cli:doctor 呼叫的接線檢查。
|
2026-08-26 10:44:47 +08:00 |
|
jiantw83
|
65d3c13d22
|
chore(hooks): 三份 manifest 同步升版到 0.1.7
|
2026-08-25 18:59:29 +08:00 |
|
jiantw83
|
e62511b57f
|
chore(hooks): 三份 manifest 同步升版到 0.1.6
|
2026-08-25 18:18:10 +08:00 |
|
jiantw83
|
ad2f944a66
|
fix(hooks): 修正版本號為單位數格式
|
2026-08-25 16:39:49 +08:00 |
|
jiantw83
|
c68292acbc
|
feat(hooks): 自動接手失敗接線與修復流程
|
2026-08-25 16:33:38 +08:00 |
|
 jiantw83andClaude Opus 5
|
2982ca4e9f
|
chore(hooks): 三份 manifest 同步升版並同步 marketplace 正本
What:三份 plugin manifest 版本同步 bump,兩份 marketplace 檔與 plugins/meta 正本對齊。
Why:準則要求技能異動必須同步升版;marketplace 副本必須與正本完全一致。
How:以 jsc-meta 的 tools/sync-skill-manifest.sh 升版,marketplace 檔由正本複製。
Who:jsc-meta:skill-check 例行稽核(2026-08-25)。
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-25 14:58:54 +08:00 |
|
 jiantw83andClaude Opus 5
|
99f5747b9e
|
chore(plugin 版本): 三份 manifest 升版至 0.0.9
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-25 13:03:17 +08:00 |
|
 jiantw83andClaude Opus 5
|
3b0c8f0e33
|
chore(plugin 版本): 三份 manifest 升版至 0.0.8
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-25 11:52:38 +08:00 |
|
 jiantw83andClaude Opus 5
|
9b6cfb9d2e
|
chore(plugin 版本): 三份 manifest 升版至 0.0.7
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-24 18:54:19 +08:00 |
|
 jiantw83andClaude Opus 5
|
fdde05e825
|
chore(plugin 版本): 三份 manifest 升版至 0.0.6
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-24 18:00:35 +08:00 |
|
 jiantw83andClaude Opus 5
|
cacd234869
|
chore(plugin 版本): 三份 manifest 升版至 0.0.5
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-24 16:05:18 +08:00 |
|
jiantw83
|
69eee91f27
|
feat(hooks-install): 將 hooks-install 的 CLI 佈線邏輯抽離為腳本
為什麼:
`skills/hooks-install/SKILL.md` 原本直接內嵌各 CLI(codex/copilot/antigravity/kiro)的詳細佈線步驟,包含逐步設定檔修改、wrapper alias 安裝、以及 `<!-- jsc-hooks -->` 標記區塊的冪等替換邏輯,違反 jsc-meta:skill-check 稽核準則中「確定性程序邏輯應由腳本執行,不應留給子代理每次自行解讀 prose」的要求。
做了什麼:
新增腳本 `tools/wire-cli.sh {cli}`,將原本內嵌於 SKILL.md 的佈線邏輯全數抽出,並支援冪等執行(標記區塊替換、可安全重跑),輸出機器可讀的 `status=wired|degraded|skipped reason=...` 首行訊息與對應結束碼(0=wired、1=degraded、2=bad usage、3=skipped)。改寫 `skills/hooks-install/SKILL.md`,改為依偵測到的 CLI 呼叫此腳本,並讀取其 status/結束碼判斷結果,不再自行內含佈線步驟。同步更新 `README.md`:在工具表新增 `tools/wire-cli.sh` 說明列,並改寫 hooks-install skill 的描述段落,反映新的腳本驅動流程與 `status=` 回報慣例。三份外掛清單 `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 版本號自 0.0.3 升級為 0.0.4,對應此行為變更。
怎麼做:
建立獨立腳本承載原本的 CLI 佈線程序邏輯,改造 SKILL.md 為呼叫腳本並解讀其標準化輸出,同步更新文件與版本號。
影響範圍:
`skills/hooks-install/SKILL.md`、`README.md`、`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json`、新增檔案 `tools/wire-cli.sh`;影響 hooks-install skill 的執行流程與所有安裝 jsc-hooks 外掛的 CLI 佈線行為。
|
2026-08-24 14:47:46 +08:00 |
|
 jiantw83andClaude Fable 5
|
aae0516cb5
|
chore(manifest): 三份 manifest 升版至 0.0.3
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>
|
2026-08-24 11:37:08 +08:00 |
|
 jiantw83andClaude Fable 5
|
97fdeb9211
|
fix(hooks): 移除 manifest 重複的 hooks 設定並升版至 0.0.2
What(改了什麼):
刪除 .claude-plugin/plugin.json 中的 "hooks": "./hooks/hooks.json" 欄位,
並將 plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json
三份 manifest 的版本號從 0.0.1 升到 0.0.2。
Why(為什麼改):
claude plugin list 回報 jsc-hooks 載入失敗(Hook load failed:
Duplicate hooks file detected)。Claude Code 會自動載入標準路徑
hooks/hooks.json,manifest 再宣告同一份檔案就造成重複載入,
manifest.hooks 只該用來宣告額外的 hook 檔。
How(怎麼改):
移除多餘的 manifest.hooks 欄位,讓 hooks/hooks.json 只透過標準
自動載入機制載入一次;同步升版三份 manifest 以觸發各 CLI 的
plugin update,並以 python3 -m json.tool 驗證三份 JSON 格式正確。
Who(影響哪個功能/使用者):
影響 jsc-hooks 外掛的所有使用者。修正後外掛可在 claude CLI 正常
載入,STE100 語言強制、工時計時、技能用量記錄等 hooks 恢復生效。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-21 08:31:12 +00:00 |
|
 jiantw83andClaude Fable 5
|
c628361f52
|
chore(hooks): 版本號改為 0.0.1 並移除個別 marketplace(統一為 jsc)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-21 14:03:36 +08:00 |
|
 jiantw83andClaude Fable 5
|
18a22ce640
|
chore(hooks): 修正範本 manifest 與移除 hello 範例符合 hooks 領域
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
2026-08-21 13:08:18 +08:00 |
|