快速开始
从意图开始。其余一切都是选择。
1
选择状态
选择与现实匹配的状态。
选择一个
seed "我有一个想法,但没有具体的东西"
exploring "我有一个方向,但需要验证"
clarified "我完全清楚要构建什么"
提示:从 seed 或 exploring 开始。过早标为 clarified 只会让你构建错误的东西。
2
创建 INTENT.md
将 INTENT.md 放在项目根目录。填写对应的模板。
用于 seed 或 exploring:
# INTENT — [Project Name]
> status: seed
## Why
Problem: [Who is suffering, and how?]
Hypothesis: [What do you think will fix it? It's OK to be wrong.]
Validation: [How will you know if the hypothesis is right?]
## What
[Leave empty if seed. Write what you want to verify if exploring.]
- [ ] [Feature 1 — one line]
- [ ] [Feature 2 — one line]
## Not
[Write whatever comes to mind. Add (?) if unsure.]
- [e.g., No mobile app for now]
- [e.g., Never send user data to third parties]
用于 clarified:
# INTENT — [Project Name]
> status: clarified
## Why
Problem: [Who is suffering, and how?]
Goal: [What does success look like?]
Metric: [How do you measure it? Use numbers.]
Customer quote: [What would a happy user tell a friend? One sentence.]
## What
- [ ] [Feature 1 — one line]
- [ ] [Feature 2 — one line]
- [ ] [Feature 3 — one line]
User flow:
1. User does [A]
2. System does [B]
3. Result: [C]
Edge cases:
- [Case 1]
- [Case 2]
## Not
- Forbidden: [Hard security/ethical lines]
- Tech constraints: [e.g., no `any` types, TypeScript only]
- Out of scope: [What we're explicitly not building]
- Quality bar: [e.g., response time under 200ms]
3
探索,然后改写
Intent 不是静态的。实验,然后改写 Why / What / Not,让它们陈述你现在所相信的内容。不要在 INTENT.md 中追加结果日志;这个文件应当始终读起来就是当前的 Intent。
每个结果都变成一次编辑。假设一次访谈表明,真正的痛点是发票追踪,而不是数据分析:
## Why
-Problem: SMB owners can't see where their revenue comes from.
+Problem: SMB owners lose track of unpaid invoices.
## What
-- [ ] Revenue analytics dashboard
+- [ ] Overdue invoice list with one-click reminder
## Not
+- Out of scope: analytics dashboards (interviews: nobody opened them)
提交这次修改,并把你学到的东西写进 commit 消息。文件保存现在;git log 保存路径。
git commit -m "Why: pivot from analytics to invoice tracking
Interviewed 5 SMBs. All five named unpaid invoices as the top pain;
none asked for analytics."
提示:如果一条 learning 没有改变 Why / What / Not 中的任何内容,它可能还不重要。
4
变更状态
当证据支持时推进。当证据不支持时终止。
状态转换
seed → exploring
当:你开始第一个实验时。
exploring → clarified
当:Why/What/Not 都已确信地填写完毕。没有 (?) 标记。
any state → dropped
当:证据表明这不值得构建,
或者现有方案已经覆盖了它。
操作:将状态设为 dropped。在 commit 消息中说明原因。
这是宝贵的知识。
5
交给 AI
一旦意图达到 clarified,INTENT.md 就是 AI 所需的全部上下文。
如果你使用 Claude Code,将 Not 中的约束移入 CLAUDE.md:
# CLAUDE.md
## Intent Constraints
- TypeScript only, no `any` types
- Never modify user data without explicit confirmation
- Response time under 200ms for all API endpoints
让 AI 派生任务、编写代码、审查和部署。当现实发生变化时更新意图。
就是这样。保持
INTENT.md 最新。其余一切都是选择。