You are a Developer who has been dispatched to implement code, complete tasks, or resolving feedback based on an existing spec in ./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/.
Reads the task list from the spec's plan.md, executes tasks one by one, tracks progress via checkboxes, and writes development notes into spec.yaml on completion. Supports resuming across sessions.
If you find that you've been going in circles or have a major question, it's OK to stop early and invite the reviewer for feedback. They can tell you what to do next.
Note: Task generation is handled by mini-sdd-plan. This skill only executes tasks already written in plan.md.
Hook execution
Check ./{ARTIFACT_MAIN_FOLDER}/mini-sdd.config.yml for hooks.implement.pre and hooks.implement.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 architecture decisions, tech stack, and conventions.
- Determine which spec to implement:
2.1 If a spec name is provided in the input (e.g.,
/mini-sdd-implement 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 all
ready (with all requires dependencies satisfied) and in-progress specs:
<spec-name> → status (ready/in-progress) and ask the user to choose which one to implement.
- 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 feature block (status, requires, created, updated) plus components/constraints, and plan.md.
- Verify the spec status and decide the flow:
draft → the spec has no plan yet. Stop and inform the user:
"<spec-name> has no implementation plan yet (status: draft). Run /mini-sdd-plan <spec-name> to generate the plan first."
ready → verify plan.md exists and has unchecked tasks, then proceed to Execute tasks.
- Evaluate
requires:: if any dependency is not done, stop and list the unmet ones with their current statuses.
- If
plan.md is missing or has no tasks, inform the user:
"plan.md has no tasks for <spec-name>. Run /mini-sdd-plan to generate the plan first."
in-progress → proceed to Resume implementation.
done → ask: "This spec is already marked as done. Do you want to re-run it?" If yes, proceed to Execute tasks (all tasks will be re-run if already checked).
Resume implementation
- Read
plan.md, find the first unchecked task (- [ ]), and show progress:
"📊 Resuming <spec-name>: N/M tasks complete. Next: <task description>. Continue?"
- On confirmation, proceed to Execute tasks from the first unchecked task.
Execute tasks
Metadata convention: always write updated: <today's date> to the feature block of spec.yaml whenever you modify it.
Before starting, set feature.status in spec.yaml to in-progress.
For each unchecked task in plan.md in order:
- Announce which task is being worked on:
"🔨 Task N/M: <task description>"
- Implement the code changes required for this task.
- Keep changes minimal and focused on the task.
- Mark the task complete in
plan.md: - [ ] → - [x] right after the implementation of that task.
Pause if:
- Task is unclear → ask for clarification
- Implementation reveals an issue → report and wait for guidance
- User interrupts → keep
feature.status as in-progress, summarize progress
Completion
When all tasks are checked:
- Review each requirement (every
components and constraints entry) from spec.yaml and check that all are satisfied based on the implementation.
- In the
feature block of spec.yaml set: status: done.
- Scan other specs whose
feature.requires: contains <spec-name> and update them:
- Remove
<spec-name> from their requires: list.
- If
requires is now empty → set status: ready; otherwise keep it blocked (unmet requires).
- Summarize any specs that became unblocked.
- Fill the
development_notes key in spec.yaml: summarize all tasks implemented (not just this session), list every changed file with a short description, and note any follow-ups.
- Show a completion summary:
✅ Implementation complete: <spec-name>
Tasks: M/M done
Requirements: N/M satisfied
Changes made:
- <file 1>: <what changed>
- <file 2>: <what changed>
After completion
Follow references/after-completion.md for the context.md update flow. This step must run every time implementation ends — including after post-completion fixes.
Error handling
- Spec not found: List available specs and ask the user to choose.
- Dependency gate: Stop, list unmet dependencies from
requires, and tell the user to complete those specs first.
- Unclear requirement: Ask for clarification before implementing.
- Implementation paused: Keep status as
in-progress, tasks preserve progress for the next run.
Output rules
{SKILL_ASSETS_NOTICE}
- Follow the tech stack and conventions from
context.md.
- Write clean, idiomatic code — no unnecessary abstractions.
- All progress tracking lives in
plan.md located alongside spec.yaml in the spec folder.
- Update task status after each completed task, not all at the end of the implementation.
- Do not modify unrelated specs or unrelated files.
1---2name: mini-sdd-implement3description: Implement a feature from an existing spec file — write code, create tests, and update files to make a spec done. Use when executing development work defined in a spec, building or developing a feature, coding from a spec, or when asked to "implement the spec", "code this up", "develop the feature", or "follow the specification". Do not use for creating specs, updating project context, or proposing new features.4---5You are a Developer who has been dispatched to implement code, complete tasks, or resolving feedback based on an existing spec in `./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/`.67Reads the task list from the spec's `plan.md`, executes tasks one by one, tracks progress via checkboxes, and writes development notes into `spec.yaml` on completion. Supports resuming across sessions.89If you find that you've been going in circles or have a major question, it's OK to stop early and invite the reviewer for feedback. They can tell you what to do next.1011> **Note:** Task generation is handled by `mini-sdd-plan`. This skill only executes tasks already written in `plan.md`.1213---1415## Hook execution1617Check `./{ARTIFACT_MAIN_FOLDER}/mini-sdd.config.yml` for `hooks.implement.pre` and `hooks.implement.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.1819---2021## Entry point22231. Read `./{ARTIFACT_MAIN_FOLDER}/context.md` if it exists — use it as background for architecture decisions, tech stack, and conventions.242. Determine which spec to implement:25 2.1 If a spec name is provided in the input (e.g., `/mini-sdd-implement user-authentication`), use it.26 2.2 If no name is provided, scan spec folders in `./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/` and read each `spec.yaml` `feature` block. 27 - Present all `ready` (with all `requires` dependencies satisfied) and `in-progress` specs: 28 > `<spec-name>` → `status` (ready/in-progress) and ask the user to choose which one to implement.29 - If no specs exist, inform the user:30 > "No specs found in `./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/`. Use `/mini-sdd-spec` to create one first."313. Once a spec is selected, output:32 > "Selected spec: `<spec-name>`"334. Read `./{ARTIFACT_MAIN_FOLDER}/{SPECS_SUBFOLDER}/<spec-name>/spec.yaml` `feature` block (`status`, `requires`, `created`, `updated`) plus `components`/`constraints`, and `plan.md`.345. Verify the spec status and decide the flow:35 - `draft` → the spec has no plan yet. Stop and inform the user:36 > "`<spec-name>` has no implementation plan yet (status: draft). Run `/mini-sdd-plan <spec-name>` to generate the plan first."37 - `ready` → verify `plan.md` exists and has unchecked tasks, then proceed to **Execute tasks**.38 - Evaluate `requires:`: if any dependency is not `done`, stop and list the unmet ones with their current statuses.39 - If `plan.md` is missing or has no tasks, inform the user:40 > "`plan.md` has no tasks for `<spec-name>`. Run `/mini-sdd-plan` to generate the plan first."41 - `in-progress` → proceed to **Resume implementation**.42 - `done` → ask: _"This spec is already marked as done. Do you want to re-run it?"_ If yes, proceed to **Execute tasks** (all tasks will be re-run if already checked).4344---4546## Resume implementation47481. Read `plan.md`, find the first unchecked task (`- [ ]`), and show progress:49 > "📊 Resuming `<spec-name>`: N/M tasks complete. Next: \<task description\>. Continue?"502. On confirmation, proceed to **Execute tasks** from the first unchecked task.5152---5354## Execute tasks5556> **Metadata convention**: always write `updated: <today's date>` to the `feature` block of `spec.yaml` whenever you modify it.5758Before starting, set `feature.status` in `spec.yaml` to `in-progress`.5960For each unchecked task in `plan.md` in order:61621. Announce which task is being worked on:63 > "🔨 Task N/M: \<task description\>"642. Implement the code changes required for this task.653. Keep changes minimal and focused on the task.664. Mark the task complete **in `plan.md`**: `- [ ]` → `- [x]` right after the implementation of that task.6768**Pause if:**69- Task is unclear → ask for clarification70- Implementation reveals an issue → report and wait for guidance71- User interrupts → keep `feature.status` as `in-progress`, summarize progress7273---7475## Completion7677When all tasks are checked:78791. Review each requirement (every `components` and `constraints` entry) from `spec.yaml` and check that all are satisfied based on the implementation.802. In the `feature` block of `spec.yaml` set: `status: done`.813. Scan other specs whose `feature.requires:` contains `<spec-name>` and update them:82 - Remove `<spec-name>` from their `requires:` list.83 - If `requires` is now empty → set `status: ready`; otherwise keep it blocked (unmet `requires`).84 - Summarize any specs that became unblocked.854. Fill the `development_notes` key in `spec.yaml`: summarize all tasks implemented (not just this session), list every changed file with a short description, and note any follow-ups.865. Show a completion summary:8788```89✅ Implementation complete: <spec-name>9091Tasks: M/M done92Requirements: N/M satisfied9394Changes made:95- <file 1>: <what changed>96- <file 2>: <what changed>97```9899## After completion100101Follow [references/after-completion.md](./references/after-completion.md) for the `context.md` update flow. This step must run every time implementation ends — including after post-completion fixes.102103---104105## Error handling106107- **Spec not found**: List available specs and ask the user to choose.108- **Dependency gate**: Stop, list unmet dependencies from `requires`, and tell the user to complete those specs first.109- **Unclear requirement**: Ask for clarification before implementing.110- **Implementation paused**: Keep status as `in-progress`, tasks preserve progress for the next run.111112---113114## Output rules115116{SKILL_ASSETS_NOTICE}117- Follow the tech stack and conventions from `context.md`.118- Write clean, idiomatic code — no unnecessary abstractions.119- All progress tracking lives in `plan.md` located alongside `spec.yaml` in the spec folder.120- Update task status after each completed task, not all at the end of the implementation. 121- Do not modify unrelated specs or unrelated files.