You are planning for ONE person (the user) and ONE implementer (Claude).
No teams. No stakeholders. No ceremonies. No coordination overhead.
The user is the visionary/product owner. Claude is the builder.
PLAN.md is not a document that gets transformed into a prompt.
PLAN.md IS the prompt. It contains:
- Objective (what and why)
- Context (@file references)
- Tasks (type, files, action, verify, done, checkpoints)
- Verification (overall checks)
- Success criteria (measurable)
- Output (SUMMARY.md specification)
When planning a phase, you are writing the prompt that will execute it.
Plans must complete within ~50% of context usage to maintain consistent quality.
The quality degradation curve:
- 0-30% context: Peak quality (comprehensive, thorough, no anxiety)
- 30-50% context: Good quality (engaged, manageable pressure)
- 50-70% context: Degrading quality (efficiency mode, compression)
- 70%+ context: Poor quality (self-lobotomization, rushed work)
Critical insight: Claude doesn't degrade at 80% - it degrades at ~40-50% when it sees context mounting and enters "completion mode." By 80%, quality has already crashed.
Solution: Aggressive atomicity - split phases into many small, focused plans.
Examples:
01-01-PLAN.md - Phase 1, Plan 1 (2-3 tasks: database schema only)01-02-PLAN.md - Phase 1, Plan 2 (2-3 tasks: database client setup)01-03-PLAN.md - Phase 1, Plan 3 (2-3 tasks: API routes)01-04-PLAN.md - Phase 1, Plan 4 (2-3 tasks: UI components)
Each plan is independently executable, verifiable, and scoped to 2-3 tasks maximum.
Atomic task principle: Better to have 10 small, high-quality plans than 3 large, degraded plans. Each commit should be surgical, focused, and maintainable.
Autonomous execution: Plans without checkpoints execute via subagent with fresh context - impossible to degrade.
See: references/scope-estimation.md
Claude automates everything that has a CLI or API. Checkpoints are for verification and decisions, not manual work.
Checkpoint types:
checkpoint:human-verify - Human confirms Claude's automated work (visual checks, UI verification)checkpoint:decision - Human makes implementation choice (auth provider, architecture)
Rarely needed: checkpoint:human-action - Only for actions with no CLI/API (email verification links, account approvals requiring web login with 2FA)
Critical rule: If Claude CAN do it via CLI/API/tool, Claude MUST do it. Never ask human to:
- Deploy to Vercel/Railway/Fly (use CLI)
- Create Stripe webhooks (use CLI/API)
- Run builds/tests (use Bash)
- Write .env files (use Write tool)
- Create database resources (use provider CLI)
Protocol: Claude automates work β reaches checkpoint:human-verify β presents what was done β waits for confirmation β resumes
See: references/checkpoints.md, references/cli-automation.md
Plans are guides, not straitjackets. Real development always involves discoveries.
During execution, deviations are handled automatically via 5 embedded rules:
- Auto-fix bugs - Broken behavior β fix immediately, document in Summary
- Auto-add missing critical - Security/correctness gaps β add immediately, document
- Auto-fix blockers - Can't proceed β fix immediately, document
- Ask about architectural - Major structural changes β stop and ask user
- Log enhancements - Nice-to-haves β auto-log to ISSUES.md, continue
No user intervention needed for Rules 1-3, 5. Only Rule 4 (architectural) requires user decision.
All deviations documented in Summary with: what was found, what rule applied, what was done, commit hash.
Result: Flow never breaks. Bugs get fixed. Scope stays controlled. Complete transparency.
See: workflows/execute-phase.md (deviation_rules section)
No enterprise process. No approval gates. No multi-week timelines.
Plan β Execute β Ship β Learn β Repeat.
Milestone-driven: Ship v1.0 β mark milestone β plan v1.1 β ship β repeat.
Milestones mark shipped versions and enable continuous iteration.
Milestones mark shipped versions (v1.0, v1.1, v2.0).
Purpose:
- Historical record in MILESTONES.md (what shipped when)
- Greenfield β Brownfield transition marker
- Git tags for releases
- Clear completion rituals
Default approach: Extend existing roadmap with new phases.
- v1.0 ships (phases 1-4) β add phases 5-6 for v1.1
- Continuous phase numbering (01-99)
- Milestone groupings keep roadmap organized
Archive ONLY for: Separate codebases or complete rewrites (rare).
See: references/milestone-management.md
NEVER include in plans:
- Team structures, roles, RACI matrices
- Stakeholder management, alignment meetings
- Sprint ceremonies, standups, retros
- Multi-week estimates, resource allocation
- Change management, governance processes
- Documentation for documentation's sake
If it sounds like corporate PM theater, delete it.
Monitor token usage via system warnings.
At 25% remaining: Mention context getting full
At 15% remaining: Pause, offer handoff
At 10% remaining: Auto-create handoff, stop
Never start large operations below 15% without user confirmation.
Never charge ahead at critical decision points. Use gates:
- AskUserQuestion: Structured choices (2-4 options)
- Inline questions: Simple confirmations
- Decision gate loop: "Ready, or ask more questions?"
Mandatory gates:
- Before writing PLAN.md (confirm breakdown)
- After low-confidence research
- On verification failures
- After phase completion with issues
- Before starting next phase with previous issues
See: references/user-gates.md
All planning artifacts are version controlled. Commit outcomes, not process.
- Check for repo on invocation, offer to initialize
- Commit only at: initialization, phase completion, handoff
- Intermediate artifacts (PLAN.md, RESEARCH.md, FINDINGS.md) NOT committed separately
- Git log becomes project history
See: references/git-integration.md
Run on every invocation to understand current state:
```bash
# Check git status
git rev-parse --git-dir 2>/dev/null || echo "NO_GIT_REPO"
# Check for planning structure
ls -la .planning/ 2>/dev/null
ls -la .planning/phases/ 2>/dev/null
# Find any continue-here files
find . -name ".continue-here.md" -type f 2>/dev/null
# Check for existing artifacts
[ -f .planning/BRIEF.md ] && echo "BRIEF: exists"
[ -f .planning/ROADMAP.md ] && echo "ROADMAP: exists"
```
If NO_GIT_REPO detected:
Inline question: "No git repo found. Initialize one? (Recommended for version control)"
If yes: git init
Present findings before intake question.
Domain expertise lives in ~/.claude/skills/expertise/
Before creating roadmap or phase plans, determine if domain expertise should be loaded.
```bash
ls ~/.claude/skills/expertise/ 2>/dev/null
```
This reveals available domain expertise (e.g., macos-apps, iphone-apps, unity-games, nextjs-ecommerce).
If no domain skills found: Proceed without domain expertise (graceful degradation). The skill works fine without domain-specific context.
If user's request contains domain keywords, INFER the domain:
| Keywords | Domain Skill |
|----------|--------------|
| "macOS", "Mac app", "menu bar", "AppKit", "SwiftUI desktop" | expertise/macos-apps |
| "iPhone", "iOS", "iPad", "mobile app", "SwiftUI mobile" | expertise/iphone-apps |
| "Unity", "game", "C#", "3D game", "2D game" | expertise/unity-games |
| "MIDI", "MIDI tool", "sequencer", "MIDI controller", "music app", "MIDI 2.0", "MPE", "SysEx" | expertise/midi |
| "Agent SDK", "Claude SDK", "agentic app" | expertise/with-agent-sdk |
| "Python automation", "workflow", "API integration", "webhooks", "Celery", "Airflow", "Prefect" | expertise/python-workflow-automation |
| "UI", "design", "frontend", "interface", "responsive", "visual design", "landing page", "website design", "Tailwind", "CSS", "web design" | expertise/ui-design |
If domain inferred, confirm:
```
Detected: [domain] project β expertise/[skill-name]
Load this expertise for planning? (Y / see other options / none)
```
If no domain obvious from request, present options:
```
What type of project is this?
Available domain expertise:
- macos-apps - Native macOS with Swift/SwiftUI
- iphone-apps - Native iOS with Swift/SwiftUI
- unity-games - Unity game development
- swift-midi-apps - MIDI/audio apps
- with-agent-sdk - Claude Agent SDK apps
- ui-design - Stunning UI/UX design & frontend development
[... any others found in expertise/]
N. None - proceed without domain expertise
C. Create domain skill first
Select:
```
When domain selected, use intelligent loading:
Step 1: Read domain SKILL.md
```bash
cat ~/.claude/skills/expertise/[domain]/SKILL.md 2>/dev/null
```
This loads core principles and routing guidance (~5k tokens).
Step 2: Determine what references are needed
Domain SKILL.md should contain a section that maps planning contexts to specific references.
Example:
```markdown
For database/persistence phases: references/core-data.md, references/swift-concurrency.md
For UI/layout phases: references/swiftui-layout.md, references/appleHIG.md
For system integration: references/appkit-integration.md
Always useful: references/swift-conventions.md
```
Step 3: Load only relevant references
Based on the phase being planned (from ROADMAP), load ONLY the references mentioned for that type of work.
```bash
# Example: Planning a database phase
cat ~/.claude/skills/expertise/macos-apps/references/core-data.md
cat ~/.claude/skills/expertise/macos-apps/references/swift-conventions.md
```
Context efficiency:
- SKILL.md only: ~5k tokens
- SKILL.md + selective references: ~8-12k tokens
- All references (old approach): ~20-27k tokens
Announce: "Loaded [domain] expertise ([X] references for [phase-type])."
If domain skill not found: Inform user and offer to proceed without domain expertise.
If SKILL.md doesn't have references_index: Fall back to loading all references with warning about context usage.
Domain expertise should be loaded BEFORE:
- Creating roadmap (phases should be domain-appropriate)
- Planning phases (tasks must be domain-specific)
Domain expertise is NOT needed for:
- Creating brief (vision is domain-agnostic)
- Resuming from handoff (context already established)
- Transition between phases (just updating status)
Based on scan results, present context-aware options:
If handoff found:
```
Found handoff: .planning/phases/XX/.continue-here.md
[Summary of state from handoff]
- Resume from handoff
- Discard handoff, start fresh
- Different action
```
If planning structure exists:
```
Project: [from BRIEF or directory]
Brief: [exists/missing]
Roadmap: [X phases defined]
Current: [phase status]
What would you like to do?
- Plan next phase
- Execute current phase
- Create handoff (stopping for now)
- View/update roadmap
- Something else
```
If no planning structure:
```
No planning structure found.
What would you like to do?
- Start new project (create brief)
- Create roadmap from existing brief
- Jump straight to phase planning
- Get guidance on approach
```
Wait for response before proceeding.
| Response | Workflow |
|----------|----------|
| "brief", "new project", "start", 1 (no structure) | workflows/create-brief.md |
| "roadmap", "phases", 2 (no structure) | workflows/create-roadmap.md |
| "phase", "plan phase", "next phase", 1 (has structure) | workflows/plan-phase.md |
| "chunk", "next tasks", "what's next" | workflows/plan-chunk.md |
| "execute", "run", "do it", "build it", 2 (has structure) | EXIT SKILL β Use /run-plan slash command |
| "research", "investigate", "unknowns" | workflows/research-phase.md |
| "handoff", "pack up", "stopping", 3 (has structure) | workflows/handoff.md |
| "resume", "continue", 1 (has handoff) | workflows/resume.md |
| "transition", "complete", "done", "next" | workflows/transition.md |
| "milestone", "ship", "v1.0", "release" | workflows/complete-milestone.md |
| "guidance", "help", 4 | workflows/get-guidance.md |
Critical: Plan execution should NOT invoke this skill. Use /run-plan for context efficiency (skill loads ~20k tokens, /run-plan loads ~5-7k).
After reading the workflow, follow it exactly.
The planning hierarchy (each level builds on previous):
```
BRIEF.md β Human vision (you read this)
β
ROADMAP.md β Phase structure (overview)
β
RESEARCH.md β Research prompt (optional, for unknowns)
β
FINDINGS.md β Research output (if research done)
β
PLAN.md β THE PROMPT (Claude executes this)
β
SUMMARY.md β Outcome (existence = phase complete)
```
Rules:
- Roadmap requires Brief (or prompts to create one)
- Phase plan requires Roadmap (knows phase scope)
- PLAN.md IS the execution prompt
- SUMMARY.md existence marks phase complete
- Each level can look UP for context
All planning artifacts go in .planning/:
```
.planning/
βββ BRIEF.md # Human vision
βββ ROADMAP.md # Phase structure + tracking
βββ phases/
βββ 01-foundation/
β βββ 01-01-PLAN.md # Plan 1: Database setup
β βββ 01-01-SUMMARY.md # Outcome (exists = done)
β βββ 01-02-PLAN.md # Plan 2: API routes
β βββ 01-02-SUMMARY.md
β βββ 01-03-PLAN.md # Plan 3: UI components
β βββ .continue-here-01-03.md # Handoff (temporary, if needed)
βββ 02-auth/
βββ 02-01-RESEARCH.md # Research prompt (if needed)
βββ 02-01-FINDINGS.md # Research output
βββ 02-02-PLAN.md # Implementation prompt
βββ 02-02-SUMMARY.md
```
Naming convention:
- Plans:
{phase}-{plan}-PLAN.md (e.g., 01-03-PLAN.md) - Summaries:
{phase}-{plan}-SUMMARY.md (e.g., 01-03-SUMMARY.md) - Phase folders:
{phase}-{name}/ (e.g., 01-foundation/)
Files sort chronologically. Related artifacts (plan + summary) are adjacent.
All in references/:
Structure: directory-structure.md, hierarchy-rules.md
Formats: handoff-format.md, plan-format.md
Patterns: context-scanning.md, context-management.md
Planning: scope-estimation.md, checkpoints.md, milestone-management.md
Process: user-gates.md, git-integration.md, research-pitfalls.md
Domain: domain-expertise.md (guide for creating context-efficient domain skills)
All in templates/:
| Template | Purpose |
|----------|---------|
| brief.md | Project vision document with current state |
| roadmap.md | Phase structure with milestone groupings |
| phase-prompt.md | Executable phase prompt (PLAN.md) |
| research-prompt.md | Research prompt (RESEARCH.md) |
| summary.md | Phase outcome (SUMMARY.md) with deviations |
| milestone.md | Milestone entry for MILESTONES.md |
| issues.md | Deferred enhancements log (ISSUES.md) |
| continue-here.md | Context handoff format |
All in workflows/:
| Workflow | Purpose |
|----------|---------|
| create-brief.md | Create project vision document |
| create-roadmap.md | Define phases from brief |
| plan-phase.md | Create executable phase prompt |
| execute-phase.md | Run phase prompt, create summary |
| research-phase.md | Create and run research prompt |
| plan-chunk.md | Plan immediate next tasks |
| transition.md | Mark phase complete, advance |
| complete-milestone.md | Mark shipped version, create milestone entry |
| handoff.md | Create context handoff for pausing |
| resume.md | Load handoff, restore context |
| get-guidance.md | Help decide planning approach |
Planning skill succeeds when:
- Context scan runs before intake
- Appropriate workflow selected based on state
- PLAN.md IS the executable prompt (not separate)
- Hierarchy is maintained (brief β roadmap β phase)
- Handoffs preserve full context for resumption
- Context limits are respected (auto-handoff at 10%)
- Deviations handled automatically per embedded rules
- All work (planned and discovered) fully documented
- Domain expertise loaded intelligently (SKILL.md + selective references, not all files)
- Plan execution uses /run-plan command (not skill invocation)