本文へ移動
cccskills
無料GitHub で公開

tdd-feature

간결한 plan을 사용자와 합의한 뒤, feature(use case) 하나를 RGB(Red→Green→Blue) 사이클로 끝까지 자율 구현하는 오케스트레이터. 문제 정의·기능 분해·완료조건(programmer test) 합의까지는 사용자와 피드백을 주고받고(인터랙티브), 합의 후 구현은 그 feature의 모든 test에 대해 Red 전체→Green 전체→Blue 전체 3-phase로 피드백 없이 끝까지 진행하고, feature(use case) 전체를 phase마다 하나씩 최대 3개 커밋(reviewable-commits Why-body 포함)으로 남긴다(자율). superpowers의 장황한 spec/plan 대신 개발에 맞는 간결 포맷을 쓴다. "기능을 TDD로 끝까지 구현", "plan 합의하고 자율 구현", "feature 단위 RGB", "use case TDD로 짜줘", "/tdd-feature" 요청 시 반드시 사용. 후속 "이어서", "다음 feature", "재개", "다시 진행"도 처리. 단, 단일 test의 step-wise(매 단계 피드백) RGB는 /tdd-rgb, plan 문서만 작성하고 끝낼 때는 /tdd-plan이 적합.

インストール方法を見る

含まれるファイル(1)

  • SKILL.md25.1 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

tdd-feature — 간결 Plan → Feature 단위 자율 RGB

하나의 feature(use case)를, 간결한 plan을 사용자와 합의한 뒤 RGB 사이클로 끝까지 자율 구현하는 오케스트레이터입니다. 기존 tdd-red/tdd-green/tdd-blue 에이전트를 재사용합니다.

GOAL

  • 성공 = 하나의 feature가 ① 간결 plan 합의 ② 모든 programmer test가 RGB로 구현·통과 ③ feature(use case) 전체가 reviewable-commits 표준(Why-body)을 갖춘 3-phase 커밋(test:/feat:/refactor:)으로 남음
  • Phase A (인터랙티브): 문제·기능 분해·완료조건을 사용자와 합의
  • Phase B (자율): 합의된 단일 feature를 피드백 없이 끝까지 구현
  • 향후 리뷰어가 커밋 메시지만으로 그 feature에서 내린 결정의 의도(Why)·맥락을 재구성할 수 있음

CONSTRAINTS

Hard Rules

1. WIP = 1 (한 번에 하나의 feature)

  • 한 실행에서 feature(use case) 하나만 구현한다. plan에 feature가 2개 이상이면, 이번에 구현할 하나를 선택하고 나머지는 수정하지 않는다.
  • 선택한 feature 완료 후 종료한다. 남은 feature는 "이어서 다시 호출" 또는 "다른 세션에서" 진행하도록 안내한다.
  • 한 번에 하나에 집중해야 맥락·품질이 유지되고 슬라이스 단위로 동작을 검증할 수 있다(Walking Skeleton → 슬라이스 정교화).

2. 자율성 경계 = Phase 경계

  • Phase A(plan)는 인터랙티브 — 각 단계마다 사용자 합의를 받고 다음으로 간다.
  • Phase B(구현)는 자율 — plan이 합의되면 그 feature의 모든 test에 대해 R→G→B를 피드백 요청 없이 끝까지 실행한다.
  • 경계를 넘지 않는다: plan 미합의 상태로 구현 진입 금지, 합의 후 구현 중 불필요한 중단·재확인 금지. (이 점이 /tdd-rgb와의 근본 차이 — tdd-rgb는 기어가 정한 검토 지점마다 피드백을 받는다.)

2a. 기어(Gears) 위치 — Phase B = high 기어

이 스킬은 --gear 옵션을 받지 않는다. Phase B의 자율 진행 자체가 feature 범위의 high 기어이기 때문이다. 따라서 tdd-rgb의 high 기어 안전장치를 동일하게 적용한다 (자율성만 가져오고 안전망을 제외하는 것은 허용되지 않는다):

  • 시작 전 폭발 반경(blast radius) 점검 — 인증/인가, 결제·금액 계산, 데이터 삭제·변경, 외부 API 호출, 동시성에 해당하면 Phase B 진입 전에 경고하고 "/tdd-rgb --gear=low|mid로 단계별 검토"를 권한다. 결정은 사용자
  • 시작 커밋 해시 기록 — Phase B 시작 시 HEAD를 plan 문서에 남긴다(적대적 리뷰 diff 기준점)
  • 완료 보고 전 적대적 리뷰 — ../tdd-rgb/references/adversarial-review.md의 절차를 그대로 실행. green 스위트 + 적대적 리뷰 통과가 이 스킬의 Definition of Done
  • 후퇴·놀라움 발생 시 — 자율을 중단하고 사용자에게 돌아가는 것이 다운시프트에 해당한다 (tdd-rgb의 다운시프트 신호와 동일: revert, 예상 밖 실패 반복, 최소 구현 초과)

low·mid 기어가 필요하면 이 스킬이 아니라 /tdd-rgb --gear=low|mid를 쓴다 — 낯선 도메인, 학습 목적, 설계 확신 부족은 자율 구현의 전제(작동하는 이론 보유)를 만족하지 않는다.

3. use case 내 3-phase 커밋 (high 기어의 커밋 단위)

  • feature(use case) 하나 = 최대 3개 커밋. 테스트 단위가 아니라 phase 단위로 나눈다 — 그 feature의 모든 test에 대한 Red 변경을 한 커밋(test:)에, Green 변경을 한 커밋 (feat:)에, Blue 변경을 한 커밋(refactor:, tidying이 불필요하면 생략)에 담는다. 테스트마다 나누지 않고, feature 전체를 진행해 한 phase씩 끝낸다: 모든 test의 Red를 다 쓴 뒤 → 모든 test의 Green을 채우고 → 마지막에 Blue를 한 번 적용한다.
  • 따라서 R/G/B 에이전트는 커밋하지 않는다 — git add까지만 수행하고(커밋 보류), 각 phase가 feature의 모든 test에 대해 끝날 때마다 이 오케스트레이터가 커밋한다.
  • use case 경계를 넘겨 합치지 않는다 — 두 feature를 같은 phase 커밋에 담으면 "이 phase가 이 feature에 대해 무엇을 했는가"라는 리뷰 단위가 성립하지 않는다. Hard Rule 1(WIP=1)이 이 경계를 자동으로 보장한다.
  • 제약: test 단위 revert는 불가능하다(되돌림 단위는 phase). phase 단위 되돌림 (구현만, 또는 tidying만)은 가능하다. 확신이 부족하면 /tdd-rgb --gear=low|mid로 간다 (정본: ../tdd-rgb/SKILL.md의 "진행 표기 규칙").

4. Reviewable 커밋 (mental model을 커밋에 기록한다)

  • 모든 커밋은 docs/reviewable-commits.md(없으면 ${CLAUDE_PLUGIN_ROOT}/references/reviewable-commits.md) 표준을 단일 출처로 따른다.
  • 이 스킬·에이전트는 subject·body 형식을 재기술하지 않고 경로로 참조만 한다(배포 시 표준 전문은 README의 "커밋 표준" 섹션 참조).
  • 단, 길이는 플러그인 ../../references/commit-style.md의 간결성 규칙(제목 + 핵심 bullet 2~4줄)이 우선한다.
  • 이 스킬 고유사항만 여기 명시: 커밋이 phase마다 하나이므로 subject의 type 접두사는 그 phase 그대로(test:/feat:/refactor:)이고, 무엇을 했는지가 아니라 그 phase가 이 use case에 대해 무엇을 보장·구현·정리했는지를 적는다.
  • ADR성 결정(되돌리기 어려운 설계 선택)도 커밋 본문에 내장한다 (별도 ADR 문서를 만들지 않는다).

5. TDD 핵심 규칙 (tdd-rgb 계승)

  • Three Laws of TDD: 실패 테스트 없이 production code 금지 / 실패를 보일 만큼만 테스트 작성 / 통과시킬 만큼만 구현.
  • 한 번에 하나의 failing test. 실패 테스트가 있으면 새 테스트 추가 금지.
  • TEST SHOULD FAIL WHEN YOU ADD IT — 모델 코드 수정 없이 통과하는 테스트는 추가하지 않는다.
  • 허락 없이 테스트 삭제 금지.

6. 기존 에이전트 재사용

  • tdd-red/tdd-green/tdd-blue 에이전트(모델 sonnet)를 Agent 도구로 위임한다. 새 에이전트를 만들지 않는다.
  • 커밋 표준은 에이전트도 위임 prompt도 소유하지 않는다 — 양쪽 모두 reviewable-commits.md를 경로로 참조(cite)할 뿐이다. 위임 prompt는 형식을 다시 적지 않고 단계(R/G/B)·자율 지시·커밋 보류 지시만 전달한다(아래 OUTPUT FORMAT 참조).
  • 커밋은 에이전트가 아니라 이 오케스트레이터가 수행하므로, 각 에이전트가 반환한 변경 요약을 모아 두었다가 use case 커밋의 body 재료로 쓴다.

배움 반영 게이트 (Spec Anchored)

구현 중 앵커 문서(규칙·예제)와 어긋나는 배움을 발견하면 코드보다 앵커를 먼저 갱신하고 같은 커밋에 담는다. 규칙이 바뀌는 배움만 사용자에게 질문한다. 절차·기준은 ../../references/anchor-update.md가 정본.

Principles

간결 우선 (anti-verbose)

superpowers·tdd-plan의 장황함을 제거한다. plan은 합의에 꼭 필요한 것만 담는다.

  • 남길 것: 문제(무엇을·왜), feature별 스토리 한 줄·핵심 규칙, programmer test 목록.
  • 버릴 것: 요구사항 작성 원칙(완전성/명확성/일관성)의 메타설명, INVEST 점검 서술, Gherkin Rule:/Examples 정식 서식(핵심 예시는 test 목록 항목으로 흡수), 별도 경계조건 섹션.

Programmer Test (완료 조건의 정의)

  • 완료 조건 = Kent Beck의 programmer test. FIRST(Fast, Isolated, Repeatable=Deterministic, Self-validating, Timely) + Test Desiderata를 만족하고, 동작(behavior)에 coupled / 구조(structure)에 decoupled.
  • 작성 순서: degenerate(null·empty·0·경계) → interesting → general. (상세 기준은 tdd-plan·tdd-rgb 스킬 참조.)
  • 기능의 external behavior를 실행 가능한 명세(Cucumber .feature)로 구축해 주 검증층으로 쓸 때는 cucumber-acceptance 스킬 참조 — 그 경우 .feature가 programmer test 계층이 되고, JUnit은 구현 세부사항과 결합되는 unit test로 세밀한 분기만 보조한다(programmer test가 좁혀지는 것이 아니라 별개 계층이 나뉘는 것).
  • 요구사항 형식 선택 기준(0층 도메인 규칙 / User Story / Gherkin / 조건부 Use Case)은 tdd-plan 스킬이 단일 출처다 — 완료 조건을 Gherkin 핵심 예시로 쓰면 이후 .feature로 재작성 없이 이관된다.

OUTPUT FORMAT

호출

/tdd-feature [feature 설명 또는 plan-doc-path]
  • 인자로 feature 설명을 주면 Phase A의 문제 정의 출발점으로 쓴다.
  • 기존 plan 문서 경로를 주면, 그 문서를 읽어 합의 상태를 파악하고 적절한 Phase로 진입한다(후속 "이어서"/"재개").

진입 판단 (Phase 0)

  1. 인자로 plan 문서 경로가 주어졌거나 작업 디렉토리에 plan 문서가 있으면 읽는다.
  2. 상태에 따라 분기:
    • plan 없음 / 미합의 → Phase A부터
    • plan 합의됨 + 미구현 test 존재 → Phase B로 (해당 feature 자율 구현)
    • 한 feature 완료 + 남은 feature 존재 → 사용자에게 다음 feature 선택 요청 (WIP=1)

Phase A: 간결 Plan (인터랙티브)

간결 plan 포맷

# {작업명}

## 문제
- 무엇을: {사용자가 무엇을 하려는가}
- 왜: {이것이 왜 필요한가 / 무엇을 해결하나}

## Features
### F1: {use case 이름}
스토리: As a {역할}, I want {원하는 것}, so that {가치}   ← 한 줄 압축. so that이 비면 작업 지시다
규칙: {핵심 비즈니스 규칙 1~3줄}
완료 조건 (programmer tests):
- [ ] {가장 단순한 degenerate case}
- [ ] {경계 case}
- [ ] {일반 case}

### F2: ...   ← 있으면 나열만, 구현은 한 번에 하나(WIP=1)

## 진행 기록
Phase B 시작 커밋: {F1: abc1234}   ← Phase B 진입 시 feature마다 HEAD 해시 기록 (적대적 리뷰 diff 기준점)

진행 단계

각 단계 완료 후 사용자 피드백을 받고, 명시적 승인이 있을 때만 다음으로 간다.

  1. 문제 정의 — 무엇을/왜를 1~2문단으로. 모호하면 질문한다.
  2. feature 분해 — 실행 가능한 use case 단위로 나눈다. 이번에 구현할 feature 하나를 선택한다(WIP=1).
  3. 완료 조건 합의 — 선택한 feature의 programmer test 목록을 degenerate→general로 작성하고 합의한다.
  4. plan 문서화 + 커밋 — 위 포맷으로 마크다운 작성(경로는 사용자 지정, 없으면 제안). git add <plan> 후 docs: {작업명} plan 합의 커밋.

합의 게이트 (Phase A → B 전환점)

  • plan(특히 선택 feature의 test 목록)이 합의되고, 사용자가 명시적으로 구현 시작을 승인해야 Phase B로 진입한다.
  • 이 게이트가 인터랙티브↔자율의 경계다. 승인 전에는 production code를 한 줄도 쓰지 않는다.

Phase B: Feature 단위 자율 RGB (합의 후)

진입 직전 (high 기어 안전장치, Hard Rule 2a): ① 폭발 반경(blast radius) 점검 — 해당하면 경고하고 /tdd-rgb --gear=low|mid 대안을 제시한 뒤 사용자 결정을 기다린다. ② 현재 HEAD 해시를 plan 문서의 ## 진행 기록 섹션에 Phase B 시작 커밋: {feature: 해시} 형식으로 기록한다 (위 plan 포맷 참조 — 적대적 리뷰가 이 값을 diff 기준점으로 읽는다).

선택된 feature의 구현 목록(web-app은 .feature의 @pending 시나리오 목록, general은 앵커 문서 ## 예제 (검산표) 표의 미구현 행 — Cucumber 없이 구현하기로 선택했다면 앵커 예제 검산표를 구현 목록으로 사용한다. --full로 작성한 경우 그 unit test 목록)를 위에서 아래로 순회한다. 테스트 단위로 R→G→B를 반복하지 않는다 — feature 전체를 phase 단위로 진행한다: 모든 test에 대해 Red를 다 마친 뒤, 모든 test에 대해 Green을 채우고, 마지막에 Blue를 feature 범위로 한 번 적용한다. 단계·test 사이에 사용자 피드백을 요청하지 않는다.

협력 객체가 다수 관여하는 feature에서도 phase를 끝까지 마친 뒤 실행·확인한다. 그래야 phase 경계가 실제 리뷰 단위(이 phase가 feature 전체에 대해 무엇을 했는가)로 남는다.

feature의 3-phase

  1. Red 전체 — feature의 미완료 test(- [ ]) 각각에 대해 tdd-red를 순차 위임한다. 각 위임은 그 test 하나의 실패 테스트만 작성, 커밋 보류(git add까지). 모든 test를 다 쓴 뒤 스위트를 실행해 신규 test 수만큼 의도한 실패인지 확인한다.
  2. 커밋 1 (test:) — git add 누락분 확인 후 커밋. subject test(<범위>): <feature 이름> — 실패 테스트 작성. 체크박스는 아직 - [ ]로 남긴다 (아래 "Feature 완료 처리"의 커밋 절차 참조).
  3. Green 전체 — 같은 순서로 tdd-green을 순차 위임한다. 위임 prompt에 "최대한 절차적으로"를 명시한다 — 추출·일반화 없이 통과만 시킨다(정리는 Blue phase가 담당). 커밋 보류. 전체 완료 후 스위트 전부 green을 확인한다.
  4. self-check (Green 커밋 전) — 커밋할 diff가 이미 추출된 private 메서드·이름 붙은 중간 변수를 여럿 갖고 있다면(Composed Method 형태), "Blue가 정리할 게 없다"로 판단하지 말고 Green 위임 자체를 의심한다 — 참조 구현이나 최종 형태를 그대로 옮겨 쓰지 않았는지 확인하고, 인위적으로 절차적인 형태로 다시 만들어 커밋한다.
  5. 커밋 2 (feat:) — git add 후 커밋. subject feat(<범위>): <feature 이름>. feature의 모든 test 체크박스를 - [x]로 갱신해 같은 커밋에 담는다.
  6. Blue 전체 — tdd-blue에 이 feature 범위 전체(커밋 2 이후 변경 파일 목록)로 위임한다. Local Tidying Process. 커밋 보류. 적용 후에도 스위트 green 유지를 확인한다.
  7. 커밋 3 (refactor:) — 변경이 있으면 git add 후 커밋. 변경이 없으면(이미 깔끔하면) 생략한다.
  8. 추가 항목 pass — 1·3·6의 에이전트 보고에서 목록 추가: 항목을 모은다. 규칙이 바뀌는 항목은 사용자에게 질문해 확정한다(Phase B에서 유일하게 허용되는 중간 질문). 확정된 추가 행이 있으면 그 행만 대상으로 1~7을 한 번 더 실행한다(커밋 최대 3개 추가, subject에 "추가 항목" 명시). 추가가 없을 때까지 반복한다. 절차는 ../../references/anchor-update.md의 "테스트 목록 갱신"이 정본

각 phase 내부(1, 3, 6)에서 test마다 에이전트가 반환한 변경 요약(무엇을·왜 그렇게 했는가)을 보관한다 — 그 phase 커밋 body의 재료다. 작업 내역은 plan 문서에 1~3줄 기록한다(코드 제외).

커밋 절차의 세부(진행 기록 표기 시점·body 구성)는 아래 "Feature 완료 처리" 참조.

Getting Stuck 후퇴 수신: Green 단계에서 tdd-green이 "Getting Stuck 복구 경로" 1단계(simpler test로 후퇴)를 보고하면, 오케스트레이터가 원 테스트를 @Disabled 처리하고 simpler test를 목록 앞에 삽입한 뒤 자율 진행을 계속한다. 후퇴 발생은 plan 문서 작업 내역에 남긴다 — 사용자 중단 없이 처리하되 최종 검토에서 보이게.

에이전트 위임 prompt 템플릿

각 에이전트 호출 시 Agent 도구의 subagent_type에 tdd-red/tdd-green/tdd-blue를 지정하고, prompt에 대상 test + 자율 지시 + 커밋 보류 지시만 전달한다:

[자율 모드 / 커밋 보류 / feature: {F이름} / phase: {Red|Green|Blue} 전체 / test: "{test 설명}"]

{Red|Green|Blue} 단계를 수행하세요.

- **커밋 보류**: `git add`까지만 하고 커밋하지 마세요. 이 feature는 phase 단위(전체
  Red→전체 Green→전체 Blue)로 최대 3번 커밋되며, 커밋은 오케스트레이터가 수행합니다.
- (Green 단계에만) **최대한 절차적으로 구현하세요** — 추출·일반화하지 마세요. 정리는
  모든 test의 Green이 끝난 뒤 Blue phase에서 한 번에 합니다.
- 대신 변경 요약을 반환하세요 — 무엇을 바꿨는지, **왜 그렇게 했는지(버린 대안 포함)**.
  이 요약이 그 phase 커밋 body의 재료가 됩니다.
- 목록에 없는 필요한 동작을 발견하면 목록에 추가(기존 규칙의 새 예시)하거나 보고(새
  규칙)하고, 완료 보고에 `목록 추가: [항목 | 없음]`을 반드시 적으세요.
- 이 단계는 자율 실행입니다. 작업 후 사용자 피드백을 기다리지 마세요.

phase 커밋 body에 담을 Why

phase마다 커밋 하나이므로 그 phase가 feature 전체에 걸쳐 무엇을 했는지를 테스트별로 나열하지 말고 결정별로 적는다:

phasebody에 담을 Why
Red (test:)이 동작(인수조건)들이 왜 중요한가, 왜 이 순서로 골랐나
Green (feat:)왜 이 구현을 택했나 (다른 접근을 배제한 이유)
Blue (refactor:)tidying이 무엇을 드러냈나 (이 구조가 의도를 더 잘 드러내는 이유)

Feature 완료 처리

  • feature의 모든 test가 - [x]이고 전체 테스트가 통과하면 구현 완료. 체크박스만으로 판정하지 않는다 — 전체 스위트 green을 함께 확인한다. Red phase 커밋 시점에는 모든 test가 아직 실패 상태이므로 체크박스는 전부 - [ ]로 남아 있는 것이 정상이다 — Green phase 커밋에서 일괄 - [x]로 갱신한다.
  • 진행 기록 대조: Green phase 커밋 직후, 체크된 항목과 실제 테스트 코드를 맞춰 본다. 체크 안 된 항목을 덮는 테스트가 이미 있거나, 체크됐는데 대응 테스트가 없으면 그 자리에서 바로잡는다(자율 진행은 중간 검토가 없어 드리프트가 누적된다).
  • 완료 판정 전 대응 점검: 미구현 행 0개(추가 항목 pass 포함) + ## 규칙 모든 번호가 테스트 1개 이상과 대응하는지 확인한다. 대응 없는 규칙은 미구현 행으로 추가하고 추가 항목 pass로 처리한다. 정본은 ../../references/anchor-update.md의 "완료 판정 전 대응 점검"
  • 3-phase 커밋 (각 phase가 feature의 모든 test에 대해 끝날 때마다 수행 — 위 "feature의 3-phase" 1~6단계와 동일 절차의 커밋 부분만 재정리):
    1. 커밋 1 (test:) — Red 전체 완료 후. git status로 누락분 확인 후 git add, 커밋. subject test(<범위>): <feature 이름> — 실패 테스트 작성
    2. 커밋 2 (feat:) — Green 전체 완료 + 스위트 green 확인 후. git add, 커밋. subject feat(<범위>): <feature 이름>. 체크박스 갱신을 같은 커밋에 담는다
    3. 커밋 3 (refactor:) — Blue 적용 + 스위트 green 재확인 후. 변경이 있으면 git add, 커밋. 변경 없으면 생략
    • 각 커밋 body는 reviewable-commits.md 표준 + 위 "phase 커밋 body에 담을 Why"의 해당 행
    • 한글 메시지는 임시 파일 + git commit -F (-m "한글" 금지 — 깨짐)
  • 적대적 리뷰 (필수): 완료 보고 전에 실행한다 — 시작 커밋 해시부터 HEAD까지의 diff를 대상으로, ../tdd-rgb/references/adversarial-review.md(리뷰어 선택·내장 프롬프트·심각도 처리)를 Read로 읽어 그대로 따른다. green 스위트 + 적대적 리뷰 통과가 Definition of Done. 리뷰에서 수정이 발생하면 그 수정이 속한 phase의 커밋에 --amend로 합친다 — 이미 커밋된 다른 phase는 수정하지 않는다.
  • 완료 보고: 구현된 test 목록, 3-phase 커밋 해시(test:/feat:/refactor:, 생략된 phase가 있으면 명시), 통과 상태, 적대적 리뷰 결과를 요약한다. 표본 정독용으로 대표 test 하나(가장 복잡했거나 후퇴가 있었던 것)를 추천해 함께 제시한다.
  • 하드닝 제안 (실행 아님): 완료 보고 마지막에 ../tdd-rgb/references/hardening-gate.md를 Read로 읽어 그 규칙대로 제안 블록을 추가한다 — CRAP·DRY(빠름, 변경 파일 한정)와 mutation(느림, 파일 1개)을 사용자가 복사해 실행할 수 있는 명령으로. 블록 안의 순서는 비용순이 아니라 파이프라인순이다 — ①CRAP·DRY(정리할 곳 찾기) → ②/system-wide-refactoring(정리) → ③mutation(정리된 코드에). ②가 뮤턴트 지점을 바꾸므로 ③이 마지막이다. 적용 조건 (Java·src/main 변경 존재, CRAP·mutation은 추가로 Maven 필요) 미충족 시 생략 사실만 한 줄 보고. 자동 실행 금지.
  • 세션 프로파일 안내: 하드닝 제안 다음 줄에 "/tdd-profile — 이 세션의 단계· 에이전트별 시간·토큰과 model/effort 조정안" 한 줄을 추가한다. 실행은 사용자가 한다.
  • WIP=1 안내: plan에 다른 feature가 남아 있으면 — "feature {F} 완료. 남은 feature: {목록}. 이어서 진행하려면 /tdd-feature {plan경로}로 다시 호출하거나, 다른 세션에서 진행하세요." (자동으로 다음 feature를 시작하지 않는다.)

FAILURE CONDITIONS

증상대처
plan 미합의 상태로 구현 진입 시도중단하고 Phase A로 복귀, 합의 게이트 통과 후 재진입
feature 2개 이상을 한 실행에서 구현 시도WIP=1 위반 — 하나로 좁히고 나머지는 다음 실행으로
커밋이 What만 담고 Why가 없음reviewable-commits 미달 — body에 Why·버린 대안 보강 후 amend
자율 구현(Phase B) 중 매 단계 피드백 요청/tdd-rgb와 혼동 — Phase B는 feature 끝까지 자율
폭발 반경(blast radius) 점검 없이 Phase B 진입high 기어 안전장치 누락(Hard Rule 2a) — 점검 후 재진입, 해당 영역이면 /tdd-rgb --gear=low|mid 권고
시작 커밋 해시 미기록적대적 리뷰의 diff 기준점 없음 — Phase B 진입 시점 커밋을 찾아 진행 기록에 보강
하드닝 도구를 자동 실행함제안만 모드 위반 — 실행을 중단하고 제안 블록으로 되돌린다
적대적 리뷰 없이 완료 보고Definition of Done 미달 — 리뷰 실행 후 결과를 포함해 재보고
진행 기록 체크박스와 실제 테스트 불일치드리프트 — 완료 처리의 대조로 바로잡고, Green phase 커밋에 문서 갱신을 함께 담는다
에이전트가 test마다 커밋함커밋 보류 지시 누락(Hard Rule 3) — git reset --soft로 그 phase 시작점까지 되돌려 phase 커밋 하나로 다시 만든다
feature 2개가 한 phase 커밋에 담김use case 경계 위반 — WIP=1을 지키지 않은 결과. 커밋을 분리한다
테스트 단위로 R→G→B를 반복함(phase를 안 나눔)Hard Rule 2a/3 위반 — high 기어의 3-phase 커밋 단위를 따르지 않은 것. 이미 커밋됐다면 phase 경계로 재구성하거나 사용자에게 보고
low·mid 검토 밀도를 요구받고도 이 스킬로 진행기어 불일치 — /tdd-rgb --gear=low|mid로 전환 안내
추가 시점에 실패하지 않는 testTDD 위반 — 모델 코드 수정이 필요한 failing test만 추가
요구사항 이해 불확실추측 말고 "제가 이해한 것이 맞는지 확인해주세요"로 질문 (Phase A 한정)
앵커와 어긋난 코드 변경을 앵커 갱신 없이(또는 다른 커밋으로) 커밋함배움 반영 게이트 위반 — 앵커를 먼저 갱신하고 같은 커밋에 담아 재정리
구현 중 발견한 필요한 동작이 목록에 없음 / 대응 테스트 없는 규칙이 남은 채 완료 보고테스트 목록 갱신 위반 — 미구현 행으로 추가하고 추가 항목 pass 실행

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

동일한 결과를 내는 여러 조건문(OR 나열·중첩 AND)을 하나로 통합하고 의미 있는 boolean 메서드로 추출. "조건문 합쳐", "같은 결과 반환하는 if 정리", "중첩 if 평탄화", "/consolidate-conditional" 요청 시 사용. 단, 여러 메서드에 흩어진 동일 조건을 호출자 쪽으로 올리는 것은 /lift-up-conditional, 복잡한 조건식·분기를 메서드로 쪼개는 것은 /decompose-conditional이 적합. /consolidate-conditional [commit-ref]로 호출.

日本語の概要は準備中です。原文の説明を表示しています。

msbaek/msbaek-claude-plugins82026年10月1日 更新

기능의 external behavior를 Cucumber 인수 테스트(주 검증층)로 구축 — .feature 실행으로 문서↔코드 드리프트를 구조적으로 차단, Four Layer(Steps→Protocol Driver→SUT), 태그 기반 가역 제외, 기존 JUnit 인수 테스트 이관. "인수 테스트 도입", "Gherkin을 실행 가능하게", "cucumber 셋업" 요청 시 사용. /cucumber-acceptance로 호출.

日本語の概要は準備中です。原文の説明を表示しています。

msbaek/msbaek-claude-plugins82026年10月1日 更新

복잡한 if/then/else의 조건식과 각 분기를 의미 있는 메서드로 추출하여 가독성 향상. "조건문 분해", "if 가독성", "복잡한 조건식에 이름 붙여", "/decompose-conditional" 요청 시 사용. 단, 같은 결과를 내는 조건문들을 하나로 합치는 것은 /consolidate-conditional, 타입별 분기를 클래스로 바꾸는 것은 /replace-conditional-with-poly가 적합. /decompose-conditional [commit-ref]로 호출.

日本語の概要は準備中です。原文の説明を表示しています。

msbaek/msbaek-claude-plugins82026年10月1日 更新

Primitive Obsession 제거 — 검증·연산이 따라다니는 primitive 필드(금액+통화, 이메일 문자열 등)를 도메인 개념을 담은 Value Object로 치환. "값 객체 도입", "primitive obsession", "Money 클래스로", "/discover-value-object" 요청 시 사용. 단, 함께 전달되는 파라미터 묶음을 객체로 바꾸는 것은 /introduce-parameter-object, 컬렉션을 감싸는 것은 /first-class-collection이 적합. /discover-value-object [commit-ref]로 호출.

日本語の概要は準備中です。原文の説明を表示しています。

msbaek/msbaek-claude-plugins82026年10月1日 更新

컬렉션 getter가 내부 List/Set을 직접 노출하는 것을 방지 — unmodifiable 반환 + add/remove 메서드 제공. "컬렉션 캡슐화", "getter가 List 그대로 노출", "unmodifiable로", "/encapsulate-collection" 요청 시 사용. 단, 컬렉션과 관련 로직을 전용 클래스로 뽑는 것은 /first-class-collection이 적합. /encapsulate-collection [commit-ref]로 호출.

日本語の概要は準備中です。原文の説明を表示しています。

msbaek/msbaek-claude-plugins82026年10月1日 更新

암묵적 의존성(전역 변수·클래스 필드·싱글턴 접근)을 명시적 파라미터로 전환하여 메서드 투명성 향상. "숨은 의존성 드러내", "필드 대신 파라미터로", "전역 참조 제거", "/explicit-parameters" 요청 시 사용. 단, 파라미터가 많아져 묶어야 하면 /introduce-parameter-object, I/O와 계산 분리는 /segregate-functional-core가 적합. /explicit-parameters [commit-ref]로 호출.

日本語の概要は準備中です。原文の説明を表示しています。

msbaek/msbaek-claude-plugins82026年10月1日 更新

msbaek のスキルをすべて見る

このスキルの問題を報告する