Files
agents/plugins/tdd-workflows/commands/tdd-cycle.md
Seth Hobson 4d504ed8fa fix: eliminate cross-plugin dependencies and modernize plugin.json across marketplace
Rewrites 14 commands across 11 plugins to remove all cross-plugin
subagent_type references (e.g., "unit-testing::test-automator"), which
break when plugins are installed standalone. Each command now uses only
local bundled agents or general-purpose with role context in the prompt.

All rewritten commands follow conductor-style patterns:
- CRITICAL BEHAVIORAL RULES with strong directives
- State files for session tracking and resume support
- Phase checkpoints requiring explicit user approval
- File-based context passing between steps

Also fixes 4 plugin.json files missing version/license fields and adds
plugin.json for dotnet-contribution.

Closes #433
2026-02-06 19:34:26 -05:00

20 KiB

description, argument-hint
description argument-hint
Execute a comprehensive TDD workflow with strict red-green-refactor discipline <feature or module to implement> [--incremental|--suite] [--coverage 80]

TDD Cycle Orchestrator

CRITICAL BEHAVIORAL RULES

You MUST follow these rules exactly. Violating any of them is a failure.

  1. Execute steps in order. Do NOT skip ahead, reorder, or merge steps.
  2. Write output files. Each step MUST produce its output file in .tdd-cycle/ before the next step begins. Read from prior step files — do NOT rely on context window memory.
  3. Stop at checkpoints. When you reach a PHASE CHECKPOINT, you MUST stop and wait for explicit user approval before continuing. Use the AskUserQuestion tool with clear options.
  4. Halt on failure. If any step fails (agent error, test failure, missing dependency), STOP immediately. Present the error and ask the user how to proceed. Do NOT silently continue.
  5. Use only local agents. All subagent_type references use agents bundled with this plugin or general-purpose. No cross-plugin dependencies.
  6. Never enter plan mode autonomously. Do NOT use EnterPlanMode. This command IS the plan — execute it.

Pre-flight Checks

Before starting, perform these checks:

1. Check for existing session

Check if .tdd-cycle/state.json exists:

  • If it exists and status is "in_progress": Read it, display the current step, and ask the user:

    Found an in-progress TDD cycle session:
    Feature: [name from state]
    Current step: [step from state]
    
    1. Resume from where we left off
    2. Start fresh (archives existing session)
    
  • If it exists and status is "complete": Ask whether to archive and start fresh.

2. Initialize state

Create .tdd-cycle/ directory and state.json:

{
  "feature": "$ARGUMENTS",
  "status": "in_progress",
  "mode": "suite",
  "coverage_target": 80,
  "current_step": 1,
  "current_phase": 1,
  "completed_steps": [],
  "files_created": [],
  "started_at": "ISO_TIMESTAMP",
  "last_updated": "ISO_TIMESTAMP"
}

Parse $ARGUMENTS for --incremental, --suite, and --coverage flags. Use defaults if not specified (mode: suite, coverage: 80).

3. Parse feature description

Extract the feature description from $ARGUMENTS (everything before the flags). This is referenced as $FEATURE in prompts below.


Configuration

Coverage Thresholds

  • Minimum line coverage: parsed from --coverage flag (default 80%)
  • Minimum branch coverage: 75%
  • Critical path coverage: 100%

Refactoring Triggers

  • Cyclomatic complexity > 10
  • Method length > 20 lines
  • Class length > 200 lines
  • Duplicate code blocks > 3 lines

Phase 1: Test Specification and Design (Steps 1-2)

Step 1: Requirements Analysis

Use the Task tool to analyze requirements:

Task:
  subagent_type: "general-purpose"
  description: "Analyze requirements for TDD: $FEATURE"
  prompt: |
    You are a software architect specializing in test-driven development.

    Analyze requirements for: $FEATURE

    ## Deliverables
    1. Define acceptance criteria with clear pass/fail conditions
    2. Identify edge cases (null/empty, boundary values, error states, concurrent access)
    3. Create a comprehensive test scenario matrix mapping requirements to test cases
    4. Categorize tests: unit, integration, contract, property-based
    5. Identify external dependencies that will need mocking

    Write your complete analysis as a single markdown document.

Save the agent's output to .tdd-cycle/01-requirements.md.

Update state.json: set current_step to 2, add "01-requirements.md" to files_created, add step 1 to completed_steps.

Step 2: Test Architecture Design

Read .tdd-cycle/01-requirements.md to load requirements context.

Use the Task tool to design test architecture:

Task:
  subagent_type: "general-purpose"
  description: "Design test architecture for $FEATURE"
  prompt: |
    You are a test automation expert specializing in test architecture and TDD workflows.

    Design test architecture for: $FEATURE

    ## Requirements
    [Insert full contents of .tdd-cycle/01-requirements.md]

    ## Deliverables
    1. Test structure and organization (directory layout, naming conventions)
    2. Fixture design (shared setup, teardown, test data factories)
    3. Mock/stub strategy (what to mock, what to use real implementations for)
    4. Test data strategy (generators, factories, edge case data sets)
    5. Test execution order and parallelization plan
    6. Framework-specific configuration (matching project's existing test framework)

    Ensure architecture supports isolated, fast, reliable tests.
    Write your complete design as a single markdown document.

Save the agent's output to .tdd-cycle/02-test-architecture.md.

Update state.json: set current_step to "checkpoint-1", add step 2 to completed_steps.


PHASE CHECKPOINT 1 — User Approval Required

You MUST stop here and present the test specification and architecture for review.

Display a summary of the requirements analysis from .tdd-cycle/01-requirements.md and test architecture from .tdd-cycle/02-test-architecture.md (key test scenarios, architecture decisions, mock strategy) and ask:

Test specification and architecture complete. Please review:
- .tdd-cycle/01-requirements.md
- .tdd-cycle/02-test-architecture.md

1. Approve — proceed to RED phase (write failing tests)
2. Request changes — tell me what to adjust
3. Pause — save progress and stop here

Do NOT proceed to Phase 2 until the user selects option 1. If they select option 2, revise and re-checkpoint. If option 3, update state.json status and stop.


Phase 2: RED — Write Failing Tests (Steps 3-4)

Step 3: Write Unit Tests (Failing)

Read .tdd-cycle/01-requirements.md and .tdd-cycle/02-test-architecture.md.

Use the Task tool:

Task:
  subagent_type: "general-purpose"
  description: "Write failing unit tests for $FEATURE"
  prompt: |
    You are a test automation expert specializing in TDD red phase.

    Write FAILING unit tests for: $FEATURE

    ## Requirements
    [Insert contents of .tdd-cycle/01-requirements.md]

    ## Test Architecture
    [Insert contents of .tdd-cycle/02-test-architecture.md]

    ## Instructions
    1. Tests must fail initially — DO NOT implement production code
    2. Include edge cases, error scenarios, and happy paths
    3. Use the project's existing test framework and conventions
    4. Follow Arrange-Act-Assert pattern
    5. Use descriptive test names (should_X_when_Y)
    6. Ensure failures are for the RIGHT reasons (missing implementation, not syntax errors)

    Write all test files. Report what test files were created and what they cover.

Save a summary to .tdd-cycle/03-failing-tests.md (list of test files, test count, coverage areas).

Update state.json: set current_step to 4, add step 3 to completed_steps.

Step 4: Verify Test Failure

Use the Task tool with the local code-reviewer agent:

Task:
  subagent_type: "code-reviewer"
  description: "Verify tests fail correctly for $FEATURE"
  prompt: |
    Verify that all tests for: $FEATURE are failing correctly.

    ## Failing Tests
    [Insert contents of .tdd-cycle/03-failing-tests.md]

    ## Instructions
    1. Run the test suite and confirm all new tests fail
    2. Ensure failures are for the right reasons (missing implementation, not test errors)
    3. Confirm no false positives (tests that accidentally pass)
    4. Verify no existing tests were broken
    5. Check test quality: meaningful names, proper assertions, good error messages

    Report your findings. This is a GATE — do not approve if tests pass or fail for wrong reasons.

Save output to .tdd-cycle/04-failure-verification.md.

GATE: Do not proceed to Phase 3 unless all tests fail appropriately. If verification fails, fix tests and re-verify.

Update state.json: set current_step to "checkpoint-2", add step 4 to completed_steps.


PHASE CHECKPOINT 2 — User Approval Required

Display a summary of the failing tests from .tdd-cycle/03-failing-tests.md and verification from .tdd-cycle/04-failure-verification.md and ask:

RED phase complete. All tests are failing as expected.

Test count: [number]
Coverage areas: [summary]
Verification: [pass/fail summary]

1. Approve — proceed to GREEN phase (make tests pass)
2. Request changes — adjust tests before implementing
3. Pause — save progress and stop here

Phase 3: GREEN — Make Tests Pass (Steps 5-6)

Step 5: Minimal Implementation

Read .tdd-cycle/01-requirements.md, .tdd-cycle/02-test-architecture.md, and .tdd-cycle/03-failing-tests.md.

Use the Task tool:

Task:
  subagent_type: "general-purpose"
  description: "Implement minimal code to pass tests for $FEATURE"
  prompt: |
    You are a backend architect implementing the GREEN phase of TDD.

    Implement MINIMAL code to make tests pass for: $FEATURE

    ## Requirements
    [Insert contents of .tdd-cycle/01-requirements.md]

    ## Test Architecture
    [Insert contents of .tdd-cycle/02-test-architecture.md]

    ## Failing Tests
    [Insert contents of .tdd-cycle/03-failing-tests.md]

    ## Instructions
    1. Focus ONLY on making tests green — no extra features or optimizations
    2. Use the simplest implementation that passes each test
    3. Follow the project's existing code patterns and conventions
    4. Keep methods/functions small and focused
    5. Don't add error handling unless tests require it
    6. Document shortcuts taken for the refactor phase

    Write all code files. Report what files were created/modified and any technical debt noted.

Save a summary to .tdd-cycle/05-implementation.md.

Update state.json: set current_step to 6, add step 5 to completed_steps.

Step 6: Verify Test Success

Use the Task tool:

Task:
  subagent_type: "general-purpose"
  description: "Verify all tests pass for $FEATURE"
  prompt: |
    You are a test automation expert verifying TDD green phase completion.

    Run all tests for: $FEATURE and verify they pass.

    ## Implementation
    [Insert contents of .tdd-cycle/05-implementation.md]

    ## Instructions
    1. Run the full test suite
    2. Verify ALL new tests pass (green)
    3. Verify no existing tests were broken
    4. Check test coverage metrics against targets
    5. Confirm implementation is truly minimal (no gold plating)

    Report test execution results, coverage metrics, and any issues found.

Save output to .tdd-cycle/06-green-verification.md.

GATE: All tests must pass before proceeding. If tests fail, return to Step 5 and fix.

Update state.json: set current_step to "checkpoint-3", add step 6 to completed_steps.


PHASE CHECKPOINT 3 — User Approval Required

Display results from .tdd-cycle/06-green-verification.md and ask:

GREEN phase complete. All tests passing.

Test results: [pass/fail counts]
Coverage: [metrics]

1. Approve — proceed to REFACTOR phase
2. Request changes — adjust implementation
3. Pause — save progress and stop here

Phase 4: REFACTOR — Improve Code Quality (Steps 7-8)

Step 7: Code Refactoring

Read .tdd-cycle/05-implementation.md and .tdd-cycle/06-green-verification.md.

Use the Task tool with the local code-reviewer agent:

Task:
  subagent_type: "code-reviewer"
  description: "Refactor implementation for $FEATURE"
  prompt: |
    Refactor the implementation for: $FEATURE while keeping all tests green.

    ## Implementation
    [Insert contents of .tdd-cycle/05-implementation.md]

    ## Green Verification
    [Insert contents of .tdd-cycle/06-green-verification.md]

    ## Instructions
    1. Apply SOLID principles where appropriate
    2. Remove code duplication
    3. Improve naming for clarity
    4. Optimize performance where tests support it
    5. Run tests after each refactoring step — tests MUST remain green
    6. Apply refactoring triggers: complexity > 10, method > 20 lines, class > 200 lines, duplication > 3 lines

    Report all refactoring changes made and confirm tests still pass.

Save output to .tdd-cycle/07-refactored-code.md.

Update state.json: set current_step to 8, add step 7 to completed_steps.

Step 8: Test Refactoring

Use the Task tool:

Task:
  subagent_type: "general-purpose"
  description: "Refactor tests for $FEATURE"
  prompt: |
    You are a test automation expert refactoring tests for clarity and maintainability.

    Refactor tests for: $FEATURE

    ## Current Tests
    [Insert contents of .tdd-cycle/03-failing-tests.md]

    ## Refactored Code
    [Insert contents of .tdd-cycle/07-refactored-code.md]

    ## Instructions
    1. Remove test duplication — extract common fixtures
    2. Improve test names for clarity and documentation value
    3. Ensure tests still provide the same coverage
    4. Optimize test execution speed where possible
    5. Verify coverage metrics unchanged or improved

    Report all test refactoring changes and confirm coverage is maintained.

Save output to .tdd-cycle/08-refactored-tests.md.

Update state.json: set current_step to "checkpoint-4", add step 8 to completed_steps.


PHASE CHECKPOINT 4 — User Approval Required

Display refactoring summary from .tdd-cycle/07-refactored-code.md and .tdd-cycle/08-refactored-tests.md and ask:

REFACTOR phase complete.

Code changes: [summary of refactoring]
Test changes: [summary of test improvements]
Coverage: [maintained/improved]

1. Approve — proceed to integration testing
2. Request changes — adjust refactoring
3. Pause — save progress and stop here

Phase 5: Integration and Extended Testing (Steps 9-11)

Step 9: Write Integration Tests (Failing First)

Read .tdd-cycle/07-refactored-code.md.

Use the Task tool:

Task:
  subagent_type: "general-purpose"
  description: "Write failing integration tests for $FEATURE"
  prompt: |
    You are a test automation expert writing integration tests in TDD style.

    Write FAILING integration tests for: $FEATURE

    ## Refactored Implementation
    [Insert contents of .tdd-cycle/07-refactored-code.md]

    ## Instructions
    1. Test component interactions, API contracts, and data flow
    2. Tests must fail initially (follow red-green-refactor)
    3. Focus on integration points identified in the architecture
    4. Include contract tests for API boundaries
    5. Follow existing project test patterns

    Write test files and report what they cover.

Save output to .tdd-cycle/09-integration-tests.md.

Update state.json: set current_step to 10, add step 9 to completed_steps.

Step 10: Implement Integration

Use the Task tool:

Task:
  subagent_type: "general-purpose"
  description: "Implement integration code for $FEATURE"
  prompt: |
    You are a backend architect implementing integration code.

    Implement integration code for: $FEATURE to make integration tests pass.

    ## Integration Tests
    [Insert contents of .tdd-cycle/09-integration-tests.md]

    ## Instructions
    1. Focus on component interaction and data flow
    2. Implement only what's needed to pass integration tests
    3. Follow existing project patterns for integration code

    Write code and report what was created/modified.

Save output to .tdd-cycle/10-integration-impl.md.

Update state.json: set current_step to 11, add step 10 to completed_steps.

Step 11: Performance and Edge Case Tests

Use the Task tool:

Task:
  subagent_type: "general-purpose"
  description: "Add performance and edge case tests for $FEATURE"
  prompt: |
    You are a test automation expert adding extended test coverage.

    Add performance tests and additional edge case tests for: $FEATURE

    ## Current Implementation
    [Insert contents of .tdd-cycle/10-integration-impl.md]

    ## Instructions
    1. Add stress tests and boundary tests
    2. Add error recovery tests
    3. Include performance benchmarks where appropriate
    4. Ensure all new tests pass

    Write test files and report coverage improvements.

Save output to .tdd-cycle/11-extended-tests.md.

Update state.json: set current_step to 12, add step 11 to completed_steps.


Phase 6: Final Review (Step 12)

Step 12: Final Code Review

Read all .tdd-cycle/*.md files.

Use the Task tool with the local code-reviewer agent:

Task:
  subagent_type: "code-reviewer"
  description: "Final TDD review of $FEATURE"
  prompt: |
    Perform comprehensive final review of: $FEATURE

    ## All Artifacts
    [Insert contents of all .tdd-cycle/*.md files]

    ## Instructions
    1. Verify TDD process was followed (red-green-refactor discipline)
    2. Check code quality and SOLID principle adherence
    3. Assess test quality and coverage completeness
    4. Verify no anti-patterns (test-after, skipped refactoring, etc.)
    5. Suggest any remaining improvements

    Provide a final review report with findings and recommendations.

Save output to .tdd-cycle/12-final-review.md.

Update state.json: set current_step to "complete", add step 12 to completed_steps.


Completion

Update state.json:

  • Set status to "complete"
  • Set last_updated to current timestamp

Present the final summary:

TDD cycle complete: $FEATURE

## Files Created
[List all .tdd-cycle/ output files]

## TDD Metrics
- Test count: [total tests written]
- Coverage: [line/branch/function coverage]
- Phases completed: Specification > RED > GREEN > REFACTOR > Integration > Review
- Mode: [incremental|suite]

## Artifacts
- Requirements: .tdd-cycle/01-requirements.md
- Test Architecture: .tdd-cycle/02-test-architecture.md
- Failing Tests: .tdd-cycle/03-failing-tests.md
- Failure Verification: .tdd-cycle/04-failure-verification.md
- Implementation: .tdd-cycle/05-implementation.md
- Green Verification: .tdd-cycle/06-green-verification.md
- Refactored Code: .tdd-cycle/07-refactored-code.md
- Refactored Tests: .tdd-cycle/08-refactored-tests.md
- Integration Tests: .tdd-cycle/09-integration-tests.md
- Integration Impl: .tdd-cycle/10-integration-impl.md
- Extended Tests: .tdd-cycle/11-extended-tests.md
- Final Review: .tdd-cycle/12-final-review.md

## Next Steps
1. Review all generated code and test files
2. Run the full test suite to verify everything passes
3. Create a pull request with the implementation
4. Monitor coverage metrics in CI

Incremental Development Mode

When --incremental flag is present:

  1. Write ONE failing test
  2. Make ONLY that test pass
  3. Refactor if needed
  4. Repeat for next test

The orchestrator adjusts the RED-GREEN-REFACTOR phases to operate on a single test at a time rather than full test suites.

Validation Checklists

RED Phase Validation

  • All tests written before implementation
  • All tests fail with meaningful error messages
  • Test failures are due to missing implementation
  • No test passes accidentally

GREEN Phase Validation

  • All tests pass
  • No extra code beyond test requirements
  • Coverage meets minimum thresholds
  • No test was modified to make it pass

REFACTOR Phase Validation

  • All tests still pass after refactoring
  • Code complexity reduced
  • Duplication eliminated
  • Performance improved or maintained
  • Test readability improved

Anti-Patterns to Avoid

  • Writing implementation before tests
  • Writing tests that already pass
  • Skipping the refactor phase
  • Writing multiple features without tests
  • Modifying tests to make them pass
  • Ignoring failing tests
  • Writing tests after implementation

Failure Recovery

If TDD discipline is broken:

  1. STOP immediately
  2. Identify which phase was violated
  3. Rollback to last valid state
  4. Resume from correct phase
  5. Document lesson learned