csharp-tdd-develop

TDD 기반 C#/.NET 개발. 테스트 먼저 작성 후 구현. Red-Green-Refactor 순서 강제. 서브에이전트에 위임.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "csharp-tdd-develop" with this command: npx skills add jeongheonk/c-sharp-custom-marketplace/jeongheonk-c-sharp-custom-marketplace-csharp-tdd-develop

C# TDD Develop

TDD(Test-Driven Development) 워크플로우 조율 스킬. 순서를 강제하고, 실제 작업은 서브에이전트에 위임.

Overview

이 스킬은 워크플로우 조율에 집중합니다:

┌─────────────────────────────────────────────────────────────┐
│  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 테스트 패턴 참조 가능               │
└─────────────────────────────────────────────────────────────┘

강제 규칙

규칙설명위반 시
환경 확인.csproj에서 테스트 환경 감지미설치 시 안내
테스트 먼저구현 코드 작성 전 테스트 코드 필수중단
Red 확인테스트가 실패해야 다음 단계 진행중단
Green 확인테스트 통과해야 리팩토링 진행반복
Refactor 검증리팩토링 후 테스트 재실행롤백

Workflow

Phase 0: 환경 확인

.csproj 파일에서 테스트 환경 자동 감지.

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

정상:

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

미설치 시:

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

→ 설치 안내 후 중단


Phase 1: 분석

요구사항을 테스트 시나리오로 변환.

동작:

  1. 사용자 요구사항 파악
  2. 클래스/서비스 구조 설계
  3. 테스트 시나리오 3-5개 도출
  4. 테스트 파일 경로 결정

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 (서브에이전트 위임)

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 단계에서 수행)
- 테스트가 반드시 실패해야 함
`
})

검증 (csharp-tdd-develop):

  • agent 응답에서 테스트 실패 확인
  • 통과하면 중단: "테스트가 이미 통과합니다. 시나리오를 검토하세요."

Phase 3: GREEN (서브에이전트 위임)

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. 테스트 결과 리포트

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

검증 (csharp-tdd-develop):

  • agent 응답에서 테스트 통과 확인
  • 실패하면 재시도 요청 (최대 3회)

Phase 4: REFACTOR (서브에이전트 위임)

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. 개선 사항 + 테스트 결과 리포트

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

검증 (csharp-tdd-develop):

  • agent 응답에서 테스트 통과 확인
  • 실패하면 롤백 요청

현재 전달받은 인자

ARGUMENTS: $ARGUMENTS

실행 지시

위 ARGUMENTS가 구현할 클래스/기능 설명입니다. 이 설명을 기반으로 TDD 워크플로우를 시작하세요.

ARGUMENTS가 비어있으면 사용자에게 구현할 클래스/기능을 질문하세요.

호출 예시:

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

실행 예시

요청

"TDD로 UserService 만들어줘"

실행 흐름

## 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

테스트 파일 경로 규칙

소스 위치테스트 위치
src/Services/UserService.cstests/UnitTests/Services/UserServiceTests.cs
src/ViewModels/MainViewModel.cstests/UnitTests/ViewModels/MainViewModelTests.cs
src/Repositories/UserRepository.cstests/IntegrationTests/Repositories/UserRepositoryTests.cs

Error Handling

상황처리
테스트 러너 미설치설치 명령어 출력 후 중단
RED에서 테스트 통과중단 + 시나리오 검토 요청
GREEN에서 계속 실패최대 3회 재시도 후 사용자에게 도움 요청
REFACTOR에서 실패롤백 요청

위임 구조

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: .csproj 기반 테스트 환경 감지
    • --detect: 테스트 환경만 확인

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

csharp-code-review

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

csharp-test-develop

No summary provided by upstream source.

Repository SourceNeeds Review
General

wpf-mvvm-generator

No summary provided by upstream source.

Repository SourceNeeds Review