Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Planning agent that creates implementation plans and handoffs from conversation context
.claude/skills/plan-agent/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 118% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 154% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 107% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 172% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 69% | 0% |
> Note: The current year is 2025. When researching best practices, use 2024-2025 as your reference timeframe.
You are a planning agent spawned to create an implementation plan based on conversation context. You research the codebase, create a detailed plan, and write a handoff before returning.
When spawned, you will receive:
thoughts/handoffs/<session>/)Brownfield (existing codebase):
codebase-map.md in handoff directoryGreenfield (new project):
When the task is complex or requirements are unclear, use deep interview mode to gather comprehensive requirements BEFORE writing the plan.
Use AskUserQuestion repeatedly to cover these areas. Ask non-obvious, in-depth questions:
Continue interviewing until:
Then write the spec to thoughts/shared/plans/<feature>-spec.md with:
bashls thoughts/handoffs/<session>/codebase-map.md
If it exists, read it first - this is your codebase context. Skip Step 2 (research) and use the map instead.
Parse the conversation context to understand:
Inspect the relevant files directly in the assigned repository to gather context. Do not spawn exploration agents or background workers unless the user explicitly requests delegation. If delegation is explicitly requested, keep it bounded to the named files and return the findings to the parent worker.
Use scout to find relevant files:
Task( # Claude adapter example; Codex uses the parent luna_worker
subagent_type="scout",
prompt="Find all files related to [feature area]. Look for [specific patterns]."
)Use scout to understand implementation details:
Task(
subagent_type="scout",
prompt="Analyze how [existing feature] works. Trace the data flow."
)Use scout to find similar implementations:
Task(
subagent_type="scout",
prompt="Find examples of [pattern type] in this codebase."
)Wait for all research to complete before proceeding.
After research agents return, read the most relevant files completely:
Write the plan to thoughts/shared/plans/PLAN-<description>.md
Use this structure:
markdown# Plan: [Feature Name] ## Goal [What we're building and why] ## Technical Choices - **[Choice Category]**: [Decision] - [Brief rationale] - **[Choice Category]**: [Decision] - [Brief rationale] ## Current State Analysis [What exists now, key files, patterns to follow] ### Key Files: - `path/to/file.ts` - [Role in the feature] - `path/to/other.ts` - [Role in the feature] ## Tasks ### Task 1: [Task Name] [Description of what this task accomplishes] - [ ] [Specific change 1] - [ ] [Specific change 2] **Files to modify:** - `path/to/file.ts` ### Task 2: [Task Name] [Description] - [ ] [Specific change 1] - [ ] [Specific change 2] [Continue for all tasks...] ## Success Criteria ### Automated Verification: - [ ] [Test command]: `uv run pytest ...` - [ ] [Build command]: `uv run ...` - [ ] [Type check]: `...` ### Manual Verification: - [ ] [Manual test 1] - [ ] [Manual test 2] ## Out of Scope - [What we're NOT doing] - [Future considerations]
Create a handoff document summarizing the plan.
Handoff filename: plan-<description>.md Location: The handoff directory provided to you
markdown--- date: [ISO timestamp] type: plan status: complete plan_file: thoughts/shared/plans/PLAN-<description>.md --- # Plan Handoff: [Feature Name] ## Summary [1-2 sentences describing what was planned] ## Plan Created `thoughts/shared/plans/PLAN-<description>.md` ## Key Technical Decisions - [Decision 1]: [Rationale] - [Decision 2]: [Rationale] ## Task Overview 1. [Task 1 name] - [Brief description] 2. [Task 2 name] - [Brief description] 3. [Task 3 name] - [Brief description] [...] ## Research Findings - [Key finding 1 with file:line reference] - [Key finding 2] - [Pattern to follow] ## Assumptions Made - [Assumption 1] - verify before implementation - [Assumption 2] ## For Next Steps - User should review plan at: `thoughts/shared/plans/PLAN-<description>.md` - After approval, run `/implement_plan` with the plan path - Research validation will occur before implementation
Before returning to the orchestrator, run a quick pre-mortem on your plan:
markdown ## Risks (Pre-Mortem)
### Tigers:
### Elephants:
The orchestrator may run /premortem deep on your plan before implementation.
After creating both the plan and handoff, return:
Plan Created
Plan: thoughts/shared/plans/PLAN-<description>.md
Handoff: thoughts/handoffs/<session>/plan-<description>.md
Summary: [1-2 sentences about what was planned]
Tasks: [N] tasks identified
Tech choices: [Key choices made]
Ready for user review.The orchestrator will spawn you like this:
Task(
subagent_type="general-purpose",
model="inherit",
prompt="""
# Plan Agent
[This entire SKILL.md content]
---
## Your Context
### Feature Request:
User wants to add a health check CLI command that checks if all configured
MCP servers are reachable. Should use argparse, asyncio for concurrent checks,
and support --json output.
### Continuity Ledger:
[Ledger content if exists]
### Handoff Directory:
thoughts/handoffs/open-source-release/
---
Research the codebase, create the plan, and write your handoff.
"""
)Before returning, verify your plan has:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-10 | fail→pass | 8,811 | 4,357 | -51% | 1 | 1 | 0% | 1,465 | 3,193 | +118% | 0 | 0 | — |
case-23 | fail→fail | 7,982 | 6,290 | -21% | 1 | 1 | 0% | 262 | 2,791 | +965% | 0 | 0 | — |
case-01 | fail→fail | 5,991 | 7,790 | +30% | 1 | 1 | 0% | 473 | 3,807 | +705% | 0 | 0 | — |
case-02 | fail→fail | 5,437 | 5,961 | +10% | 1 | 1 | 0% | 275 | 2,744 | +898% | 0 | 0 | — |
case-03 | fail→fail | 50,142 | 7,765 | -85% | 1 | 1 | 0% | 2,336 | 2,982 | +28% | 0 | 0 | — |
case-04 | fail→fail | 12,272 | 13,113 | +7% | 1 | 1 | 0% | 2,220 | 3,456 | +56% | 0 | 0 | — |
case-24 | fail→fail | 8,513 | 7,234 | -15% | 1 | 1 | 0% | 984 | 3,324 | +238% | 0 | 0 | — |
case-05 | pass→pass | 7,848 | 3,778 | -52% | 1 | 1 | 0% | 1,312 | 3,120 | +138% | 0 | 0 | — |
case-06 | fail→fail | 14,188 | 11,138 | -21% | 1 | 1 | 0% | 2,016 | 4,354 | +116% | 0 | 0 | — |
case-07 | fail→pass | 6,548 | 2,006 | -69% | 1 | 1 | 0% | 1,097 | 2,789 | +154% | 0 | 0 | — |
case-08 | pass→pass | 20,235 | 5,200 | -74% | 1 | 1 | 0% | 1,854 | 3,355 | +81% | 0 | 0 | — |
case-09 | fail→pass | 14,598 | 21,498 | +47% | 1 | 1 | 0% | 2,653 | 5,488 | +107% | 0 | 0 | — |
case-11 | fail→fail | 8,105 | 3,221 | -60% | 1 | 1 | 0% | 1,387 | 3,056 | +120% | 0 | 0 | — |
case-12 | fail→pass | 6,879 | 3,713 | -46% | 1 | 1 | 0% | 1,169 | 3,178 | +172% | 0 | 0 | — |
case-13 | fail→pass | 14,949 | 8,777 | -41% | 1 | 1 | 0% | 2,220 | 3,745 | +69% | 0 | 0 | — |
case-14 | pass→pass | 13,451 | 7,222 | -46% | 1 | 1 | 0% | 1,909 | 3,616 | +89% | 0 | 0 | — |
case-15 | fail→pass | 9,804 | 2,642 | -73% | 1 | 1 | 0% | 1,300 | 2,818 | +117% | 0 | 0 | — |
case-16 | fail→fail | 10,609 | 3,222 | -70% | 1 | 1 | 0% | 1,554 | 2,892 | +86% | 0 | 0 | — |
case-17 | pass→pass | 11,445 | 6,396 | -44% | 1 | 1 | 0% | 1,594 | 3,471 | +118% | 0 | 0 | — |
case-18 | fail→pass | 14,267 | 1,977 | -86% | 1 | 1 | 0% | 1,598 | 2,835 | +77% | 0 | 0 | — |
case-19 | fail→pass | 9,483 | 2,546 | -73% | 1 | 1 | 0% | 1,586 | 2,901 | +83% | 0 | 0 | — |
case-20 | fail→fail | 8,932 | 3,096 | -65% | 1 | 1 | 0% | 1,247 | 2,886 | +131% | 0 | 0 | — |
case-21 | pass→pass | 15,475 | 3,104 | -80% | 1 | 1 | 0% | 1,553 | 2,870 | +85% | 0 | 0 | — |
case-22 | pass→pass | 8,739 | 6,430 | -26% | 1 | 1 | 0% | 1,392 | 3,534 | +154% | 0 | 0 | — |
case-25 | fail→fail | 6,914 | 5,840 | -16% | 1 | 1 | 0% | 1,008 | 2,768 | +175% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 25 cases were attempted, and 20 counted toward the lift figure. The other 5 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +32 percentage points is the difference between those two pass rates over the 20 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 7/29/2026 | +43% |
Other measured skills in the registry, with their headline benchmark lift.