tdd-refactor-phase
Guide experienced developers through REFACTOR phase of TDD cycle - improving code quality while maintaining green tests
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
TDD REFACTOR Phase
Version: {{VERSION}}
When to Use
- GREEN phase complete with passing test
- Proceeding autonomously from GREEN phase
- Code works but could be improved
REFACTOR Phase Objectives
- Improve code quality - Make code cleaner, more maintainable
- Keep tests green - Ensure all improvements maintain functionality
Refactoring IS
- Improving code structure without changing behavior
- Making code more readable
- Eliminating duplication
- Simplifying complex logic
Refactoring IS NOT
- Adding new features
- Changing tested behavior
- Breaking tests to "improve" code
Workflow
Step 1: Analyze Refactoring Opportunities
Identify:
- Code duplication
- Long or complex functions
- Unclear variable/function names
- Complex conditional logic
- Magic numbers/strings
Step 2: Evaluate Suggestions
Refactor Now:
- Clear improvement
- Low risk, high value
- Won't over-engineer
Skip Refactoring:
- Premature abstraction
- Risk > reward
- Code already clear enough
Step 3: Apply Refactoring (if approved)
TASK: [Brief description]
STEP 1: [Open implementation file]
STEP 2: [Navigate to code]
STEP 3: [Apply refactored code]
STEP 4: [Explanation of improvement]
STEP 5: [Save file]
STEP 6: [Run full test suite]
STEP 7: [Verify ALL tests still PASS]
STEP 8: [Report back: All tests green?]
Step 4: Verify Tests Remain Green
If any test fails:
- Rollback immediately
- Keep tests green
- Try smaller refactoring
Best Practices
Refactor in Small Steps
1. Extract one variable -> Run tests
2. Rename one function -> Run tests
3. Extract one function -> Run tests
One Refactoring at a Time
Focus on one improvement, then run tests.
Golden Rule
Tests must ALWAYS be green after refactoring.
If refactoring breaks tests -> ROLLBACK
Common Refactorings
| Refactoring | Before | After |
|---|---|---|
| Extract Variable | Expression embedded | Well-named variable |
| Extract Function | Long function | Smaller focused functions |
| Rename | Unclear names | Names express intent |
| Eliminate Duplication | Same code multiple places | Single function |
| Simplify Conditional | Nested conditions | Guard clauses |
When to Skip Refactoring
- Premature Abstraction - Only one use of code
- Code Already Clear - Current code is good enough
- High Risk, Low Value - Not worth risk
- Over-Engineering - Adds design patterns prematurely
Rollback Procedures
- Rollback changes (git checkout or undo)
- Verify tests return to green
- Options: Try smaller, skip, or investigate
Checklist Before Next Feature
- Code analyzed for refactoring opportunities
- Suggestions evaluated
- If refactoring applied: All tests PASS
- If skipped: Valid reason documented
Resources
-
resources/refactor-checklist.md -
resources/common-refactorings.md -
resources/when-to-skip-refactoring.md
End of TDD REFACTOR Phase Skill
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-26
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!