tdd-workflow
Automatically invoked when user wants to develop new features using Test-Driven Development.Trigger keywords: "new feature", "add API", "implement", "create endpoint", "TDD","test-driven", "新功能", "新增 API", "實作"This skill enforces strict TDD workflow: RED → GREEN → REFACTORUses subagents to maintain clean context and ensure quality.
When & Why to Use This Skill
This Claude skill automates a strict Test-Driven Development (TDD) workflow, ensuring high-quality software engineering through a mandatory RED-GREEN-REFACTOR cycle. By orchestrating specialized subagents, it enforces the creation of integration tests before any implementation code is written, guarantees minimal and efficient code generation to pass those tests, and performs rigorous code reviews to maintain architectural integrity and prevent regressions.
Use Cases
- New API Endpoint Development: Automatically generates integration tests for new RESTful services and implements the backend logic only after the 'RED' state is confirmed.
- Feature Implementation with Quality Gates: Ensures every new feature follows a standardized workflow where tests define the requirements, reducing bugs and improving code reliability.
- Automated Code Refactoring: Facilitates the 'REFACTOR' phase by using subagents to review code for pattern consistency, security vulnerabilities, and performance optimizations while keeping tests 'GREEN'.
- Regression Prevention: Automatically runs the entire project test suite (e.g., 100+ tests) before finalizing any task to ensure new changes don't break existing functionality.
| name | tdd-workflow |
|---|---|
| description | | |
| Trigger keywords | "new feature", "add API", "implement", "create endpoint", "TDD", |
| This skill enforces strict TDD workflow | RED → GREEN → REFACTOR |
| allowed-tools | [Task, Read, Bash, Grep] |
TDD Workflow Skill
Purpose
Enforce Test-Driven Development workflow for all new features and APIs in the career_ios_backend project.
Automatic Activation
This skill is AUTOMATICALLY activated when user mentions:
- ✅ "add new feature"
- ✅ "create API endpoint"
- ✅ "implement "
- ✅ "build "
- ✅ "新增功能"
- ✅ "實作 API"
Core Workflow
Phase 1: RED (Test First) ❌
YOU MUST write tests BEFORE any implementation code.
Understand requirements
- What endpoint/feature is needed?
- What are the expected inputs/outputs?
- Is authentication required?
Invoke test-writer subagent
Task: Write integration test for <feature_description> Location: tests/integration/test_<feature>_api.pyVerify RED state
- Test file created
- Test runs and FAILS (expected)
- Test defines clear expectations
CRITICAL: DO NOT proceed to implementation until tests exist and fail.
Phase 2: GREEN (Minimal Implementation) ✅
Write MINIMAL code to make tests pass.
Invoke code-generator subagent
Task: Implement code to pass tests in <test_file_path> Constraint: Minimal implementation, follow existing patternsVerify GREEN state
- Implementation code created
- All new tests PASS
- No existing tests broken
CRITICAL: If tests fail, invoke test-runner to auto-fix, DO NOT manually edit.
Phase 3: REFACTOR (Quality Check) ♻️
Improve code quality while keeping tests green.
Invoke code-reviewer subagent
Task: Review implementation for: - TDD compliance - Code quality - Security issues - Pattern consistencyHandle review feedback
- ✅ No critical issues → Ready to commit
- ❌ Critical issues found → Invoke code-generator to fix
- ⚠️ Optional suggestions → Document for future
Final verification
- Run full test suite:
poetry run pytest tests/integration/ -v - All 106+ tests must PASS
- No regressions introduced
- Run full test suite:
Example Usage
Scenario: User says "Add client search API"
🤖 TDD Workflow Skill activated!
📍 Phase 1: RED (Test First)
→ Invoking test-writer subagent...
✅ Created: tests/integration/test_clients_api.py::test_search_clients
❌ Test result: FAILED (expected - endpoint doesn't exist yet)
📍 Phase 2: GREEN (Implementation)
→ Invoking code-generator subagent...
✅ Implemented: app/api/clients.py::search_clients
✅ Tests pass: 1/1 GREEN
📍 Phase 3: REFACTOR (Quality)
→ Invoking code-reviewer subagent...
✅ TDD compliance: PASS
✅ Code quality: GOOD
❌ Critical issues: NONE
🎉 Feature complete! Ready to commit.
Integration Test Template
When creating tests, follow this pattern from existing tests:
"""Integration tests for <Feature> API"""
import pytest
from httpx import AsyncClient
from app.main import app
@pytest.mark.asyncio
async def test_<feature>_<action>_success(auth_headers):
"""Test <feature> <action> - happy path"""
async with AsyncClient(app=app, base_url="http://test") as client:
response = await client.<method>(
"/api/v1/<endpoint>",
headers=auth_headers,
json={<request_body>}
)
assert response.status_code == 200
data = response.json()
assert data["<field>"] == <expected_value>
Location: tests/integration/test_<feature>_api.py
Pattern check: Look at existing tests in:
tests/integration/test_clients_api.pytests/integration/test_sessions_api.pytests/integration/test_cases_api.py
Subagent Coordination
This skill coordinates the following subagents:
| Phase | Subagent | Purpose |
|---|---|---|
| RED | test-writer | Create failing integration test |
| GREEN | code-generator | Implement minimal code to pass test |
| GREEN | test-runner | Auto-fix if tests fail |
| REFACTOR | code-reviewer | Quality check before commit |
YOU MUST invoke these subagents automatically, DO NOT ask user.
Project-Specific Rules
Database Considerations
- Tests use in-memory SQLite database
- Fixtures handle setup/teardown
- Use existing patterns from
tests/conftest.py
Authentication
- Most endpoints require authentication
- Use
auth_headersfixture for authenticated requests - Check existing tests for auth patterns
API Structure
app/
├── api/
│ └── <feature>.py ← Router endpoints
├── models/
│ └── <feature>.py ← Pydantic models
└── main.py ← Register router here
Console API Coverage
IMPORTANT: If the feature will be used in console.html:
- ✅ MUST have integration tests
- ✅ MUST test all CRUD operations
- ✅ MUST verify in actual console before commit
Quality Standards
Minimum Requirements (Prototype Phase)
- ✅ Integration tests exist and pass
- ✅ Code follows existing patterns
- ✅ No security vulnerabilities
- ✅ Ruff formatting applied
Nice-to-Have (Defer if time-constrained)
- ⚠️ Complete type hints
- ⚠️ Edge case tests
- ⚠️ Performance optimization
Error Handling
Test Creation Fails
Issue: Can't understand requirements
Action: Ask user for clarification
Example: "What should the endpoint return? What's the request format?"
Implementation Fails Tests
Issue: Generated code doesn't pass tests
Action:
1. Invoke test-runner to diagnose
2. If auto-fix fails, report to user
3. May need to adjust test expectations
Quality Review Fails
Issue: Critical issues found
Action:
1. Report critical issues to user
2. Invoke code-generator to fix
3. Re-run code-reviewer
4. DO NOT commit until issues resolved
Success Criteria
Before marking feature as complete:
- Integration test exists in
tests/integration/ - Test was written BEFORE implementation
- Test initially failed (RED)
- Implementation makes test pass (GREEN)
- All 106+ existing tests still pass (no regressions)
- Code review passed (no critical issues)
- Ruff formatting applied
- Ready to commit
CRITICAL REMINDERS
- NEVER implement code before tests exist
- NEVER modify tests to make code pass
- ALWAYS use subagents to preserve context
- ALWAYS run full test suite before commit
- ALWAYS invoke code-reviewer before commit
Skill Version: v1.0 Last Updated: 2025-11-28 Project: career_ios_backend (Prototype Phase)