How to go from a raw idea to a well-structured implementation plan and task tracker. This guide captures the process, rules, and formatting conventions.
Before writing anything, ask 10–20 targeted questions to extract what would otherwise take hours of back-and-forth. Don't ask obvious or generic questions — only ones whose answers materially change the plan.
Product vision
- One sentence: what does the product do?
- What's the core insight — why is this approach better than what exists?
- Who is the user? (expertise level, context, device)
- What is the user's emotional journey? (what should they feel?)
Architecture & constraints 5. What platforms? (mobile, desktop, web, all) 6. Online, offline, or hybrid? Any hard constraints? 7. What's the core data model? (what are the "nouns" of the system?) 8. What's the primary interaction loop? (what does the user do repeatedly?)
Scope & philosophy 9. What is explicitly NOT in MVP? (name 3+ things you're tempted to include) 10. What's the relationship between the user and AI (if any)? 11. Are there external stakeholders who interact with the output?
UX & feel 12. Should it feel like a game, a tool, a conversation, or something else? 13. How does the user see progress? 14. What's the smallest unit of user decision?
Tech preferences 15. Any strong tech stack preferences or constraints? 16. What's the deployment model? 17. Any AI/ML components? What size/where?
- Does the product have a versioning/history model?
- Is collaboration involved? How?
- What export formats matter?
- Are there regulatory or compliance concerns?
- Is there a "done" state, or is the product a living process?
Stop asking when you have enough to write the philosophy section.
The plan is a strategy document. It describes what and why. Implementation detail belongs in the task tracker. The plan should read like a manifesto — someone can understand the entire product without seeing tasks.
# [Product Name] — Product & Implementation Plan
> One-paragraph abstract: what it is, what makes it special, platform list.
> Bold statement of direction.
> "Why this beats X" — the competitive insight in 3–4 sentences.
---
## Table of Contents
1. Core Philosophy
2. [Core interaction model — product-specific name]
3. [Domain model — product-specific name]
4. [State / progress model — product-specific name]
5. [UX flow — product-specific name]
6. Use Cases (MVP)
7. [Domain taxonomy / schema — product-specific name]
8. Architecture
9. Epics & Tasks
10. Decisions Log
11. Risk Register
12. Tech Stack
13. Success Metrics
---
## 1. Core Philosophy
### 1.1 [First principle]
Explanation of a non-obvious design choice. 3–6 principles total.
### 1.2 [Second principle]
...
---
## 2. [Core Interaction Model]
Diagram(s) of primary flows. ASCII art is fine.
---
## 3. [Domain Model]
The conceptual model — vocabulary, "nouns", relationships.
NOT implementation classes — the user's mental model.
---
## 4. [State / Progress Model]
How the system tracks where the user is, what's decided, what hasn't.
---
## 5. [UX Flow]
The emotional journey. What motivates the user.
---
## 6. Use Cases (MVP)
### UC1: [Name]
**Actor**: ...
**Flow**:
1. ...
2. ...
3. ...
(Cover: happy path, detailed input, feedback, direct manipulation,
comparison, external stakeholders, API access if any.)
---
## 7. [Domain Taxonomy]
Detailed data categories, items, types, examples. Tables work well here.
---
## 8. Architecture
System diagram (ASCII), component descriptions, key interfaces.
---
## 9. Epics & Tasks
→ All task detail in TASK_TRACKER.md
### [Epic Name]
- [ ] T-001 Task title
- [ ] T-002 Task title
### [Another Epic]
- [ ] T-003 Task title
### Post-MVP: [Theme]
- [ ] F-001 Feature title
---
## 10. Decisions Log
| ID | Decision | Options | Chosen | Rationale |
|----|----------|---------|--------|-----------|
| D-001 | ... | ... | TBD in T-NNN | ... |
---
## 11. Risk Register
| # | Risk | Impact | Likelihood | Mitigation |
|---|------|--------|------------|------------|
| R1 | ... | ... | ... | ... |
---
## 12. Tech Stack
| Component | Library | Module |
|-----------|---------|--------|
| ... | ... | ... |
---
## 13. Success Metrics
| Metric | Target |
|--------|--------|
| ... | (number or binary outcome) |
Include at least one metric about user behaviour.- Philosophy: 3–6 named principles, each a non-obvious design choice
- Use cases: short — actor + 3–7 numbered steps each
- Epics & Tasks: reference index only —
- [ ] T-NNN Title, grouped by epic. Post-MVP usesF-NNN. No descriptions here. - Decisions log: pre-populate TBDs, reference the task where each decision will be made
- Success metrics: every metric must be a number or binary outcome
- No week numbers in epic names
- Theoretical foundation (ML/AI projects): generate THEORY.md via
/theoryskill, add the key correspondences to CLAUDE.md under## Theoretical Foundation
The tracker is the single source of truth for all work. Every task (MVP and post-MVP) lives here with full detail.
# [Product Name] — Task Tracker
> All tasks. One file, one source of truth.
> Refer to IMPLEMENTATION_PLAN.md for architecture, philosophy, and use cases.
---
## Rules
Tasks follow S.M.A.R.T. criteria: Specific, Measurable, Achievable,
Relevant, Time-bound (to an epic). Task IDs are permanent — never renumber,
never reuse. New tasks get the next unused integer. Status ❌ cancelled
requires a comment.
Omit any relation line that has no entries. Every reference includes ID + title.
---
### T-000: Example Task
- **Status**: 💡 to-do
- **Epic**: [First Epic]
- **Shares context with**:
T-002 Some task title
- **Blocks**:
T-001 Another task title
This task shows the format. Append notes over time:
- 2026-03-01: Discovered X doesn't work with Y. Workaround: Z.
- 2026-03-05: Resolved. Switched to W per decision D-003.
Measurable exit criteria:
- ✅ Criterion described as a verifiable fact
- ✅ Another criterion with a number or binary outcome
————————————————————————————————————————————————————————————————————
## Epics
1. **[Epic Name]** — one-line description
2. **[Epic Name]** — one-line description
3. **Post-MVP: [Theme]** — one-line description
————————————————————————————————————————————————————————————————————
## [Epic Name]
————————————————————————————————————————————————————————————————————
### T-001: Task title
- **Status**: 💡 to-do
- **Epic**: [Epic Name]
- **Shares context with**:
T-003 Related task title
- **Blocks**:
T-002 Dependent task title
Description paragraph. Grows over time — append dated notes.
Measurable exit criteria:
- ✅ Specific verifiable fact or number
- ✅ Another criterion
————————————————————————————————————————————————————————————————————
### T-002: Another task
- **Status**: 💡 to-do
- **Epic**: [Epic Name]
- **Blocked by**:
T-001 Task title
Description.
Measurable exit criteria:
- ✅ ...
————————————————————————————————————————————————————————————————————
## Post-MVP: [Theme]
————————————————————————————————————————————————————————————————————
### F-001: Future feature title
- **Status**: 💡 to-do
- **Epic**: Post-MVP: [Theme]
Description (can be shorter for post-MVP).### T-NNN: Task Name
- **Status**: 💡 to-do | ⏳ in progress | ✅ done | ❌ cancelled
- **Epic**: Epic Name
- **Shares context with**:
T-NNN Title
- **Blocks**:
T-NNN Title
- **Blocked by**:
T-NNN Title
Description.
Measurable exit criteria:
- ✅ Verifiable fact
IDs: permanent, sequential (gaps OK, no duplicates, no suffixes).
Statuses: 💡 to-do · ⏳ in progress · ✅ done · ❌ cancelled
Relations (in this order, omit if empty):
- Shares context with — related concepts, read both when working on either
- Blocks — must be done before those
- Blocked by — those must be done before this
Each reference on its own indented line, always ID + title.
Exit criteria: every task needs ≥1 verifiable criterion.
Separators: ———————— full-width line between every task.
No week or time estimates. Epics provide sequencing, not scheduling.
Epics are thematic groups, not phases. Name as noun phrases: "Zone Layout Solver" not "Phase 2". No week numbers.
Post-MVP epics: named Post-MVP: [Theme], tasks prefixed F-NNN.
Same format, descriptions can be shorter.
- One deliverable per task
- Write exit criteria first — if you can't, the task isn't specific enough
- >5 exit criteria → consider splitting
- No description beyond title → might be a sub-bullet, not a task
- User testing: include protocol inline, one task (not subtasks)
- Naming/terminology: create a dedicated task — naming blocks onboarding
When a product includes an LLM component and the plan includes structured output testing, task exit criteria should specify:
Assertion boundary — which checks are structural vs semantic:
- Structural (hard): grammar-enforced guarantees — valid JSON, field presence, enum membership, numeric bounds. These fail CI.
- Semantic (soft): LLM comprehension quality — choice mapping, intent classification, numeric extraction from natural language, conflict detection. These log warnings for prompt-tuning review.
Rule of thumb: if a constrained-decoding grammar (GBNF, JSON-Schema, etc.) could guarantee the property, hard-assert it. If it depends on the LLM "understanding" something, soft-assert it.
Model capability expectations — document in the task or linked from it:
- Target model name, size, and quantization (e.g., Qwen2.5-3B Q4_K_M)
- Tolerance ranges for numeric extraction (e.g., ±2 on boundary values)
- Expected accuracy for enum/status inference (e.g., ~80–90% for indirect phrasing)
- Known weak areas (e.g., multi-step arithmetic, conflict detection)
Coupling matrix — each LLM mode requires a matched set of system prompt + grammar + response DTO (Data Transfer Object). The task should list which modes are covered and reference the source files.
Soft assertion mechanism — the task should specify how soft failures are reported (e.g., stderr warnings, a dedicated log file) and which future task reviews them for prompt refinement.
See TESTING.md §Shared Expensive Resources for the implementation pattern (thread-safe lazy init, assumeTrue skip for missing models).
- Every
T-NNNandF-NNNin the plan exists in the tracker - Every task in the tracker appears in the plan's epic listing
- Epic names match exactly between files
- T-000 is in tracker (example) but not in plan
- Abstract mentions the core insight
- Architecture diagram names every component mentioned in tasks
- Decisions log references task IDs for TBDs
- Every success metric is measurable
- Every task has: status, epic, ≥1 exit criterion
- No empty relation lines
- All references: ID + title, multi-line indented
- Separators between every task
- No duplicate IDs, no suffixes
- Post-MVP uses
F-NNN
After the plan and tracker are accepted, T-001 is always project initialization. This is the first thing executed — before any feature work.
T-001 includes:
- Agree on the root package name — use reverse-domain notation
(e.g.,
com.example.projectname). Don't assume — ask the user. - Add
x128/CodingStandardsas a git submodule - Create
CLAUDE.mdat the project root, referencing only the CodingStandards documents relevant to this project's stack. Example for a Kotlin/KMP project:Omit documents that don't apply (e.g.,# ProjectName One-sentence project description from the implementation plan. ## Standards Follow `CodingStandards/CLEAN_CODE.md` Follow `CodingStandards/KOTLIN.md` Follow `CodingStandards/ARCHITECTURE.md` Follow `CodingStandards/TESTING.md` Follow `CodingStandards/KOTLIN_MULTIPLATFORM.md` ## Skills Follow skills from `CodingStandards/skills/` ## Project - Package: `com.example.projectname` - Module: `composeApp` (desktop target)
SWIFT.mdfor a pure Kotlin project). Add project-specific context (package name, modules, constraints) under## Project. - Platform-specific setup (if applicable):
- KMP/Compose Multiplatform: follow
KOTLIN_MULTIPLATFORM.md — Gradle wrapper,
version catalog,
gradle.properties,composeAppmodule, verify with./gradlew :composeApp:run - Other platforms: follow the corresponding guide when one exists (e.g.,
TYPESCRIPT.md,SWIFT_PROJECT.md)
- KMP/Compose Multiplatform: follow
KOTLIN_MULTIPLATFORM.md — Gradle wrapper,
version catalog,
- New tasks: next unused ID. Add to both tracker and plan's epic listing.
- Cancelled tasks:
❌ cancelledwith dated comment. Never delete or renumber. - New decisions: add to log with TBD or chosen value.
- Notes/issues: append dated bullets to the relevant task.
- New epics: add to both files.
- Scope changes: update philosophy. Rare — most changes are task-level.