fix/skill-check-compliance-and-flow
develop
tools/log-aggregate.sh
tools/worklog-target.sh
skills/worklog/SKILL.md
skills/learn/SKILL.md
skills/report/SKILL.md
skills/stats/SKILL.md
templates/log-contents.md
templates/learn-contents.md
templates/report-contents.md
tools/usage-stats.sh
${1:?}
tools/token-usage.sh
README.md
plugin.json
.claude-plugin/plugin.json
.codex-plugin/plugin.json
sh -n
worklog-target.sh friday
friday 2026-12-31
friday 2026-13
worklog-target.sh {HASH} all
log-aggregate.sh
usage-stats.sh
usage-stats.sh skills
token-usage.sh nope
- What:worklog、learn、report 三支技能共六處讀取分流改寫,只有結束碼 4 才建新頁; 結束碼 7 與 8 一律中止,一個字都不寫。三份目錄頁樣板補上寫入語意,明寫禁止整頁覆蓋、 不得改動別人的列。usage-stats.sh 的參數護欄改成明確回傳結束碼 2。 - Why:原本把「讀失敗」與「頁面不存在」當成同一件事。金鑰失效時讀取回 7,技能卻讀成 「這頁還沒有」,於是照樣板建一份新頁蓋回去。整份工作日誌會被這一筆條目取代, 既有教訓會被清成空表,報表則產出一份說「這段期間沒有工作」的假數字。 這些內容只活在 wiki 上,蓋掉就救不回來,所以這是本輪最要緊的一項。 - How:每一處讀取都先看結束碼再決定動作,並在技能文件裡列成表格: 0 接在既有內容後面附加,4 才從樣板建頁,5 缺網址就中止,7 金鑰或權限問題就中止, 8 其他 API 失敗就中止。目錄頁一律先讀整頁再改那一列。 stats 也補上分流,參數錯誤不再被讀成「零次」。 - Who:worklog、learn、report、stats 四支技能的 wiki 讀寫與統計輸出。
- What:新增 tools/log-aggregate.sh,把日誌頁彙總成報表數字; tools/worklog-target.sh 新增 friday 子命令,印出該工作週的週五。 - Why:彙總與日期原本只寫在技能散文裡,每次跑都靠模型自己數。 四個條目只有一個填了花費時間時,模型容易把它攤到每一筆,得出一個沒人做過的工時。 週五同理,跨月、跨年那一週用手算就會差一天。規則寫進程式,每次跑才會一樣。 - How:log-aggregate.sh 讀日誌條目的固定版型,依條目標題的日期取範圍內的條目, 印出條目數、存取庫、花費時間、各 CLI 的 token 用量與狀態計數。 「無資料不估算」寫死在程式裡:沒填時間的條目不進總和,只進 ELAPSED_MISSING; 整段期間都沒有時間就印「無資料」,不印 0,因為 0 會被讀成「花了 0 分鐘」。 friday 的週界向 report-range.sh weekly 取得,這裡只做「週一加四天」,不自己定義週的起點。 - Who:report 技能的數字彙總,worklog 技能的日誌頁週次。
- What:README 的工具表補進彙總腳本,並改寫 worklog 與 report 兩節; tools/token-usage.sh 的檔頭改寫成完整的結束碼宣告。 - Why:README 還停在舊流程,讀的人會以為報表數字仍由技能自己數,也不知道週五已經有腳本可用。 token-usage.sh 原本只寫「護欄回傳 2」,沒說來源讀不到時印 N/A 也算成功, 接手的人容易把那個情況當成故障,白追一輪。 - How:工具表加一列,寫出彙總腳本的輸出欄位與「無資料不估算」; worklog 一節寫出四項來源併行取得、週五由腳本算; report 一節寫出三線併行、彙總改走腳本,以及教訓頁另解自己的 wiki 存取庫。 相依清單補上 jsc-ask 一列,說明它負責問期間與任務狀態。 - Who:整個 log 技能組的說明文件。
- What:Claude、Codex 與根目錄三份 plugin 清單同步補上 jsc-ask 與 jsc-hooks 的最低版本需求, 並把版號往前推一版。 - Why:技能早就呼叫 jsc-ask 的決策樹問期間與任務狀態,也讀 jsc-hooks 的計時器與用量紀錄取數字, 清單卻只宣告 gitea。缺宣告時,部署到只裝一半的機器上不會被擋,要跑到一半才失敗, 而且失敗訊息指向 wiki 或計時器,看不出真正缺的是哪個外掛。 - How:三份清單的 requires 一起改,三份內容保持一致,免得不同 CLI 讀到不同的相依。 - Who:log 技能組的安裝與部署檢查。
No dependencies set.
The note is not visible to the blocked user.
摘要
變更內容
tools/log-aggregate.shtools/worklog-target.shskills/worklog/SKILL.mdskills/learn/SKILL.mdskills/report/SKILL.mdskills/stats/SKILL.mdtemplates/log-contents.mdtemplates/learn-contents.mdtemplates/report-contents.mdtools/usage-stats.sh${1:?}改成明確回傳結束碼 2,訊息改成繁體中文,檔頭補上結束碼宣告,並寫明資料檔不存在為什麼算成功tools/token-usage.shREADME.mdplugin.json.claude-plugin/plugin.json.codex-plugin/plugin.json設計重點
測試結果
sh -n語法檢查 tools 底下七支腳本,全數通過。worklog-target.sh friday印出 2026-09-04,與本週相符。friday 2026-12-31印出 2027-01-01,跨年那一週正確落在隔年。friday 2026-13回結束碼 2 並印出日期格式訊息。worklog-target.sh {HASH} all仍印出 PAGE 與 CONTENTS 兩行,原有行為未受影響。log-aggregate.sh護欄:無參數回 2 並印用法,起訖顛倒回 2,指到不存在的檔案回 4。log-aggregate.sh樣本測試,三筆條目中兩筆落在期間內:印出 ENTRIES=2、REPOS=2、ELAPSED_MINUTES=90、ELAPSED_ENTRIES=1、ELAPSED_MISSING=1、TOKEN=claude 1000/200、TOKEN_MISSING=1、STATUS 完成 1 與部分完成 1。期間外那筆的五小時沒有被算進總和。usage-stats.sh三種參數錯誤(沒給子命令、子命令不認得、--cli 沒帶值)都印用法並回 2;usage-stats.sh skills正常列出既有統計。token-usage.sh nope回結束碼 2,與新檔頭宣告一致。前置 Push Request