develop
master
為 generic plugin 新增 worklog(工作證明自動記錄) 功能:每輪工作結束時把本輪內容濃縮成精簡條目,追加到 Gitea wiki 的當週工作紀錄頁(Worklog-yyyy-MM-W<週>),工作內容全程不落地。
Worklog-yyyy-MM-W<週>
自動記錄由 Claude Code 的 Stop hook 觸發,不需人工介入;/jsc:worklog skill 負責自動路徑之外的人工操作(初始化、模型判定、診斷、補寫、回顧)。
Stop
/jsc:worklog
scripts/worklog/
skills/spec-*
WORKLOG_ENABLED
WORKLOG_HOST
WORKLOG_REPO
hooks/hooks.json
scripts/worklog/worklog.sh
exit 0
scripts/worklog/wiki_api.py
scripts/worklog/transcript.py
skills/worklog/SKILL.md
--init
--tune
--diagnose
--append
--show
${CLAUDE_PLUGIN_ROOT}/scripts/worklog/worklog.sh
claude
WORKLOG_CHILD
stop_hook_active
transcript.py redact
gh?_
sk-
token=
password=
Authorization:
WORKLOG_MODEL
GITEA_TOKEN
tea
~/.git-credentials
curl
ssl
VERIFY_X509_STRICT
Worklog-2026-07-W4
sub_url
Worklog-2026-07-W4.-
GET /wiki/pages
wiki 初始化、頁面建立、append 寫後驗證、遞迴 guard、stop_hook_active 略過、端到端(真實 transcript → 摘要 → wiki 寫入)、wiki 頁面機密掃描、--tune smoke test、python/bash 語法、4 個 JSON 解析、三家 manifest 版本一致性 —— 全部通過。
append
WORKLOG_ERRLOG
claude plugin update
三家 manifest 同步升版 0.0.1 → 0.0.2。
0.0.1
0.0.2
對四家助理逐項檢查 README 與 skill 的適用性後修掉 8 項問題:
SKILL.md
No such file
${CLAUDE_PLUGIN_ROOT}
skills/
scripts/
description
claude-api
worklog.sh
spec-*
spec-
skills/*/
.gitignore
__pycache__
wiki_api.py
__pycache__/
*.py[cod]
git check-ignore
~/jsc-plugin
~/plugins/generic
AGENTS.md 也補一句指向適用範圍表 —— 它原本告訴助理「所有內容都在 skills/」,對讀該檔的 OpenCode 會誤導。
AGENTS.md
Codex(codex plugin marketplace add)與 Antigravity(agy plugin install <本地路徑>)安裝後是否同樣保留 scripts/ 未實測;已在 README 標為 ⚠️,--diagnose 也新增「scripts/worklog 目錄是否解析成功」檢查項,首次安裝跑一次即可定論。Claude Code 已確認 plugin cache 為完整 repo clone。
codex plugin marketplace add
agy plugin install <本地路徑>
scripts/worklog
本 PR 最終版本為 0.0.2。0.0.2 尚未合併到 master,這批修正與前批屬同一批變更,依 spec-plugin-version「同一 PR 只需最終一個版本」不再升版;期間誤 bump 的 0.0.3 已以 revert commit 還原(未改寫已推送歷史)。
spec-plugin-version
0.0.3
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
0.0.2 尚未合併到 master,同一批變更只需最終一個版本。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
No dependencies set.
The note is not visible to the blocked user.
變更摘要
為 generic plugin 新增 worklog(工作證明自動記錄) 功能:每輪工作結束時把本輪內容濃縮成精簡條目,追加到 Gitea wiki 的當週工作紀錄頁(
Worklog-yyyy-MM-W<週>),工作內容全程不落地。自動記錄由 Claude Code 的
Stophook 觸發,不需人工介入;/jsc:worklogskill 負責自動路徑之外的人工操作(初始化、模型判定、診斷、補寫、回顧)。影響範圍
scripts/worklog/,既有skills/spec-*完全未動。WORKLOG_ENABLED/WORKLOG_HOST/WORKLOG_REPO環境變數時,hook 立即結束、完全不動作,因此其他人匯入 generic 為零影響。hooks/hooks.json只有 Claude Code 會讀;Codex / Antigravity / OpenCode 匯入時僅 skill 可用,自動記錄不會啟動。重點檔案
scripts/worklog/worklog.shexit 0scripts/worklog/wiki_api.pyscripts/worklog/transcript.pyskills/worklog/SKILL.md/jsc:worklog五模式:--init/--tune/--diagnose/--append/--showhooks/hooks.jsonStop→${CLAUDE_PLUGIN_ROOT}/scripts/worklog/worklog.sh,timeout 60設計要點
claude行程會再次觸發Stophook,靠WORKLOG_CHILDguard +stop_hook_active雙重阻斷。transcript.py redact正則遮蔽(URL 內嵌憑證、40 字元 hex token、gh?_/sk-token、token=/password=、Authorization:、Email、手機、身分證號)。WORKLOG_MODEL→ 快取檔(--tune產生,30 天過期)→ 保底 Haiku 4.5;hook 絕不自行呼叫 AI 判斷模型。GITEA_TOKEN→ 對目標 host 驗證失敗時退到tea設定檔該 host 的 token →~/.git-credentials;全程不 echo、不落地。過程中解決的兩個環境問題
curl可以):Python 3.13+ 的ssl預設啟用VERIFY_X509_STRICT,內部 CA 憑證缺 Subject Key Identifier 而被拒。只關閉該旗標,憑證鏈與主機名驗證仍完整保留。Worklog-2026-07-W4的實際sub_url為Worklog-2026-07-W4.-,直接用 title 讀取會 404。改為先GET /wiki/pages查表取sub_url再讀寫,不猜轉義規則。驗證結果
wiki 初始化、頁面建立、
append寫後驗證、遞迴 guard、stop_hook_active略過、端到端(真實 transcript → 摘要 → wiki 寫入)、wiki 頁面機密掃描、--tunesmoke test、python/bash 語法、4 個 JSON 解析、三家 manifest 版本一致性 —— 全部通過。風險與注意事項
Stop是每個回應結束就觸發,長對話會產生多筆條目與多次 wiki commit;週頁會隨使用增長,每次寫入需先讀整頁。WORKLOG_ERRLOG指定只記錯誤的檔案路徑。claude plugin update才會讓Stophook 生效。版本
三家 manifest 同步升版
0.0.1→0.0.2。後續修正(跨助理適用性檢查)
對四家助理逐項檢查 README 與 skill 的適用性後修掉 8 項問題:
會實際壞掉
SKILL.md以相對路徑呼叫腳本(skill 執行時的工作目錄是使用者專案目錄,四家都會No such file)${CLAUDE_PLUGIN_ROOT};其他助理用 skill base directory 往上兩層),四處呼叫改為絕對路徑,並要求解析失敗即停止、不得改用相對路徑重試skills/」安裝,不會帶入scripts/,worklog 所有模式都失效description、支援矩陣、呼叫方式表與 README 安裝節明確標示 不支援 OpenCode--tune依賴 Claude Code 內建的claude-apiskill 與claudeCLIWORKLOG_MODEL手動指定文件不準確 / 維護陷阱
worklog.sh解析的是 Claude Code 專屬 transcript JSONL 結構spec-*,會殘留 worklog 及未來所有非spec-命名的 skillskills/*/對應目錄(已 dry-run 驗證涵蓋全部 11 個 skill).gitignore未忽略__pycache__,wiki_api.py被 import 後容易誤 commit__pycache__/、*.py[cod](已用git check-ignore驗證命中)scripts/、執行權限須入 git、禁相對路徑、標明支援範圍~/jsc-plugin,與安裝節的~/plugins/generic不一致(既有問題)~/plugins/genericAGENTS.md也補一句指向適用範圍表 —— 它原本告訴助理「所有內容都在skills/」,對讀該檔的 OpenCode 會誤導。尚未驗證
Codex(
codex plugin marketplace add)與 Antigravity(agy plugin install <本地路徑>)安裝後是否同樣保留scripts/未實測;已在 README 標為 ⚠️,--diagnose也新增「scripts/worklog目錄是否解析成功」檢查項,首次安裝跑一次即可定論。Claude Code 已確認 plugin cache 為完整 repo clone。版本
本 PR 最終版本為 0.0.2。
0.0.2尚未合併到 master,這批修正與前批屬同一批變更,依spec-plugin-version「同一 PR 只需最終一個版本」不再升版;期間誤 bump 的0.0.3已以 revert commit 還原(未改寫已推送歷史)。