--- name: spec-driven-implementation description: Use when ready to implement designed features - breaks design into TDD tasks (Red-Green-Refactor), tracks progress with checkboxes in tasks.md, enforces strict testing discipline. Activates when user says "implement this", "let's code", "start execution", mentions "tasks", "TDD", or uses /dev-workflow:spec commands (tasks, execute). allowed-tools: Read, Write, Edit, MultiEdit, Glob, Grep, Bash, TodoWrite, TodoRead --- # Spec-Driven Implementation Skill ## Purpose Guide feature implementation through two structured phases: Task Breakdown (TDD) → Execution. This systematic approach ensures test-driven development, quality gates, and tracked progress from design to working code. ## Activation Triggers Activate this skill when: - User says "implement this feature" or "let's code this" - User mentions "tasks", "TDD", or "execution" - User uses `/dev-workflow:spec` command with implementation options (tasks, execute) - User is ready to start implementation after design approval - User says "break this down into tasks" - Design phase is complete and approved ## Prerequisites This skill requires completed planning from `spec-driven-planning` skill: - [ ] Feature directory exists: `docx/features/[NN-feature-name]/` - [ ] `requirements.md` is complete with EARS requirements - [ ] `design.md` is complete and approved **If prerequisites are missing:** > "Implementation requires completed planning. Run `/dev-workflow:spec` and complete options 1-3 first (Feature Creation, Requirements, Design)." --- ## Two-Phase Implementation Workflow ### 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] ``` **Task Sizing Guidelines:** - Each task should take 30-60 minutes - If longer, break into subtasks - Each task must be independently testable - Each task produces working, tested code **UltraThink Before Task Breakdown:** Before breaking design into tasks, activate deep thinking if: - Design involves complex algorithms or data structures - Integration points between components are unclear - Multiple implementation strategies are possible - Edge cases and error handling are non-trivial > 🗣 Say: "Let me ultrathink the implementation strategy before breaking this into tasks." **Questions to ultrathink:** - What's the simplest implementation that satisfies requirements? - Which parts are most likely to change? - Where are the hidden complexities? - What assumptions might break during implementation? - How will we test each component in isolation? - What could we build incrementally vs. all at once? **After UltraThink:** Create focused, testable tasks that validate assumptions early. **Task Categories:** 1. **Component Tasks** - Implement individual components - One component per task or split if large 2. **Integration Tasks** - Connect components - Test component interactions - Verify data flow 3. **Error Handling Tasks** - Implement error scenarios - Test edge cases - Verify error messages 4. **Documentation Tasks** - Write docstrings - Update README - Create API docs 5. **Final Verification Tasks** - Code review - Performance testing - Security review - Manual testing **Output:** Update `docx/features/[NN-feature-name]/tasks.md` with: - Implementation approach summary - Organized task list with checkboxes - Acceptance criteria for each task - Notes section for implementation considerations **User Confirmation:** > "Tasks defined with TDD cycle. Ready to begin implementation?" --- ### Phase 5: Execution **Goal:** Execute tasks systematically with quality gates **Execution Workflow:** For each task: 1. **Mark Task as In Progress** **Use Edit tool** on `docx/features/[NN-feature-name]/tasks.md`: - Find the task header: `[ ] Task N: [description]` - Replace with: `[→] Task N: [description]` - Also mark the RED phase checkbox as `[→]` **Example Edit call:** ``` Edit tool: file: docx/features/01-user-auth/tasks.md old_string: "[ ] Task 3: Implement JWT validation" new_string: "[→] Task 3: Implement JWT validation" ``` 2. **RED Phase** - Write failing test for the specific functionality - Run test suite to verify failure (test MUST fail) - **Use Edit tool** to check off RED phase: `[ ] RED: ...` → `[x] RED: ...` - Commit: `test: Add test for [functionality]` 3. **GREEN Phase** - Write minimal implementation to make test pass - Run tests until passing (all tests MUST pass) - Don't optimize yet (just make it work) - **Use Edit tool** to check off GREEN phase: `[ ] GREEN: ...` → `[x] GREEN: ...` - Commit: `feat: Implement [functionality]` 4. **REFACTOR Phase** - Clean up code (remove duplication, improve naming) - Run tests to ensure still passing - **Use Edit tool** to check off REFACTOR phase: `[ ] REFACTOR: ...` → `[x] REFACTOR: ...` - Commit: `refactor: Optimize [component]` 5. **Mark Task Complete** **Use Edit tool** on `docx/features/[NN-feature-name]/tasks.md`: - Change task header: `[→] Task N: ...` → `[x] Task N: ...` - Verify all acceptance criteria are checked: `[x]` - Update Progress Summary section (see instructions below) ### Task Tracking Protocol **CRITICAL: Use Edit tool to update tasks.md - don't just announce progress.** #### Workflow Summary ``` 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 Edit: [ ] GREEN → [→] GREEN ↓ Implement code ↓ Edit: [→] GREEN → [x] GREEN Edit: [ ] REFACTOR → [→] REFACTOR ↓ Refactor code ↓ Edit: [→] REFACTOR → [x] REFACTOR Edit: [→] Task N → [x] Task N Edit: Update Progress Summary ↓ Next task or finish ↓ Edit: Status "In Progress" → "Complete" ``` #### Edit Tool Usage Pattern **Always follow this pattern for every task:** 1. **Before starting any task:** ``` Use Edit tool to change [ ] → [→] in tasks.md ``` 2. **After completing each phase (RED/GREEN/REFACTOR):** ``` Use Edit tool to change [→] → [x] for that phase Use Edit tool to change [ ] → [→] for next phase ``` 3. **After completing full task:** ``` Use Edit tool to change [→] → [x] for task header Use Edit tool to update Progress Summary counts ``` 4. **Don't skip these Edit calls** - they're not optional suggestions, they're required operations. #### Announcing vs. Modifying **Wrong (Just Announcing):** ``` ✅ Task 1 complete Moving to Task 2... ``` **Right (Actually Modifying + Announcing):** ``` [Using Edit tool to mark Task 1 complete: [→] → [x]] [Using Edit tool to update Progress Summary: Completed 1/10] ✅ Task 1 complete [Using Edit tool to mark Task 2 in progress: [ ] → [→]] Starting Task 2: JWT token generation... ``` #### Progress Summary Maintenance The Progress Summary section must stay synchronized: **Before any tasks start:** ```markdown - Total Tasks: 10 - Completed: 0/10 - In Progress: None ``` **After Task 1 starts:** ```markdown - Total Tasks: 10 - Completed: 0/10 - In Progress: Task 1 - User model with password hashing ``` **After Task 1 completes:** ```markdown - Total Tasks: 10 - Completed: 1/10 - In Progress: Task 2 - JWT token generation ``` **Use Edit tool** to update these fields after every task completion. --- **Status Checkpoints:** Every 2-3 completed tasks, provide status update: ``` 🔄 Checkpoint Update: - ✅ Tests: [N/N] passing - ✅ Type check: No errors - ✅ Lint: Clean - 📝 Completed tasks: [X/Y] - 🎯 Next: [Next task description] [Confidence: X.X] ``` --- ### Quick Reference **Edit patterns already detailed above. Key reminders:** - Update Status header when starting/completing implementation - Use Grep to count tasks if needed: `grep -c "^\- \[x\] Task" tasks.md` - Update test coverage optionally: Run `npm run test:coverage` and Edit tasks.md --- **Auto-Trigger Code Quality Review:** Before each commit: - Use Skill tool to invoke: `dev-workflow:code-quality` - Review changes for issues - Address critical findings before commit **How to activate:** ``` Use Skill tool: Skill(skill: "dev-workflow:code-quality") ``` **Integration Points:** - Use Skill tool to invoke: `dev-workflow:test-driven-development` for strict TDD guidance - Use Skill tool to invoke: `dev-workflow:git-workflow` for smart commits - Use Skill tool to invoke: `dev-workflow:code-quality` for pre-commit reviews **How to activate integration skills:** ``` # For TDD enforcement Use Skill tool: Skill(skill: "dev-workflow:test-driven-development") # For git operations Use Skill tool: Skill(skill: "dev-workflow:git-workflow") # For code review Use Skill tool: Skill(skill: "dev-workflow:code-quality") ``` **Completion Criteria:** Feature is complete when: - [ ] 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? ``` --- ## Test-Driven Development (TDD) Principles ### The Red-Green-Refactor Cycle **RED (Write Failing Test):** ``` Write a test that describes what the code should do. The test MUST fail because the code doesn't exist yet. This proves the test is actually testing something. ``` **GREEN (Make Test Pass):** ``` Write the MINIMUM code needed to make the test pass. Don't worry about elegance or optimization. Just make it work. ``` **REFACTOR (Improve Code):** ``` Now that tests pass, improve the code: - Remove duplication - Improve naming - Simplify logic - Optimize performance Run tests after each change to ensure they still pass. ``` ### TDD Best Practices **DO:** - Write test before production code (always RED first) - Write smallest test possible - Run tests frequently - Commit at each phase (RED, GREEN, REFACTOR) - Keep tests fast and independent **DON'T:** - Write production code without a failing test - Write multiple tests before implementation - Skip the refactor phase - Test implementation details (test behavior) - Let tests become slow or flaky --- ## Examples ### Example 1: Starting Task Breakdown **User:** "/dev-workflow:spec tasks" **Assistant:** ``` Activating spec-driven-implementation skill at Phase 4: Task Breakdown Found feature: docx/features/01-user-authentication/ ✅ requirements.md exists ✅ design.md exists Reading design to create TDD tasks... Breaking down into testable 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 [ ] Hash is verifiable [ ] Task 2: JWT token generation [ ] RED: Test token generation with user ID [ ] GREEN: Implement JWT signing [ ] REFACTOR: Extract to auth service Acceptance Criteria: [ ] Token contains user ID [ ] Token expires in 24 hours [ ] Token is properly signed [...8 more tasks...] Tasks defined. Ready to begin implementation? ``` ### Example 2: Executing Implementation **User:** "Yes, let's start" **Assistant:** ``` Activating Phase 5: Execution [Using Edit tool on docx/features/01-user-authentication/tasks.md] [Changing "**Status:** Not Started" to "**Status:** In Progress"] [Using Edit tool to mark Task 1 in progress] [Changing "[ ] Task 1: User model with password hashing" to "[→] Task 1: User model with password hashing"] [Using Edit tool to mark RED phase in progress] [Changing " [ ] RED: Test password hashing on save" to " [→] RED: Test password hashing on save"] Starting Task 1: User model with password hashing RED Phase: Writing failing test... [Creates test file tests/models/user.test.js with failing test] Running tests... ❌ 1 failing (expected) [Using Edit tool to check off RED phase] [Changing " [→] RED: Test password hashing on save" to " [x] RED: Test password hashing on save"] Commit: test: Add test for user password hashing [Using Edit tool to mark GREEN phase in progress] [Changing " [ ] GREEN: Implement bcrypt hashing" to " [→] GREEN: Implement bcrypt hashing"] GREEN Phase: Implementing minimal code... [Implements password hashing in src/models/user.js] Running tests... ✅ All passing [Using Edit tool to check off GREEN phase] [Changing " [→] GREEN: Implement bcrypt hashing" to " [x] GREEN: Implement bcrypt hashing"] Commit: feat: Implement user password hashing with bcrypt [Using Edit tool to mark REFACTOR phase in progress] [Changing " [ ] REFACTOR: Extract hashing to utility" to " [→] REFACTOR: Extract hashing to utility"] REFACTOR Phase: Extracting to utility... [Refactors code to src/utils/crypto.js] Running tests... ✅ All passing [Using Edit tool to check off REFACTOR phase] [Changing " [→] REFACTOR: Extract hashing to utility" to " [x] REFACTOR: Extract hashing to utility"] Commit: refactor: Extract password hashing to utility module [Using Edit tool to mark Task 1 complete] [Changing "[→] Task 1: User model with password hashing" to "[x] Task 1: User model with password hashing"] [Using Edit tool to update Progress Summary] [Changing "- Completed: 0/10" to "- Completed: 1/10"] [Changing "- In Progress: Task 1 - User model with password hashing" to "- In Progress: Task 2 - JWT token generation"] ✅ Task 1 complete 🔄 Checkpoint Update: - ✅ Tests: 3/3 passing - ✅ Type check: No errors - ✅ Lint: Clean - 📝 Completed tasks: 1/10 - 🎯 Next: Task 2 - JWT token generation [Confidence: 0.9] Continue to Task 2? ``` --- ## Back to Planning If during implementation you discover: - Missing requirements - Design needs changes - Unclear specifications **STOP implementation and return to planning:** > "Implementation blocked: [issue]. Need to revisit [requirements/design]. Use `/dev-workflow:spec [requirements/design]` to update planning documents." Then use Skill tool to invoke: `dev-workflow:spec-driven-planning` to update planning documents before continuing implementation. **How to return to planning:** ``` Use Skill tool: Skill(skill: "dev-workflow:spec-driven-planning") ``` --- ## Notes ### Critical Requirements - **NEVER write production code without a failing test first** - **ALWAYS use Edit tool to update tasks.md checkboxes** - don't just announce progress - **ALWAYS use Edit tool to update Progress Summary** after each task completion - **Use Edit tool to update Status header** when starting/completing implementation ### Task Tracking Best Practices - **Mark in progress:** Use Edit tool to change `[ ]` → `[→]` before starting task - **Mark complete:** Use Edit tool to change `[→]` → `[x]` after finishing task - **Update Progress Summary:** Use Edit tool after every task to keep counts accurate - **File updates are mandatory:** Actually modify tasks.md, don't just announce ### Implementation Guidelines - Provide checkpoint updates every 2-3 tasks - Use Skill tool to invoke: `dev-workflow:code-quality` before commits - Use Skill tool to invoke: `dev-workflow:git-workflow` for smart commit messages - Follow TDD cycle religiously (RED → GREEN → REFACTOR) - Stop and return to planning if design issues discovered ### Remember **Announcing progress ≠ Updating files** Wrong: ``` ✅ Task 1 complete Moving to Task 2... ``` Right: ``` [Using Edit tool to mark Task 1 complete: [→] → [x]] [Using Edit tool to update Progress Summary] ✅ Task 1 complete ```