Skip to content

Write Tasks 指南

spec-write-tasksspec-planspec-work 之间的可选派生层。它不执行代码,只做三件事之一:把已定稿的 source plan 编译成 derived task pack、校验已有 task pack,或返回"不需要 task pack"的决定。Claude 入口是 spec-write-tasks,Codex 入口是 spec-write-tasks

入口

场景Claude CodeCodex
把计划拆成可执行任务spec-write-tasks docs/plans/<plan>.mdspec-write-tasks docs/plans/<plan>.md
校验已有 task packspec-write-tasks docs/tasks/<pack>.mdspec-write-tasks docs/tasks/<pack>.md

执行逻辑图

text
已定稿的本地 source plan
  |
  v
判断是否值得派生 task pack(体量、依赖、执行风险、上下文负载)
  |
  +-- 不值得 --> skip / return-to-plan
  |
  v
编译 derived task pack 或校验已有 task pack
  |
  v
写 docs/tasks/ 下的 task pack(带 spec_id、source_plan、source_plan_hash、
generated_by: spec-write-tasks、mode: derived 和 Task Pack Contract JSON)
  |
  v
交给 spec-work 执行;plan 仍是 single source of truth

何时使用

  • 已定稿的本地 source plan 太大或依赖复杂,不适合直接执行。
  • 用户明确要求把 plan 拆成任务。
  • 已有 task pack 需要在 spec-work 前校验。

什么时候不该用

  • 产品或架构范围尚未收敛。
  • 小改动,不需要派生层。
  • 远程仓库、包名、marketplace 标识或通用任务清单。
  • 应直接进 spec-work 的实现型请求。
  • 手改 generated runtime mirror。

产物与契约

可执行 task pack 位于 docs/tasks/,必须携带 spec_idsource_plansource_plan_hashgenerated_by: spec-write-tasksmode: derived 和有效的 Task Pack Contract JSON block。task pack 是派生执行索引,永远不替代 source plan。

失败以 machine-readable reason code 表达,例如 source_plan_missingambiguous_planmissing_spec_idwrong_chainstale_hashunverifiable_hashinvalid_contractrepo_scope_missingscope_gap

下一步