sdd-apply
SDD Apply
Implement tasks from SPECS_ROOT/changes/<name>/tasks.md.
Check off each task as it completes.
SPECS_ROOTis resolved by thesddrouter before this skill runs. Replace.specs/with your project's actual specs root in all paths below.
Invocation Notice
- Inform the user when this skill is being invoked by name:
sdd-apply.
Hard Gate
If tasks.md does not exist for the active change: STOP.
"No tasks to implement. Run
sdd-proposefirst to create the change artifacts."
Do not proceed without tasks.md.
When to Use
- A change has
tasks.mdand implementation should begin or continue - Resuming implementation after a pause
When Not to Use
- No
tasks.mdexists — runsdd-proposefirst - All tasks complete — run
sdd-verify, thensdd-sync, thensdd-archive
Process
Phase 1: Load Context
- Confirm which change to apply (ask if multiple active changes exist)
- Read
.specs/changes/<name>/tasks.md— full task list - Read
.specs/changes/<name>/design.md— architectural decisions to follow - Read
.specs/changes/<name>/specs/— delta specs for behavioral requirements - Read
.specs/specs/— baseline specs for full context - If
.specs/.sdd/schema-config.yamlexists, identify tasks that define schema contracts (endpoint definitions, model schemas, DDL changes) and check that they are sequenced before any tasks that consume them intasks.md. Surface any ordering gaps to the user before implementing.
Phase 2: Identify Starting Point
Check tasks.md for already-completed tasks (- [x]).
Start from the first unchecked task.
If all tasks are complete:
"All tasks are already complete. Run
sdd-verifyto confirm the implementation, thensdd-syncandsdd-archive."
Stop.
Phase 3: Implement Task-by-Task
For each unchecked task:
- Read the task — understand what it requires
- Check dependencies — are earlier tasks complete? If not, implement them first
- Implement — write the code
- Test — verify the implementation works If the test fails, stop and resolve the failure before proceeding to the next step.
- Check off — update
tasks.md:- [ ]→- [x]
Follow design decisions in design.md — don't diverge without reason.
Follow behavioral requirements in delta specs — these define what "correct" means.
If .specs/.sdd/schema-config.yaml exists and a task consumes a schema contract that is not yet defined, pause before implementing it.
Surface the dependency gap and confirm with the user whether to reorder tasks in tasks.md first.
Phase 4: After All Tasks
When all tasks are checked off:
"All tasks complete. Recommended next steps:
- Run
sdd-verifyto confirm implementation matches the change artifacts- Run
sdd-syncto merge delta specs into main specs- Run
sdd-archiveto complete the change"
Fluid Workflow
This skill can be invoked at any point after tasks.md exists — not only when all artifacts are complete.
- If implementation reveals a design issue, pause and suggest updating
design.mdor delta specs before continuing. - If scope changes mid-implementation, suggest updating
proposal.mdandtasks.md. - Don't treat the artifact set as frozen — work fluidly, but document changes.
Common Mistakes
- Implementing without reading design.md (misses architectural decisions)
- Not checking off tasks as they complete
- Implementing tasks out of order when dependencies exist
- Continuing past a failed task without resolving it
- Diverging from design decisions without documenting why
- Treating artifacts as frozen when implementation reveals issues (update them)
References
references/sdd-schema.md— schema config format (§ 3) and lifecycle policy (§ 4)