writing-plans
把工作拆分成 2-5 分钟小任务,含精确文件路径、完整代码、验证步骤。
评分明细
适用场景
obra-writing-plans 快速入门
把模糊需求变成可执行清单,Junior 工程师也能直接照着做。
这是什么?解决什么问题?
你有没有过这种体验:产品经理说”我们要做用户积分系统”,然后开发开始摸不着头脑——从哪开始?先做哪个?数据库怎么设计?接口怎么定?最后做出来的功能和预期差距很大,反复返工。
writing-plans 是 Obra/superpowers 出品的 Skill,它把 brainstorming 阶段产出的设计文档,进一步拆分成具体可执行的任务。每个任务都有:
- 精确文件路径:不只是”修改用户模块”,而是”修改 src/services/user.ts 第 45 行”
- 完整代码片段:不是描述”实现一个函数”,而是给出函数签名和实现骨架
- 验证步骤:不是”测试一下”,而是”运行 pytest tests/test_user.py::test_login,期望通过”
- 依赖排序:每个任务标注前置任务,可并行任务明确标出
最关键的:每个任务控制在 2-5 分钟可以完成。粒度太粗难以 review,粒度太细又是 micromanagement。2-5 分钟是经过验证的”刚好”区间。
这个 Skill 适合跨团队协作、新人 onboarding、复杂任务分解。
准备工作
- 已经完成 brainstorming(有设计文档)
- 支持 Agent Skill 的 AI 客户端
- 团队的代码库结构熟悉度
- 一个明确的功能目标
3 步快速上手
第 1 步:克隆仓库
git clone https://github.com/obra/superpowers.git
cd superpowers
ls skills/writing-plans/
你会看到 SKILL.md、plan 模板、示例 plan。
第 2 步:加载 Skill
claude --skill obra-writing-plans
第 3 步:喂入设计文档,获得实施清单
把 brainstorming 阶段产出的设计文档喂给 AI:
“这是我们 brainstorm 后的用户积分系统设计文档:[设计文档内容]” “请按 writing-plans 拆分成可执行任务清单。”
AI 会输出结构化的 plan.md:
# 用户积分系统实施计划
## 阶段 1:数据库层
- [ ] 任务 1.1: 创建 points 表迁移 (5 min)
- 文件: db/migrations/20260617_create_points.sql
- 代码: CREATE TABLE points (id, user_id, balance, created_at...)
- 验证: psql -c "SELECT * FROM points LIMIT 1"
- 前置:无
- 依赖:无
- [ ] 任务 1.2: 在 db/schema.sql 加入索引 (3 min)
- 文件: db/schema.sql
- 代码: CREATE INDEX idx_points_user_id ON points(user_id)
- 验证: psql -c "\d points" 看到索引
- 前置:1.1
## 阶段 2:数据访问层(可与阶段 3 并行)
- [ ] 任务 2.1: 创建 PointsRepository 类 (8 min)
- 文件: src/repositories/points_repository.py
- 完整代码: [...]
- 验证: pytest tests/repositories/test_points_repository.py
- 前置:1.1
## 阶段 3:API 层
- [ ] 任务 3.1: GET /api/v1/points/balance (5 min)
- 文件: src/api/points.py
- 代码: [...]
- 验证: curl http://localhost:8000/api/v1/points/balance -H "Authorization: Bearer ..."
- 前置:2.1
[... 继续]
每条任务都有精确代码 + 验证命令,Junior 工程师照着做即可。
常见踩坑
- 任务粒度不均:有的任务 30 分钟,有的 1 分钟。Skill 强制 2-5 分钟区间,不能偏离太远。
- 没写验证步骤:每个任务都必须有”怎么算完成”,否则无法验证。Skill 强制要求。
- 代码片段不全:只写函数签名不写实现,等于没写。Skill 要求关键代码必须完整。
- 依赖关系混乱:循环依赖、前置任务缺失,会导致执行不下去。Skill 会用 DAG 结构组织。
- 跨人协调未标注:哪些任务可以并行、哪些必须串行,要明确标出,否则资源浪费。
- 没考虑 rollback:每个任务都要能独立回退(rollback),不然做错了没法撤回。
初级用法
- 新功能开发:brainstorm 完后,用 Skill 生成实施清单,照着做即可。
- 复杂 Bug 修复:把修复方案拆成多个步骤,逐步验证。
- 跨团队协作:把 plan 发给团队成员,各自认领任务,互不干扰。
高级玩法
- 自动化执行:用 Skill 输出的 plan + executing-plans Skill,让 AI 自动批量执行。
- 进度可视化:把 plan.md 渲染成甘特图,直观看到任务依赖和时间线。
- 实时状态更新:用 GitHub Projects 集成 plan,任务完成自动同步状态。
小技巧
- 计划完成后,先做一次”试跑”:挑 3 个任务让团队成员独立做,验证 plan 没有歧义。
- 任务完成后,在原 plan 里打勾
[x],保留作为变更日志。 - 重大变更时,plan 要重新生成,不要在旧 plan 上修补。
- 任务的代码片段可以引用函数签名,不必每次粘贴全部实现。
- Skill 默认输出 Markdown 格式,可以转成 Jira/Linear 的任务卡,直接同步到项目管理工具。
- 配合
executing-plansSkill,plan 文档直接驱动 AI 自动化执行。
常见问题 FAQ
Q1: 这个 Skill 跟 obra-writing-plans 有什么关系?必须装吗?
A: Skill 是给 AI Agent 用的”技能包”,能告诉 Agent 怎么按特定规范工作。不是必须装——如果你的项目规模小、要求不高,不装也能用。但装上能让 Agent 输出的质量更高、更符合最佳实践,推荐装。
Q2: 这个 Skill 适合哪些 AI Agent?Cursor?Claude Code?其他?
A: obra-writing-plans 来自 Obra,主要面向支持 Skill 机制的 Agent。常见兼容 Agent 包括 Claude Code、Cursor、OpenCode、Windsurf 等。具体兼容性请查 Skill 官方文档。
Q3: 装了这个 Skill 后,会拖慢 Agent 响应吗?
A: 会的——Skill 通常会增加 prompt 长度,导致响应变慢、token 消耗增加。但质量提升明显。建议:1) 只装项目必需的 Skill;2) 用 Skill 启动/加载/卸载机制按需加载;3) 定期清理不用的 Skill。
Q4: 怎么验证 Skill 装对了?
A: 在 Agent 中输入”列出已加载的 Skill”或类似命令。如果 Skill 出现在列表里,说明装对了。然后用 Skill 跑一个相关任务,看输出是否符合 Skill 规范。
Q5: 这个 Skill 有许可证吗?能商用吗?
A: 取决于 obra-writing-plans 的许可证。常见许可证包括 MIT(完全自由)、Apache-2.0(自由但有专利条款)、源可用(可看不能用)、GPL(强开源)。商用前请查仓库 LICENSE 文件。
进阶学习建议
如果想进一步用好 obra-writing-plans,建议按以下路径学习:
第 1 周:熟练使用
- 完成 3 步快速上手,跑通第一个任务
- 试 2-3 个不同场景的真实任务
- 记录”哪些 prompt 有效、哪些没用”——形成自己的 prompt 笔记
第 2 周:理解机制
- 阅读 Skill 的官方文档(README、SKILL.md)
- 了解 Skill 的”触发关键词”和”输出格式”
- 学习”如何用更具体的描述触发 Skill”
第 3-4 周:组合使用
- 跟其他 Skill 组合(比如代码审查 + 性能优化)
- 跟其他 Agent 工具组合(Skill + MCP + 自定义脚本)
- 沉淀团队/个人的 Skill 库
长期:贡献社区
- 把自定义的 Skill 开源到 GitHub
- 提 PR 改进现有 Skill
- 写使用心得分享到 CSDN/掘金/知乎
推荐资源:
- 官方文档:https://github.com/obra/superpowers
- 官方仓库 README 里的 Examples
- 社区最佳实践:Anthropic 官方博客 https://www.anthropic.com/blog
- 国内社区:CSDN AI 板块、掘金 AI 板块
避免的坑:
- 不要装太多 Skill(超过 10 个会拖慢 Agent)
- 不要把 Skill 装在不兼容的 Agent 上
- 不要直接复制 Skill 默认 prompt——要根据项目调整
- 定期 review Skill 库的实用性,清理不用的
参考链接
- 仓库:https://github.com/obra/superpowers
- writing-plans 目录:https://github.com/obra/superpowers/tree/main/skills/writing-plans
- Agile 任务拆分最佳实践:https://www.atlassian.com/agile/project-management/user-stories
- INVEST 原则(好的用户故事):https://en.wikipedia.org/wiki/INVEST_(mnemonic)
- 经典书《The Art of Agile Development》:https://www.amazon.com/Art-Agile-Development-James-Shore/dp/0596527675
本文基于官方文档和公开资料整理,AI辅助生成,MagicNetWorld 尚未完成独立实测。如有错误或过时信息,请通过 contact@magicnetworld.com 反馈。
writing-plans Skill 多维度简评
来源:obra/superpowers 类别:工程方法 / 任务拆分
一、核心定位与价值
这是 superpowers 工作流的第 3 步——把 brainstorming 输出的设计文档,拆分成 2-5 分钟可执行的小任务。
核心原则:
为”零上下文、品味可疑、不懂测试的热情初级工程师”编写计划。
二、为什么是 2-5 分钟?
| 粒度 | 问题 | 解决 |
|---|---|---|
| 太粗(小时级) | 难审查、难回滚、上下文污染 | 拆细 |
| 太细(30 秒) | 任务碎、commit 噪音 | 合粗 |
| 2-5 分钟 | 平衡 | 最优 |
好处:
- ✅ 小步提交:每步都能独立 commit
- ✅ 易 review:每个 diff 意图清晰
- ✅ 易回滚:出问题能定位到具体步骤
- ✅ 易并行:适合子代理分发
三、计划结构标准
每个计划包含:
# 实现计划:用户登录功能
## 总览
[简短描述这次实现的目标和范围]
## 文件结构
src/ ├── app/api/auth/ ├── lib/auth/ ├── lib/jwt/ └── components/
## 任务清单
### Task 1: 定义 User 模型
- 创建 `src/lib/auth/user.ts`
- 定义 `User` 接口
- 定义 `createUser`、`findUserByEmail` 函数
**完整代码**:
```typescript
export interface User {
id: string
email: string
passwordHash: string
name: string
}
export async function createUser(input: User): Promise<User> {
// 完整实现,不是 TODO
}
export async function findUserByEmail(email: string): Promise<User | null> {
// 完整实现
}
验证步骤:
npx tsc --noEmit # 类型检查通过
npm test src/lib/auth/user.test.ts # 测试通过
git add . && git commit -m "feat: define User model"
**关键点**:
- 每步包含**完整代码**(不是 TODO)
- 每步包含**精确文件路径**
- 每步包含**验证步骤**
---
## 四、实战示例:用户登录功能
### 输入:设计文档
```markdown
# 用户登录功能设计
## 需求
- Web 端 SPA 用户登录
- JWT 认证
- bcrypt 密码加密
- 5 次失败锁定 30 分钟
输出:实现计划
# 实现计划:用户登录功能
## 文件结构
src/ ├── app/api/auth/ │ ├── login/route.ts │ └── refresh/route.ts ├── lib/ │ ├── auth/ │ │ ├── user.ts │ │ ├── password.ts │ │ └── loginAttempts.ts │ └── jwt.ts └── components/ └── LoginForm.tsx
## Task 1: 定义 User 类型和数据库操作(5 分钟)
**目标**:建立用户数据访问层。
**文件**:
- `src/lib/auth/user.ts`
**完整代码**:
```typescript
import { Pool } from 'pg'
const pool = new Pool({ connectionString: process.env.DATABASE_URL })
export interface User {
id: string
email: string
passwordHash: string
name: string
failedAttempts: number
lockedUntil: Date | null
}
export async function findUserByEmail(email: string): Promise<User | null> {
const result = await pool.query(
'SELECT * FROM users WHERE email = $1',
[email]
)
return result.rows[0] || null
}
export async function createUser(input: Omit<User, 'id' | 'failedAttempts' | 'lockedUntil'>): Promise<User> {
const result = await pool.query(
`INSERT INTO users (email, password_hash, name) VALUES ($1, $2, $3) RETURNING *`,
[input.email, input.passwordHash, input.name]
)
return result.rows[0]
}
验证:
npx tsc --noEmit
Commit:
git add . && git commit -m "feat: define User model"
---
## 五、Spec 自查清单
写完后 AI 会自审:
```markdown
## 自检清单
- [ ] 没有占位符("TODO"、"稍后实现")
- [ ] 没有内部矛盾(前后不一致)
- [ ] 完整覆盖 spec
- [ ] 类型一致性:后续任务与前面定义的类型/签名匹配
- [ ] 每步都有验证命令
- [ ] 每步都是 2-5 分钟可执行
- [ ] 文件路径精确
- [ ] 代码完整可运行
六、执行交接
计划完成后,提供两种执行选择:
- Subagent-Driven(推荐) — 每个任务一个新鲜子代理,任务间审查,快速迭代
- Inline Execution — 在当前会话中执行,批量执行带检查点
七、安装
# superpowers 套装
/plugin install superpowers@claude-plugins-official
# 单独使用
npx skills add obra/superpowers --skill writing-plans
八、6 条实战建议
- 2-5 分钟粒度:不粗不细
- 完整代码:不是 TODO 或占位符
- 精确路径:文件名和路径全
- 验证命令:每步都有如何验证
- 自检清单:写完后跑一遍
- 从下往上:先小任务,再大任务
九、常见 Q&A
Q: 计划写完才能开始实现吗? A: 是的。这是 superpowers 强制的流程。
Q: 计划需要多详细? A: 团队中初级工程师能据此实现即可。
Q: 计划可以中途修改吗? A: 可以。但需要明确标记变更。
Q: 计划文档要 commit 吗?
A: 建议。docs/superpowers/plans/ 目录跟踪。
Q: 团队怎么统一计划格式? A: 用 superpowers 默认格式即可。
十、总结
writing-plans Skill 是 AI 编程从”设计”到”实现”的关键桥梁。
核心价值:
- 2-5 分钟任务拆分
- 完整代码、精确路径
- 易审查、易回滚、易并行
适用人群:
- ✅ 严肃工程项目
- ✅ 团队协作
- ✅ 复杂功能
本文基于官方文档和公开资料整理,未经过 MagicNetWorld 实测。
参考资料
- obra/superpowers 官方仓库 — GitHub 官方仓库
- writing-plans SKILL.md 源码 — 官方 Skill 定义
- skilld.dev: writing-plans Skill — Skill 详情
- writing-plans Implementation Planning — 实现规划详解
- CSDN: Superpowers 详解 — 中文技术文章
快速安装
git clone https://github.com/obra/superpowers.git
cd superpowers
ls skills/writing-plans/