Skip to main content

writing-plans

当你有针对多步骤任务的 spec 或需求时使用,在动代码之前

설치로 이동

소스 정보

저장소
aaione/superpowers-zh
최근 소스 활동
2026년 6월 20일 21:05
감지된 SKILL.md 언어
중국어
스타
8
포크
3

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
2 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
writing-plans
description
当你有针对多步骤任务的 spec 或需求时使用,在动代码之前
# 编写计划 (Writing Plans) ## 概述 (Overview) 编写全面的实现计划,假设工程师对我们的代码库零上下文,且品味存疑。记录他们需要知道的一切:每个任务要触及哪些文件、代码、测试、他们可能需要查阅的文档、如何测试。以拆分好的小任务形式把整个计划给他们。DRY。YAGNI。TDD。频繁提交。 假设他们是有能力的开发者,但几乎不了解我们的工具集或问题域。假设他们不太懂好的测试设计。 **开始时宣布:** "我正在使用 writing-plans skill 来创建实现计划。" **上下文:** 如果在隔离的 worktree 中工作,它应该在执行时通过 `superpowers:using-git-worktrees` skill 创建。 **计划保存到:** `docs/superpowers/plans/YYYY-MM-DD-<feature-name>.md` - (用户对计划位置的偏好优先于此默认值) ## 范围检查 (Scope Check) 如果 spec 涵盖多个独立子系统,它应该在 brainstorming 阶段被分解为子项目 spec。如果没有,建议把它拆成单独的计划 —— 每个子系统一个。每个计划应能独立产出可工作、可测试的软件。 ## 文件结构 (File Structure) 在定义任务之前,规划哪些文件将被创建或修改,以及每个文件负责什么。这是分解决策被锁定的地方。 - 设计具有清晰边界和定义良好接口的单元。每个文件应有单一明确职责。 - 你能更好地推理可一次性放入上下文的代码,当文件聚焦时你的编辑更可靠。偏好更小、聚焦的文件,而非做太多的大文件。 - 一起改变的文件应放在一起。按职责拆分,而非按技术层。 - 在既有代码库中,遵循既有模式。如果代码库使用大文件,不要单方面重构 —— 但如果你正在修改的文件已变得难以驾驭,在计划中包含一次拆分是合理的。 此结构指导任务分解。每个任务应产生独立可理解的、自包含的改动。 ## 任务定寸 (Task Right-Sizing) 一个任务是承载自己测试周期、且值得一个全新 reviewer 关卡的最小单元。在划定任务边界时:把设置、配置、脚手架和文档步骤折叠进需要它们的那个任务的交付物中;仅在一个 reviewer 能有意义地拒绝一个任务而批准其相邻任务时才拆分。每个任务以一个独立可测试的交付物结束。 ## 拆分好的任务粒度 (Bite-Sized Task Granularity) **每一步是一个动作(2-5 分钟):** - "编写失败的测试" —— 一步 - "运行它确保它失败" —— 一步 - "实现让测试通过的最小代码" —— 一步 - "运行测试确保它们通过" —— 一步 - "提交" —— 一步 ## 计划文档头部 (Plan Document Header) **每个计划必须以此头部开始:** ```markdown # [功能名称] 实现计划 > **面向 agentic worker:** 必需的子 skill:使用 superpowers:subagent-driven-development(推荐)或 superpowers:executing-plans 逐任务实现此计划。步骤使用 checkbox(`- [ ]`)语法进行跟踪。 **目标(Goal):** [一句话描述这构建什么] **架构(Architecture):** [2-3 句关于方法的描述] **技术栈(Tech Stack):** [关键技术/库] ## 全局约束(Global Constraints) [spec 的项目级需求 —— 版本下限、依赖限制、命名和文案规则、平台要求 —— 每条一行,值从 spec 中逐字复制。每个任务的需求隐式包含此小节。] --- ``` ## 任务结构 (Task Structure) ````markdown ### 任务 N:[组件名称] **文件:** - 创建:`exact/path/to/file.py` - 修改:`exact/path/to/existing.py:123-145` - 测试:`tests/exact/path/to/test.py` **接口:** - 消费:[此任务从更早任务使用什么 —— 精确签名] - 产出:[更晚任务依赖什么 —— 精确函数名、参数和返回类型。一个任务的 implementer 只看到自己的任务;这个块是他们了解相邻任务使用的名称和类型的方式。] - [ ] **步骤 1:编写失败的测试** ```python def test_specific_behavior(): result = function(input) assert result == expected ``` - [ ] **步骤 2:运行测试验证它失败** 运行:`pytest tests/path/test.py::test_name -v` 预期:FAIL,提示 "function not defined" - [ ] **步骤 3:编写最小实现** ```python def function(input): return expected ``` - [ ] **步骤 4:运行测试验证它通过** 运行:`pytest tests/path/test.py::test_name -v` 预期:PASS - [ ] **步骤 5:提交** ```bash git add tests/path/test.py src/path/file.py git commit -m "feat: add specific feature" ``` ```` ## 不要占位符 (No Placeholders) 每一步必须包含工程师需要的实际内容。这些是**计划失败** —— 绝不要写它们: - "TBD"、"TODO"、"稍后实现"、"补充细节" - "添加适当的错误处理" / "添加验证" / "处理边缘情况" - "为上述编写测试"(没有实际测试代码) - "类似于任务 N"(重复代码 —— 工程师可能乱序阅读任务) - 描述做什么却不展示怎么做的步骤(代码步骤需要代码块) - 引用任何任务中都未定义的类型、函数或方法 ## 记住 (Remember) - 总是精确的文件路径 - 每一步的完整代码 —— 如果某步改动代码,展示代码 - 精确命令及预期输出 - DRY、YAGNI、TDD、频繁提交 ## 自审 (Self-Review) 写完完整计划后,以全新的眼光审视 spec,并对照它检查计划。这是你自己运行的检查清单 —— 不是 subagent 派发。 **1. Spec 覆盖:** 浏览 spec 中的每个小节/需求。你能指出实现它的任务吗?列出任何缺口。 **2. 占位符扫描:** 在你的计划中搜索危险信号 —— "不要占位符"小节中的任何模式。修复它们。 **3. 类型一致性:** 你在更晚任务中使用的类型、方法签名和属性名是否匹配更早任务中定义的?任务 3 中名为 `clearLayers()` 的函数在任务 7 中变成 `clearFullLayers()` 就是 bug。 如果发现问题,内联修复。无需重新审查 —— 修复后继续。如果发现没有任务的 spec 需求,添加该任务。 ## 执行交接 (Execution Handoff) 保存计划后,提供执行选择: **"计划完成并保存到 `docs/superpowers/plans/<filename>.md`。两种执行选项:** **1. Subagent 驱动(推荐)** - 我为每个任务派发全新 subagent,任务之间 review,快速迭代 **2. 内联执行** - 使用 executing-plans 在本会话执行任务,带检查点的批量执行 **选哪种?"** **如果选择 Subagent 驱动:** - **必需的子 skill:** 使用 superpowers:subagent-driven-development - 每个任务全新 subagent + 两阶段 review **如果选择内联执行:** - **必需的子 skill:** 使用 superpowers:executing-plans - 带检查点的批量执行以供 review
GitHub에서 보기