csharp-tdd-develop
npx skills add https://github.com/jeongheonk/c-sharp-custom-marketplace --skill csharp-tdd-develop
Agent 安装分布
Skill 文档
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: ë¶ì
ì구ì¬íì í ì¤í¸ ìë리ì¤ë¡ ë³í.
ëì:
- ì¬ì©ì ì구ì¬í íì
- í´ëì¤/ìë¹ì¤ 구조 ì¤ê³
- í ì¤í¸ ìëë¦¬ì¤ 3-5ê° ëì¶
- í ì¤í¸ íì¼ ê²½ë¡ ê²°ì
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.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
| ìí© | ì²ë¦¬ |
|---|---|
| í ì¤í¸ ë¬ë 미ì¤ì¹ | ì¤ì¹ ëª ë ¹ì´ ì¶ë ¥ í ì¤ë¨ |
| 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: í ì¤í¸ íê²½ë§ íì¸