クイックスタート
Intentから始めよう。それ以外はすべて選択である。
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)
変更をコミットし、学んだことをメッセージに書く。ファイルは現在を保持し、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."
ヒント: 学びがWhy / What / Notの何も変えないなら、おそらくまだ重要ではない。
4
状態を変更する
証拠が裏付けたら進む。裏付けないなら終了する。
状態遷移
seed → exploring
タイミング:最初の実験を開始したとき。
exploring → clarified
タイミング:Why/What/Notがすべて確信を持って埋まったとき。(?)マークが残っていないこと。
どの状態からでも → dropped
タイミング:証拠により構築する価値がないと判明したとき、
または既存のソリューションがカバーしているとき。
アクション:statusをdroppedにする。理由をコミットメッセージに書く。
これは貴重な知識である。
5
AIに引き渡す
Intentが 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を更新する。
以上である。
INTENT.md を最新に保つこと。それ以外はすべて選択である。