devdocs-dev-tasks
SKILL.md
开发任务
将系统设计分解为可执行、可追踪的开发任务。
语言规则
- 支持中英文提问
- 统一中文回复
- 使用中文生成文档
触发条件
- 用户已完成系统设计和测试计划
- 用户要求拆分开发任务
- 用户需要迭代/Sprint 规划
前置条件
- 需求文档:
docs/devdocs/01-requirements.md - 系统设计文档:
docs/devdocs/02-system-design.md - 测试用例文档:
docs/devdocs/03-test-cases.md(及03-test-unit.md,03-test-integration.md,03-test-e2e.md) - 如不存在,建议先运行前置阶段
工作流程
- 读取文档:加载所有前置阶段文档
- 识别组件:将系统模块映射为任务
- 定义依赖:建立任务执行顺序
- 评估范围:确保任务粒度合适
- 创建任务列表:生成结构化任务文档
- 用户确认:获得批准
- 加载到 TodoWrite:可选,添加任务到追踪列表
输出文件
主文件:docs/devdocs/04-dev-tasks.md
文档拆分规则
当满足以下条件时,应拆分文档:
- 任务数量超过 20 个
- 文档超过 300 行
- 涉及多个独立模块
拆分方式:
docs/devdocs/
├── 04-dev-tasks.md # 主文档:任务概览、依赖图、执行检查清单
├── 04-dev-tasks-infra.md # 基础设施任务:数据库、配置、部署
├── 04-dev-tasks-core.md # 核心逻辑任务:Service、Domain 层
├── 04-dev-tasks-api.md # 接口层任务:Controller、路由、验证
└── 04-dev-tasks-test.md # 测试任务:单元测试、集成测试、E2E
拆分内容分配:
| 文件 | 包含内容 |
|---|---|
| 04-dev-tasks.md | 任务概览、依赖关系图、执行检查清单、风险项 |
| 04-dev-tasks-infra.md | T-01 ~ T-XX 基础设施相关任务 |
| 04-dev-tasks-core.md | T-XX ~ T-XX 核心业务逻辑任务 |
| 04-dev-tasks-api.md | T-XX ~ T-XX 接口层任务 |
| 04-dev-tasks-test.md | T-XX ~ T-XX 测试实现任务 |
主文档保留内容:
- 任务总数和执行顺序
- 完整的依赖关系图
- 各子文档的任务范围说明
- 执行检查清单(汇总)
任务归档规则
随着迭代,已完成任务会不断积累。为保持主文档简洁,需定期归档。
归档触发条件(由 /devdocs-sync 自动检测):
- 主文档超过 300 行
- 已完成任务超过 15 个
主文档保留:
- 所有"待开发"和"进行中"任务
- 最近完成的 5 个任务(保持上下文)
- 执行检查清单(完整)
归档文件:04-dev-tasks-archive.md
归档结构(按功能点分组):
# 已完成任务归档
## F-001: 用户注册
### T-01: 数据库表设计 ✅
- **完成时间**:2024-01-15
- **关联需求**:F-001, AC-001
- **涉及文件**:`src/db/schema.ts`
- **测试结果**:IT-001 通过
### T-02: 注册接口实现 ✅
- **完成时间**:2024-01-16
- **关联需求**:F-001, AC-002, AC-003
- **涉及文件**:`src/api/auth.ts`, `src/services/user.ts`
- **测试结果**:UT-001~003, IT-002 通过
---
## F-002: 用户登录
### T-05: 登录接口实现 ✅
- **完成时间**:2024-01-20
- **关联需求**:F-002, AC-006
- **涉及文件**:`src/api/auth.ts`
- **测试结果**:UT-010, IT-005 通过
归档内容简化:
- 保留:任务描述、关联需求、涉及文件、完成时间、测试结果
- 移除:详细的验收标准检查项、Review 要点(已通过)
归档操作:
# 由 /devdocs-sync 自动建议
/devdocs-sync
# → 检测到已完成任务过多,是否归档?
# 或手动触发
/devdocs-sync --archive
任务设计原则
每个任务必须满足 TAR 原则:
| 原则 | 说明 | 必需内容 |
|---|---|---|
| 可测试 (Testable) | 可通过自动化或手动测试验证 | 测试方法和预期结果 |
| 可验收 (Acceptable) | 有明确的验收标准 | 具体、可量化的完成标准 |
| 可审查 (Reviewable) | 可独立进行代码审查 | Review 要点 |
分层 TDD 模式
采用 分层 TDD(Test-Driven Development)方式,根据任务类型决定测试优先级:
┌─────────────────────────────────────────────────────────────┐
│ 分层 TDD 策略 │
├─────────────────────────────────────────────────────────────┤
│ 核心逻辑层 (Service/Domain) │ 🔴 强制 TDD │ 测试先行 │
├─────────────────────────────────────────────────────────────┤
│ 接口层 (Controller/API) │ 🟡 推荐 TDD │ 建议测试先行│
├─────────────────────────────────────────────────────────────┤
│ UI 层 (Component/View) │ 🟢 可选 TDD │ 可实现后补 │
├─────────────────────────────────────────────────────────────┤
│ 基础设施层 (DB/Config) │ ⚪ 不适用 │ 集成测试验证│
└─────────────────────────────────────────────────────────────┘
TDD 循环
┌──────────────────────────────────────┐
│ TDD 红-绿-重构循环 │
│ │
│ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │ 红 │ → │ 绿 │ → │重构 │ ──┐ │
│ │写测试│ │写实现│ │优化 │ │ │
│ │(失败)│ │(通过)│ │代码 │ │ │
│ └─────┘ └─────┘ └─────┘ │ │
│ ↑ │ │
│ └───────────────────────────┘ │
└──────────────────────────────────────┘
为什么分层?
| 层级 | TDD 收益 | 理由 |
|---|---|---|
| 核心逻辑 | 🔴 高 | 业务逻辑复杂,测试先行能明确预期行为,防止过度设计 |
| 接口层 | 🟡 中 | 契约明确,TDD 有助于确保接口符合设计 |
| UI 层 | 🟢 低 | 视觉反馈重要,过早写测试可能阻碍迭代 |
| 基础设施 | ⚪ 无 | 依赖外部系统,集成测试更适合 |
文档模板
# 开发任务:<功能名称>
## 任务概览
- **总任务数**:X 个
- **执行顺序**:按依赖关系
## 任务设计原则
每个任务必须满足 **TAR 原则**:
- **可测试 (Testable)**:有明确的测试方法
- **可验收 (Acceptable)**:有可量化的完成标准
- **可审查 (Reviewable)**:有独立的代码审查点
## 依赖关系图
T-01 ─┬─> T-03 ─> T-05 T-02 ─┘ │ ▼ T-06 ─> T-07
## 任务列表
### 1. 基础设施 ⚪ 不适用 TDD
#### T-01: <任务名称>
| 属性 | 内容 |
|------|------|
| **描述** | <任务描述> |
| **依赖** | 无 |
| **优先级** | P0 |
| **TDD 模式** | ⚪ 不适用 |
| **关联需求** | F-001, AC-001 |
| **涉及文件** | `src/db/schema.ts` |
**执行步骤**:
1. [ ] 实现基础设施
2. [ ] 运行集成测试验证
**测试用例**(来自 `03-test-*.md`):
- [ ] IT-001: 验证表结构创建成功
**测试方法**:
- [ ] 运行数据库迁移脚本
- [ ] 执行 IT-001 集成测试
**验收标准**:
- [ ] 迁移脚本执行无错误
- [ ] 数据库表结构与设计文档一致
**Review 要点**:
- [ ] 字段类型是否正确
- [ ] 索引设计是否合理
- [ ] 是否有安全隐患
---
### 2. 核心逻辑 🔴 TDD
#### T-02: <任务名称>
| 属性 | 内容 |
|------|------|
| **描述** | <任务描述> |
| **依赖** | T-01 |
| **优先级** | P0 |
| **TDD 模式** | 🔴 强制 |
| **关联需求** | F-001, AC-002, AC-003 |
| **涉及文件** | `src/services/xxx.ts` |
**TDD 执行步骤**:
1. [ ] 🔴 编写测试 UT-001, UT-002(应失败)
2. [ ] 🟢 编写最小实现(使测试通过)
3. [ ] 🔵 重构代码(保持测试通过)
**测试用例**(来自 `03-test-unit.md`):
- [ ] UT-001: AC-002 - <测试场景>
- [ ] UT-002: AC-003 - <测试场景>
**编码约束**(参考 `/code-quality`):
- [ ] 函数不超过 50 行,参数不超过 5 个
- [ ] 依赖通过注入,核心逻辑可单元测试
- [ ] 遵循 MTE 原则
**测试约束**(参考 `/testing-guide`):
- [ ] 测试覆盖率 >= 80%
- [ ] 禁止弱断言,验证具体值
- [ ] 变异得分 >= 60%(推荐 >= 80%)
**验收标准**:
- [ ] 所有单元测试通过
- [ ] 行覆盖率 >= 80%,分支覆盖率 >= 80%
**Review 要点**:
- [ ] 业务逻辑是否正确
- [ ] 错误处理是否完善
- [ ] 代码是否符合规范
- [ ] 是否遵循 TDD 流程
---
### 3. 接口层 🟡 推荐 TDD
#### T-03: <任务名称>
| 属性 | 内容 |
|------|------|
| **描述** | <任务描述> |
| **依赖** | T-02 |
| **优先级** | P0 |
| **TDD 模式** | 🟡 推荐 |
| **关联需求** | F-001, AC-004 |
| **涉及文件** | `src/api/xxx.ts` |
**TDD 执行步骤**(推荐):
1. [ ] 🔴 编写接口测试 IT-002(应失败)
2. [ ] 🟢 编写接口实现(使测试通过)
**测试用例**(来自 `03-test-integration.md`):
- [ ] IT-002: AC-004 - API 接口测试
**测试方法**:
- [ ] API 接口测试(正向/反向)
- [ ] 参数校验测试
**验收标准**:
- [ ] API 响应符合设计文档
- [ ] 错误码返回正确
**Review 要点**:
- [ ] 接口设计是否符合 RESTful 规范
- [ ] 参数校验是否完整
- [ ] 权限控制是否正确
---
### 4. UI 层 🟢 可选 TDD
#### T-04: <任务名称>
| 属性 | 内容 |
|------|------|
| **描述** | <任务描述> |
| **依赖** | T-03 |
| **优先级** | P1 |
| **TDD 模式** | 🟢 可选 |
| **关联需求** | F-001, US-001 |
| **涉及文件** | `src/components/xxx.tsx` |
**执行步骤**:
1. [ ] 编写 UI 组件
2. [ ] 视觉验证
3. [ ] 编写 E2E 测试(实现后补)
**UI 约束**(参考 `/ui-skills`):
- [ ] 使用 Tailwind CSS 默认值
- [ ] 使用无障碍组件原语(Base UI / Radix)
- [ ] 图标按钮必须有 aria-label
- [ ] 使用 h-dvh 替代 h-screen
- [ ] 动画仅限 transform/opacity
**测试用例**(来自 `03-test-e2e.md`):
- [ ] E2E-001: US-001 - 完整用户流程
**验收标准**:
- [ ] 界面与设计稿一致
- [ ] E2E 测试通过
- [ ] 响应式布局正常
**Review 要点**:
- [ ] 组件是否可复用
- [ ] 是否遵循 ui-skills 约束
- [ ] 无障碍性是否达标
---
## 执行检查清单
| 任务 | TDD | 测试 | 验收 | Review | 提交 |
|------|-----|------|------|--------|------|
| T-01: <name> | ⚪ | [ ] | [ ] | [ ] | [ ] |
| T-02: <name> | 🔴 | [ ] | [ ] | [ ] | [ ] |
| T-03: <name> | 🟡 | [ ] | [ ] | [ ] | [ ] |
| T-04: <name> | 🟢 | [ ] | [ ] | [ ] | [ ] |
**TDD 图例**:🔴 强制 | 🟡 推荐 | 🟢 可选 | ⚪ 不适用
## 风险项
| 任务 | 风险 | 缓解措施 |
|------|------|----------|
| T-XX | <潜在风险> | <缓解策略> |
约束
基础约束
- 单个任务必须在 4 小时内可完成
- 必须指定任务依赖
- 必须按依赖排序,不能有循环依赖
- 文件路径必须具体,不能写"相关文件"
- 必须提供依赖关系图
- 优先级:P0(阻塞)、P1(重要)、P2(次要)
- 任务编号格式:T-XX(顺序编号)
需求追溯约束
- 每个任务必须关联功能点 (F-XXX) 和验收标准 (AC-XXX)
- 每个任务必须关联测试用例 (UT/IT/E2E-XXX)
- 测试用例来自
03-test-*.md文档
Skill 协作约束
| 任务类型 | 约束 Skill | 检查点 |
|---|---|---|
| 核心逻辑 🔴 | /code-quality, /testing-guide |
TDD 流程、MTE 原则、依赖注入 |
| 接口层 🟡 | /testing-guide |
接口测试、契约验证 |
| UI 实现 🟢 | /ui-skills |
无障碍、动画、布局约束 |
| 测试编写 | /testing-guide |
覆盖率、断言质量、变异测试 |
| 代码提交 | /git-safety |
使用 git mv/rm 处理文件 |
| 提交信息 | /commit-convention |
遵循项目提交规范 |
TAR 原则约束
- 每个任务必须包含测试方法(如何验证)
- 每个任务必须包含验收标准(可量化的完成标准)
- 每个任务必须包含 Review 要点(代码审查关注点)
- 测试方法必须可执行(不能是模糊描述)
- 验收标准必须可量化
- Review 要点必须针对任务类型
分层 TDD 约束
- 核心逻辑任务必须标记 🔴 强制 TDD
- 核心逻辑任务必须先写测试,后写实现
- 核心逻辑任务禁止在测试通过前提交
- 接口层任务标记 🟡 推荐 TDD
- UI 层任务标记 🟢 可选 TDD
- 基础设施任务标记 ⚪ 不适用 TDD
- TDD 任务必须包含红-绿-重构三步骤
任务执行流程
根据任务类型选择对应的执行流程。
核心逻辑任务(强制 TDD)🔴
1. 开始任务
│
▼
2. 编写测试代码(基于 03-test-*.md 的 UT-XXX)
│
▼
3. 运行测试 → 确认失败(红)
│
▼
4. 编写最小实现代码(遵循 /code-quality)
│
▼
5. 运行测试 → 确认通过(绿)
├── 失败 → 修复实现 → 重新测试
│
▼
6. 重构代码(保持测试通过)
│
▼
7. 检查验收标准(AC-XXX)
├── 全部满足 ─────────────┐
└── 未满足 → 补充测试+实现 │
▼
8. 自查 Review 要点
│
▼
9. 询问用户:是否提交代码?
接口层任务(推荐 TDD)🟡
1. 开始任务
│
▼
2. [推荐] 编写接口测试(基于 IT-XXX)
│
▼
3. 编写接口实现
│
▼
4. 运行测试 → 确认通过
│
▼
5. 检查验收标准 → Review → 提交
UI 层任务(可选 TDD)🟢
1. 开始任务
│
▼
2. 编写 UI 组件(遵循 /ui-skills)
│
▼
3. 视觉验证(手动检查)
│
▼
4. 编写 E2E 测试(基于 E2E-XXX)
│
▼
5. 运行测试 → 确认通过
│
▼
6. 检查验收标准 → Review → 提交
基础设施任务 ⚪
1. 开始任务
│
▼
2. 实现基础设施(DB/配置/部署)
│
▼
3. 运行集成测试验证
│
▼
4. 检查验收标准 → Review → 提交
完成后操作
用户确认任务文档后:
- 询问用户是否开始开发
- 如是,使用 TodoWrite 添加所有任务到追踪列表
- 建议从第一个任务(T-01)开始
任务完成流程
开发过程中完成每个任务时:
TDD 任务(核心逻辑 🔴)
- 确认测试先行:检查是否先写了测试
- 确认红-绿循环:测试从失败到通过
- 检查重构:代码是否经过优化
- 验证验收标准:检查所有 AC 是否满足
- 自查 Review 要点:包含 TDD 流程检查
- 询问提交:使用 AskUserQuestion 询问:
- "任务 T-XX(TDD)已完成,测试通过,是否提交代码?"
- 选项:"提交" / "继续修改" / "跳过"
- 如提交:执行 git add 和 commit,消息包含任务编号
- 更新 TodoWrite:将任务标记为已完成
非 TDD 任务(接口/UI/基础设施)
- 执行测试:运行任务定义的测试方法
- 验证验收标准:检查所有验收标准是否满足
- 自查 Review 要点:检查代码审查要点
- 询问提交:使用 AskUserQuestion 询问:
- "任务 T-XX 已完成,测试通过,是否提交代码?"
- 选项:"提交" / "继续修改" / "跳过"
- 如提交:执行 git add 和 commit,消息包含任务编号
- 更新 TodoWrite:将任务标记为已完成
提交信息格式
遵循 /commit-convention 规范,格式如下:
<type>(T-XX): <任务名称>
- <完成内容1>
- <完成内容2>
关联: F-XXX, AC-XXX
测试: UT-XXX, IT-XXX 通过
type 类型:feat | fix | refactor | test | docs | chore
TodoWrite 集成
用户确认开始开发时:
使用 TodoWrite 添加任务:
- 每个任务成为一个 todo 项
- 保持定义的任务顺序
- todo 内容包含任务编号
- 提交后更新状态
Weekly Installs
6
Repository
ab300819/skillsFirst Seen
3 days ago
Installed on
claude-code5
opencode4
antigravity4
gemini-cli4
windsurf3
codex3