SuperAPI AI Directory

csharp-tdd-develop

Testing & quality

View repository

Updated 10-15 19:47

About this skill

C# TDD Develop

A skill for coordinating the TDD (Test-Driven Development) workflow. Enforce the order, and delegate the actual work to subagents.

Overview

This skill focuses on workflow coordination:

┌─────────────────────────────────────────────────────────────┐
│  csharp-tdd-develop (Orchestrator)                          │
│  ├── Phase 0: 환경 감지 ──── scripts/test-detector.js       │
│  └── Phase 1: 분석 ───────── 요구사항 → 테스트 시나리오     │
├─────────────────────────────────────────────────────────────┤
│  Sub-agent (Executor)                                        │
│  ├── Phase 2 RED ─────────── 테스트 작성 + dotnet test 실패 │
│  ├── Phase 3 GREEN ───────── 최소 구현 + dotnet test 통과   │
│  └── Phase 4 REFACTOR ────── 코드 정리 + 회귀 방지         │
│                                                             │
│  ※ csharp-best-practices 규칙 참조 가능                    │
│  ※ csharp-test-develop 테스트 패턴 참조 가능               │
└─────────────────────────────────────────────────────────────┘

Enforced Rules

Rule Description On Violation
Check environment Detect test environment in .csproj Guide if not installed
Tests first Test code required before writing implementation code Stop
Confirm Red Tests must fail before proceeding to the next step Stop
Confirm Green Tests must pass before proceeding to refactoring Repeat
Verify Refactor Re-run tests after refactoring Rollback

Workflow

Phase 0: Check Environment

Automatically detect the test environment from the .csproj file.

node skills/csharp-tdd-develop/scripts/test-detector.js --detect

Normal:

## Test Environment
Runner: xUnit ✓
FluentAssertions: YES ✓
Moq: YES ✓
Test Command: dotnet test

If not installed:

## Missing Dependencies
  dotnet add package xunit
  dotnet add package xunit.runner.visualstudio
  dotnet add package Microsoft.NET.Test.Sdk

→ Stop after providing installation guidance


Phase 1: Analysis

Convert requirements into test scenarios.

Actions:

  1. Identify user requirements
  2. Design class/service structure
  3. Derive 3-5 test scenarios
  4. Determine test file paths

Output:

## 분석 결과

### 대상 클래스
- 이름: UserService
- 경로: src/Services/UserService.cs
- 타입: Business Service

### 테스트 시나리오
1. GetByIdAsync — 유효한 ID로 사용자 반환
2. GetByIdAsync — 존재하지 않는 ID로 null 반환
3. CreateAsync — 유효한 데이터로 사용자 생성
4. CreateAsync — 중복 이메일로 예외 발생

### 테스트 파일
- 경로: tests/UnitTests/Services/UserServiceTests.cs

Phase 2: RED (Delegate to Subagent)

Delegate via Task tool:

Task({
  subagent_type: "general-purpose",
  prompt: `
TDD RED 단계를 수행하세요.
SOLID 원칙, GoF 디자인 패턴, Modern C# 12/13 기능을 적용하세요.

## 대상 클래스
- 이름: UserService
- 경로: src/Services/UserService.cs

## 테스트 시나리오
1. GetByIdAsync — 유효한 ID로 사용자 반환
2. GetByIdAsync — 존재하지 않는 ID로 null 반환
3. CreateAsync — 유효한 데이터로 사용자 생성
4. CreateAsync — 중복 이메일로 예외 발생

## 지침
1. 테스트 파일 생성: tests/UnitTests/Services/UserServiceTests.cs
2. 위 시나리오에 대한 테스트 케이스 작성
3. csharp-test-develop 테스트 패턴 적용 (AAA 패턴, Method_Scenario_ExpectedBehavior 네이밍)
4. 테스트 실행하여 **실패 확인** (dotnet test)
5. 테스트 결과 리포트

## 중요
- 구현 코드 작성 금지 (GREEN 단계에서 수행)
- 테스트가 반드시 실패해야 함
`
})

Verification (csharp-tdd-develop):

  • Confirm test failure in the agent response
  • If it passes, stop: "The test already passes. Review the scenario."

Phase 3: GREEN (Delegate to Subagent)

Delegate via Task tool:

Task({
  subagent_type: "general-purpose",
  prompt: `
TDD GREEN 단계를 수행하세요.
SOLID 원칙, GoF 디자인 패턴, Modern C# 12/13 기능을 적용하세요.

## 대상 클래스
- 이름: UserService
- 경로: src/Services/UserService.cs
- 테스트 파일: tests/UnitTests/Services/UserServiceTests.cs

## 지침
1. 테스트를 통과하는 **최소한의** 구현
2. Over-engineering 금지 (추가 기능, 최적화는 REFACTOR에서)
3. 테스트 실행하여 **통과 확인** (dotnet test)
4. 테스트 결과 리포트

## 중요
- 테스트 파일 수정 금지
- 불필요한 추상화 금지
`
})

Verification (csharp-tdd-develop):

  • Confirm test pass in the agent response
  • If it fails, request a retry (up to 3 times)

Phase 4: REFACTOR (Delegate to Subagent)

Delegate via Task tool:

Task({
  subagent_type: "general-purpose",
  prompt: `
TDD REFACTOR 단계를 수행하세요.
SOLID 원칙, GoF 디자인 패턴, Modern C# 12/13 기능을 적용하세요.

## 대상 파일
- 구현: src/Services/UserService.cs
- 테스트: tests/UnitTests/Services/UserServiceTests.cs

## 체크리스트
- [ ] SOLID 원칙 적용
- [ ] Modern C# 12 기능 활용
- [ ] 중복 코드 제거
- [ ] 네이밍 개선

## 지침
1. 코드 가독성 개선
2. csharp-best-practices 규칙 적용
3. 테스트 재실행하여 **회귀 없음 확인** (dotnet test)
4. 개선 사항 + 테스트 결과 리포트

## 중요
- 테스트가 실패하면 변경 사항 롤백
`
})

Verification (csharp-tdd-develop):

  • Confirm test pass in the agent response
  • If it fails, request a rollback

Currently passed arguments

ARGUMENTS: $ARGUMENTS

Execution Instructions

The above ARGUMENTS are the description of the class/feature to implement. Start the TDD workflow based on this description.

If ARGUMENTS is empty ask the user for the class/feature to implement.

Invocation example:

  • /csharp-tdd-develop UserService → ARGUMENTS = "UserService"
  • /csharp-tdd-develop 주문 처리 서비스 → ARGUMENTS = "Order processing service"

Execution Example

Request

"Create UserService with TDD"

Execution Flow

## Phase 0: 환경 확인
Runner: xUnit ✓ | FluentAssertions: YES ✓ | Moq: YES ✓

---

## Phase 1: 분석
- 클래스: UserService (Business Service)
- 시나리오 4개 도출

---

## Phase 2: RED
→ 서브에이전트 호출
← 테스트 파일 생성, 실패 확인됨 ❌

---

## Phase 3: GREEN
→ 서브에이전트 호출
← 서비스 구현, 테스트 통과 ✅

---

## Phase 4: REFACTOR
→ 서브에이전트 호출
← 코드 정리 완료, 테스트 유지 ✅

---

## TDD 사이클 완료!
- src/Services/UserService.cs
- tests/UnitTests/Services/UserServiceTests.cs

Test File Path Rules

Source Location Test Location
src/Services/UserService.cs tests/UnitTests/Services/UserServiceTests.cs
src/ViewModels/MainViewModel.cs tests/UnitTests/ViewModels/MainViewModelTests.cs
src/Repositories/UserRepository.cs tests/IntegrationTests/Repositories/UserRepositoryTests.cs

Error Handling

Situation Handling
Test runner not installed Stop after outputting the installation command
Tests pass in RED Request stop + scenario review
Still failing in GREEN After up to 3 retries, ask the user for help
Fails in REFACTOR Request rollback

Delegation structure

csharp-tdd-develop (Orchestrator)
    │
    └── general-purpose sub-agent
            │
            └── 참조 가능 리소스:
                  ├── csharp-best-practices/rules/ ← 12개 규칙 (필요시 Read)
                  └── csharp-test-develop/references/
                        └── csharp-test-patterns.md ← 테스트 패턴 (필요시 Read)

Resources

scripts/

  • test-detector.js: Detect test environment based on .csproj
    • --detect: Check only the test environment