在编写代码之前如果您已经有了多步骤任务的规范或要求请使用此方法。npx skills add https://github.com/obra/superpowers/tree/main/skills/writing-plans技能.md写作计划概述编写全面的实施计划假设工程师对我们的代码库一无所知而且审美也值得怀疑。记录他们需要了解的一切每个任务需要修改哪些文件、代码、测试、可能需要查阅的文档以及测试方法。将整个计划分解成易于执行的小任务。遵循 DRYDon’t Repeat Yourself不要重复自己原则。遵循 YAGNIYou Aigns No I你不需要它。遵循 TDD测试驱动开发。频繁提交。假设他们是一位技术娴熟的开发人员但对我们的工具集或问题领域几乎一无所知。假设他们对优秀的测试设计也知之甚少。开场白“我将运用计划撰写技能来制定实施计划。”背景superpowers:using-git-worktrees如果在隔离的工作树中工作则应该在执行技能时创建。保存计划至docs/superpowers/plans/YYYY-MM-DD-feature-name.md用户自定义的计划位置会覆盖此默认设置范围检查如果规范涵盖多个独立子系统那么在头脑风暴阶段就应该将其拆分为子项目规范。如果没有建议将其拆分为单独的计划——每个子系统一个计划。每个计划都应该能够独立生成可运行、可测试的软件。文件结构在定义任务之前先规划好哪些文件将被创建或修改以及每个文件负责什么。这是确定任务分解方案的关键一步。设计单元应具有清晰的边界和明确的接口。每个文件应承担一项明确的职责。你最擅长处理那些能够一次性理解其上下文的代码而且当文件处于焦点状态时你的编辑也更可靠。比起功能过多的大型文件最好选择较小且功能明确的文件。共同变更的文件应该放在一起。按职责划分而不是按技术层划分。在现有代码库中遵循既定模式。如果代码库包含大型文件不要单方面进行重构——但如果您正在修改的文件变得过于庞大那么在计划中加入拆分是合理的。这种结构指导着任务分解。每个任务都应该产生独立且有意义的、自包含的变更。任务规模合理化任务是最小的单元它拥有自己的测试周期值得一位新的评审员审核。在划定任务边界时将设置、配置、脚手架搭建和文档编写步骤归入需要这些步骤的任务中只有当评审员可以合理地拒绝一个任务而批准其相邻任务时才应将其拆分。每个任务最终都应交付一个可独立测试的成果。精细化任务粒度每一步都是一个动作2-5分钟“编写失败的测试”——步骤“运行它以确保它失败”——步骤“实现使测试通过所需的最小代码量”——步骤“运行测试并确保它们通过”——步骤“提交”步骤计划文件页眉所有计划都必须以这个标题开头# [Feature Name] Implementation Plan**For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development(recommended)or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox(-[])syntaxfortracking. **Goal:**[One sentence describing what this builds]**Architecture:**[2-3 sentences about approach]**Tech Stack:**[Key technologies/libraries]## Global Constraints[The specs project-wide requirements — version floors, dependency limits, naming and copy rules, platform requirements — one line each, with exact values copied verbatim from the spec. Every tasks requirements implicitly include this section.]---任务结构### Task N: [Component Name]**Files:** - Create:exact/path/to/file.py- Modify:exact/path/to/existing.py:123-145- Test:tests/exact/path/to/test.py**Interfaces:** - Consumes:[what this task uses from earlier tasks — exact signatures]- Produces:[what later tasks rely on — exactfunctionnames, parameter andreturntypes. A tasks implementer sees only their own task;this block is how they learn the names and types neighboring tasks use.]-[]**Step1: Write the failing test** python def test_specific_behavior(): resultfunction(input)assert resultexpected-[]**Step2: Runtestto verify it fails** Run:pytest tests/path/test.py::test_name -vExpected: FAIL withfunction not defined-[]**Step3: Write minimal implementation**python def function(input):returnexpected-[]**Step4: Runtestto verify it passes** Run:pytest tests/path/test.py::test_name -vExpected: PASS -[]**Step5: Commit**bashgitaddtests/path/test.py src/path/file.pygitcommit-mfeat: add specific feature无占位符每一步都必须包含工程师实际需要的内容。以下是一些计划失败的例子——千万不要写这些待定待办稍后实施填写详情“添加适当的错误处理”/“添加验证”/“处理极端情况”“为上述内容编写测试”不包含实际测试代码“与任务 N 类似”重复代码——工程师可能阅读任务顺序有误描述操作步骤但不展示具体操作方法代码步骤需要代码块引用未在任何任务中定义的类型、函数或方法记住始终使用精确的文件路径每一步都要写出完整的代码——如果某一步修改了代码请显示出来。包含预期输出的确切命令DRYDon’t Repeat Yourself不要重复自己、YAGNIYou Agni你不需要它、TDD测试自我评价完成所有计划后请以全新的视角审视规范并对照规范检查计划。这是一份需要您亲自执行的检查清单而不是外包给其他代理商的。**1. 规范覆盖率**快速浏览规范中的每个章节/要求。你能指出一个实现了该要求的任务吗列出所有遗漏之处。**2. 占位符扫描**检查您的计划是否存在危险信号——即上面“无占位符”部分中提到的任何模式。修复它们。**3. 类型一致性**后续任务中使用的类型、方法签名和属性名称是否与之前任务中定义的一致clearLayers()任务 3 中调用的函数clearFullLayers()在任务 7 中仍然被调用这是一个错误。如果发现问题请直接修复。无需重新审核——只需修复即可继续。如果发现某个规范要求没有对应的任务请添加该任务。执行交接保存计划后提供执行选项计划已完成并保存docs/superpowers/plans/filename.md。有两种执行选项1. 子代理驱动推荐——我为每个任务调度一个新的子代理任务间进行审查快速迭代2. 内联执行- 使用执行计划、带检查点的批量执行方式在本会话中执行任务哪种方法如果选择子代理驱动**必备子技能**运用超能力子代理驱动开发每个任务配备一名新的子代理人 两阶段审核如果选择内联执行**必备子技能**运用超能力执行计划带有检查点的批量执行以供审核