Generate or update the implementation plan (plan.md) for a spec in ./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/.
The plan reads the spec.yaml contract and breaks it into concrete, ordered, testable tasks. It is the bridge between the spec (what to build) and mini-sdd-implement (which executes the tasks).
Note: This skill never modifies spec.yaml requirements — it only reads them and advances the spec's status. The spec contract is owned by mini-sdd-spec.
Hook execution
Check ./{ARTIFACT_MAIN_FOLDER}/mini-sdd.config.yml for hooks.plan.pre and hooks.plan.post entries. Run pre-hooks before the Entry point; run post-hooks after the full workflow completes. See references/hooks.md for the full execution rules.
Entry point
- Read
./{ARTIFACT_MAIN_FOLDER}/context.md if it exists — use it as background for tech stack, architecture, and conventions.
- Determine which spec to plan:
2.1 If a spec name is provided in the input (e.g.,
/mini-sdd-plan user-authentication), use it.
2.2 If no name is provided, scan spec folders in ./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/ and read each spec.yaml feature block.
- Present specs whose
feature.status is draft (spec written, no plan yet) and any whose spec was updated after their plan:
<spec-name> → status <status> and ask the user to choose which one to plan.
- If no specs exist, inform the user:
"No specs found in ./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/. Use /mini-sdd-spec to create one first."
- Once a spec is selected, output:
"Selected spec: <spec-name>"
- Read
./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/<spec-name>/spec.yaml: the feature block (status, requires, created, updated, name) and full content (components, constraints, and extensions).
- Check whether
plan.md already exists in the spec folder:
- No
plan.md → proceed to Creation flow.
plan.md exists → show a brief summary and ask:
"A plan already exists for <spec-name>. Do you want to regenerate it (replace) or append new tasks (keep history)?"
- Regenerate / Append → proceed to Update flow.
Creation flow
- Read the spec content:
feature.description, components requirements, constraints, non-goals, prerequisites, technical notes.
- Break the spec into tasks following the rules in references/task-rules.md. Tag every task with the ACID(s) it satisfies, e.g.
_(LOGIN.1)_ (the <GROUP_KEY>.<ID> form; the full ACID is <spec-name>.<GROUP_KEY>.<ID>).
- If any open questions or assumptions were noted in the spec, ask the user for clarification before finalizing the tasks.
- Present the task list to the user:
"📋 Tasks for <spec-name>:"
- <task 1>
- <task 2>
- Ask: "Does this task breakdown look good? Any adjustments?"
- After confirmation, write
plan.md using assets/plan.template.md as the base, filling all the sections. Write to ./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/<spec-name>/plan.md.
- Advance the spec: in the
feature block set status: ready and updated: YYYY-MM-DD. Do not change any requirement content.
- Confirm to the user:
"✅ Created <spec-name>/plan.md with N tasks and set <spec-name>/spec.yaml to status: ready.
Next: run /mini-sdd-implement <spec-name> to execute the plan."
Update flow
Use this when a plan.md already exists for the spec.
- Read the current
plan.md and the (possibly updated) spec.yaml.
- Re-read the spec content and break it into tasks following references/task-rules.md.
- Decide based on the user's choice in the Entry point:
- Regenerate → replace the task list with a fresh breakdown derived from the current spec.
- Append → append a new dated section to the existing
plan.md using assets/plan.template.md as the base. Do not remove existing tasks — preserve the history of previous implementations.
- Present the new/updated task list and ask: "Does this look good? Any adjustments?"
- After confirmation, write
plan.md.
- Advance the spec: in the
feature block set status: ready and updated: YYYY-MM-DD.
- Confirm:
"✅ Updated <spec-name>/plan.md (N tasks) and set <spec-name>/spec.yaml to status: ready."
Task Rules
See references/task-rules.md for the full format, numbering, and content guidelines.
Status lifecycle
This skill advances a spec from draft → ready once a plan exists. It never sets in-progress or done (owned by mini-sdd-implement). Whether a ready spec is currently implementable is derived from requires: — if any dependency is not done, implementation must wait.
Output rules
{SKILL_ASSETS_NOTICE}
- One plan per spec, located alongside
spec.yaml in the spec folder.
- Coding tasks only — no deployment, documentation, or manual testing tasks.
- Every requirement (
components and constraints) must be covered by at least one task, tagged with its ACID _(<GROUP_KEY>.<ID>)_.
- Keep tasks small and ordered so dependencies are satisfied bottom-up.
- Do not modify the requirements in
spec.yaml — only its feature.status and feature.updated fields.
Error handling
- No spec selected / not found: List available specs and ask the user to choose, or tell them to run
/mini-sdd-spec first.
- Spec has no content to plan: If
spec.yaml has no requirements or only placeholders, ask the user to complete it with /mini-sdd-spec before planning.
- Open questions in the spec: Ask for clarification before finalizing tasks; if unanswered, note the assumption in the plan and proceed with best effort.
- Plan folder not writable / path missing: Create the spec folder if it does not exist before writing.
1---2name: mini-sdd-plan3description: Generate or update the implementation plan for an existing spec — read spec.yaml and break it into an ordered, testable task checklist. Use when creating a plan from a spec, generating tasks, planning how to implement a feature, or refreshing a plan after the spec changed. Do not use for writing the spec itself (use mini-sdd-spec) or implementing code (use mini-sdd-implement).4---56Generate or update the implementation plan (`plan.md`) for a spec in `./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/`.78The plan reads the `spec.yaml` contract and breaks it into concrete, ordered, testable tasks. It is the bridge between the spec (what to build) and `mini-sdd-implement` (which executes the tasks).910> **Note:** This skill never modifies `spec.yaml` requirements — it only reads them and advances the spec's `status`. The spec contract is owned by `mini-sdd-spec`.1112---1314## Hook execution1516Check `./{ARTIFACT_MAIN_FOLDER}/mini-sdd.config.yml` for `hooks.plan.pre` and `hooks.plan.post` entries. Run pre-hooks before the Entry point; run post-hooks after the full workflow completes. See [references/hooks.md](./references/hooks.md) for the full execution rules.1718---1920## Entry point21221. Read `./{ARTIFACT_MAIN_FOLDER}/context.md` if it exists — use it as background for tech stack, architecture, and conventions.232. Determine which spec to plan:24 2.1 If a spec name is provided in the input (e.g., `/mini-sdd-plan user-authentication`), use it.25 2.2 If no name is provided, scan spec folders in `./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/` and read each `spec.yaml` `feature` block.26 - Present specs whose `feature.status` is `draft` (spec written, no plan yet) and any whose spec was updated after their plan:27 > `<spec-name>` → status `<status>` and ask the user to choose which one to plan.28 - If no specs exist, inform the user:29 > "No specs found in `./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/`. Use `/mini-sdd-spec` to create one first."303. Once a spec is selected, output:31 > "Selected spec: `<spec-name>`"324. Read `./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/<spec-name>/spec.yaml`: the `feature` block (`status`, `requires`, `created`, `updated`, `name`) and full content (`components`, `constraints`, and extensions).335. Check whether `plan.md` already exists in the spec folder:34 - **No `plan.md`** → proceed to **Creation flow**.35 - **`plan.md` exists** → show a brief summary and ask:36 > "A plan already exists for `<spec-name>`. Do you want to **regenerate it** (replace) or **append new tasks** (keep history)?"37 - **Regenerate / Append** → proceed to **Update flow**.3839---4041## Creation flow42431. Read the spec content: `feature.description`, `components` requirements, `constraints`, non-goals, prerequisites, technical notes.442. Break the spec into tasks following the rules in [references/task-rules.md](./references/task-rules.md). Tag every task with the ACID(s) it satisfies, e.g. `_(LOGIN.1)_` (the `<GROUP_KEY>.<ID>` form; the full ACID is `<spec-name>.<GROUP_KEY>.<ID>`).453. If any open questions or assumptions were noted in the spec, ask the user for clarification before finalizing the tasks.464. Present the task list to the user:47 > "📋 Tasks for `<spec-name>`:"48 > 1. \<task 1\>49 > 2. \<task 2\>505. Ask: _"Does this task breakdown look good? Any adjustments?"_516. After confirmation, write `plan.md` using `assets/plan.template.md` as the base, filling all the sections. Write to `./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/<spec-name>/plan.md`.527. Advance the spec: in the `feature` block set `status: ready` and `updated: YYYY-MM-DD`. Do not change any requirement content.538. Confirm to the user:54 > "✅ Created `<spec-name>/plan.md` with N tasks and set `<spec-name>/spec.yaml` to status: ready.55 > Next: run `/mini-sdd-implement <spec-name>` to execute the plan."5657---5859## Update flow6061Use this when a `plan.md` already exists for the spec.62631. Read the current `plan.md` and the (possibly updated) `spec.yaml`.642. Re-read the spec content and break it into tasks following [references/task-rules.md](./references/task-rules.md).653. Decide based on the user's choice in the Entry point:66 - **Regenerate** → replace the task list with a fresh breakdown derived from the current spec.67 - **Append** → **append** a new dated section to the existing `plan.md` using `assets/plan.template.md` as the base. Do **not** remove existing tasks — preserve the history of previous implementations.684. Present the new/updated task list and ask: _"Does this look good? Any adjustments?"_695. After confirmation, write `plan.md`.706. Advance the spec: in the `feature` block set `status: ready` and `updated: YYYY-MM-DD`.717. Confirm:72 > "✅ Updated `<spec-name>/plan.md` (N tasks) and set `<spec-name>/spec.yaml` to status: ready."7374---7576## Task Rules7778See [references/task-rules.md](./references/task-rules.md) for the full format, numbering, and content guidelines.7980---8182## Status lifecycle8384This skill advances a spec from `draft` → `ready` once a plan exists. It never sets `in-progress` or `done` (owned by `mini-sdd-implement`). Whether a `ready` spec is currently implementable is derived from `requires:` — if any dependency is not `done`, implementation must wait.8586---8788## Output rules8990{SKILL_ASSETS_NOTICE}91- One plan per spec, located alongside `spec.yaml` in the spec folder.92- Coding tasks only — no deployment, documentation, or manual testing tasks.93- Every requirement (`components` and `constraints`) must be covered by at least one task, tagged with its ACID `_(<GROUP_KEY>.<ID>)_`.94- Keep tasks small and ordered so dependencies are satisfied bottom-up.95- Do **not** modify the requirements in `spec.yaml` — only its `feature.status` and `feature.updated` fields.9697## Error handling9899- **No spec selected / not found**: List available specs and ask the user to choose, or tell them to run `/mini-sdd-spec` first.100- **Spec has no content to plan**: If `spec.yaml` has no requirements or only placeholders, ask the user to complete it with `/mini-sdd-spec` before planning.101- **Open questions in the spec**: Ask for clarification before finalizing tasks; if unanswered, note the assumption in the plan and proceed with best effort.102- **Plan folder not writable / path missing**: Create the spec folder if it does not exist before writing.