Antigravity-skills tdd-workflows-tdd-refactor
Use when working with tdd workflows tdd refactor
git clone https://github.com/rmyndharis/antigravity-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/rmyndharis/antigravity-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/tdd-workflows-tdd-refactor" ~/.claude/skills/rmyndharis-antigravity-skills-tdd-workflows-tdd-refactor && rm -rf "$T"
skills/tdd-workflows-tdd-refactor/SKILL.mdUse this skill when
- Working on tdd workflows tdd refactor tasks or workflows
- Needing guidance, best practices, or checklists for tdd workflows tdd refactor
Do not use this skill when
- The task is unrelated to tdd workflows tdd refactor
- You need a different domain or tool outside this scope
Instructions
- Clarify goals, constraints, and required inputs.
- Apply relevant best practices and validate outcomes.
- Provide actionable steps and verification.
- If detailed examples are required, open
.resources/implementation-playbook.md
Refactor code with confidence using comprehensive test safety net:
[Extended thinking: This tool uses the tdd-orchestrator agent (opus model) for sophisticated refactoring while maintaining all tests green. It applies design patterns, improves code quality, and optimizes performance with the safety of comprehensive test coverage.]
Usage
Use Task tool with subagent_type="tdd-orchestrator" to perform safe refactoring.
Prompt: "Refactor this code while keeping all tests green: $ARGUMENTS. Apply TDD refactor phase:
Core Process
1. Pre-Assessment
- Run tests to establish green baseline
- Analyze code smells and test coverage
- Document current performance metrics
- Create incremental refactoring plan
2. Code Smell Detection
- Duplicated code → Extract methods/classes
- Long methods → Decompose into focused functions
- Large classes → Split responsibilities
- Long parameter lists → Parameter objects
- Feature Envy → Move methods to appropriate classes
- Primitive Obsession → Value objects
- Switch statements → Polymorphism
- Dead code → Remove
3. Design Patterns
- Apply Creational (Factory, Builder, Singleton)
- Apply Structural (Adapter, Facade, Decorator)
- Apply Behavioral (Strategy, Observer, Command)
- Apply Domain (Repository, Service, Value Objects)
- Use patterns only where they add clear value
4. SOLID Principles
- Single Responsibility: One reason to change
- Open/Closed: Open for extension, closed for modification
- Liskov Substitution: Subtypes substitutable
- Interface Segregation: Small, focused interfaces
- Dependency Inversion: Depend on abstractions
5. Refactoring Techniques
- Extract Method/Variable/Interface
- Inline unnecessary indirection
- Rename for clarity
- Move Method/Field to appropriate classes
- Replace Magic Numbers with constants
- Encapsulate fields
- Replace Conditional with Polymorphism
- Introduce Null Object
6. Performance Optimization
- Profile to identify bottlenecks
- Optimize algorithms and data structures
- Implement caching where beneficial
- Reduce database queries (N+1 elimination)
- Lazy loading and pagination
- Always measure before and after
7. Incremental Steps
- Make small, atomic changes
- Run tests after each modification
- Commit after each successful refactoring
- Keep refactoring separate from behavior changes
- Use scaffolding when needed
8. Architecture Evolution
- Layer separation and dependency management
- Module boundaries and interface definition
- Event-driven patterns for decoupling
- Database access pattern optimization
9. Safety Verification
- Run full test suite after each change
- Performance regression testing
- Mutation testing for test effectiveness
- Rollback plan for major changes
10. Advanced Patterns
- Strangler Fig: Gradual legacy replacement
- Branch by Abstraction: Large-scale changes
- Parallel Change: Expand-contract pattern
- Mikado Method: Dependency graph navigation
Output Requirements
- Refactored code with improvements applied
- Test results (all green)
- Before/after metrics comparison
- Applied refactoring techniques list
- Performance improvement measurements
- Remaining technical debt assessment
Safety Checklist
Before committing:
- ✓ All tests pass (100% green)
- ✓ No functionality regression
- ✓ Performance metrics acceptable
- ✓ Code coverage maintained/improved
- ✓ Documentation updated
Recovery Protocol
If tests fail:
- Immediately revert last change
- Identify breaking refactoring
- Apply smaller incremental changes
- Use version control for safe experimentation
Example: Extract Method Pattern
Before:
class OrderProcessor { processOrder(order: Order): ProcessResult { // Validation if (!order.customerId || order.items.length === 0) { return { success: false, error: "Invalid order" }; } // Calculate totals let subtotal = 0; for (const item of order.items) { subtotal += item.price * item.quantity; } let total = subtotal + (subtotal * 0.08) + (subtotal > 100 ? 0 : 15); // Process payment... // Update inventory... // Send confirmation... } }
After:
class OrderProcessor { async processOrder(order: Order): Promise<ProcessResult> { const validation = this.validateOrder(order); if (!validation.isValid) return ProcessResult.failure(validation.error); const orderTotal = OrderTotal.calculate(order); const inventoryCheck = await this.inventoryService.checkAvailability(order.items); if (!inventoryCheck.available) return ProcessResult.failure(inventoryCheck.reason); await this.paymentService.processPayment(order.paymentMethod, orderTotal.total); await this.inventoryService.reserveItems(order.items); await this.notificationService.sendOrderConfirmation(order, orderTotal); return ProcessResult.success(order.id, orderTotal.total); } private validateOrder(order: Order): ValidationResult { if (!order.customerId) return ValidationResult.invalid("Customer ID required"); if (order.items.length === 0) return ValidationResult.invalid("Order must contain items"); return ValidationResult.valid(); } }
Applied: Extract Method, Value Objects, Dependency Injection, Async patterns
Code to refactor: $ARGUMENTS"