Files
agents/examples/tdd-usage.md
Seth Hobson 2c4133f09e feat: Add comprehensive TDD support to agents
- Add new tdd-orchestrator agent for managing complete TDD workflows
- Enhance test-automator with dedicated TDD capabilities and metrics
- Add TDD excellence section with red-green-refactor cycle automation
- Include support for Chicago and London TDD schools
- Add property-based TDD approaches and BDD integration
- Include TDD cycle metrics tracking and compliance monitoring
- Update README with new agent and TDD examples
- Add comprehensive TDD usage examples and documentation

This enhancement provides full TDD orchestration capabilities across
the agent collection, enabling test-first development with automated
cycle management, metrics tracking, and multi-agent coordination.

Addresses issue #64: TDD workflow support
2025-09-13 11:31:06 -04:00

404 lines
12 KiB
Markdown

# TDD Agent Usage Examples
This document demonstrates how to use the TDD-related agents in Claude Code for test-driven development workflows.
## TDD Orchestrator Agent
The `tdd-orchestrator` agent manages the complete TDD workflow, coordinating between multiple specialized agents.
### Basic Usage
```bash
# Invoke TDD orchestrator for a new feature
Use the Task tool with subagent_type="tdd-orchestrator"
Prompt: "Implement user authentication with TDD approach using JWT tokens"
# The orchestrator will:
# 1. Analyze requirements and design test strategy
# 2. Coordinate with test-automator for test creation
# 3. Manage the red-green-refactor cycle
# 4. Track metrics and ensure TDD compliance
```
### Advanced Orchestration
```bash
# Multi-team TDD coordination
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Coordinate TDD workflow across frontend, backend, and mobile teams for shopping cart feature"
# Property-based TDD
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Implement sort algorithm using property-based TDD with invariant checking"
# Legacy code TDD
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Add tests to legacy PaymentProcessor class before refactoring, using characterization tests"
```
## Test Automator with TDD Capabilities
The enhanced `test-automator` agent now includes comprehensive TDD support.
### Test-First Development
```bash
# Generate failing tests first
Use Task tool with subagent_type="test-automator"
Prompt: "Generate comprehensive failing tests for user registration with email verification. Ensure tests fail for the right reasons."
# Incremental test development
Use Task tool with subagent_type="test-automator"
Prompt: "Create incremental test suite for shopping cart: start with add item, then remove, then calculate total"
# Property-based TDD tests
Use Task tool with subagent_type="test-automator"
Prompt: "Generate property-based tests for string utilities library using hypothesis/fast-check"
```
### TDD Metrics and Compliance
```bash
# Track TDD metrics
Use Task tool with subagent_type="test-automator"
Prompt: "Analyze codebase and generate TDD compliance report: test-first percentage, cycle times, refactoring frequency"
# Verify TDD discipline
Use Task tool with subagent_type="test-automator"
Prompt: "Check if recent commits followed TDD: tests written before implementation"
```
## Language-Specific TDD Examples
### Python TDD
```bash
Use Task tool with subagent_type="python-pro"
Prompt: "Implement binary search tree with TDD approach using pytest. Start with failing tests for insert, search, delete operations."
Use Task tool with subagent_type="test-automator"
Prompt: "Generate Python pytest tests for REST API with TDD: write contract tests first, then unit tests, following Chicago school TDD"
```
### JavaScript/TypeScript TDD
```bash
Use Task tool with subagent_type="typescript-pro"
Prompt: "Build React component using TDD with Jest and React Testing Library. Start with behavior tests, then implement minimally."
Use Task tool with subagent_type="javascript-pro"
Prompt: "Implement Express middleware with TDD approach, using Mocha and Chai. Follow London school with mocks."
```
### Java TDD
```bash
Use Task tool with subagent_type="java-pro"
Prompt: "Create Spring Boot service with TDD using JUnit 5 and Mockito. Start with integration tests, then unit tests."
```
### Go TDD
```bash
Use Task tool with subagent_type="golang-pro"
Prompt: "Build gRPC service with TDD approach using Go's testing package and testify. Include table-driven tests."
```
## TDD Workflow Patterns
### Classic Red-Green-Refactor
```bash
# Step 1: RED - Write failing test
Use Task tool with subagent_type="test-automator"
Prompt: "Write failing test for fibonacci function that handles negative numbers"
# Step 2: GREEN - Minimal implementation
Use Task tool with subagent_type="python-pro"
Prompt: "Implement minimal fibonacci function to make the test pass"
# Step 3: REFACTOR - Improve code
Use Task tool with subagent_type="code-reviewer"
Prompt: "Refactor fibonacci implementation for performance while keeping tests green"
```
### Outside-In TDD (London School)
```bash
# Start with acceptance test
Use Task tool with subagent_type="test-automator"
Prompt: "Write acceptance test for user login flow using Cucumber/Gherkin"
# Work inward with mocks
Use Task tool with subagent_type="test-automator"
Prompt: "Write unit tests for login controller with mocked dependencies"
# Implement with TDD
Use Task tool with subagent_type="backend-architect"
Prompt: "Implement login controller to satisfy tests, using dependency injection"
```
### Inside-Out TDD (Chicago School)
```bash
# Start with unit tests
Use Task tool with subagent_type="test-automator"
Prompt: "Write unit tests for individual calculation functions"
# Build up to integration
Use Task tool with subagent_type="test-automator"
Prompt: "Write integration tests combining calculation functions"
# Final acceptance tests
Use Task tool with subagent_type="test-automator"
Prompt: "Write end-to-end tests for complete calculation workflow"
```
## Specialized TDD Scenarios
### API Development with TDD
```bash
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "
Develop REST API for blog platform with TDD:
1. Start with OpenAPI spec
2. Generate contract tests from spec
3. Implement endpoints test-first
4. Add integration tests
5. Include performance tests
"
```
### Microservices TDD
```bash
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "
Build microservice with TDD approach:
- Contract tests for API
- Unit tests for business logic
- Integration tests for database
- Component tests for service
- End-to-end tests for workflows
"
```
### Frontend Component TDD
```bash
Use Task tool with subagent_type="frontend-developer"
Prompt: "
Build date picker component with TDD:
1. Test component renders
2. Test date selection
3. Test keyboard navigation
4. Test accessibility
5. Test date validation
All tests first, then implementation
"
```
### Database Migration TDD
```bash
Use Task tool with subagent_type="database-optimizer"
Prompt: "
Perform database migration with TDD:
1. Write tests for current schema behavior
2. Write tests for desired schema behavior
3. Implement migration to pass both
4. Include rollback tests
"
```
## TDD Anti-Pattern Detection
```bash
# Detect test-after development
Use Task tool with subagent_type="code-reviewer"
Prompt: "Review recent commits and identify where tests were written after implementation"
# Find over-mocked tests
Use Task tool with subagent_type="test-automator"
Prompt: "Analyze test suite and identify tests with excessive mocking that don't test real behavior"
# Identify missing test coverage
Use Task tool with subagent_type="test-automator"
Prompt: "Find code paths without tests and suggest test cases following TDD approach"
```
## TDD Metrics and Reporting
```bash
# Generate TDD dashboard
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Create TDD metrics dashboard showing: cycle times, test-first percentage, refactoring frequency, coverage trends"
# Team TDD assessment
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Assess team's TDD maturity level and provide improvement recommendations"
# TDD ROI analysis
Use Task tool with subagent_type="business-analyst"
Prompt: "Calculate ROI of TDD adoption: bug reduction, development speed, maintenance costs"
```
## TDD Learning and Katas
```bash
# TDD Kata practice
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Guide me through the Roman Numerals kata using strict TDD"
# TDD workshop material
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Create TDD workshop with exercises for team training"
# TDD code review
Use Task tool with subagent_type="code-reviewer"
Prompt: "Review this code for TDD best practices and provide specific improvement suggestions"
```
## Integration with CI/CD
```bash
# TDD pipeline setup
Use Task tool with subagent_type="deployment-engineer"
Prompt: "Setup CI/CD pipeline that enforces TDD: verify tests written before code, check coverage, track metrics"
# Pre-commit TDD hooks
Use Task tool with subagent_type="dx-optimizer"
Prompt: "Create git hooks that ensure TDD compliance before allowing commits"
```
## TDD for Different Architectures
### Hexagonal Architecture with TDD
```bash
Use Task tool with subagent_type="architect-review"
Prompt: "Implement hexagonal architecture service with TDD: start with domain tests, then ports, then adapters"
```
### Event-Driven TDD
```bash
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Build event-driven system with TDD: test event production, consumption, and choreography"
```
### Serverless TDD
```bash
Use Task tool with subagent_type="cloud-architect"
Prompt: "Develop Lambda functions with TDD approach, including local testing and integration tests"
```
## Common TDD Commands Combinations
### Full TDD Feature Development
```bash
# 1. Design tests with orchestrator
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Design comprehensive test strategy for payment processing feature"
# 2. Generate tests with automator
Use Task tool with subagent_type="test-automator"
Prompt: "Generate all test cases identified in strategy"
# 3. Implement with language expert
Use Task tool with subagent_type="python-pro"
Prompt: "Implement payment processing to pass tests incrementally"
# 4. Review and refactor
Use Task tool with subagent_type="code-reviewer"
Prompt: "Review implementation and suggest refactoring while maintaining green tests"
# 5. Optimize performance
Use Task tool with subagent_type="performance-engineer"
Prompt: "Optimize payment processing performance with TDD approach"
```
### TDD Bug Fix Workflow
```bash
# 1. Reproduce with test
Use Task tool with subagent_type="test-automator"
Prompt: "Write test that reproduces bug #123: user cannot login with special characters"
# 2. Fix minimally
Use Task tool with subagent_type="debugger"
Prompt: "Fix bug with minimal changes to make test pass"
# 3. Add edge cases
Use Task tool with subagent_type="test-automator"
Prompt: "Add additional test cases for edge cases related to bug"
# 4. Refactor if needed
Use Task tool with subagent_type="code-reviewer"
Prompt: "Suggest refactoring to prevent similar bugs"
```
## Best Practices for Agent Usage
1. **Start with tdd-orchestrator** for complex features requiring coordination
2. **Use test-automator** for test generation and verification
3. **Leverage language-specific agents** for implementation phase
4. **Employ code-reviewer** for refactoring phase
5. **Track with business-analyst** for metrics and ROI
## Troubleshooting
### When Tests Don't Fail
```bash
Use Task tool with subagent_type="test-automator"
Prompt: "Verify these tests actually fail when implementation is removed (mutation testing)"
```
### When TDD Feels Slow
```bash
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Optimize TDD workflow for faster feedback loops"
```
### When Team Resists TDD
```bash
Use Task tool with subagent_type="tdd-orchestrator"
Prompt: "Create gradual TDD adoption plan for team with training materials"
```
## Advanced TDD Techniques
### Approval Testing
```bash
Use Task tool with subagent_type="test-automator"
Prompt: "Setup approval testing for complex output verification"
```
### Snapshot Testing
```bash
Use Task tool with subagent_type="test-automator"
Prompt: "Implement snapshot testing for UI components with TDD"
```
### Contract Testing
```bash
Use Task tool with subagent_type="test-automator"
Prompt: "Create contract tests between services using Pact with TDD approach"
```
## Next Steps
1. Try the [TDD workflow commands](/workflows:tdd-cycle)
2. Practice with TDD katas using tdd-orchestrator
3. Integrate TDD agents into your development workflow
4. Track TDD metrics with test-automator
5. Share TDD success stories with your team