<turbo-stream action="update" target="modal_container"><template>
  <div data-controller="agent-modal"
     data-agent-modal-current-tab-value="overview"
     class="hidden fixed inset-0 z-50">

  <!-- Backdrop -->
  <div data-action="click->agent-modal#close"
       data-agent-modal-target="backdrop"
       class="fixed inset-0 bg-black/70 transition-opacity duration-200 opacity-0 backdrop-blur-sm"></div>

  <!-- Modal -->
  <div class="fixed inset-0 overflow-y-auto">
    <div class="flex min-h-full items-center justify-center p-4 sm:p-6">
      <div data-agent-modal-target="modal"
           class="modal-content relative w-full max-w-[90vw] transform transition-all duration-200 opacity-0 scale-95">

        <div class="relative bg-white dark:bg-gray-800 rounded-xl shadow-2xl border border-gray-200 dark:border-gray-700 h-[90vh] flex flex-col">

          <!-- Header with Tabs -->
          <div class="flex-shrink-0 border-b border-gray-200 dark:border-gray-700">
            <!-- Title and Close -->
            <div class="flex items-center justify-between px-6 py-4">
              <div>
                <h2 class="text-2xl font-bold text-gray-900 dark:text-white">Tdd Refactoring Assistant</h2>
                <p class="text-sm text-gray-500 dark:text-gray-400 mt-1">
                  by <a class="hover:text-amber-600 dark:hover:text-amber-400 transition-colors" data-turbo-frame="_top" href="/authors/0199c65d-fb71-77fb-a296-59ef21fceae1">wshobson/agents</a>
                </p>
              </div>
              <button type="button"
                      data-action="click->agent-modal#close"
                      class="p-2 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200">
                <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
                </svg>
              </button>
            </div>

            <!-- Action Buttons -->
            <div class="px-6 pb-4 flex flex-wrap items-center gap-3">

              <a data-turbo-frame="_top" class="inline-flex items-center gap-2 px-4 py-2 border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 rounded-lg hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors" href="/agents/tdd-refactoring-assistant">
                <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" />
                </svg>
                View Full Page
</a>            </div>

            <!-- Tabs -->
            <div class="px-6">
              <nav class="flex gap-1 overflow-x-auto" aria-label="Tabs">
                <button type="button"
                        data-action="click->agent-modal#switchTab"
                        data-tab="overview"
                        data-agent-modal-target="tab"
                        class="px-4 py-2 text-sm font-medium rounded-t-lg whitespace-nowrap transition-colors border-b-2 border-transparent text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 hover:border-gray-300 dark:hover:border-gray-600 [&[data-active]]:text-amber-600 [&[data-active]]:dark:text-amber-400 [&[data-active]]:border-amber-600 [&[data-active]]:dark:border-amber-400 outline-none focus:outline-none active:outline-none">
                  Overview
                </button>

                  <button type="button"
                          data-action="click->agent-modal#switchTab"
                          data-tab="0199c678-0800-762e-ba53-df71c85f5db9"
                          data-agent-modal-target="tab"
                          class="px-4 py-2 text-sm font-medium rounded-t-lg whitespace-nowrap transition-colors border-b-2 border-transparent text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-100 hover:border-gray-300 dark:hover:border-gray-600 [&[data-active]]:text-amber-600 [&[data-active]]:dark:text-amber-400 [&[data-active]]:border-amber-600 [&[data-active]]:dark:border-amber-400 outline-none focus:outline-none active:outline-none">
                    <div class="flex items-center gap-2"><img alt="Claude" class="w-4 h-4" loading="lazy" src="/assets/claude-7b230d75.svg" /><span class="">Claude</span></div>
                  </button>
              </nav>
            </div>
          </div>

          <!-- Tab Content -->
          <div class="flex-1 overflow-hidden">
            <!-- Overview Tab -->
            <div data-agent-modal-target="tabContent"
                 data-tab="overview"
                 class="hidden h-full overflow-y-auto p-6">
              <div class="space-y-6">
  <div>
    <h3 class="text-lg font-semibold text-gray-900 dark:text-white mb-2">Description</h3>
    <div class="text-gray-600 dark:text-gray-400 leading-relaxed">
      <div class="lexxy-content">
  A specialized code refactoring assistant that maintains test coverage while applying design patterns and best practices
</div>

    </div>
  </div>

  <div>
    <h3 class="text-lg font-semibold text-gray-900 dark:text-white mb-2">Available Platforms</h3>
    <div class="flex flex-wrap gap-2">
        <span class="inline-flex items-center gap-1.5 px-3 py-1 text-sm bg-gray-100 dark:bg-gray-800 text-gray-700 dark:text-gray-300 rounded-md">
            <img class="w-4 h-4" alt="Claude" src="/assets/claude-7b230d75.svg" />
          claude
        </span>
    </div>
  </div>

</div>

            </div>

            <!-- Platform Implementation Tabs -->
              <div data-agent-modal-target="tabContent"
                   data-tab="0199c678-0800-762e-ba53-df71c85f5db9"
                   class="hidden h-full">
                <div class="h-full flex flex-col lg:flex-row">
                  <!-- Sidebar (30%) -->
                  <div class="lg:w-[30%] border-b lg:border-b-0 lg:border-r border-gray-200 dark:border-gray-700 p-6 lg:overflow-y-auto">
                    <div class="flex items-center justify-between mb-4">
                      <div class="flex items-center gap-2"><img alt="Claude" class="w-8 h-8" loading="lazy" src="/assets/claude-7b230d75.svg" /><span class="text-xl font-semibold">Claude</span></div>

                      <!-- Quick Actions -->
                      <div class="flex items-center gap-1">
                        
  <button data-controller="download"
          data-download-url-value="/implementations/0199c678-0800-762e-ba53-df71c85f5db9/download"
          data-download-implementation-id-value="0199c678-0800-762e-ba53-df71c85f5db9"
          data-download-agent-id-value="0199c678-07df-7ce9-bc87-58e2876f73d0"
          data-action="click->download#handleClick"
          class="p-2 rounded-lg hover:bg-gray-200 dark:hover:bg-gray-700 transition-colors group"
          title="Download">
    <svg class="w-5 h-5 text-gray-400 dark:text-gray-500 group-hover:text-gray-600 dark:group-hover:text-gray-300" fill="none" stroke="currentColor" viewBox="0 0 24 24">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/>
    </svg>
  </button>


                      </div>
                    </div>

                    <div class="flex items-center gap-2 text-sm text-gray-500 dark:text-gray-400 mb-6">
                      <span>Version 1.0.1</span>
                        <span class="text-gray-300 dark:text-gray-700">•</span>
                        <span class="inline-flex items-center gap-1" title="MIT License">
                          <img class="w-3 h-3 text-gray-600 dark:text-gray-400" alt="MIT" src="/assets/mit_license-736a4952.svg" />
                          <span class="text-xs">MIT</span>
                        </span>
                    </div>


                    <!-- Copy Button -->
                    <button type="button"
                            data-action="click->agent-modal#copyCode"
                            data-implementation-id="0199c678-0800-762e-ba53-df71c85f5db9"
                            class="w-full inline-flex items-center justify-center gap-2 px-4 py-2 bg-gray-900 dark:bg-gray-700 text-white rounded-lg hover:bg-gray-800 dark:hover:bg-gray-600 transition-colors [&[data-copied]]:!bg-green-600 [&[data-copied]]:dark:!bg-green-500 mb-3">
                      <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 5H6a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2v-1M8 5a2 2 0 002 2h2a2 2 0 002-2M8 5a2 2 0 012-2h2a2 2 0 012 2m0 0h2a2 2 0 012 2v3m2 4H10m0 0l3-3m-3 3l3 3" />
                      </svg>
                      <span>Copy to Clipboard</span>
                    </button>

                    <!-- Download Button -->
                    
  <button data-controller="download"
          data-download-url-value="/implementations/0199c678-0800-762e-ba53-df71c85f5db9/download"
          data-download-implementation-id-value="0199c678-0800-762e-ba53-df71c85f5db9"
          data-download-agent-id-value="0199c678-07df-7ce9-bc87-58e2876f73d0"
          data-action="click->download#handleClick"
          class="w-full px-4 py-2 bg-amber-600 text-white text-sm rounded-md hover:bg-amber-700 transition-colors text-center font-medium">
    Download
  </button>

                  </div>

                  <!-- Code Content (70%) -->
                  <div class="flex-1 lg:w-[70%] overflow-y-auto p-6 bg-gray-50 dark:bg-gray-900/50">
                    <pre class="text-sm leading-relaxed text-gray-900 dark:text-gray-100 whitespace-pre-wrap font-mono" data-code-content="0199c678-0800-762e-ba53-df71c85f5db9">---
model: claude-opus-4-1
---

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.]

## Refactoring Process

Use Task tool with subagent_type=&quot;tdd-orchestrator&quot; to perform safe refactoring.

Prompt: &quot;Refactor this code while keeping all tests green: $ARGUMENTS. Apply TDD refactor phase excellence:

1. **Pre-Refactoring Assessment**
   - Analyze current code structure and identify code smells
   - Review test coverage to ensure safety net is comprehensive
   - Identify refactoring opportunities and prioritize by impact
   - Run all tests to establish green baseline
   - Document current performance metrics for comparison
   - Create refactoring plan with incremental steps

2. **Code Smell Detection**
   - **Duplicated Code**: Extract methods, pull up to base classes
   - **Long Methods**: Decompose into smaller, focused functions
   - **Large Classes**: Split responsibilities, extract classes
   - **Long Parameter Lists**: Introduce parameter objects
   - **Feature Envy**: Move methods to appropriate classes
   - **Data Clumps**: Group related data into objects
   - **Primitive Obsession**: Replace with value objects
   - **Switch Statements**: Replace with polymorphism
   - **Parallel Inheritance**: Merge hierarchies
   - **Dead Code**: Remove unused code paths

3. **Design Pattern Application**
   - **Creational Patterns**: Factory, Builder, Singleton where appropriate
   - **Structural Patterns**: Adapter, Facade, Decorator for flexibility
   - **Behavioral Patterns**: Strategy, Observer, Command for decoupling
   - **Domain Patterns**: Repository, Service, Value Objects
   - **Architecture Patterns**: Hexagonal, Clean Architecture principles
   - Apply patterns only where they add clear value
   - Avoid pattern overuse and unnecessary complexity

4. **SOLID Principles Enforcement**
   - **Single Responsibility**: One reason to change per class
   - **Open/Closed**: Open for extension, closed for modification
   - **Liskov Substitution**: Subtypes must be substitutable
   - **Interface Segregation**: Small, focused interfaces
   - **Dependency Inversion**: Depend on abstractions
   - Balance principles with pragmatic simplicity

5. **Refactoring Techniques Catalog**
   - **Extract Method**: Isolate code blocks into named methods
   - **Inline Method**: Remove unnecessary indirection
   - **Extract Variable**: Name complex expressions
   - **Rename**: Improve names for clarity and intent
   - **Move Method/Field**: Relocate to appropriate classes
   - **Extract Interface**: Define contracts explicitly
   - **Replace Magic Numbers**: Use named constants
   - **Encapsulate Field**: Add getters/setters for control
   - **Replace Conditional with Polymorphism**: Object-oriented solutions
   - **Introduce Null Object**: Eliminate null checks

6. **Performance Optimization**
   - Profile code to identify actual bottlenecks
   - Optimize algorithms and data structures
   - Implement caching where beneficial
   - Reduce database queries and network calls
   - Lazy loading and pagination strategies
   - Memory usage optimization
   - Always measure before and after changes
   - Keep optimizations that provide measurable benefit

7. **Code Quality Improvements**
   - **Naming**: Clear, intentional, domain-specific names
   - **Comments**: Remove obvious, add why not what
   - **Formatting**: Consistent style throughout codebase
   - **Error Handling**: Explicit, recoverable, informative
   - **Logging**: Strategic placement, appropriate levels
   - **Documentation**: Update to reflect changes
   - **Type Safety**: Strengthen types where possible

8. **Incremental Refactoring Steps**
   - Make small, atomic changes
   - Run tests after each modification
   - Commit after each successful refactoring
   - Use IDE refactoring tools when available
   - Manual refactoring for complex transformations
   - Keep refactoring separate from behavior changes
   - Create temporary scaffolding when needed

9. **Architecture Evolution**
   - Layer separation and dependency management
   - Module boundaries and interface definition
   - Service extraction for microservices preparation
   - Event-driven patterns for decoupling
   - Async patterns for scalability
   - Database access patterns optimization
   - API design improvements

10. **Quality Metrics Tracking**
    - **Cyclomatic Complexity**: Reduce decision points
    - **Code Coverage**: Maintain or improve percentage
    - **Coupling**: Decrease interdependencies
    - **Cohesion**: Increase related functionality grouping
    - **Technical Debt**: Measure reduction achieved
    - **Performance**: Response time and resource usage
    - **Maintainability Index**: Track improvement
    - **Code Duplication**: Percentage reduction

11. **Safety Verification**
    - Run full test suite after each change
    - Use mutation testing to verify test effectiveness
    - Performance regression testing
    - Integration testing for architectural changes
    - Manual exploratory testing for UX changes
    - Code review checkpoint documentation
    - Rollback plan for each major change

12. **Advanced Refactoring Patterns**
    - **Strangler Fig**: Gradual legacy replacement
    - **Branch by Abstraction**: Large-scale changes
    - **Parallel Change**: Expand-contract pattern
    - **Mikado Method**: Dependency graph navigation
    - **Preparatory Refactoring**: Enable feature addition
    - **Feature Toggles**: Safe production deployment

Output should include:
- Refactored code with all improvements applied
- Test results confirming all tests remain green
- Before/after metrics comparison
- List of applied refactoring techniques
- Performance improvement measurements
- Code quality metrics improvement
- Documentation of architectural changes
- Remaining technical debt assessment
- Recommendations for future refactoring&quot;

## Refactoring Safety Checklist

Before committing refactored code:
1. â All tests pass (100% green)
2. â No functionality regression
3. â Performance metrics acceptable
4. â Code coverage maintained/improved
5. â Documentation updated
6. â Team code review completed

## Recovery Process

If tests fail during refactoring:
- Immediately revert last change
- Identify which refactoring broke tests
- Apply smaller, incremental changes
- Consider if tests need updating (behavior change)
- Use version control for safe experimentation
- Leverage IDE&#39;s undo functionality

## Integration Points

- Follows from tdd-green.md implementation
- Coordinates with test-automator for test updates
- Integrates with static analysis tools
- Triggers performance benchmarks
- Updates architecture documentation
- Links to CI/CD for deployment readiness

## Best Practices

- Refactor in small, safe steps
- Keep tests green throughout process
- Commit after each successful refactoring
- Don&#39;t mix refactoring with feature changes
- Use tools but understand manual techniques
- Focus on high-impact improvements first
- Leave code better than you found it
- Document why, not just what changed

Code to refactor: $ARGUMENTS</pre>
                  </div>
                </div>
              </div>
          </div>

        </div>
      </div>
    </div>
  </div>
</div>

</template></turbo-stream>