/features
功能清单维护。查看、添加或更新功能清单时使用。
功能清单维护
管理 docs/features.md — 产品功能的全景视图、开发进度和测试覆盖。
前置检查
- 检查
docs/features.md是否存在 - 如果不存在,询问用户是否创建
- 确认后生成模板:
markdown
# 功能清单
> 最后更新:— | 总计:0 项
## 模块:核心功能
| ID | 功能 | 状态 | 优先级 | 测试 | 关键文件 | 备注 |
|----|------|------|--------|------|---------|------|
| CORE-01 | | 📋 todo | P0 | — | | |子命令路由
根据 $ARGUMENTS 选择子命令:
- 无参数或
add→ 执行 添加流程 update→ 执行 更新流程report→ 执行 报告流程
添加流程(add)
- 读取
docs/features.md,解析现有模块列表和已用 ID - 使用 AskUserQuestion 询问:
- 归属模块(列出已有模块 + "新建模块"选项)
- 功能名称(一句话,动词开头)
- 优先级(P0 必做 / P1 应做 / P2 可选)
- 自动分配 ID:模块缩写(大写 2-5 字母)+ 递增两位序号
- 写入对应模块表格末尾,初始状态
📋 todo,测试— - 更新头部统计行(总计、各状态计数)
- 输出确认信息
更新流程(update)
- 读取
docs/features.md,解析所有功能条目 - 对每个
🚧 dev状态的功能:- 检查关键文件字段是否有值且文件存在
- 搜索对应测试文件(
*.test.ts/*.spec.ts),统计通过数/总数 - 如果测试全通过且关键文件完整,建议状态 →
✅ done
- 对每个
✅ done状态的功能:- 检查测试列是否有值(无测试 → 标记 ⚠️ 警告)
- 输出变更建议清单,格式:
建议更新:
- USR-02: 状态 🚧 dev → ✅ done(测试 3/3 全通过)
- USR-01: ⚠️ 已完成但无测试
- ORD-01: 测试 4/5 → 5/5- 等待用户确认后写入文件
- 更新头部统计行
报告流程(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-01、ORD-02。
联动提示
操作完成后,根据场景附带提示:
- 添加新功能后 → "可运行
/plan设计实现方案" - 更新测试覆盖后 → "无测试的已完成功能建议运行
/test补充" - 报告显示异常时 → "建议结合
/health-report查看项目整体健康度"
IMPORTANT:
- 每次修改
docs/features.md后必须更新头部统计行 - 不删除
❌ cut状态的条目(保留决策记录) - 头部统计只计算活跃状态(todo/dev/done/live),不计 cut