Spec-Driven Implementation Skill
Purpose
Execute the planning artifacts produced by spec-driven-planning. The skill auto-detects which mode the feature is in and runs the matching playbook:
- Quick mode (
plan.mdexists) — follow bite-sized steps, run verification commands, commit. No RED-GREEN-REFACTOR. Tests welcome but not mandated. - Full mode (
tasks.mdexists) — strict TDD per task: RED → GREEN → REFACTOR, traceability to REQ-### IDs, quality gates between tasks.
Activation Triggers
- User says "implement this feature", "let's code this", "execute the plan"
- User mentions "tasks", "TDD", or "execution"
- User uses
/dev-workflow:specwithtasksorexecute - Planning phase is complete
Mode Detection (DO THIS FIRST)
Before doing anything, find the active feature folder and detect mode:
1. ls docx/features/ → pick most recent or user-named feature
2. Inside docx/features/[NN-name]/, look for:
- plan.md only → QUICK MODE
- tasks.md only → FULL MODE
- tasks.md + plan.archived.md → FULL MODE (post-upgrade; archive is informational, ignored for routing)
- plan.md + tasks.md (no archive) → STOP AND ASK: ambiguous state.
Likely a hand-conversion in progress.
Ask user which file is authoritative.
Do NOT auto-pick — risk of clobbering.
- neither → ERROR: "No plan/spec found. Run /dev-workflow:spec first."
plan.archived.md is informational only and never affects mode detection — a clean post-upgrade state has tasks.md + plan.archived.md and routes to Full.
Announce the mode:
"Detected [Quick/Full] mode from
docx/features/[NN-name]/[plan.md|tasks.md]. Running [Quick/Full] execution."
Then run the matching section below.
Quick Mode Execution
Source: docx/features/[NN-name]/plan.md
Philosophy: Behavior-based verification, not test-suite-based. The plan already tells you exactly what to do.
Pre-flight
- Read
plan.mdend-to-end - Review critically — raise concerns BEFORE starting:
- Are file paths real? (sample-check 1-2 with Read)
- Do the steps actually solve the Goal?
- Are there obvious gaps?
- If concerns: surface them to the user, wait for guidance
- If clean: proceed
Per-task loop
For each task in the plan:
- Mark task as in-progress — Edit the Progress section:
- [ ] Task N→- [→] Task N - For each step in the task (steps are themselves checkboxes
- [ ]in the template):- Execute the action (write code from the plan, run the command, etc.)
- Run the verification command shown in the plan
- Compare actual output to "Expected:" — if mismatch, stop and ask, don't guess
- Edit
plan.mdto flip the step's- [ ]→- [x]immediately after completing it
- Commit using the message from the plan (the commit step itself is one of the checkboxed steps)
- Mark task complete — Edit the Progress section:
- [→] Task N→- [x] Task N
Quick mode rules
- No RED-GREEN-REFACTOR enforcement. If the plan lists a test step, do it. If not, don't invent one.
- Opting into TDD per-task is allowed. If a specific task warrants a test, the plan author adds an explicit test step (e.g., "1. Write failing test in
tests/foo.test.ts... 2. Verify:npm test foo→ expect FAIL"). Execute it as ordinary verification. No test step in the plan = no test required. - Don't expand scope. The plan is the contract. New ideas → tell the user, don't silently add tasks.
- Use Edit on
plan.md, don't just announce progress. Mark step-level checkboxes (- [ ]→- [x]) as you complete each numbered step within a task — this preserves resumability if interrupted mid-task. - Stop when blocked. Failing verification, missing file, ambiguous step → ask.
- No quality gate between tasks beyond what the plan specifies. (Optionally invoke
dev-workflow:reviewbefore commits if the user requested it.)
Quick mode completion
When all tasks are [x]:
- Update
Status:line inplan.mdtoComplete - Run any final verification listed in the plan
- Report:
Quick implementation complete: [Feature Name]
- Tasks: N/N
- Commits: M
- Files changed: K
Plan: docx/features/[NN-name]/plan.md
Ready for PR or further work?
Full Mode Execution
Source: docx/features/[NN-name]/{requirements.md, design.md, tasks.md}
Prerequisites Check
- [ ]
requirements.mdcomplete (EARS, REQ-### IDs) - [ ]
design.mdcomplete and approved - [ ]
tasks.mdexists (Phase 4 done) OR run Phase 4 below
If tasks.md is empty/missing, run Phase 4 first.
Pre-flight Review (before Phase 4)
Before breaking design into tasks or executing existing tasks, critically review the planning artifacts:
- Are referenced file paths real? Sample-check 1-2 paths from
design.mdwith Read. Hallucinated paths are a strong signal the design wasn't grounded in the actual codebase. - Do the requirements actually match what the user asked for? Re-read the original request and check
requirements.mdfor drift. - Does the design solve the requirements? Each REQ-### should map to at least one design component.
- Are there obvious gaps? Missing error handling, undefined interfaces, hand-waved sections.
If concerns: STOP. Surface them to the user BEFORE writing tasks or code. Don't push through hoping it'll work out.
🗣 Say: "Pre-flight: [N concerns found / clean — proceeding to Phase 4]."
Phase 4: Task Breakdown (TDD Focus)
Goal: Break design into small, testable tasks following Red-Green-Refactor
Task Structure:
Each task follows TDD cycle:
[ ] Task N: [Description]
[ ] RED: Write failing test for [functionality]
[ ] GREEN: Implement minimal code to pass test
[ ] REFACTOR: Clean up and optimize
Acceptance Criteria:
[ ] [Specific criterion 1]
[ ] [Specific criterion 2]
Linked Requirements: REQ-###, REQ-###
Traceability Rules:
- Every task must list the requirement IDs it satisfies (from requirements.md)
- All requirements must appear in at least one task
- Repeat IDs across tasks if a requirement spans multiple tasks
Task Sizing: 30-60 minutes each. If longer, break into subtasks. Each task must be independently testable and produce working, tested code.
UltraThink Before Task Breakdown: Before breaking design into tasks, activate deep thinking if design involves complex algorithms, unclear integration points, multiple strategies, or non-trivial edge cases.
"Let me ultrathink the implementation strategy before breaking this into tasks."
Questions to ultrathink:
- What's the simplest implementation that satisfies requirements?
- Where are the hidden complexities?
- What assumptions might break during implementation?
- How will we test each component in isolation?
Task Categories:
- Component Tasks - Individual components implementation
- Integration Tasks - Connect components, test interactions, verify data flow
- Error Handling Tasks - Error scenarios, edge cases, error messages
- Documentation Tasks - Docstrings, README updates, API docs
- Final Verification Tasks - Code review, performance, security, manual testing
Output: Update docx/features/[NN-feature-name]/tasks.md with implementation approach summary, organized task list with checkboxes, acceptance criteria, and notes.
"Tasks defined with TDD cycle. Ready to begin implementation?"
Phase 5: Execution (Full Mode TDD)
Goal: Execute tasks systematically with quality gates
For each task:
-
Mark Task as In Progress - Edit
tasks.md:[ ] Task N→[→] Task N, mark RED as[→] -
RED Phase - Write failing test, verify failure, Edit to check off RED
[x], commit:test: Add test for [functionality] -
GREEN Phase - Write minimal implementation, all tests must pass, Edit to check off GREEN
[x], commit:feat: Implement [functionality] -
REFACTOR Phase - Clean up code, tests still passing, Edit to check off REFACTOR
[x], commit:refactor: Optimize [component] -
Mark Task Complete - Edit:
[→] Task N→[x] Task N, verify acceptance criteria checked, update Progress Summary
Task Tracking Protocol
CRITICAL: Use Edit tool to update tasks.md - don't just announce progress.
Start Phase 5
↓
Edit: Status "Not Started" → "In Progress"
↓
For each task:
Edit: [ ] Task N → [→] Task N
Edit: [ ] RED → [→] RED
Write failing test
Edit: [→] RED → [x] RED, [ ] GREEN → [→] GREEN
Implement code
Edit: [→] GREEN → [x] GREEN, [ ] REFACTOR → [→] REFACTOR
Refactor code
Edit: [→] REFACTOR → [x] REFACTOR, [→] Task N → [x] Task N
Edit: Update Progress Summary
↓
Next task or finish
↓
Edit: Status "In Progress" → "Complete"
Announcing progress is NOT updating files. Always use Edit tool to modify tasks.md, then announce.
Progress Summary Maintenance
Keep the Progress Summary section in tasks.md synchronized after every task:
- Total Tasks: 10
- Completed: X/10
- In Progress: Task N - [description]
Status Checkpoints
Every 2-3 completed tasks:
Checkpoint Update:
- Tests: [N/N] passing
- Type check: No errors
- Lint: Clean
- Completed tasks: [X/Y]
- Next: [Next task description]
[Confidence: X.X]
Auto-Trigger Code Quality Review
Before each commit, invoke dev-workflow:review to review changes and address critical findings.
Integration Skills:
dev-workflow:test-driven-development- Strict TDD guidancedev-workflow:git-workflow- Smart commitsdev-workflow:review- Pre-commit reviews
Completion Criteria:
- [ ] All tasks checked off
- [ ] All tests passing
- [ ] No linter errors
- [ ] No type errors
- [ ] Code review passed
- [ ] Documentation updated
- [ ] Manual testing complete
Final Output:
Feature Complete: [Feature Name]
Summary:
- Total tasks: [N]
- Tests added: [N]
- Test coverage: [X%]
- Commits: [N]
- Files changed: [N]
Ready to create PR or merge to main?
TDD Principles
Red-Green-Refactor Cycle
- RED: Write a test that describes what the code should do. It MUST fail because the code doesn't exist yet.
- GREEN: Write MINIMUM code to make the test pass. Don't optimize, just make it work.
- REFACTOR: Improve the code (remove duplication, improve naming, simplify). Run tests after each change.
TDD Rules
DO: Write test before code (always RED first), write smallest test possible, run tests frequently, commit at each phase, keep tests fast and independent.
DON'T: Write production code without a failing test, write multiple tests before implementation, skip refactor phase, test implementation details (test behavior), let tests become slow or flaky.
Example: Task Breakdown
User: "/dev-workflow:spec tasks"
Assistant:
Activating Phase 4: Task Breakdown
Found feature: docx/features/01-user-authentication/
Reading design to create TDD tasks...
[ ] Task 1: User model with password hashing
[ ] RED: Test password hashing on save
[ ] GREEN: Implement bcrypt hashing
[ ] REFACTOR: Extract hashing to utility
Acceptance Criteria:
[ ] Passwords are hashed before storage
[ ] Original password is not stored
Linked Requirements: REQ-001, REQ-002
[...more tasks...]
Tasks defined. Ready to begin implementation?
Back to Planning
If during implementation you discover missing requirements, design changes needed, or unclear specifications:
"Implementation blocked: [issue]. Need to revisit [requirements/design]. Use
/dev-workflow:spec [requirements/design]to update planning documents."
Invoke dev-workflow:spec-driven-planning to update planning documents before continuing.
Critical Reminders
- NEVER write production code without a failing test first
- ALWAYS use Edit tool to update tasks.md checkboxes - don't just announce progress
- ALWAYS update Progress Summary after each task completion
- Update Status header when starting/completing implementation
- Follow TDD cycle religiously (RED → GREEN → REFACTOR)
- Provide checkpoint updates every 2-3 tasks
- Stop and return to planning if design issues discovered