From 2abe236c3536d3dd4137b49c6e442805866007e1 Mon Sep 17 00:00:00 2001 From: Jeffery Date: Mon, 27 Jul 2026 16:44:57 +0800 Subject: [PATCH] =?UTF-8?q?fix(worklog):=20=E9=81=BF=E5=85=8D=20Codex=20st?= =?UTF-8?q?op=20hook=20=E5=9F=B7=E8=A1=8C=20Claude=20=E5=B0=88=E7=94=A8?= =?UTF-8?q?=E8=B7=AF=E5=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- README.md | 8 ++++---- hooks/hooks.json | 2 +- plugin.json | 2 +- skills/worklog/SKILL.md | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 6f60f0f..3110a49 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.2.3", + "version": "0.2.4", "description": "JSC 文件化 skills(Claude Code / Codex / Antigravity / OpenCode):doc-docker 會整理 docker-compose.yaml 的行內註解與標題日期;doc-funcs 會為專案 functions 建立 .docs 草稿、補齊 XML 文件註解並重建 README 功能列表與使用範例;doc-issues-analyze-to-file 會讀取 Gitea issue、彙整需求、拆成多階段 issue 並產生實作草稿與交付留言;doc-issues-analyze 會把專案/議題/文件來源(議題連同留言與附件一起讀取)拆成小功能議題(母議題須待所有子議題關閉後才可關閉)、分析完成後把屬於專案看板的議題移到「待處理」欄位並依到期日實作;doc-issues-sync 會讀取 Gitea 專案或議題、依工作目錄檔案勾稽並同步議題的 TODO 進度、標籤與專案看板進度欄位並產生進度留言(指定關閉專案/專案完成時改為批次把專案所有議題搬到「已完成」並關閉);worklog 會在 Claude Code Stop hook 將每輪工作整理成六欄工作紀錄並追加到 Gitea wiki。所有 skills 以 SKILL.md 為共通標準,於 Claude Code 以 /jsc: 前綴呼叫。", "skills": "./skills", "author": { diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 8a66e4c..e139ad9 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.2.3", + "version": "0.2.4", "description": "JSC 文件化 skills:doc-docker 會整理 docker-compose.yaml 的行內註解與標題日期;doc-funcs 會為專案 functions 建立 .docs 草稿、補齊 XML 文件註解並重建 README 功能列表與使用範例;doc-issues-analyze-to-file 會讀取 Gitea issue、彙整需求、拆成多階段 issue 並產生實作草稿與交付留言;doc-issues-analyze 會把專案/議題/文件來源(議題連同留言與附件一起讀取)拆成小功能議題(母議題須待所有子議題關閉後才可關閉)、分析完成後把屬於專案看板的議題移到「待處理」欄位並依到期日實作;doc-issues-sync 會讀取 Gitea 專案或議題、依工作目錄檔案勾稽並同步議題的 TODO 進度、標籤與專案看板進度欄位並產生進度留言(指定關閉專案/專案完成時改為批次把專案所有議題搬到「已完成」並關閉);worklog 會將每輪工作整理成六欄工作紀錄並追加到 Gitea wiki(自動 Stop hook 僅 Claude Code 支援)。所有 skills 以 SKILL.md 為共通標準。", "skills": "./skills" } diff --git a/README.md b/README.md index 6d94c03..c24bb05 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ doc/ │ └── marketplace.json # Codex marketplace(name: "doc",url source 指向本 repo) ├── plugin.json # Antigravity 外掛定義(name: "jsc",skills: "./skills/") ├── hooks/ -│ └── hooks.json # Claude Code hooks(Stop → worklog;其他助理不吃此檔) +│ └── hooks.json # Stop → worklog;只有 Claude Code 環境實際執行,其他助理 no-op ├── scripts/ │ └── worklog/ # worklog 自動記錄的可執行元件(skill 與 hook 共用) │ ├── worklog.sh # 主流程:抽本輪 → 濃縮成六欄 → 遮蔽 → 追加到 wiki @@ -62,10 +62,10 @@ doc/ | 功能 | Claude Code | Codex | Antigravity | OpenCode | GitHub Copilot | | --- | --- | --- | --- | --- | --- | -| `Stop` hook 自動記錄 | ✅ | ❌ 不讀 `hooks/hooks.json` | ❌ | ❌ | ❌ | +| `Stop` hook 自動記錄 | ✅ | ⚠️ 會載入但 no-op | ❌ | ❌ | ❌ | | `worklog` 手動模式 | ✅ | ⚠️ 需安裝後保留 `scripts/` | ⚠️ 同左 | ❌ | ❌ | -`worklog` 自動記錄依賴 Claude Code 的 Stop hook 與 transcript JSONL 結構;Copilot 可讀本 repo 的指示檔與 `SKILL.md` 作為工作方式參考,但不能執行此 hook。 +`worklog` 自動記錄依賴 Claude Code 的 Stop hook 與 transcript JSONL 結構;Codex 會載入 plugin hook 定義,因此 hook command 會先檢查 `CLAUDE_PLUGIN_ROOT`,非 Claude Code 環境直接 no-op。 --- @@ -184,7 +184,7 @@ copilot plugin marketplace remove doc - 安裝 token `jsc@doc` = plugin 名(plugin manifest 的 `name`)@ marketplace 名。 - `copilot plugin marketplace add` 支援 GitHub `owner/repo`、git URL 與本地路徑;Gitea repo 可用上方 HTTPS URL。 - **呼叫**:在 Copilot CLI 中用自然語言描述需求,例如 `copilot -i "請使用 doc-docker 整理 docker-compose 註解"`。 -- `worklog` 的 Claude Code `Stop` hook 自動記錄仍只有 Claude Code 會讀取;Copilot CLI 可安裝 skill,但不會執行 Claude Code hook。 +- `worklog` 的 `Stop` hook 自動記錄仍只有 Claude Code 環境會實際執行;Copilot CLI 可安裝 skill,但不會執行 Claude Code hook。 --- diff --git a/hooks/hooks.json b/hooks/hooks.json index bc27d10..0bdd327 100644 --- a/hooks/hooks.json +++ b/hooks/hooks.json @@ -5,7 +5,7 @@ "hooks": [ { "type": "command", - "command": "${CLAUDE_PLUGIN_ROOT}/scripts/worklog/worklog.sh", + "command": "if [ -n \"${CLAUDE_PLUGIN_ROOT:-}\" ]; then \"${CLAUDE_PLUGIN_ROOT}/scripts/worklog/worklog.sh\"; fi", "timeout": 60 } ] diff --git a/plugin.json b/plugin.json index 18b777a..ccbf7f7 100644 --- a/plugin.json +++ b/plugin.json @@ -1,6 +1,6 @@ { "name": "jsc", - "version": "0.2.3", + "version": "0.2.4", "description": "JSC 文件化 skills:doc-docker 會整理 docker-compose.yaml 的行內註解與標題日期;doc-funcs 會為專案 functions 建立 .docs 草稿、補齊 XML 文件註解並重建 README 功能列表與使用範例;doc-issues-analyze-to-file 會讀取 Gitea issue、彙整需求、拆成多階段 issue 並產生實作草稿與交付留言;doc-issues-analyze 會把專案/議題/文件來源(議題連同留言與附件一起讀取)拆成小功能議題(母議題須待所有子議題關閉後才可關閉)、分析完成後把屬於專案看板的議題移到「待處理」欄位並依到期日實作;doc-issues-sync 會讀取 Gitea 專案或議題、依工作目錄檔案勾稽並同步議題的 TODO 進度、標籤與專案看板進度欄位並產生進度留言(指定關閉專案/專案完成時改為批次把專案所有議題搬到「已完成」並關閉);worklog 會在 Claude Code Stop hook 將每輪工作整理成六欄工作紀錄並追加到 Gitea wiki。所有 skills 以 SKILL.md 為共通標準;於 Antigravity 以 /jsc: 前綴呼叫。", "skills": "./skills/" } diff --git a/skills/worklog/SKILL.md b/skills/worklog/SKILL.md index b3b49b6..ba4c160 100644 --- a/skills/worklog/SKILL.md +++ b/skills/worklog/SKILL.md @@ -19,13 +19,13 @@ description: 工作證明自動記錄(worklog)的操作與維護 skill。搭 | 功能 | Claude Code | Codex | Antigravity | OpenCode | | --- | --- | --- | --- | --- | -| `Stop` hook 自動記錄 | ✅ | ❌ 不讀 `hooks/hooks.json` | ❌ | ❌ | +| `Stop` hook 自動記錄 | ✅ | ⚠️ 會載入但 no-op | ❌ | ❌ | | `--init`/`--diagnose`/`--append`/`--show` | ✅ | ⚠️ 需 plugin 目錄保留 `scripts/`(安裝後請實測一次) | ⚠️ 同左 | ❌ 缺 `scripts/` | | `--tune` | ✅ | ❌ 無 `claude-api` skill 可載入 | ❌ 同左 | ❌ | 兩個限制的來源: -- **`Stop` hook 只有 Claude Code 讀取** `hooks/hooks.json`;且 `worklog.sh` 解析的是 **Claude Code 專屬的 transcript JSONL 結構**(`type` / `message.content` blocks),所以即使其他助理提供等效 hook 機制,自動記錄也不能直接沿用。 +- **`Stop` hook 只有 Claude Code 環境實際執行**;Codex 會載入 plugin 的 `hooks/hooks.json`,因此 hook command 會先檢查 `CLAUDE_PLUGIN_ROOT`,非 Claude Code 環境直接 no-op。`worklog.sh` 解析的是 **Claude Code 專屬的 transcript JSONL 結構**(`type` / `message.content` blocks),所以即使其他助理提供等效 hook 機制,自動記錄也不能直接沿用。 - **OpenCode 以「複製 `skills/` 目錄」安裝**,不會帶入 `scripts/`,本 skill 的所有模式都無法執行 —— 在 OpenCode 環境請不要觸發本 skill。 - 其他助理若要用 `--append`/`--show` 等純 wiki 操作,只需 `python3`(不需 `claude` CLI),但 `--tune` 必須改為手動設定 `WORKLOG_MODEL`。