实现计划编写
编写实现计划:小粒度任务、路径规划、代码方案
Writing Implementation Plans
概述
编写全面的实现计划,假设实施者对代码库没有任何上下文背景。记录他们需要的一切:需要修改的文件、完整代码、测试命令、需要查看的文档、如何验证。给他们小粒度的任务。DRY、YAGNI、TDD、频繁提交。假设实施者是一个熟练的开发者,但对工具集或问题领域几乎一无所知。假设他们不太了解好的测试设计。
核心原则:好的计划让实现变得显而易见。如果有人需要猜测,计划就不完整。
使用场景
始终使用:
不要跳过:
小粒度任务粒度
每个任务 = 2-5 分钟的专注工作。每个步骤都是一个操作:
"编写失败的测试" — 步骤
"运行它确保它失败" — 步骤
"编写最少的代码让测试通过" — 步骤
"运行测试确保它们通过" — 步骤
"提交" — 步骤
太大:
### Task 1: 构建认证系统
[跨5个文件的50行代码]
合适大小:
### Task 1: 创建带 email 字段的 User 模型 [10行,1个文件]
Task 2: 给 User 添加密码哈希字段 [8行,1个文件]
Task 3: 创建密码哈希工具 [15行,1个文件]
计划文档结构
头部(必需)
每个计划必须以以下内容开头:
# [功能名称] 实现计划
> For Hermes: 使用 subagent-driven-development skill 逐任务实施此计划。
目标: [一句话描述这个构建什么]
架构: [2-3句话描述方法]
技术栈: [关键技术和库]
---
任务结构
每个任务遵循此格式:
### Task N: [描述性名称] 目标: 这个任务完成什么(一句话) 验证: 如何知道它完成(命令或检查) 文件: - [文件路径] — [要做什么,5-15行] 如果遇到阻碍: 调试命令:[命令]常见问题:[链接到相关任务或文档]
文件级别详细程度
小文件(≤100行):直接包含完整代码
大文件(>100行):包含你需要修改的特定部分
文件:
src/auth/user.js — 添加 register() 方法
// 在这个位置添加(大约第15行)
async function register(email, password) {
// TODO: 实现注册逻辑
}
与 subagent-driven-development 集成
计划完成后,使用 subagent-driven-development 逐任务实施:
delegate_task(
goal="按照计划实施 Task 1: 创建 User 模型",
context=read_file("plans/[feature-name].md"),
toolsets=["file", "terminal", "search"]
)
计划中的每个任务应该足够小,子代理可以在 2-5 分钟内完成。
好的计划示例
# 用户注册实现计划 > For Hermes: 使用 subagent-driven-development skill 逐任务实施此计划。 目标: 用户可以通过邮箱密码注册账户 架构: JWT 认证,用户密码 bcrypt 哈希存储 技术栈: Node.js, Express, SQLite, bcrypt, jsonwebtoken ---Task 1: 创建 User 模型
目标: 建立用户数据模型和数据库表 验证:sqlite3 db/test.db ".schema users"显示 users 表存在 文件:
models/user.js— 创建 User 模型类 [20行]db/init.sql— 添加 users 表创建语句 [10行]
cat db/test.db | sqlite3 ".tables"
常见问题:参见 Task 2 的数据库初始化部分
Task 2: 添加密码哈希功能
目标: 注册时安全存储密码 验证:node -e "require('./utils/hash').hash('test').then(h => console.log(h.length))" 显示60字符哈希
文件:
utils/hash.js— bcrypt 哈希工具 [15行]
npm list bcrypt
常见问题:确保 bcrypt 版本兼容 Node.js 版本
Task 3: 创建注册 API 端点
目标: POST /api/register 接受邮箱密码并创建用户 验证:curl -X POST http://localhost:3000/api/register -d '{"email":"test@test.com","password":"abc123"}' 返回用户对象(无密码字段)
文件:
routes/auth.js— 添加注册路由 [25行]app.js— 注册 auth 路由 [1行]
curl http://localhost:3000/api/register -v
常见问题:检查 app.js 中间件顺序
Task 4: 添加注册验证
目标: 验证邮箱格式和密码强度 验证: 无效输入返回 400 和错误信息 文件:utils/validate.js— 验证函数 [20行]- 更新
routes/auth.js在哈希前添加验证 [5行]
curl -X POST http://localhost:3000/api/register -d '{"email":"bad","password":"x"}'
常见问题:验证函数在 models 层还是 routes 层更合适?
Task 5: 编写集成测试
目标: 验证完整注册流程 验证:pytest tests/test_auth.py -v 全部通过
文件:
tests/test_auth.py— 注册测试 [30行]
pytest tests/test_auth.py::test_register_success -v
常见问题:测试数据库隔离 — 每个测试使用独立数据库
---
常见陷阱
任务太大
如果任务描述超过 3 行,它可能太大。拆分成多个任务。
缺少验证步骤
没有验证步骤的计划是无效的。实施者需要知道何时完成。
假设上下文
"更新控制器" — 更新什么?更新哪里?不明确。
跳过"明显"任务
"只需添加字段" — 这包括前端、测试、文档吗?每个相关文件都要列出。
忽略错误处理
计划应包含常见错误场景和调试命令。
计划模板
# [功能名称] 实现计划 > For Hermes: 使用 subagent-driven-development skill 逐任务实施此计划。 目标: [一句话] 架构: [方法] 技术栈: [技术] ---Task 1: [任务名称]
目标: [完成什么] 验证: [验证命令] 文件: - [文件] — [做什么,N行] 如果遇到阻碍: 调试命令:[命令]常见问题:[参考] [继续 Task 2...]
计划审查清单
在标记计划完成前检查:
计划不完整? 返回并完善,直到不需要猜测为止。
安装指南
复制下方命令,在终端运行即可安装:
# 安装到当前项目
npx skills add writing-plans
# 全局安装 — 所有项目可用
npx skills add writing-plans -g
使用指南
安装完成后,在对话框中直接使用此技能。