Commit Graph
49 Commits
Author SHA1 Message Date
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 5d60e0f231 feat(hooks-install): 文件同步六支 hook 與降級說明
What:`skills/hooks-install/SKILL.md`、`README.md`、`AGENTS.md` 三份文件一併改口徑為六支 hook,補上 `comment-scope.sh` 的職責、兩種模式、環境變數 `JSC_COMMENT_SCOPE` 與 `JSC_CHANGED_FILE`,以及各 CLI 的覆蓋範圍差異。

Why:文件停在五支會誤導操作者,讓人以為每個 CLI 都受同等保護。實際上只有 claude 有 post-tool hook,其他四個 CLI 只接得到規則提示,這個落差必須據實寫明。

How:SKILL.md 的 `description` 與正文加上 comment scope scanner,並註明 exit 2 在冒煙測試裡算健康;README.md 的 hook 表格新增一列,接線工具那列改寫 `smoke` 的例外說明,環境變數表補兩列,另加一段講明四個 CLI 的降級實情;AGENTS.md 新增一條規則,寫明規則正文的唯一來源在 `jsc-review`,本存取庫不留副本。

Who:`jsc-hooks` 的文件層與 `hooks-install` 技能,供操作者與後續 sub agent 依循。
2026-08-26 19:01:36 +08:00
jiantw83 e2232d26f1 feat(wire-cli): 接線腳本納入註解範圍 hook,五支改六支
What:`tools/wire-cli.sh` 新增 `comment_scope_text()`、`rules_text()` 與 `has_comment_scope()` 三個函式,把 `comment-scope.sh` 的 `prompt` 模式接進 codex、copilot、antigravity 的規則檔與 kiro 的 hook JSON,`smoke` 與 `status` 兩個子命令也補上這支 hook,全腳本由五支 hook 改口徑為六支。

Why:`hooks/hooks.json` 只服務 claude;其他四個 CLI 要靠這支腳本接線,不改就完全接不到新規則。`smoke` 與 `status` 不同步補上,接線成功與否也驗不出來。

How:`comment_scope_text()` 直接取 `comment-scope.sh prompt` 的實際輸出當規則文字,不在本存取庫留規則清單副本;`rules_text()` 把 STE100 與註解範圍併進同一個 `<!-- jsc-hooks -->` 標記段落,重跑等同先移除再重裝;`has_comment_scope()` 供 `status` 判斷標記段落在不在。`smoke` 把 `comment-scope.sh` 無參數模式的 exit 2 視為設計行為,與 `sdlc-gate.sh check` 同列例外。

Who:`jsc-hooks` 的接線工具層,供 `jsc-hooks:hooks-install` 與 `jsc-hooks:repair` 呼叫。
2026-08-26 19:01:36 +08:00
jiantw83 f81ceaf145 feat(comment-scope): 新增註解範圍檢查 hook 並接進 claude 的 hooks.json
What:新增第六支 hook `hooks/comment-scope.sh`,並在 `hooks/hooks.json` 補上兩個接線點:UserPromptSubmit 走 `prompt` 模式、PostToolUse 的 `Write|Edit|MultiEdit` 走掃描模式。

Why:程式碼註解常被寫進工單編號、專案代號、負責人這類文件相關資訊,讓註解變成過期文件。過去只能靠 `/jsc-review:code-review` 事後抓,回饋太慢;把規則搬到寫檔當下,模型可以立刻修正。

How:`prompt` 模式印出規則摘要注入提示。無參數模式從 stdin JSON 取 `file_path`(或環境變數 `JSC_CHANGED_FILE`),只掃 `git diff HEAD` 的新增行,不翻舊帳;markdown、純文字、資料檔與二進位檔一律跳過。命中就把警告與最多三行證據送到 stderr 並以 exit 2 交回模型就地修正,不擋寫入。逃生門為 `JSC_COMMENT_SCOPE=off`。規則正文的唯一來源在 `jsc-review` 的 `references/comment-scope.md`,本存取庫不留副本。

Who:`jsc-hooks` 的 hook 層,服務 `jsc-hooks:hooks-install` 的接線流程與 `jsc-review:code-review` 的註解契約檢查。
2026-08-26 19:01:36 +08:00
jiantw83 221742486b fix(sdlc-gate): 工作包鎖檔改依索引區分,避免平行工作包互相覆蓋並修正提示文字 2026-08-26 17:59:21 +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 26a5a4690d docs(hooks): 補上工作包 PR 閘門的 hook 說明與逃生門 2026-08-25 18:59:29 +08:00
jiantw83 b9ad321930 feat(sdlc-gate): 新增工作包 PR 閘門,未結清就擋下別的階段技能 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 6ecb7d0387 docs(hooks): 同步 purge、smoke 與錯誤掃描的工具與技能說明 2026-08-25 18:18:10 +08:00
jiantw83 b45a98af87 feat(hooks-install): 安裝改為先清空所有 hook 再接線並驗執行期 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 83170e1b43 docs(hooks): 同步文件與參考資料
What:更新 README、AGENTS.md、templates 與 references,讓文件敘述與實際行為一致。

Why:稽核發現多處文件與程式行為分歧,違反「每個意義只有單一真實來源」。

How:以實際程式行為為準改寫敘述,重複的規則收成單一來源並以一行指引指過去。

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 fedcfc8b05 fix(hooks): 補齊稽核缺失並修掉護欄失效
What:依 jsc-meta:skill-check 的稽核結果修正技能與工具——補上每個步驟的可檢核完成條件、
把留在內文的標準輸入輸出流程下放 tools/、修正查表與退碼路由造成的誤判。

Why:稽核發現這些缺失會讓技能在實際執行時走錯分支或靜默通過。
完成條件缺漏是最常被違反的一項;退碼誤判與查表錯誤則會讓良性狀況被當成失敗。

How:逐項對照 references/guidelines.md 的審核檢查清單修正,新增的工具都有
documented exit codes,並以真實執行驗證每條路徑。

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 8a8e455c87 docs(README): 補上 version-guard report 的用途說明
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 13:03:17 +08:00
jiantw83andClaude Opus 5 2736555a75 feat(version-guard): 新增 report 子指令,一次比對所有 plugin 的本機與已發佈版本
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 922a95f147 docs(README): 補上 version-guard 與其環境變數說明
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-25 11:52:38 +08:00
jiantw83andClaude Opus 5 60b6b8fe00 feat(version-guard): 技能使用前檢查版本,落後遠端就擋下並提示更新
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 8c455954d9 fix(wiki 連結): 目錄頁連結方向修正、工作證不再假裝連結
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 4b64bf526e docs(README): 安裝入口改為 plugins/meta 並補上遷移說明
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
jiantw83andClaude Opus 5 0d1671cae1 docs(README): 更新 sdlc-gate 閘門行為與 JSC_MODEL 優先序說明
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-24 16:05:18 +08:00
jiantw83andClaude Opus 5 830ec26f97 feat(sdlc-gate): 階段閘門改為能力標籤程式判定,模型不符即擋下該輪提示
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
jiantw83 c4909e1a1f fix(marketplace): 修正 marketplace.json 與正典註冊表不同步的欄位缺漏
為什麼:
`.claude-plugin/marketplace.json` 與 `.agents/plugins/marketplace.json` 兩份檔案內容與 `plugins/jsc` 正典 marketplace 註冊表不一致,導致各 domain repo 的 marketplace 副本無法保持逐位元組同步。

做了什麼:
補上 `.agents/plugins/marketplace.json` 缺漏的頂層 `description`、`owner` 物件的 `description`,以及全部 11 個外掛(含 jsc-hooks 本身)缺漏的 per-plugin `description` 欄位;同時修正 `.claude-plugin/marketplace.json` 中 jsc-meta 描述的標點不一致問題,將斜線改為中文頓號,與正典風格一致。

怎麼做:
逐欄位比對正典 `plugins/jsc/marketplace.json` 內容,補齊並修正兩份檔案至與正典完全一致。

影響範圍:
`.claude-plugin/marketplace.json`、`.agents/plugins/marketplace.json`,屬全 repo 範圍的基礎設施修正,不影響任何 skill 邏輯或執行行為。
2026-08-24 14:47:36 +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 bdfb4619af docs(hooks-install): 更新四支 hook 的接線說明與文件
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>
2026-08-24 11:36:54 +08:00
jiantw83andClaude Fable 5 8a95bd2b47 feat(ste100): 加入送出前自我檢查清單
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>
2026-08-24 11:36:40 +08:00
jiantw83andClaude Fable 5 bb91cc2832 feat(wrapper): 新增無 Hook CLI 的包裝啟動器與日誌回填
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>
2026-08-24 11:36:24 +08:00
jiantw83andClaude Fable 5 05b3779118 feat(sdlc-gate): 新增 SDLC 每 session 模型鎖 hook
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>
2026-08-24 11:36:05 +08:00
jiantw83 e0dd3072b2 feat(error): 新增 ERROR wiki 範本 2026-08-21 16:53:17 +00: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 805befc13c chore(hooks): 加入統一 jsc marketplace 副本(與正本一致,任一 repo 可作註冊入口)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:37:47 +08:00
jiantw83andClaude Fable 5 4ffc8459e1 style(hooks): 中文並列改頓號
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:29:45 +08:00
jiantw83andClaude Fable 5 f395c1c2cb docs(hooks): translate SKILL.md into English per guidelines
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:29:45 +08:00
jiantw83andClaude Fable 5 58265e83e8 feat(hooks): ste100-guard 注入文字改為擬人台灣感版(台灣用語、全形標點、去 AI 味)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:13:27 +08:00
jiantw83andClaude Fable 5 de3c53f1df docs(hooks): README 安裝/更新/移除改為每指令一行(五個 CLI)並為相關 domain 加上 repo 連結
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 14:03:36 +08: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 9854c05a72 docs(hooks): 以統一格式改寫繁體中文 README 與 AGENTS
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 13:08:43 +08:00
jiantw83andClaude Fable 5 b774df23ae feat(hooks): 匯入 jsc-hooks 技能組
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-21 13:08:43 +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
jiantw83 57c7191108 Initial commit 2026-08-21 04:42:09 +00:00