Files
jiu/.claude/commands/todo.md
T
wangjia 18cd2497c1 feat(todo): 子任务系统 — 复杂任务支持子任务拆解与依赖追踪
- 新增 `sub add <parent_id>` / `sub status <sid>` CLI 命令
- SID 格式 {parentId}{Letter},支持依赖声明(deps)与校验
- HTML 新增子任务展开块、进度徽章、依赖色标(绿=完成/红=未完成)
- 父任务全部子任务完成时自动转为「待验收」;手动设 done 时检查子任务
- 更新 /todo 命令文档补充 sub 子命令说明
- #21 已录入 8 个实现子任务(21A–21H),含完整依赖链

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-10 00:16:10 +08:00

6.4 KiB
Raw Blame History

description, argument-hint, model, allowed-tools
description argument-hint model allowed-tools
项目 TODO 管理(list / add / status / done / reject / reopen / rm / sub list | add <描述> | status <id> <open|doing|done> | done <id> [version] | reject <id> <原因> | reopen <id> | rm <id> | sub add <parent_id> ... | sub status <sid> ... claude-sonnet-4-6 Bash, Read

管理项目 todo/todo.json 待办清单,所有写操作会自动重渲染 todo/todo.html

重要规则:所有待办项必须通过本命令管理,禁止使用其它 todo 工具(TaskCreate/TodoWrite 等)。

状态流转open(待开始)→ doing(开发中)→ done(待验收)→ accepted(已验收)

  • done 状态可被用户 reject(拒绝),退回 open 并升为最高优先级
  • Claude 可设:open / doing / done;用户专属:accepted/todo done)、reject

子任务(subtask:复杂任务(tier-1/2)可拆出子任务,SID 格式为 {parentId}{Letter}(如 21A21B)。

  • 父任务在子任务全部 done不得手动设为 done;全部完成时自动转为 done
  • 子任务状态与父任务独立,自身有 open / doing / done 三态
  • 子任务可声明依赖(deps),HTML 中以绿/红徽章展示依赖完成情况

改动等级 (tier) 与开发流程

每个 todo 有两个独立维度:重要度 level(优先级高低)和 改动等级 tier(复杂度/工作量)。

tier 名称 判定标准 开发流程
1 一级 涉及接口设计 / 数据库 schema 变更,改动跨越 2 个以上模块 必须先进 plan 模式,用户批准方案后才能编码;完成后同步更新 docs/architecture/docs/api/ 等设计文档
2 二级 模块内较大改动,涉及 5 个文件以上 可直接开发,完成后本地验证(build/test/analyze
3 三级 小改动、局部优化、bugfix 可直接开发,完成后本地验证

判定关键词指引:

  • 一级:「新增接口」「改 schema」「新表」「跨模块」「涉及后端+前端」「新增 API」
  • 二级:「重构」「整页改版」「涉及多个 screen」「较大」
  • 三级:「修复」「bugfix」「优化」「调整文案」「小改」「单文件」

重要:开发完成后只做本地验证(build / test / analyze),不要自动触发 /release。发版由用户决定。


根据 $ARGUMENTS 分派,缺省等同 list

list(或无参数)

运行以下命令并将终端 summary 转述给用户,同时提示 HTML 路径便于浏览:

node todo/todo.mjs list

add <描述>

$ARGUMENTS 去掉首词 add 后的内容解析为待办描述,推断:

  • --title:核心一句话标题(简洁,去掉平台/类别信息)
  • --levelhigh(阻断/紧急)/ mid(重要,默认)/ low(一般/优化)
    • 关键词「紧急」「阻断」「必须」「严重」→ high;「重要」「需要」→ mid;其余 → low
  • --tier必须推断,见上方「改动等级」判定标准,取值 1/2/3
  • --tags:从描述推断平台/类别,可多个逗号分隔,常用值:前端,后端,Web,mac,Windows,Android,iOS,数据库,CI/CD,文档
  • --desc:补充说明(可选,如有具体文件/路径/上下文则填入)

然后运行:

node todo/todo.mjs add --title "..." --level mid --tier 2 --tags "前端,Web" --desc "..."

转述:「已添加 #id [级别·等级] 标题 标签」,并显示 summary。

status <open|doing|done>

Claude 在开发过程中主动调用,更新条目的开发状态:

  • 开始处理某个 todo → status <id> doing先确认 tier:一级须先 plan 模式,二/三级直接开发)
  • 开发完成提交验收 → status <id> done
  • 退回重做 → status <id> open
node todo/todo.mjs status <id> <open|doing|done>

转述:「#id 状态已更新为 xxx」,并显示 summary。 注意:accepted 不可通过此命令设置,仅用户可标记。

done [version]

用户调用,标记条目已验收交付,记录版本号。从 $ARGUMENTS 提取 id 和可选 version(格式 vX.Y.Z):

  • 有 versionnode todo/todo.mjs done <id> --version <version>
  • 无 versionnode todo/todo.mjs done <id>(脚本自动用 git describe --tags --abbrev=0

转述:「#id 已验收,记入版本 vX.Y.Z」,并显示 summary。

reject <原因>

用户调用,拒绝验收处于 done 状态的条目。拒绝后:

  • 状态退回 open
  • 优先级强制升为 high
  • 拒绝原因记录在条目上,HTML 卡片中可见

$ARGUMENTS 提取 id 和原因文字:

node todo/todo.mjs reject <id> --reason "<原因>"

转述:「#id 已拒绝,优先级升为最高,原因:xxx」,并显示 summary。

reopen

重新开启条目(清空拒绝记录和验收信息),退回 open 状态:

node todo/todo.mjs reopen <id>

转述「#id 已重新开启」。

rm

node todo/todo.mjs rm <id>

转述「#id 已删除」。


sub add <parent_id> --title "..." [--tier N] [--deps "21A,21B"]

Claude 在开发过程中主动调用,为复杂任务(tier-1/2)添加子任务:

  • parent_id:父任务数字 id(如 21
  • --title:子任务标题
  • --tier:改动等级(1/2/3,默认 2
  • --deps:依赖的其他子任务 SID,逗号分隔(如 "21A,21B");被依赖项必须已存在

SID 自动分配:第一个子任务为 {parent_id}A,依此类推(21A, 21B, 21C…)。 父任务若为 open 状态,添加第一个子任务时自动升为 doing

node todo/todo.mjs sub add <parent_id> --title "..." [--tier N] [--deps "21A,21B"]

转述:「已添加子任务 {SID} [等级]「{title}」→ #parent 依赖: ...」,并显示 summary。

sub status <open|doing|done>

Claude 在开发过程中主动调用,更新子任务状态:

  • SID 格式:21A21B(不区分大小写)
  • 最后一个子任务标记为 done 时,父任务自动转为 done
node todo/todo.mjs sub status <sid> <open|doing|done>

转述:「{SID}「{title}」→ {状态}」,若触发父任务自动转换则一并提示。


所有命令完成后,在终端显示来自脚本的完整 summary(按 open / doing / done / accepted 分组)。