Use when a spec exists and user wants implementation steps. Triggers: 'how to implement', 'create plan', 'plan this', 'what are the steps'.
Purpose: Transform feature specifications into validated implementation plans that prevent common planning failures: orphaned foundations, magical steps, codebase blindness, and incomplete coverage.
User triggers:
After:
/shipkit-spec has created specification for the featureCheck before starting:
.shipkit/specs/todo/[feature-name].json or .shipkit/specs/active/[feature-name].json.shipkit/stack.json (from shipkit-project-context)UI-Heavy Feature Check:
/shipkit-engineering-definition first to define UI patterns"Optional but helpful:
.shipkit/architecture.json.shipkit/engineering-definition.json (see components[].dataContracts)If $ARGUMENTS is provided (e.g. /shipkit-plan recipe-sharing), use it as the spec name. Try to read .shipkit/specs/todo/$ARGUMENTS.json or .shipkit/specs/active/$ARGUMENTS.json. If found, skip spec selection and proceed to Step 1 Question 2 (Plan Detail). If not found, tell the user: "No spec found matching '$ARGUMENTS'. Available specs:" then list what exists and let them choose.
If $ARGUMENTS is empty, proceed normally from Step 1.
After selecting spec and reading context, create tasks:
TaskCreate: "Read context + codebase scan (parallel agents)"TaskCreate: "Architecture anti-pattern check"TaskCreate: "Archive existing plan (if exists)"TaskCreate: "Generate plan JSON"TaskCreate: "Run 6 validation checks"TaskCreate: "Write plan to disk"TaskUpdate each task to in_progress when starting it, completed when done.
The plan JSON being generated is NOT done — the 6 validation checks (Step 3.5) must run and pass before writing. Do NOT skip validation after the cognitively heavy generation step.
Subagent Principle: Use Explore subagents for codebase scanning and verification tasks. They're faster, use less context, and return focused results. See Steps 2.7 and 3 for specific subagent prompts.
First, scan available specs (todo and active):
ls .shipkit/specs/todo/*.json .shipkit/specs/active/*.json 2>/dev/null || echo "No specs found"
Auto-selection logic (skip interactive questions when possible):
$ARGUMENTS matched a spec → already selected, skip to Question 2.shipkit/product-definition.json exists → check for next unplanned feature in dependency order, auto-select its specQuestion 1 - Spec Selection: (only if multiple specs and no auto-selection)