Plan-plus: optimized plan mode for Claude Code with lightweight skeletons and focused agents
npx claudepluginhub randyhaylor/plan-plusOptimizes Claude Code plan mode: auto-restructures plans to lightweight skeletons on exit, mines conversation for context, provides focused executor agent
Smarter plan execution for Claude Code.
claude plugin marketplace add RandyHaylor/plan-plus
claude plugin install plan-plus
Restart Claude Code after adding to marketplace and installing. Use plan mode normally. (shift+tab until it says plan mode in the cli tool - a button in the ui for vs code plugin). When you approve a plan and claude transitions to execute the plan, plan-plus will automatically restructure the plan file and inject more instructions. (Manually exiting plan mode will not - you must go through claude code offering you the plan approval step and transition)
Disabling for a project or globally:
include in project-folder/.claude/settings.local.json or user-folder/.claude/settings.loca.json: "enabledPlugins": { "plan-plus@plan-plus": false }
A React calculator app with an animated Pac-Man that navigates the lanes between buttons, turning toward the mouse at intersections — no diagonal movement, no 180° turns, dot-product direction picking at each node.
https://github.com/user-attachments/assets/723004a5-78ed-4f7f-a9a5-3fcf62010036
Two sessions built the same app from the same plan and the same 8 context files (lane graph construction, movement algorithm, canvas rendering, calculator reducer, CSS layout, component hierarchy, TypeScript interfaces, edge cases). Both produced near-identical results — Pac-Man successfully navigating between buttons, chomping, turning toward the cursor.
| Metric | plan-plus | Standard plan mode |
|---|---|---|
| Total tokens | 1.59M | 4.35M |
| API calls | 50 | 98 |
| Peak context | 41K | 61K |
| Calls at 30K+ context | 23 | 73 |
63% fewer tokens, 49% fewer API calls. Plan-plus delegated work to 4 focused agents while standard mode ran all 98 calls in one growing context. The plan-plus output was also more robust — reusable utilities, generic spanning-button detection, correct animation overshoot math — while standard mode had a subtle momentum bug and hardcoded layout assumptions.
Claude Code re-injects the full plan file into the in-memory message array on every turn during plan execution. These injections accumulate and can't be removed until compaction. A 4KB plan injected across 30 turns adds ~120KB of duplicate plan content to the main conversation context.
Plan-plus intercepts ExitPlanMode and restructures the plan:
The skeleton is all that gets injected per turn. Agents read the detailed step files only when they need them, and their context is discarded when they return.
Before plan-plus — the full verbose plan is injected every turn.
After plan-plus — your project gets this structure:
.claude/plans/plan-plus--<session-name>/
plan-full.md Full original plan (backup)
context/
project.md Project context extracted from plan preamble
goals.md Goals mined from early conversation messages
requirements.md Created by Step 0 agent
steps/
00-update-skeleton.md Step 0: agent refines the skeleton
01-documentation.md Step detail files with full content
02-project-setup.md from each section of the original plan
03-game-logic.md
...
The skeleton (what gets injected per turn):
# plan-plus--vue-checkers-multiplayer
## Instructions
- Use plan-plus-executor agent for each step
- Agent context is ephemeral
- Update context/ files with discoveries
- Mark steps done as you complete them
full plan: .claude/plans/plan-plus--vue-checkers-multiplayer/plan-full.md
context: .claude/plans/plan-plus--vue-checkers-multiplayer/context/
steps: .claude/plans/plan-plus--vue-checkers-multiplayer/steps/
## Requirements
- Stack: Vue 3 + Vite + TypeScript + Vitest + Firebase/Firestore
- Architecture: Pure game logic -> Firebase service -> Vue components
- Patterns: Strict TDD, pure functions, reactive composable
- Key features: Multiplayer via Firestore, mandatory jumps, king promotion