speckit.tasks.md
6.2 KB
description: 基于现有设计产物,为该功能生成可执行、按依赖排序的 tasks.md。
handoffs:
- label: 一致性分析
agent: speckit.analyze
prompt: 执行项目一致性分析
send: true
- label: 分阶段实现
agent: speckit.implement
prompt: 按阶段开始实现
send: true
用户输入
$ARGUMENTS
在继续之前,你必须先考虑用户输入(如果不为空)。
概述
准备:在仓库根目录运行
.specify/scripts/bash/check-prerequisites.sh --json并解析 FEATURE_DIR 与 AVAILABLE_DOCS 列表。所有路径必须是绝对路径。当参数里包含单引号(例如 "I'm Groot")时,使用转义写法:如 'I'\''m Groot'(或尽量用双引号:"I'm Groot")。-
加载设计文档:从 FEATURE_DIR 读取:
- 必需:plan.md(技术栈、依赖库、结构)、spec.md(带优先级的用户故事)
- 可选:data-model.md(实体)、contracts/(API 端点)、research.md(决策)、quickstart.md(测试场景)
- 注意:并非所有项目都有全部文档。应基于当前可用文档生成任务。
-
执行任务生成流程:
- 加载 plan.md,提取技术栈、依赖库与项目结构
- 加载 spec.md,提取带优先级的用户故事(P1、P2、P3 等)
- 如果存在 data-model.md:提取实体并映射到用户故事
- 如果存在 contracts/:将端点映射到用户故事
- 如果存在 research.md:提取决策用于初始化相关任务
- 按用户故事组织生成任务(见下方“任务生成规则”)
- 生成依赖图,展示用户故事的完成顺序
- 为每个用户故事提供并行执行示例
- 校验任务完整性(每个用户故事包含所需任务,且可独立测试)
-
生成 tasks.md:以
.specify/templates/tasks-template.md为结构,填充:- 从 plan.md 读取正确的功能名称
- Phase 1:初始化任务(项目初始化)
- Phase 2:基础任务(所有用户故事的阻塞前置)
- Phase 3+:按 spec.md 的优先级为每个用户故事建一个阶段
- 每个阶段包含:故事目标、独立测试标准、测试(如有要求)、实现任务
- 最终阶段:打磨与横切关注点
- 所有任务必须遵循严格的清单格式(见下方“任务生成规则”)
- 每个任务都要写清楚文件路径
- Dependencies 章节展示故事完成顺序
- 每个故事提供并行执行示例
- Implementation strategy 章节说明实现策略(先 MVP,逐步交付)
-
报告(Report):输出生成的 tasks.md 路径与摘要:
- 任务总数
- 每个用户故事的任务数
- 识别到的并行机会
- 每个故事的独立测试标准
- 建议的 MVP 范围(通常只包含用户故事 1)
- 格式校验:确认所有任务都遵循清单格式(checkbox、ID、标签、文件路径)
用于任务生成的上下文:$ARGUMENTS
tasks.md 应当可以直接执行——每个任务都必须足够具体,使得 LLM 在不依赖额外上下文的情况下也能完成。
任务生成规则
关键(CRITICAL):任务必须按用户故事组织,以支持独立实现与独立测试。
测试是可选项:只有在 spec 明确要求,或用户要求 TDD 时才生成测试任务。
清单格式(必须)
每个任务都必须严格遵循以下格式:
- [ ] [TaskID] [P?] [Story?] 包含文件路径的任务描述
格式组成:
-
勾选框(Checkbox):必须以
- [ ]开头(Markdown checkbox) - 任务 ID(Task ID):按执行顺序递增编号(T001、T002、T003...)
- [P] 标记:仅当任务可并行时才包含(不同文件,且不依赖未完成任务)
-
[Story] 标签:仅用于“用户故事阶段”的任务,且必须包含
- 格式:[US1]、[US2]、[US3] 等(映射 spec.md 的用户故事)
- 初始化阶段:不加 story 标签
- 基础阶段:不加 story 标签
- 用户故事阶段:必须有 story 标签
- 打磨阶段:不加 story 标签
- 描述(Description):清晰描述动作,并包含准确文件路径
示例:
- ✅ 正确:
- [ ] T001 按实现计划创建项目结构 - ✅ 正确:
- [ ] T005 [P] 在 src/middleware/auth.py 实现认证中间件 - ✅ 正确:
- [ ] T012 [P] [US1] 在 src/models/user.py 创建 User 模型 - ✅ 正确:
- [ ] T014 [US1] 在 src/services/user_service.py 实现 UserService - ❌ 错误:
- [ ] 创建用户模型(缺少 ID 与 Story 标签) - ❌ 错误:
T001 [US1] 创建模型(缺少 checkbox) - ❌ 错误:
- [ ] [US1] 创建用户模型(缺少 Task ID) - ❌ 错误:
- [ ] T001 [US1] 创建模型(缺少文件路径)
任务组织方式
-
来自用户故事(spec.md)——主要组织方式:
- 每个用户故事(P1、P2、P3...)对应一个阶段
- 将所有相关组件映射到对应的故事:
- 该故事需要的模型
- 该故事需要的服务
- 该故事需要的端点/UI
- 若需要测试:该故事专属的测试任务
- 标记故事依赖(大多数故事应尽量独立)
-
来自 contracts:
- 将每个 contract/endpoint 映射到它服务的用户故事
- 若需要测试:每个 contract 在该故事阶段中,先生成 contract 测试任务 [P],再实现
-
来自数据模型:
- 将每个实体映射到需要它的用户故事
- 若实体服务多个故事:放入最早的故事阶段或初始化阶段
- 关系处理 → 放到对应故事阶段的服务层任务中
-
来自初始化/基础设施:
- 共享基础设施 → 初始化阶段(Phase 1)
- 基础/阻塞任务 → 基础阶段(Phase 2)
- 故事特定的初始化 → 放到该故事阶段内
阶段结构
- Phase 1:初始化(项目初始化)
- Phase 2:基础(阻塞前置;必须在用户故事之前完成)
-
Phase 3+:按优先级顺序的用户故事(P1、P2、P3...)
- 每个故事内:测试(如需)→ 模型 → 服务 → 端点 → 集成
- 每个阶段都应是一个完整且可独立测试的增量
- 最终阶段:打磨与横切关注点