Community生產力與協作github.com

bassemZohdy/todo

todo-* 技能系列的核心規則(todo-init, todo-plan, todo-add, todo-continue, todo-update, todo-status, todo-report, todo-release)——管理 TODO.md 中的任務樹、緊湊任務格式、複雜度層級與模型路由、ID、附無 git 回退機制的 git 流程、不變條件、完成定義與硬性防護措施。載入此技能後再執行任何 todo-* 指令,或編輯 `# Active Backlog` 任務樹格式的 TODO.md 時使用。直接以 /todo 呼叫僅顯示指令列表與...

todo 是什麼?

todo 核心技能為 todo-* 指令集(todo-init, todo-plan, todo-add, todo-continue, todo-update, todo-status, todo-report, todo-release)提供了基礎規則與約束。它定義了一個巢狀任務樹結構,採用緊湊的多欄位格式,每個任務節點包含 ID、複雜度等級(低/中/高)、可選大小(S/M/L/XL)、驗證條件(「完成時:」)以及狀態追蹤資訊。此技能支援可選的模型路由:透過 README 中的一行設定,可將不同複雜度等級的任務分配給不同的 AI 模型(例如 low=haiku, mid=sonnet, high=opus),並在驗證失敗時自動升級至較高等級。它強制執行強健的 git 工作流程,包括基於分支的隔離、工作目錄支援,以及無 git 環境的回退模式。該文件明確規定了哪些檔案可由 todo-* 技能修改(例如 TODO.md、CHANGELOG.md、docs/plans/ 中的文件),並列出不變條件,例如不可重複使用 ID、單一 `[/]`(進行中)任務限制、最多三個巢狀層級、葉節點範圍規則(每次變更最多觸及 5 個檔案),以及針對 `[!]`(受阻)任務的專門區塊格式。此技能主要設計用於 Claude Code,但也可與其他檔案式 AI 代理工具配合使用,這些工具可受益於結構化的任務追蹤與基於 git 的工作流程。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/bassemZohdy/todo-skills/tree/HEAD/plugin/skills/todo

Installed? Explore more 生產力與協作 skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

todo(核心)

此儲存庫是一個閉環狀態機,完全由既有的檔案建構而成。除此之外不儲存任何其他狀態。

層級檔案角色寫入策略
需求README.md, docs/*.md事實來源:合約、規格、設定、長期計畫主要為讀取。在 todo-continue 的「文件偏離」階段編輯;計畫文件(docs/plans/)由 todo-init/todo-plan/todo-add/todo-update 編輯;README 中的 Tests: 行由 todo-init 在確認後編輯;可選的 RTM(reference/rtm.md)僅在已存在時由 todo-plan/todo-add/todo-continue 編輯;docs/status.html 由 todo-report 編輯
活躍佇列TODO.md單一任務樹。工作項目的追蹤器,非設計場所僅由 todo-* 技能編輯
驗證原始碼 + 測試套件「完成」的事實來源僅為當前任務變更
歸檔CHANGELOG.md永久,僅附加(遵循 Keep a Changelog + Conventional Commits)僅 ## [Unreleased](釋出時:重新命名為版本號,在其上方建立新的空白區塊,並更新結尾的連結行)由根節點的排空與已確認的 /todo-release 觸及;todo-init 建立檔案或新增遺失的 [Unreleased]
檢查(可選).todo/check.sh, .todo/todo-lint.sh, CI 任務Lint + 測試,由 CI、預先推送鉤子與 /todo-continue 執行check.sh 由 /todo-init --ci 在確認後寫入;todo-lint.sh 由使用者複製;由使用者提交
版本儲存git每個任務一個分支或工作目錄。未經驗證的內容絕不進入基礎分支請參閱「Git 模式」

對於檔案編輯,優先使用原生的檔案工具(Read/Edit/Write);無論使用何種編輯方式,僅變更預期的行數,並保留檔案結尾的換行符。Shell 僅用於 git、測試和「完成時:」指令、可選腳本,以及技能指定的檔案指令(cp, chmod, mkdir -p, date, grep, cmp, mv,以及技能自身臨時檔案的 rm)。

待辦事項檔案包括 TODO.md、CHANGELOG.md、docs/plans/PROJECT.md、以 Ref: 命名的 docs/plans/<ROOT-ID>-*.md,以及由 todo-* 技能寫入的 README Tests: 和 Base: 行。README.md 僅在待辦事項提交中暫存,當 git diff README.md 恰好新增這些行(可選在空白行之後)時;由節點在「文件偏離」下編輯的 README 內容屬於該節點的檔案,並隨其一起提交;任何其他 README 變更皆屬使用者所有:它會計入乾淨樹檢查,但永遠不會被待辦事項提交暫存。待辦事項編輯保持未提交狀態,直到技能在 todo/ 分支上進行下一次提交(通常是樹聲明),此時會透過明確路徑暫存它們。新的根節點,以及對未聲明樹中任何節點的任何變更,僅在基礎分支上進行;在 todo/ 分支上,技能會拒絕並指明基礎分支。乾淨樹檢查(reference/git-flow.md)會忽略它們。

直接使用

單獨的 /todo 為唯讀:列出指令,若 TODO.md 存在則對其執行不變條件檢查,然後回報。不會變更任何內容。

指令用途
/todo-init引導檔案,偵測測試指令與 git,可選的預先規劃與 CI 設定,遷移舊格式
/todo-plan將工作規劃成車道與樹;隨時修訂計畫
/todo-add新增任務,或將請求分解成樹
/todo-continue執行下一個任務節點,驗證它,將其合併至父節點
/todo-update手動狀態與欄位變更
/todo-status唯讀的樹、車道、歷史紀錄與搜尋
/todo-report將互動式 HTML 狀態頁面寫入 docs/status.html
/todo-release在使用者確認後,將 [Unreleased] 轉換為版本號

每個技能僅執行其自身的指令,絕不會未經提示而鏈結至另一個指令。

Git 模式

在每個指令開始時執行 git rev-parse --is-inside-work-tree。

  • Git 儲存庫: 每個節點在其自己的分支或工作目錄上工作(reference/git-flow.md)。基礎分支是使用者命名的分支,否則為 README 的 Base: 行,否則為 main、master、trunk、develop 中第一個存在的分支;若都沒有,則詢問一次。當使用者命名的基礎分支與此預設值不同時,提供將 Base: <branch> 新增至 README 的選項(在確認後寫入;一個類似 Tests: 行的待辦事項檔案)。每個簽出或合併至基礎分支的步驟(樹聲明、聲明釋放、基礎合併、發佈)都在主要簽出(git worktree list 的第一個條目)中執行:若從連結的工作目錄開始,則先 cd 到那裡;若它在另一個有變更的分支上,則停止並列印指令。
  • 非 git 儲存庫: 每個指令警告一次:「這不是一個 git 儲存庫。todo 技能仍然可以運作,但沒有分支、工作目錄、提交或合併,因此沒有隔離性也沒有歷史記錄。執行 git init 以啟用它們。」然後使用無 git 模式:跳過所有 git 步驟,在 State: 中追蹤進度(包括 files:),仍更新標記並排空至 CHANGELOG.md。驗證保持不變。

永遠不要標記標籤、強制推送、硬重置或清除。唯一允許的強制分支刪除,是針對一個僅包含技能自身未發布聲明提交的分支(reference/git-flow.md,樹聲明步驟 2 與 5)。技能自身的 git 指令絕不觸及網路: 不進行 fetch、pull 或 push。分享提交是 git 的工作,也是你的工作。測試指令可能下載依賴項;若因缺乏網路而失敗,則以此原因阻止,而非重試。

TODO.md 結構

# Active Backlog

## 🌳 Task Tree

必須有恰好此標題與一個章節。沒有 In Progress、Ready 或 Blocked 章節:每個任務上的標記即其狀態。空的樹由兩個標題且無任務構成。

一個任務為 2 到 4 行:要做什麼、如何驗證、可選的連結與狀態。

- [ ] **FEAT-002** · P1 · mid · XL · 新增權杖重新整理至認證服務
  - Done when: 舊權杖在重新整理後被拒絕;`npx jest tests/auth`;回歸測試:`npm test`
  - Links: Ref: docs/auth.md#refresh · Depends: TASK-001 · From: FIX-001
  - State: branch todo/FEAT-002-add-token-refresh-auth from main; next: build children
  - [ ] **FEAT-002.1** · mid · 重新整理端點
    - Done when: 端點經整合測試覆蓋;`npx jest tests/auth/refresh.test.ts`
    - [/] **FEAT-002.1.1** · high · 權杖儲存介面
      - Done when: 儲存區能往返傳遞權杖;`npx jest tests/auth/store.test.ts`
      - State: attempts 1/3; baseline 42 passing; branch todo/FEAT-002.1.1-token-store-interface from todo/FEAT-002.1-refresh-endpoint; next: build
部分規則
標頭- [m] **ID** · [P0-P2,僅根節點 ·] COMPLEXITY [· SIZE] · 要做什麼,一句話:複雜度 low、mid 或 high(必填);大小 S、M、L 或 XL(可選)
Done when:必填。 條件,接著 ; 和至少一個以反引號包圍的確切指令。可選 ; regression: \cmd``;若無,則回歸測試為專案的完整測試套件
Links:可選。Ref: <path#anchor>、Depends: <IDs>、From: <ID>、Lane: <name>(僅根節點),以 · 分隔
State:可選,可在上下文重置後存活。項目以 ; 分隔,每個最多出現一次,順序如下:attempts n/3、baseline <n> passing(或 none,或 red: <failing test ids, comma-separated>)、`tier: <low
Blocked:在 [!] 任務上,取代 State 並位於其位置(最後的欄位行):` → <error, at most 5 lines joined with

相關技能