Skip to content

/features

功能清单维护。查看、添加或更新功能清单时使用。

功能清单维护

管理 docs/features.md — 产品功能的全景视图、开发进度和测试覆盖。

前置检查

  1. 检查 docs/features.md 是否存在
  2. 如果不存在,询问用户是否创建
  3. 确认后生成模板:
markdown
# 功能清单

> 最后更新:— | 总计:0 项

## 模块:核心功能

| ID | 功能 | 状态 | 优先级 | 测试 | 关键文件 | 备注 |
|----|------|------|--------|------|---------|------|
| CORE-01 | | 📋 todo | P0 | — | | |

子命令路由

根据 $ARGUMENTS 选择子命令:

  • 无参数或 add → 执行 添加流程
  • update → 执行 更新流程
  • report → 执行 报告流程

添加流程(add)

  1. 读取 docs/features.md,解析现有模块列表和已用 ID
  2. 使用 AskUserQuestion 询问:
    • 归属模块(列出已有模块 + "新建模块"选项)
    • 功能名称(一句话,动词开头)
    • 优先级(P0 必做 / P1 应做 / P2 可选)
  3. 自动分配 ID:模块缩写(大写 2-5 字母)+ 递增两位序号
  4. 写入对应模块表格末尾,初始状态 📋 todo,测试
  5. 更新头部统计行(总计、各状态计数)
  6. 输出确认信息

更新流程(update)

  1. 读取 docs/features.md,解析所有功能条目
  2. 对每个 🚧 dev 状态的功能:
    • 检查关键文件字段是否有值且文件存在
    • 搜索对应测试文件(*.test.ts / *.spec.ts),统计通过数/总数
    • 如果测试全通过且关键文件完整,建议状态 → ✅ done
  3. 对每个 ✅ done 状态的功能:
    • 检查测试列是否有值(无测试 → 标记 ⚠️ 警告)
  4. 输出变更建议清单,格式:
建议更新:
- USR-02: 状态 🚧 dev → ✅ done(测试 3/3 全通过)
- USR-01: ⚠️ 已完成但无测试
- ORD-01: 测试 4/5 → 5/5
  1. 等待用户确认后写入文件
  2. 更新头部统计行

报告流程(report)

读取 docs/features.md,输出统计报告(不修改文件):

## 功能进度报告(日期)

### 总览
- 总计:N 项功能
- ✅ 已完成:n(%) | 🚧 开发中:n(%) | 📋 待开始:n(%)

### 测试覆盖
- 有测试的功能:n/N(%)
- 测试全通过:n/n(%)
- ⚠️ 已完成但无测试:[列出 ID]

### 模块进度
| 模块 | 完成率 | 测试覆盖 |
|------|--------|---------|
| ... | ... | ... |

### 风险项
- [状态 dev 超过 2 周未推进的条目]
- [已完成但测试覆盖为空的条目]

格式规范

状态值(5 种)

状态含义
📋 todo已规划,未开始
🚧 dev开发中
✅ done开发完成,测试通过
🚀 live已上线
❌ cut已砍掉(保留记录)

测试列格式

  • ✅ n/n — 全部通过
  • 🔶 n/n — 部分通过
  • ❌ 0/n — 全部失败
  • — 未编写测试

ID 编码

{MOD}-{NN}:模块缩写(大写 2-5 字母)+ 两位序号,如 USR-01ORD-02

联动提示

操作完成后,根据场景附带提示:

  • 添加新功能后 → "可运行 /plan 设计实现方案"
  • 更新测试覆盖后 → "无测试的已完成功能建议运行 /test 补充"
  • 报告显示异常时 → "建议结合 /health-report 查看项目整体健康度"

IMPORTANT:

  • 每次修改 docs/features.md 后必须更新头部统计行
  • 不删除 ❌ cut 状态的条目(保留决策记录)
  • 头部统计只计算活跃状态(todo/dev/done/live),不计 cut

面向个人开发者的 AI 辅助编程工程化方案