빠른 시작
의도에서 시작하세요. 나머지는 모두 선택입니다.
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
탐색한 뒤, 다시 쓰세요
의도는 고정되어 있지 않습니다. 실험한 뒤, Why / What / Not이 지금 믿는 바를 말하도록 다시 쓰세요. INTENT.md에 결과 로그를 덧붙이지 마세요. 파일은 항상 현재의 의도로 읽혀야 합니다.
각 결과는 하나의 편집이 됩니다. 인터뷰 결과, 진짜 고통이 분석이 아니라 인보이스 추적이라고 밝혀졌다고 해봅시다:
## 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
When: You start your first experiment.
exploring → clarified
When: Why/What/Not are all filled with conviction. No (?) marks remain.
any state → dropped
When: Evidence shows this isn't worth building,
or an existing solution covers it.
Action: Set status to dropped. Say why in the commit message.
This is valuable knowledge.
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를 최신 상태로 유지하세요. 나머지는 모두 선택입니다.