Create hierarchical project plans optimized for solo agentic development. Use when planning projects, phases, or tasks that Claude will execute...
When planning a phase, you are writing the prompt that will execute it.
The quality degradation curve:
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
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:
Protocol: Claude automates work ā reaches checkpoint:human-verify ā presents what was done ā waits for confirmation ā resumes
See: references/checkpoints.md, references/cli-automation.md
During execution, deviations are handled automatically via 5 embedded rules:
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)
Milestone-driven: Ship v1.0 ā mark milestone ā plan v1.1 ā ship ā repeat. Milestones mark shipped versions and enable continuous iteration.
Purpose:
Default approach: Extend existing roadmap with new phases.
Archive ONLY for: Separate codebases or complete rewrites (rare).
See: references/milestone-management.md
If it sounds like corporate PM theater, delete it.
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.
Mandatory gates:
See: references/user-gates.md
See: references/git-integration.md
All planning artifacts are created using the Write tool directly in the project directory:
.planning/BRIEF.md.planning/ROADMAP.md.planning/phases/{phase}/{plan}-PLAN.md.planning/phases/{phase}/{plan}-SUMMARY.mdNEVER:
~/.claude/plans/ home directory)subagent_type=Plan.planning/WHY: Plan mode is for Claude Code's internal planning. This skill creates project-specific planning artifacts that must live in the project repository for version control and team collaboration.
Follow the workflows exactly - they use Write tool with explicit .planning/ paths.
# 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.
Before creating roadmap or phase plans, determine if domain expertise should be loaded.
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.
| 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)
What type of project is this?
Available domain expertise:
1. macos-apps - Native macOS with Swift/SwiftUI
2. iphone-apps - Native iOS with Swift/SwiftUI
3. unity-games - Unity game development
4. swift-midi-apps - MIDI/audio apps
5. with-agent-sdk - Claude Agent SDK apps
6. 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:
Step 1: Read domain SKILL.md
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 <references_index> section that maps planning contexts to specific references.
Example:
<references_index>
**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
</references_index>
Step 3: Load only relevant references
Based on the phase being planned (from ROADMAP), load ONLY the references mentioned for that type of work.
# 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:
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 is NOT needed for:
If handoff found:
Found handoff: .planning/phases/XX/.continue-here.md
[Summary of state from handoff]
1. Resume from handoff
2. Discard handoff, start fresh
3. 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?
1. Plan next phase
2. Execute current phase
3. Create handoff (stopping for now)
4. View/update roadmap
5. Something else
If no planning structure:
No planning structure found.
What would you like to do?
1. Start new project (create brief)
2. Create roadmap from existing brief
3. Jump straight to phase planning
4. Get guidance on approach
Wait for response before proceeding.
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.
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:
.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:
{phase}-{plan}-PLAN.md (e.g., 01-03-PLAN.md){phase}-{plan}-SUMMARY.md (e.g., 01-03-SUMMARY.md){phase}-{name}/ (e.g., 01-foundation/)Files sort chronologically. Related artifacts (plan + summary) are adjacent.
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)
| 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 |
| 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 |