TDD 방식으로 기능을 개발하는 다중 에이전트 시스템 (Red-Green-Refactor)
Automates TDD development using a multi-agent system that cycles through Red-Green-Refactor. It detects your project's language and test framework, then breaks down features into manageable tasks for systematic implementation.
/plugin marketplace add inchan/cc-skills/plugin install icp-tdd@inchan-claude-plugin<feature-description> [requirements...]$ARGUMENTS 기반으로 TDD Red-Green-Refactor 사이클을 자동화합니다.
/tdd-team "배열 합계 함수"
/tdd-team "사용자 인증 API" "JWT 토큰" "bcrypt 해싱"
feature_description = $ARGUMENTS 전체언어 감지 알고리즘:
Step 1: TypeScript/JavaScript 확인
package.json 존재 확인jest|vitest|mocha 검색Step 2: Python 확인
pyproject.toml 또는 requirements.txt 존재 확인pytest|unittest 검색Step 3: 언어 선택
"프로젝트에서 TypeScript와 Python이 모두 감지되었습니다.
TDD로 개발할 언어를 선택하세요."
Options: ["TypeScript", "Python"]
프레임워크별 설치 안내:
{
"subagent_type": "tdd:tdd-task-planner",
"description": "작업 분해",
"prompt": "{
\"feature_description\":\"<$ARGUMENTS>\",
\"project_root\":\"<CWD>\",
\"language\":\"<DETECTED_LANGUAGE>\",
\"test_framework\":\"<DETECTED_FRAMEWORK>\",
\"max_tasks\":20
}"
}
변수:
<DETECTED_LANGUAGE>: Step 2에서 감지된 언어 ("typescript" | "python")
<DETECTED_FRAMEWORK>: Step 2에서 감지된 프레임워크 ("jest" | "vitest" | "pytest" | "unittest")
응답: tasks[] (각 task: id, title, dependencies, files, success_criteria)
total_tasks > 20이면 AskUserQuestion (첫 20개 / 기능 분할 / 전체 실행)
의존성 없는 작업을 배치로 묶기 (최대 4개):
batches = [], completed = Set(), remaining = tasks
WHILE remaining.length > 0:
# 실행 가능한 작업 (의존성 충족)
ready = remaining.filter(t => t.dependencies.every(d => completed.has(d)))
IF ready.length == 0: ERROR "순환 의존성"
# 파일 충돌 없는 배치 (최대 4개)
batch = [], files = Map()
FOR task IN ready:
IF batch.length >= 4: BREAK
IF files.has(task.files.impl) OR files.has(task.files.test): CONTINUE
batch.push(task)
files.set(task.files.impl, task.id)
files.set(task.files.test, task.id)
batches.push(batch)
batch.forEach(t => { completed.add(t.id); remaining.remove(t) })
TodoWrite로 배치 정보 표시
FOR EACH batch:
batch.length == 1: 순차 실행batch.length >= 2: Red 단계만 병렬, 나머지 순차attempt = 1, max = 3
WHILE attempt <= 3:
실패 시 attempt++, 3회 초과 시 실패 반환
{
"subagent_type": "tdd-developer:tdd-<agent>",
"description": "<Stage>: <task.id>",
"prompt": "{\"task_id\":\"<id>\",\"files\":<files>,...}"
}
failed_tasks.length > 0이면 AskUserQuestion:
# TDD 완료
## 요약
- 완료: <completed>/<total> 작업
- 배치: <batches>개
## 생성 파일
<file list>
## 다음 단계
**언어별 명령어**:
- TypeScript/JavaScript: `npm test && git commit`
- Python: `pytest && git commit`