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

159 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
description: 项目 TODO 管理(list / add / status / done / reject / reopen / rm / sub
argument-hint: "list | add <描述> | status <id> <open|doing|done> | done <id> [version] | reject <id> <原因> | reopen <id> | rm <id> | sub add <parent_id> ... | sub status <sid> ..."
model: claude-sonnet-4-6
allowed-tools: 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}`(如 `21A``21B`)。
- 父任务在子任务全部 `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 路径便于浏览:
```bash
node todo/todo.mjs list
```
## add <描述>
`$ARGUMENTS` 去掉首词 `add` 后的内容解析为待办描述,推断:
- `--title`:核心一句话标题(简洁,去掉平台/类别信息)
- `--level``high`(阻断/紧急)/ `mid`(重要,默认)/ `low`(一般/优化)
- 关键词「紧急」「阻断」「必须」「严重」→ high;「重要」「需要」→ mid;其余 → low
- `--tier`:**必须推断**,见上方「改动等级」判定标准,取值 `1`/`2`/`3`
- `--tags`:从描述推断平台/类别,可多个逗号分隔,常用值:`前端,后端,Web,mac,Windows,Android,iOS,数据库,CI/CD,文档`
- `--desc`:补充说明(可选,如有具体文件/路径/上下文则填入)
然后运行:
```bash
node todo/todo.mjs add --title "..." --level mid --tier 2 --tags "前端,Web" --desc "..."
```
转述:「已添加 #id [级别·等级] 标题 标签」,并显示 summary。
## status <id> <open|doing|done>
**Claude 在开发过程中主动调用**,更新条目的开发状态:
- 开始处理某个 todo → `status <id> doing`(**先确认 tier**:一级须先 plan 模式,二/三级直接开发)
- 开发完成提交验收 → `status <id> done`
- 退回重做 → `status <id> open`
```bash
node todo/todo.mjs status <id> <open|doing|done>
```
转述:「#id 状态已更新为 xxx」,并显示 summary。
注意:`accepted` 不可通过此命令设置,仅用户可标记。
## done <id> [version]
**用户调用**,标记条目已验收交付,记录版本号。从 `$ARGUMENTS` 提取 id 和可选 version(格式 vX.Y.Z):
- 有 version`node todo/todo.mjs done <id> --version <version>`
- 无 version`node todo/todo.mjs done <id>`(脚本自动用 `git describe --tags --abbrev=0`
转述:「#id 已验收,记入版本 vX.Y.Z」,并显示 summary。
## reject <id> <原因>
**用户调用**,拒绝验收处于 `done` 状态的条目。拒绝后:
- 状态退回 `open`
- 优先级强制升为 `high`
- 拒绝原因记录在条目上,HTML 卡片中可见
`$ARGUMENTS` 提取 id 和原因文字:
```bash
node todo/todo.mjs reject <id> --reason "<原因>"
```
转述:「#id 已拒绝,优先级升为最高,原因:xxx」,并显示 summary。
## reopen <id>
重新开启条目(清空拒绝记录和验收信息),退回 `open` 状态:
```bash
node todo/todo.mjs reopen <id>
```
转述「#id 已重新开启」。
## rm <id>
```bash
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`
```bash
node todo/todo.mjs sub add <parent_id> --title "..." [--tier N] [--deps "21A,21B"]
```
转述:「已添加子任务 {SID} [等级]「{title}」→ #parent 依赖: ...」,并显示 summary。
## sub status <sid> <open|doing|done>
**Claude 在开发过程中主动调用**,更新子任务状态:
- SID 格式:`21A``21B`(不区分大小写)
- 当**最后一个子任务**标记为 `done` 时,父任务**自动**转为 `done`
```bash
node todo/todo.mjs sub status <sid> <open|doing|done>
```
转述:「{SID}「{title}」→ {状态}」,若触发父任务自动转换则一并提示。
---
所有命令完成后,在终端显示来自脚本的完整 summary(按 open / doing / done / accepted 分组)。