四个 Claude Code 技能,教你的 AI 代理 Shape Up 方法论。固定时间,可变范围,零含糊。
框架化问题。塑形解决方案。构建代码。交付知识。
待办列表是想法的坟墓。Shape Up 用一个简单的押注取代了无限的待办列表:选择一个时间预算,将工作塑形以适应,构建它,交付它。这个项目给 Claude Code 提供了词汇和护栏,让它与你一起运行这个过程——交互式地,一次一个功能。
| 技能 | 功能 | 关卡 |
|---|---|---|
/shapeup:frame |
将模糊的想法转化为带时间预算的锁定问题陈述 | 框架通过 |
/shapeup:shape |
深度代码库分析 → 需求、功能点表、适配检查矩阵、方案包 | 塑形通过 |
/shapeup:build |
TDD、山丘图、范围锤炼、多会话工作的交接 | 准备交付 |
/shapeup:ship |
提取 ADR、更新架构文档、归档功能文件夹 | 完成 |
每个技能都是自包含的,有自己的参考文档——没有外部依赖,没有魔法。
在 Claude Code 中运行:
/plugin marketplace add https://github.com/douyixuan/claude-shapeup
/plugin install shapeup
输入 /shapeup:frame 并跟随对话。
.shapeup/
├── 001-csv-import-framing/ # 活跃:正在框架化
│ └── frame.md
├── 002-auth-refresh-shaped/ # 就绪:等待构建押注
│ ├── frame.md
│ └── package.md
├── 003-dashboard-v2-building/ # 进行中
│ ├── frame.md
│ ├── package.md
│ ├── hillchart.md
│ ├── scopes/
│ └── handover-01.md
├── 004-search-shipped/ # 完成:决策已归档
└── index.md # 自动生成的仪表板
多个功能可以并行运行。每个都是一个带状态后缀的编号文件夹。
一个 PostToolUse 钩子,监视 .shapeup/**/*.md 的编辑。当代理修改 frame.md 时,它会提示:"方案包还匹配吗?"当 package.md 更改时:"范围还对齐吗?"仅供参考——它提醒,从不阻止。
.claude-plugin/
├── plugin.json
└── marketplace.json
hooks/
└── ripple-check.sh
skills/
├── frame/
│ ├── SKILL.md
│ ├── scripts/init-feature.sh
│ └── references/ # 每个技能 9 个方法论文档
├── shape/
│ ├── SKILL.md
│ ├── scripts/validate-package.sh
│ └── references/
├── build/
│ ├── SKILL.md
│ ├── scripts/update-hillchart.sh
│ └── references/
└── ship/
├── SKILL.md
├── scripts/regenerate-index.sh
└── references/
这个项目的存在要归功于 Ryan Singer 的工作。
Shape Up 书 是基础——由 Ryan 撰写并由 37signals 出版。可以在线免费阅读,在使用这些技能之前你应该阅读它。我们提炼了它;我们没有取代它。
Ryan 的两篇文章进一步推进了方法论,并直接影响了这些技能。框架化 在塑形之前引入了一个正式步骤——在设计解决方案之前锁定问题——这成为了我们的 /shapeup:frame 技能和框架通过关卡。它还将"Pitch"重命名为"Package",我们也跟随了这一做法。采用 Shape Up 时的陷阱 将塑形不足的工作识别为 #1 失败模式,这就是为什么 /shapeup:shape 痴迷于实际代码库分析并强制执行零 TBD。
Ryan 自己的 Claude Code shaping-skills 仓库是直接的灵感来源。我们吸收了他的几个想法:正式的需求符号(R0、R1...)、适配检查矩阵、带连接的功能点表、标记的未知因素,以及用于解决它们的时间盒探针。如果你想要 AI 辅助塑形的不同视角,可以查看他的仓库。
MIT
Fork 它,破坏它,让它成为你的。每个技能的 references/ 目录是自包含的——换入你自己的方法论文档,添加特定领域的参考资料,或为我们跳过的阶段构建新技能(有人想要押注桌的 /shapeup:bet 技能吗?)。