SDD Evolve Skill
Keep specifications in sync with implementation discoveries.
When to Use
- •Implementation reveals new requirements
- •Technical constraints discovered during development
- •Design changes needed based on learnings
- •Edge cases found that weren't in original spec
- •Architecture decisions made during implementation
Evolution Protocol
Step 1: Identify the Discovery
Categorize the change:
- •Discovery: New information that was unknown
- •Refinement: Clarification of existing requirement
- •Addition: New requirement not in original scope
- •Modification: Change to existing requirement
- •Removal: Requirement no longer needed
Step 2: Assess Impact
- •Which spec files are affected?
- •Does this change the plan?
- •Are there downstream impacts?
- •Should implementation pause for review?
Step 3: Document the Change
Add changelog entry with:
- •What changed
- •Why it changed
- •Impact on existing work
- •Decision made
Step 4: Update Specs
Modify the appropriate files:
- •
spec.mdfor requirement changes - •
plan.mdfor architecture changes - •
tasks.mdfor task adjustments - •
todo-list.mdfor new/removed items
Change Documentation Format
Add to the relevant spec file:
markdown
## Changelog ### [Date] - [Category]: [Brief Description] **Context**: [Why this change is needed] **Change**: [What specifically changed] **Impact**: [How this affects existing work] **Decision**: [What was decided and by whom] --- [Previous changelog entries...]
Evolution Categories
Discovery
markdown
### [Date] - Discovery: [Title] **Context**: During implementation of [task], discovered that [finding] **Change**: Added [new requirement/constraint] to spec **Impact**: [minimal/moderate/significant] - [explanation] **Decision**: Proceeding with [approach]
Refinement
markdown
### [Date] - Refinement: [Title] **Context**: Original requirement "[X]" was ambiguous **Change**: Clarified to mean [specific interpretation] **Impact**: None - aligns with existing implementation **Decision**: Updated spec for clarity
Addition
markdown
### [Date] - Addition: [Title] **Context**: [Why new requirement is needed] **Change**: Added requirement for [new feature/constraint] **Impact**: [New tasks required / timeline adjustment] **Decision**: [Approved by / scope discussion needed]
Modification
markdown
### [Date] - Modification: [Title] **Context**: Original approach [X] not feasible because [reason] **Change**: Changed from [old] to [new] **Impact**: [Rework required / tasks affected] **Decision**: [Rationale for new approach]
Removal
markdown
### [Date] - Removal: [Title] **Context**: [Why requirement no longer needed] **Change**: Removed [requirement/feature] **Impact**: [Tasks that can be skipped / simplification] **Decision**: [Who approved removal]
Best Practices
- •Document immediately - Don't wait until end of implementation
- •Be specific - Include enough detail to understand later
- •Link to context - Reference related tasks or discussions
- •Assess impact - Flag if review is needed before continuing
- •Preserve history - Never delete, always add changelog
Integration
- •Called during
sdd-implementersubagent work - •Triggered by
/evolvecommand - •Works with
sdd-verifierto validate changes - •Feeds into future
/auditruns - •Use the ask question tool if change requires stakeholder input