--- name: writing-plans description: "Use when 已有经批准的设计/规格说明、多步骤实施任务,在动代码之前需要可执行任务清单时。触发场景:写实施计划、拆解开发任务、implementation plan、执行计划文档、任务拆分、按 TDD 步骤写计划。" --- # 实施计划编写 在**已获用户批准的设计文档**(例如方案设计师产出的 `docs/specs/…-设计.md`)基础上,编写**可交给代理或工程师逐步执行**的实施计划。假设执行者对代码库与领域几乎零上下文、测试习惯一般:计划中必须写明路径、命令、完整代码块与预期输出。遵循 DRY、YAGNI、**TDD**、小步提交。 **开场声明:**「我正在使用**实施计划编写**技能生成实施计划。」 **保存路径(默认):** `docs/specs/plans/YYYY-MM-DD-<功能简述>.md` (若用户或项目已有约定路径,以约定为准。) **可选上下文:** 大功能建议在独立分支或 git worktree 上实施;若用户未准备,在计划头注明即可,不阻塞写计划。 --- ## Inputs / Outputs / Gates / Handoffs(统一契约) - **Inputs(最小输入)**:已获批准的设计/规格说明(路径 + 核心需求 + 约束);目标仓库与测试/运行命令(如 `pytest`/`npm test`/`go test` 等)。 - **Outputs(产物形态)**:一份可勾选、可交接执行的实施计划(结构参考 `references/plan-template.md`)。 - **Gates(继续前必须满足)**: - 禁止占位词(`TODO/TBD/适当/稍后补充`),每步必须可执行(路径/命令/预期输出齐全)。 - 需要用户确认的决策点必须显式列出并暂停等待。 - 通用门控清单可复制使用:`../code-review-expert/references/quality-gates-checklist.md`。 - **Handoffs(推荐下游)**: - `subagent-driven-development(子代理驱动开发)`:按计划逐任务执行 - `code-review-expert(代码审查专家)`:最终质量门禁/收尾审查 - `tdd-master(TDD 开发大师)`:执行阶段遵循 RED-GREEN-REFACTOR 节奏 ## 范围检查 若规格仍包含多个可独立交付的子系统,应退回方案阶段拆成多份子规格;若未拆,则建议**多份实施计划**(一子系统一份),每份计划都能单独产出可运行、可测试的软件。 --- ## 文件结构先行 在写任务前,先列出将创建/修改的文件及职责,作为分解依据: - 边界清晰、接口明确;单文件单职责;相关变更放在相近位置(按职责而非按技术层硬拆)。 - 在存量代码库中遵循既有模式;若当前修改的文件已臃肿,可在计划中包含合理拆分步骤。 --- ## 任务粒度 **每一步对应一个可完成动作(约 2–5 分钟):** - 「编写失败测试」一步 - 「运行并确认失败」一步 - 「写最小实现使测试通过」一步 - 「运行并确认通过」一步 - 「提交」一步 --- ## 计划文档头部(必填) **每一份计划必须以如下头部开头:** ```markdown # [功能名] 实施计划 > **给代理执行者:** 推荐配合 `subagent-driven-development(子代理驱动开发)`(每任务独立子代理 + 两阶段审查)或在本会话内按勾选逐步执行并在批次节点与用户确认。任务使用 `- [ ]` 勾选跟踪。 **目标:** [一句话说明交付什么] **架构要点:** [2–3 句] **技术栈:** [主要语言/框架/测试命令] **关联设计文档:** `docs/specs/…-设计.md`(路径按实际填写) --- ``` --- ## 任务块模板 ````markdown ### 任务 N:[组件或主题名] **涉及文件:** - 新建:`exact/path/to/file.py` - 修改:`exact/path/to/existing.py`(可注行号范围) - 测试:`tests/exact/path/to/test_xxx.py` - [ ] **步骤 1:编写失败测试** ```python def test_具体行为(): result = function(输入) assert result == 期望 ``` - [ ] **步骤 2:运行测试确认失败** 运行:`pytest tests/path/test.py::test_具体行为 -v` 预期:失败(例如 NameError / 断言失败,写明预期信息) - [ ] **步骤 3:最小实现** ```python def function(输入): return 期望 ``` - [ ] **步骤 4:运行测试确认通过** 运行:`pytest tests/path/test.py::test_具体行为 -v` 预期:通过 - [ ] **步骤 5:提交** ```bash git add … git commit -m "feat: …" ``` ```` (语言与测试命令按项目替换:如 `npm test`、`go test`、`cargo test` 等。) --- ## 禁止占位(计划不合格) 以下情况**禁止**出现在最终计划中: - `TBD`、`TODO`、`稍后补充`、`实现时再想` - 「适当错误处理」「补充校验」「覆盖边界」等无具体代码/断言的描述 - 「为上述编写测试」但无测试代码 - 「同任务 M」(执行者可能乱序阅读——重复粘贴必要内容) - 只描述动作不给代码块(凡涉及改代码的步骤必须有代码或 diff 级说明) - 引用未在前文任务中定义的类型/函数/模块 --- ## 自检(主代理自行完成,不必派子代理) 写完计划后快速过一遍: 1. **规格覆盖:** 设计文档中的每条需求能否对应到某一任务?漏项则补任务。 2. **占位扫描:** 对照上一节,搜 `TODO`、`适当`、`类似` 等红线词并修正。 3. **命名一致:** 后文出现的函数名/类型名是否与前面任务一致。 --- ## 计划审查子代理(可选) 若计划规模大或风险高,可在保存前派发审查子代理,模板见 `references/plan-document-reviewer-prompt.md`。 --- ## 交付与执行交接 保存计划后,向用户说明执行方式并二选一(或用户指定): 1. **子代理驱动(推荐):** 每任务新子代理,任务间做**规格符合性审查 → 代码质量审查**。调用 `subagent-driven-development(子代理驱动开发)`。 2. **同会话逐步执行:** 由当前对话按勾选执行,每完成若干任务或与用户约定节点做一次同步;实施时遵循 `tdd-master(TDD 开发大师)` 的红绿重构;关键节点用 `code-review-expert(代码审查专家)` 做质量门禁。 **禁止**在未获用户同意时在 `main`/`master` 上直接开始实施(若计划针对默认分支,须在计划中或交接时明确分支策略)。 --- ## 衔接关系 | 技能 | 关系 | |------|------| | `brainstorming(方案设计师)` | 本技能的上游:输入为已批准的设计文档 | | `subagent-driven-development(子代理驱动开发)` | 本技能的推荐执行方式 | | `tdd-master(TDD 开发大师)` | 子代理或本会话实施时的测试节奏依据 | | `code-review-expert(代码审查专家)` | 全量收尾或子代理流程中的质量审查依据 | | `prd-engineer(需求工程师)` | 偏 PRD/问题域;本技能偏工程切片与文件级步骤,二者可衔接但职责不同 |