---
name: tdd-enforcement
description: "TDD 강제: RED-GREEN-REFACTOR 사이클을 코딩 워크플로우에 강제 적용"
triggers:
  - "tdd"
  - "test-driven"
  - "테스트 주도"
  - "TDD 강제"
usage: "새 기능 구현(Lv.2+) 시 자동 적용"
examples: "SKILL-EXAMPLES.md 참조"
---

# TDD Enforcement 스킬

## RED-GREEN-REFACTOR 사이클

- **RED**: 구현 전 테스트를 먼저 작성하고 실행 → 반드시 실패해야 함
- **GREEN**: 실패한 테스트를 통과시키는 최소한의 구현 코드를 작성
- **REFACTOR**: GREEN 상태를 유지하며 코드 품질(가독성·성능·중복 제거) 개선

## 적용 기준

- **적용 (Lv.2+)**: 새 함수·클래스·모듈·API 엔드포인트·재사용 컴포넌트 생성
- **제외**: 단순 수정(Lv.1), 설정·문서·CSS·리서치·일회성 스크립트 작업

## 테스트 파일 명명

- Python: `test_<module>.py` (pytest 표준) — `tests/test_user_validator.py`
- TypeScript: `<module>.test.ts` (Jest 표준) — `src/__tests__/userValidator.test.ts`

## 실행 순서

1. 테스트 파일 생성 및 테스트 케이스 작성
2. 테스트 실행 → 실패 확인 (RED)
3. 테스트를 통과하는 최소 구현 작성 (GREEN)
4. 코드 품질 개선 후 테스트 재실행 (REFACTOR)

## audit-trail 기록 규칙

- 파일 수정 순서를 기록: 테스트 파일이 구현 파일보다 먼저 생성·수정되어야 함
- `tdd_check` verifier가 커밋 시점에 파일 타임스탬프 및 수정 순서를 자동 검증
- 순서 역전(구현 먼저 → 테스트 나중) 감지 시 경고 발생 및 팀장 자동 보고

## 예외: 기존 테스트가 있는 경우

- 기존 테스트 파일이 있으면 새 테스트 케이스를 해당 파일에 추가하는 방식으로 진행
- 추가된 케이스가 RED → GREEN → REFACTOR 순서를 지키면 규칙 준수로 인정

## 절대 규칙 (위반 시 경고 및 팀장 보고)

1. **테스트 먼저**: 새 함수·클래스·모듈 구현 전 반드시 테스트 파일 및 코드 작성
2. **RED 필수**: 테스트를 실행하여 실패를 확인해야 함 — 실패 없는 테스트는 TDD 아님
3. **순서 준수**: RED → GREEN → REFACTOR 순서 역전 절대 금지
4. **사후 테스트 금지**: 구현 완료 후 테스트를 추가하는 패턴 절대 금지
5. **스킵 금지**: `it.skip` / `pytest.mark.skip` 등 팀장 승인 없이 사용 금지

## 적용 대상

- 새로운 파일(함수·클래스·모듈) 생성
- 기존 파일에 새 함수·메서드 추가 (복잡한 로직)
- API 엔드포인트·유틸리티·재사용 컴포넌트 신규 구현

## 제외 대상

- Lv.1 버그 수정·오류 정정 (기존 테스트 실행으로 회귀 확인은 권장)
- 빌드·CI/CD 설정, README·주석, CSS·포맷팅, 리서치·마이그레이션 스크립트

---

> 상세 예제·체크리스트·FAQ는 `SKILL-EXAMPLES.md` 참조
> 버전: v1.1 | 작성자: 프레이야 (프론트엔드) | 최종 수정: 2026-03-07
