oliver-kriska/plan
Plan features spanning multiple domains: billing (Stripe), auth (RBAC), real-time (Presence), webhooks, jobs (Oban). Use when designing interconnected systems or converting review findings into tasks.
npx skills add https://github.com/oliver-kriska/claude-elixir-phoenix --skill plan
Plan a feature by spawning Elixir specialist agents, then output
structured plan with checkboxes.
[ecto], [liveview], [oban] task routingmix compile/format/credo/test verification/phx:plan Add user avatars with S3 upload
/phx:plan .claude/plans/notifications/reviews/notifications-review.md
/phx:plan Implement notifications --depth deep
/phx:plan .claude/plans/auth/plan.md --existing
$ARGUMENTS = Feature description, review file, or existing plan--depth quick|standard|deep = Planning depth (auto-detected)--existing = Enhance an existing plan with deeper researchinterview.md (skip clarification), clear description, or vague
brainstorm interview.md exists with Status: COMPLETE)
and warnings before spawning agents (direct path only — the
research orchestrator gathers its own)
spawn directly in parallel. 3+ agents (broad multi-context feature):
determine the effective maximum nesting depth. Use an explicit positive-integer
CLAUDE_CODE_MAX_SUBAGENT_SPAWN_DEPTH value first; when it is unset, inspect
claude --version (the default is 1 in 2.1.217–2.1.218 and 3 in 2.1.219+).
If the version is unavailable, conservatively use 1. At depth 3+, spawn ONE
planning-orchestrator to run and compress the fan-out. At depth 1 or 2,
keep orchestration in this
main session: spawn the selected specialist agents directly, wait for them, then spawn
phx:context-supervisor directly if compression is needed. Never spawn an
orchestrator that cannot delegate. Read only the resulting digest and
summaries/consolidated.md. Create a Claude Code task per spawn:
TaskCreate({subject: "{Agent} research", activeForm: "Researching..."}),
mark in_progress on spawn, completed when done
"completed". NEVER write plan while any agent is still running
10. Generate plan — Checkboxes, phased tasks, code patterns.
Also create plans/{slug}/scratchpad.md for decisions and dead-ends
11. Self-check (deep only) — Three questions in Risks section
12. Present and ask — STOP, show summary, let user decide
When planning from review: Every finding must appear in the
plan — either as a task OR explicitly deferred by the user.
See ${CLAUDE_SKILL_DIR}/references/planning-workflow.md for detailed step-by-step.
Enhances an existing plan instead of creating a new one:
.claude/solutions/ for known risksEach agent writes to .claude/plans/{slug}/research/ and
returns only a 500-word summary. Same agent selection rules
completed as each finishes)input is a review file or /phx:investigate output, the findings
ARE the research. Do NOT spawn agents to re-discover what the
review already found. Convert findings directly to plan tasks.
(Confirmed: 56-session analysis showed same findings discovered
3-4x across review→investigate→plan phases, wasting ~96K tokens)
/phx:plan {feature} <-- YOU ARE HERE
|
/phx:plan --existing (optional enhancement)
|
ASK USER -> /phx:work .claude/plans/{feature}/plan.md
|
/phx:review → /phx:compound
.claude/plans/{slug}/plan.md.claude/plans/{slug}/research/ can be deleted afterSTOP. Do NOT proceed to implementation.
After writing .claude/plans/{slug}/plan.md:
AskUserQuestion with options:/phx:brief — interactive walkthrough)When user selects "Start in fresh session", print:
1. Run `/new` to start a fresh session
2. Then run one of:
/phx:work .claude/plans/{slug}/plan.md
/phx:full .claude/plans/{slug}/plan.md (includes review + compound)
This is Iron Law #1. Violating it wastes user context.
${CLAUDE_SKILL_DIR}/references/planning-workflow.md — Detailed step-by-step${CLAUDE_SKILL_DIR}/references/plan-template.md${CLAUDE_SKILL_DIR}/references/complexity-detail.md${CLAUDE_SKILL_DIR}/references/example-plan.md${CLAUDE_SKILL_DIR}/references/agent-selection.md${CLAUDE_SKILL_DIR}/references/breadboarding.mdTake oliver-kriska/plan from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.