# 테스트 주도 개발 (tdd)

> 레드에서 그린으로 가는 루프로 테스트를 먼저 쓰고 구현하며, 사용자와 합의한 공개 인터페이스에서만 동작을 검증합니다.

- 카테고리: [테스트·디버깅](https://www.myskills.tools/ko/categories/testing-debugging/)
- 출처: 커뮤니티 · Matt Pocock
- 저장소: https://github.com/mattpocock/skills/tree/main/skills/engineering/tdd (commit 3f59913)
- SKILL.md: https://github.com/mattpocock/skills/blob/main/skills/engineering/tdd/SKILL.md
- 설치 명령: `npx skills add mattpocock/skills --skill tdd`
- 라이선스: MIT
- 호환 도구: Claude Code, Codex, Copilot, Gemini CLI
- 권한: read-repo ✓, write-files ✓, shell ✓, network ✗
- 상태: 스캔 통과
- 규칙 스캔으로 모든 위험을 찾을 수는 없습니다. 설치 전에 이 스킬의 SKILL.md를 읽고 권한을 확인하세요.

## 핵심 규칙

레드가 먼저, 그린이 나중입니다. 실패하는 테스트를 먼저 쓰고 통과에 필요한 만큼만 코드를 작성합니다.

## 실행 단계

1. **도메인 용어 파악** — GLOSSARY.md가 있으면 읽어 테스트 이름을 프로젝트 용어에 맞추고, 관련 ADR을 따릅니다.
2. **테스트 경계 합의** — 테스트할 공개 경계(seam)를 적고 각각 무엇을 잡고 놓치는지 한 줄씩 붙여 사용자에게 확인받습니다.
3. **실패 테스트 하나** — 하나의 seam에서 공개 인터페이스로 동작을 검증하며, 기대값은 코드 로직을 다시 계산하지 않고 독립된 출처에서 가져옵니다.
4. **최소 구현** — 테스트를 통과시키는 데 필요한 코드만 쓰고, 앞으로의 테스트를 미리 대비하거나 추측성 기능을 넣지 않습니다.
5. **수직 슬라이스 반복** — 테스트 하나, 구현 하나씩 루프를 반복합니다. 리팩터링은 루프에 넣지 않고 코드 리뷰 단계로 미룹니다.

## 권한 설명 (SKILL.md 기준)

| 기능 | 필요 여부 | 설명 |
|---|---|---|
| 파일 쓰기 | 필요 | 테스트와 이를 통과시키는 구현 코드를 작성합니다. |
| 명령 실행 | 테스트 시에만 필요 | 테스트를 실행해 실패 후 통과하는지 확인합니다. |
| 네트워크 송신 | 필요 없음 | 절차에 네트워크 접근 단계가 없습니다. |

## SKILL.md 프런트매터(YAML)

```yaml
---
name: tdd
description: Test-driven development. Use when the user wants to build features or fix bugs test-first, mentions "red-green-refactor", or wants integration tests.
---
```

홈: https://www.myskills.tools/ko/ · URL: https://www.myskills.tools/ko/skills/tdd/
