Files
shared/skills/do-wiki/SKILL.md
T
jiantw83andClaude Sonnet 5 e83b4ff4f3 refactor(spec-wiki-contents): 目錄頁 check 欄改用 ●/○,取代 [ ]/[x]
GFM 任務清單語法只在 Markdown 清單項目生效,放進表格儲存格只會被渲染成字面
文字,改用 ●(已完成/已產生)/○(未完成/未產生)避免這個問題;
plan-wiki/todo-wiki/do-wiki 三個消費端同步更新描述,計畫頁/代辦頁自己的
checklist(- [ ]/- [x])不受影響、原樣保留。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 15:12:06 +08:00

9.1 KiB
Raw Blame History

name, description, argument-hint
name description argument-hint
do-wiki 讀取 `todo-wiki` 產生、帶鎖定模型 frontmatter 的 Gitea wiki TODO 頁並逐項執行:開工前先讀目錄頁挑一份「已完成」為未勾選的代辦(沒有就直接結束);檢查頁面 `## 0.` 的六條強制規則並比對當前模型,不符就停止;讀取需求彙整與既有 checklist(已勾選視為完成不重做);逐項執行——完成一項就地把 `- [ ]` 改 `- [x]` 並補上完成時間,立即回寫該 wiki 頁並讀回確認成功才能繼續下一項,任一步失敗立刻停止;全部項目完成後回目錄頁把該代辦列「已完成」改為 `●`。當使用者說要執行 wiki TODO、跑 do-wiki、依 wiki 清單實作、接手某份 Gitea wiki 代辦、或提到 do-wiki skill 時觸發。不適用於:把需求分析並產生 TODO 清單同步到 wiki(用 `/jsc-shared:todo-wiki`)、逐步建立計畫並同步 wiki(用 `/jsc-shared:plan-wiki`)。 [--wiki-repo <owner/repo>] [--wiki-index CONTENTS] [--wiki-page <既有 TODO 頁 title>] [--yes]

do-wiki — 讀取並執行指定模型 Gitea wiki TODO 頁

把「挑代辦 → 讀取 TODO 頁 → 檢查強制規則 → 了解需求彙整 → 逐項執行並即時回寫」固定成五個階段。do-wiki 是 todo-wiki 的執行端對應物:todo-wiki 產生鎖定模型的 wiki TODO 清單,do-wiki 讀取並執行該清單。

階段 做什麼 產出
0. 挑代辦 讀目錄頁列出所有未完成的 TODO 列,單選一份 本次執行目標的 TODO 頁 path
1. 讀取目標 TODO 頁 查表取得 path 並讀取內容 TODO 頁完整 Markdown
2. 檢查強制規則 解析 ## 0. 區塊六條規則,比對當前模型 相符才繼續,不符則停止
3. 了解需求彙整 讀 frontmatter scope 與需求段落,盤點既有 checklist 待執行項目清單
4. 逐項執行並即時回寫 單項循環:執行 → 勾選 → 回寫 → 讀回確認 全部項目完成的 TODO 頁
收尾 回目錄頁把該代辦列「已完成」改 ● 讀回確認成功的目錄頁

共用規範(必要前置)

先載入 /jsc-shared:spec-preflight 並依其流程處理;載入不到即代表 shared plugin 未安裝, 依該 spec 詢問使用者是否安裝 https://gitea.jsc.idv.tw/plugins/shared.git,不安裝則中斷本 skill。 本 skill 需要的規範:spec-version-guard、spec-model、spec-output、spec-execution、spec-todo-list、spec-ask-user、spec-time-log、spec-gitea、spec-wiki-contents、spec-no-scratch-files、spec-skill-invocation

參數

[--wiki-repo <owner/repo>] [--wiki-index CONTENTS] [--wiki-page <既有 TODO 頁 title>] [--yes]

參數 說明
--wiki-repo 指定要讀取的 Gitea wiki repo,例如 knowledges/Plan。未帶時依 spec-ask-user 詢問,不臆測。
--wiki-index 目錄頁 title;未帶時固定使用 CONTENTS,不詢問。
--wiki-page 直接指定既有 TODO 頁 title;有帶時跳過階段 0 的挑選詢問,直接查表取得對應 path 進入階段 1。
--yes 略過一般性確認;不得略過模型不符、目標 wiki 不明、或 wiki 回寫/讀回失敗後的停止。

階段 0:從目錄頁挑一份未完成代辦

  1. 依 spec-gitea 決定 host 與 token;確認 --wiki-repo,缺少就詢問使用者,不臆測。
  2. --wiki-page 已帶(或使用者已於對話明確指定頁面)時,依 spec-ask-user「已知答案時跳過詢問」直接查表取得該 title 對應的 path,跳過本階段其餘步驟進入階段 1;只有查表找不到該 title 時,才回頭走本階段清單並提示原指定值無效,不得臆測頁面。
  3. 依 spec-gitea 分頁查表讀取目錄頁(title 預設 CONTENTS,或 --wiki-index 指定值),依 spec-wiki-contents〔目錄頁格式〕掃描所有系統的 ## 段落,取出每個段落中所有「代辦欄非空、是否已完成為 ○」的列,記下其所屬系統(該段落標題)供候選標示用。
  4. 沒有未完成代辦就直接結束:目錄頁不存在、目錄頁沒有任何系統段落、或所有段落的候選列皆為空,一律輸出 [yyyy/MM/dd HH:mm:ss][代辦盤點][INF]: 目錄頁沒有未完成的代辦,本次不進行任何修改。 後結束,不讀取任何 TODO 頁、不修改任何檔案或 wiki。
  5. 有未完成代辦時,依 spec-ask-user 以單選呈現,候選標示為「{系統名稱}:{代辦內容摘要}」(候選 ≤4 用 AskUserQuestion 並含「其他」,>4 改文字編號列出);選定列代辦欄連結的 path 直接作為階段 1 的讀取目標,不得再自行推導轉義。

階段 1:讀取目標 TODO 頁

  1. 若階段 0 尚未取得 path,依 spec-gitea〔Wiki 頁名轉義規則〕規則 2,以 tea wiki list --repo <owner>/<repo> --fields title,path(或對應 REST API)分頁完整查表,用 title 比對取得 path;明文禁止自行推導 title 到 path 的轉義規則。
  2. 以 tea wiki view(或 GET /repos/<owner>/<repo>/wiki/page/<path>)讀取該頁完整內容。
  3. --wiki-page 未帶、階段 0 也未能決定目標頁時,依 spec-ask-user 詢問使用者,不臆測。

階段 2:檢查強制規則

  1. 解析頁面 ## 0. 給執行本清單 Agent 的強制規則 區塊列出的六條規則:模型鎖定、不符就停、不得自行升降級、附加不覆蓋、完成即勾選、更新後才能繼續;六條規則對本次執行全程有效,不只在本階段生效。
  2. 依 spec-model 第六節,讀出 frontmatter 的 model(與可能並列的 model_alias),並依同節方式確認當前模型(agent 自我回報,不確定就請使用者 /status 確認)。
  3. 兩者不符 → 依 [yyyy/MM/dd HH:mm:ss][模型檢查][ERR]: 格式停止,本次不做任何檔案修改或 wiki 修改,要求使用者切換模型後重新載入本 wiki 頁。
  4. 相符才繼續往下執行;不得自行降級或升級到別的模型頂替,也不得「先做一部分」再提醒。

階段 3:了解需求彙整

  1. 讀取 frontmatter scope 與頁面「需求彙整」段落(含所有〔追加〕段落的「需求彙整(追加)」),作為理解本次待執行工作的背景。
  2. 依 spec-todo-list「盤點既有 TODO」處理頁面內的 checklist:已勾選(- [x])視為已完成不重做,只執行未勾選(- [ ])項目;依影響範圍由小到大、以及頁面既有順序處理。

不落地邊界

  • do-wiki 執行期的中間成果不得落地:進度摘要、待辦排序、分析過程只留在對話內容,不得寫成本機草稿檔、暫存 JSON、或任何用來傳遞中間成果的檔案;不得 clone wiki repo;request body 一律由工具呼叫或記憶內容直接送出,不得用 @file 形式。
  • 清單項目本身要求新增或修改的專案原始碼屬正常產出:若某個 checklist 項目的實作方式就是「新增/修改某個檔案」,直接依該項目要求編輯專案內的原始碼、文件或設定檔,這不算落地限制的例外,是該項目的正常交付物。

階段 4:逐項執行並即時回寫

依序處理階段 3 篩選出的每一個未勾選項目,單項循環固定四步,任一步失敗立刻停止,不得執行下一項;不得多項一起補勾:

  1. 執行:依該項目的實作方式與驗收條件完成工作(可能是編輯專案檔案、可能是純分析)。
  2. 就地勾選:把該行 - [ ] 改成 - [x],並在行末附上「(完成:yyyy/MM/dd HH:mm:ss)」(Asia/Taipei)。
  3. 回寫 wiki:以 tea wiki edit(或 PATCH /repos/<owner>/<repo>/wiki/page/<path>)寫回整份頁面內容。tea wiki edit 陷阱:其用法為 tea wiki edit [options] <page>,<page> 需帶 path;若省略 --title,tea 會把 <page> 當成新 title 送出並導致頁面被改名。每次呼叫都必須同時帶 --title(原 title)與 --content(完整內容),否則勾選一次就改名一次。
  4. 讀回確認:重新讀取該頁,確認內容已更新且與預期一致(content_base64 需先 base64 解碼再比對);若回寫或讀回確認失敗,立刻停止,不得繼續下一項。

收尾:全部完成後回寫目錄頁「已完成」

  1. 只有本次 TODO 頁所有項目皆為 - [x] 時才可進行;只要還有未勾項目就不得勾選目錄頁。
  2. 依 spec-wiki-contents〔回寫規則〕,回目錄頁把該 TODO 列的「已完成」由 ○ 改為 ●。
  3. 讀回目錄頁確認寫入成功;失敗則停止並回報,不得視為已完成。

呼叫方式

依 /jsc-shared:spec-skill-invocation 的統一呼叫方式,本 skill 的實際參數格式與範例:

助理 呼叫
Claude Code / Antigravity /jsc-shared:do-wiki --wiki-repo knowledges/Plan --wiki-page TODO_20260817_EDF7AA
Codex $do-wiki --wiki-repo knowledges/Plan --wiki-page TODO_20260817_EDF7AA
OpenCode 描述需求(如「幫我執行 knowledges/Plan 這份 wiki 的代辦」)自動觸發