关于 definition-of-done
Definition of Done 是一项用于完善项目里程碑的技能,会依据业务需求及可选的技术需求,为 milestones.yaml 添加验收标准和退出清单。它面向已有规划产物的项目团队,帮助明确每个里程碑何时算完成。
主要功能
- 01从需求映射里程碑
- 02生成可验证的功能标准
- 03纳入适用的非功能标准
- 04整理测试与文档要求
- 05创建退出清单并备份文件
适用场景
- 01为里程碑补充验收标准
- 02将业务需求对应到交付阶段
- 03根据技术需求设置可测门槛
- 04审查里程碑完成情况
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ validkeys/ sherpy --skill definition-of-done安装后在 Claude Code 中输入/definition-of-done确认已加载。
附带文件examples/definition-of-done.yaml
详细介绍
完成定义
在现有的 milestones.yaml 中为每个里程碑添加详细的验收标准。弥合“计划说我们要构建 X”和“我们确定 X 已完成”之间的差距。为每个里程碑添加可选的 acceptance_criteria 和 exit_checklist 字段,内容直接依据需求制定,而不是使用通用清单。
前置条件
{base_directory}/implementation/milestones.yaml(由/implementation-planner输出)- 必须包含带有
id、name、description、success_criteria的里程碑定义 - 此技能会添加可选的
acceptance_criteria和exit_checklist字段
- 必须包含带有
{base_directory}/requirements/business-requirements.yaml(由/business-requirements-interview输出)- 可选:
{base_directory}/requirements/technical-requirements.yaml,用于根据非功能性需求制定关卡
用法
/definition-of-done [base-directory]
如果未提供目录,则通过查找当前目录中的 implementation/milestones.yaml 自动检测。
如果未找到,请提示用户:“您的规划产物位于哪个位置?”
等待用户提供路径后再继续。将其存储为 base_directory。
流程
第 1 步:确定基础目录并加载产物
如果未提供目录参数,请检查当前目录中是否存在 implementation/milestones.yaml。
- 如果找到,则使用当前目录作为
base_directory - 如果未找到,则提示:“您的规划产物位于哪个位置?”,并等待用户回复
确定 base_directory 后:
读取 {base_directory}/implementation/milestones.yaml,并提取每个里程碑的 id、name、description,以及任何 deliverables 或 tasks 引用。
读取 {base_directory}/requirements/business-requirements.yaml,并将每项功能需求映射到最可能负责交付该需求的里程碑。根据里程碑名称和描述进行判断,不要猜测任务级别的细节。
如果 {base_directory}/requirements/technical-requirements.yaml 存在,则读取它以提取非功能性需求(性能目标、安全要求、测试覆盖率阈值)。
Step 2: 为每个里程碑制定验收标准
为每个里程碑生成以下五类标准:
1. 功能标准 里程碑完成时必须满足的具体、可观察行为。根据映射到此里程碑的业务需求制定。每项标准都必须:
- 可明确验证(“用户可以使用电子邮件和密码登录” ✓,而“登录可用” ✗)
- 尽可能关联需求 ID
- 使用“前提/操作/结果”格式,或使用陈述式现在时
2. 非功能标准
适用于此里程碑产出的性能、安全性、可靠性或无障碍要求。如果存在 technical-requirements.yaml NFR,请从中提取。仅纳入在此里程碑范围内可测试的 NFR——不要将系统级 SLA 应用于早期基础里程碑。
3. 测试要求 在将此里程碑视为完成之前必须具备的测试覆盖:
- 为新引入的模块/函数提供单元测试覆盖
- 为跨越的任何新服务边界提供集成测试
- 为已交付的任何面向用户的流程提供端到端测试场景
- 回归测试:确认没有现有测试被破坏
4. 文档要求 此里程碑应产出的文档:
- 为复杂逻辑添加内联代码注释
- 为任何新端点编写 API 文档
- 如果设置/用法有变化,更新 README
- 如果结构有变化,更新架构图
5. 线框图要求(仅适用于 UI 里程碑)
如果此里程碑包含创建或修改 UI 组件的任务(.tsx、.jsx、.vue 文件),请添加:
- 此里程碑中所有页面的线框图均已审阅并获批
- 已记录组件状态(空、加载中、错误、成功)
- 已根据线框图验证用户流程
仅当
ux/wireframe-spec.yaml存在且has_ui_changes为 true 时,才包含此部分。
6. 退出检查清单 用于代码审查/里程碑签署的简短、具体清单。这是快速参考——将上述内容归纳为是/否检查项。
Step 3: 确定跨里程碑门槛
如果某项需求跨越多个里程碑(例如,“端到端加密”需要在 m1、m3 和 m5 中完成工作),请将其标记为跨里程碑门槛:只有在最后一个为其作出贡献的里程碑中,才能验证完整需求。为每个中间里程碑添加 cross_milestone_note。
Step 4: 使用验收标准更新 milestones.yaml
完整读取现有的 {base_directory}/implementation/milestones.yaml 文件。
为 milestones 数组中的每个里程碑添加两个可选字段:
- acceptance_criteria 对象,包含五个类别:
acceptance_criteria:
functional:
- criterion: "[verifiable statement]"
requirement_ref: "BR-FUNC-001"
non_functional:
- criterion: "[measurable threshold]"
requirement_ref: "NFR-PERF-002"
testing:
unit: "[coverage expectation]"
integration: "[test expectations or N/A]"
e2e: "[E2E expectations or N/A]"
regression: "All existing tests pass"
documentation:
- "[specific artifact]"
cross_milestone_notes:
- "[spanning requirement note]" # if applicable
- exit_checklist 数组,包含 3-10 项二元检查:
exit_checklist:
- "[ ] [Functional check with requirement ref]"
- "[ ] All tests pass (≥X% coverage)"
- "[ ] [Documentation check]"
- "[ ] PR approved by at least one reviewer"
**重要:**保留 milestones.yaml 中的所有现有字段:
version、project、generated、business_requirements、technical_requirements- 包含
ordering_strategy和ordering_rationale的meta部分 - 所有现有里程碑字段:
id、name、description、dependencies、estimated_duration、tasks_file、success_criteria - 如存在,则保留可选的
project_metadata
将增强后的 milestones.yaml 写回 {base_directory}/implementation/milestones.yaml。
备份策略:
覆盖前,在 {base_directory}/implementation/milestones.yaml.backup 创建带时间戳的备份。
Step 5: 差距分析
更新 milestones.yaml 后,在文中报告:
## Definition of Done Enhancement Complete
**Project:** [name]
**Milestones Enhanced:** [n]/[n]
**Functional Requirements Mapped:** [n]/[n]
**Acceptance Criteria Added:**
- Functional: [n] criteria across [n] milestones
- Non-Functional: [n] NFR criteria
- Testing: [n] milestones with test requirements
- Documentation: [n] milestones with doc requirements
**Criteria Quality:**
[✓ / ✗] All functional criteria are verifiable (no vague language)
[✓ / ✗] NFR criteria tied to specific thresholds (not just "must be fast")
[✓ / ✗] Every milestone has at least one testing requirement
[✓ / ✗] Cross-milestone requirements identified
**Unmapped Requirements:** [none / list requirements not tied to any milestone]
**Updated File:** implementation/milestones.yaml
**Backup Created:** implementation/milestones.yaml.backup.[timestamp]
**Recommendations:** [none / list]
输出格式
增强后的 milestones.yaml 结构
此技能会在现有 milestones.yaml 的每个里程碑中添加两个可选字段:
增强前:
milestones:
- id: m1
name: "User Authentication"
description: |
Build authentication system...
dependencies: [m0]
estimated_duration: "5-6 hours"
tasks_file: milestone-m1.tasks.yaml
success_criteria:
- "Users can sign up and log in"
- "Password security meets requirements"
增强后:
milestones:
- id: m1
name: "User Authentication"
description: |
Build authentication system...
dependencies: [m0]
estimated_duration: "5-6 hours"
tasks_file: milestone-m1.tasks.yaml
success_criteria:
- "Users can sign up and log in"
- "Password security meets requirements"
# NEW: Detailed acceptance criteria added by /definition-of-done
acceptance_criteria:
functional:
- criterion: "Users can create account with email and password"
requirement_ref: BR-FUNC-001
- criterion: "Users can log in and receive JWT token valid for 24h"
requirement_ref: BR-FUNC-002
non_functional:
- criterion: "Passwords hashed using bcrypt with cost factor ≥12"
requirement_ref: NFR-SEC-001
- criterion: "/auth/login responds within 300ms for 95% of requests"
requirement_ref: NFR-PERF-001
testing:
unit: "≥85% coverage for auth service and JWT utilities"
integration: "Test auth service ↔ user database interaction"
e2e: "Happy path: signup → login → protected access → logout"
regression: "All existing tests pass"
documentation:
- "API documentation for /auth/signup, /auth/login, /auth/logout"
- "Authentication flow diagram"
cross_milestone_notes:
- "Role-based access control foundation in m1, full RBAC at m2"
# NEW: Exit checklist added by /definition-of-done
exit_checklist:
- "[ ] Users can sign up and log in (BR-FUNC-001, BR-FUNC-002)"
- "[ ] Password security meets requirements (bcrypt ≥12, NFR-SEC-001)"
- "[ ] All unit tests pass with ≥85% coverage"
- "[ ] Integration tests cover auth ↔ database"
- "[ ] E2E test covers full signup → login flow"
- "[ ] API documentation complete"
- "[ ] PR approved by at least one reviewer"
保留的字段
该技能会保留现有 milestones.yaml 的所有内容:
- 根元数据:
version、project、generated、business_requirements、technical_requirements meta部分:ordering_strategy、ordering_rationale- 所有里程碑字段:
id、name、description、dependencies、estimated_duration、tasks_file、success_criteria - 可选部分:
overview、project_metadata、risks_and_mitigation
备份文件
修改前会创建带时间戳的备份:
- 位置:
{base_directory}/implementation/milestones.yaml.backup.YYYYMMDD-HHMMSS - 内容:增强前完整的原始
milestones.yaml
示例
请参阅 /docs/specifications/milestones/example.yaml,其中包含里程碑 m1 的完整 acceptance_criteria 和 exit_checklist。