mcpField
W
writing-plans

writing-plans

github.com/jamditisAgent 工作流44391 次安装2 天前更新
代码仓库

关于 writing-plans

writing-plans 用于生成实施计划,为不熟悉代码库的开发者提供具体且可测试的步骤。它强调文件职责划分、完整示例、验证命令和频繁提交。

主要功能

  1. 01梳理文件及其职责
  2. 02将工作拆分为小任务
  3. 03提供完整代码和命令
  4. 04注明验证方式与预期结果
  5. 05检查覆盖范围和一致性
  6. 06将计划保存到指定路径

适用场景

  1. 01规划陌生代码库中的功能
  2. 02将大型规格拆分为独立计划
  3. 03编写含验证步骤的实施任务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jamditis/claude-skills-journalism --skill writing-plans

安装后在 Claude Code 中输入/writing-plans确认已加载。

附带文件agents/openai.yamlplan-document-reviewer-prompt.md

详细介绍

编写计划

概述

编写全面的实施计划,假设工程师对我们的代码库毫无了解,而且判断力可能不佳。记录他们需要了解的一切:每项任务要修改哪些文件、代码、需要查看的测试和文档,以及如何测试。将完整计划拆分成易于执行的小任务。遵循 DRY 和 YAGNI 原则。测试规模要适度。频繁提交。

假设他们是熟练的开发者,但对我们的工具集或问题领域几乎一无所知。假设他们不太了解良好的测试设计。

开始时宣布:“我正在使用 superjawn:writing-plans 技能来创建实施计划。”

**上下文:**应在专用工作树中执行(通过 superjawn: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 superjawn:subagent-driven-development (recommended) or superjawn:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.

**Goal:** [One sentence describing what this builds]

**Architecture:** [2-3 sentences about approach]

**Tech Stack:** [Key technologies/libraries]

---

任务结构

### Task N: [Component Name]

**Files:**
- Create: `exact/path/to/file.py`
- Modify: `exact/path/to/existing.py:123-145`
- Test (only when the task keeps a new test): `tests/exact/path/to/test.py`

**Check:** [The command that proves this task, and why it is the cheapest faithful evidence]

- [ ] **Step 1: Run the check that shows current behavior**

Use an existing test or a focused command when it proves the behavior:

Run: `python -m mypkg.cli convert sample.csv`
Expected: exit 1 with "unsupported column type: date"

When the task keeps a new test, write it first and take the expected value
from the spec or real data:

```python
def test_specific_behavior():
    result = function(input)
    assert result == expected  # expected value from the spec or real data
```

Run: `pytest tests/path/test.py::test_name -v`
Expected: FAIL with "function not defined"

- [ ] **Step 2: Write minimal implementation**

```python
def function(input):
    return expected
```

- [ ] **Step 3: Run the same check to verify the result**

Run: the same command as Step 1
Expected: the behavior the spec requires (for example, exit 0, or PASS)

- [ ] **Step 4: Commit**

```bash
git add src/path/file.py  # add tests/path/test.py only if the task kept a test
git commit -m "feat: add specific feature"
```

禁止占位内容

每个步骤都必须包含工程师实际需要的信息。以下内容都表示计划不合格,绝不可写入:

  • “待定”“TODO”“稍后实现”“补充细节”
  • “添加适当的错误处理”/“添加验证”/“处理边界情况”
  • “为上述内容编写测试”(但没有给出实际测试代码)
  • “与任务 N 类似”(应重复给出代码,因为工程师可能会跳着阅读任务)
  • 只描述要做什么,却不说明怎么做的步骤(涉及代码的步骤必须包含代码块)
  • 引用任何未在任务中定义的类型、函数或方法

请记住

  • 始终写出精确的文件路径
  • 每个步骤如有代码变更,都要给出完整代码
  • 给出精确命令及预期输出
  • 遵循 DRY 和 YAGNI 原则,测试规模要适度,并频繁提交

自我审查

完成计划后,以全新的视角审阅规范,并对照规范检查计划。这是你自己执行的检查清单,不是派遣子 Agent。

1. 规范覆盖情况: 浏览规范中的每个章节/要求。你能否指出实现每项要求的任务?列出所有遗漏。

2. 占位符扫描: 搜索计划中的风险信号,即上文“无占位符”一节中的任何模式。修复它们。

3. 类型一致性: 后续任务中使用的类型、方法签名和属性名称,是否与前面任务中定义的一致?任务 3 中名为 clearLayers() 的函数,在任务 7 中却变成了 clearFullLayers(),这就是一个错误。

如果发现问题,请直接在原处修复。无需重新审查,修复后继续。如果发现某项规范要求没有对应任务,就添加该任务。

执行交接

保存计划后,提供执行方式选项:

“计划已完成并保存至 docs/superpowers/plans/<filename>.md。有两种执行方式:

1. 子 Agent 驱动(推荐)——每项任务都派遣一个全新的子 Agent,并在任务之间进行审查,快速迭代

2. 行内执行——在本次会话中使用 superjawn:executing-plans 执行任务,并通过检查点分批执行

你选择哪种方式?”

如果选择子 Agent 驱动:

  • 必需子技能: 使用 superjawn:subagent-driven-development
  • 每项任务使用全新的子 Agent,并进行两阶段审查

如果选择行内执行:

  • 必需子技能: 使用 superjawn:executing-plans
  • 通过检查点分批执行,以便审查

评论

支持 Markdown