Community코딩 & 개발github.com

Wanbicoi/agent-config

테스트 주도 개발. 사용자가 기능을 빌드하거나 버그를 수정할 때, "red-green-refactor"를 언급하거나 통합 테스트를 원할 때 사용합니다.

agent-config란 무엇인가요?

이 스킬은 테스트 주도 개발(TDD)의 red→green 루프를 효과적으로 수행하기 위한 종합적인 참조 가이드입니다. 좋은 테스트가 무엇인지(공개 인터페이스를 통해 동작을 검증하고 구현 세부 사항에 의존하지 않음), 테스트가 어디에 위치해야 하는지(미리 합의된 seam에서만), 피해야 할 안티패턴(구현 결합, 동어반복, 수평 분할) 및 루프의 규칙(red 먼저, 한 번에 하나의 슬라이스, 리팩토링은 루프 밖)을 상세히 설명합니다. Claude Code, Cursor, Codex 등 다양한 AI 에이전트 플랫폼에서 사용할 수 있으며, 코드베이스 탐색 시 GLOSSARY.md 및 ADR을 존중하고, seam에 대한 합의를 사용자와 먼저 확인한 후 테스트를 작성하도록 안내합니다. 이 스킬은 단순히 테스트 작성법을 넘어, 유지보수 가능하고 의미 있는 테스트를 만드는 원칙과 워크플로우를 제공합니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Wanbicoi/agent-config/tree/HEAD/skills/tdd

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

테스트 주도 개발

TDD는 red → green 루프입니다. 이 스킬은 그 루프가 보관할 가치가 있는 테스트를 생성하도록 만드는 참조 자료입니다. 즉, 좋은 테스트가 무엇인지, 테스트가 어디에 위치해야 하는지, 안티패턴, 그리고 루프의 규칙을 다룹니다. 모든 섹션은 각 주기에 적용됩니다. 루프 전과 도중에 이를 참조하고, 이후에는 참조하지 마십시오.

코드베이스를 탐색할 때는 GLOSSARY.md(존재하는 경우)를 읽어 테스트 이름과 인터페이스 용어가 프로젝트의 도메인 언어와 일치하도록 하고, 작업 중인 영역의 ADR을 존중하십시오.

좋은 테스트란 무엇인가

테스트는 구현 세부 사항이 아닌 공개 인터페이스를 통해 동작을 검증합니다. 코드는 완전히 변경될 수 있습니다. 테스트는 변경되지 않아야 합니다. 좋은 테스트는 명세서처럼 읽힙니다. "사용자가 유효한 장바구니로 체크아웃할 수 있다"는 정확히 어떤 기능이 존재하는지 알려주며, 내부 구조를 신경 쓰지 않기 때문에 리팩터링에도 살아남습니다.

예제는 tests.md에서, 모킹 지침은 mocking.md에서 확인하십시오.

Seam: 테스트가 위치할 곳

seam은 테스트하는 공개 경계입니다. 내부를 들여다보지 않고 동작을 관찰할 수 있는 인터페이스입니다. 테스트는 seam에 위치하며, 내부를 대상으로 하지 않습니다.

미리 합의된 seam에서만 테스트하십시오. 테스트를 작성하기 전에, 테스트할 seam을 기록하고 사용자와 확인하십시오. 확인되지 않은 seam에는 테스트를 작성하지 않습니다. 모든 것을 테스트할 수는 없으므로, seam을 사전에 합의함으로써 테스트 노력이 모든 예외 케이스가 아닌 중요한 경로와 복잡한 로직에 집중되도록 합니다.

질문: "공개 인터페이스는 무엇이며, 어떤 seam을 테스트해야 할까요?" 제안된 각 seam에 대해 무엇을 잡아내고 무엇을 놓치는지 한 줄 메모를 제공하십시오.

인터페이스의 형태 자체가 의문스러울 때(모듈의 깊이, seam이 속한 위치, 인터페이스가 노출해야 하는 것)에는 Skill 도구를 "codebase-design"과 함께 호출하십시오. 이는 모듈, 인터페이스, 깊이, seam, 어댑터, 레버리지, 지역성 용어의 공유 소스이며, 실행할 세션이 아니라 참조할 참고 자료입니다.

안티패턴

  • 구현 결합(Implementation-coupled): 내부 협력자를 모의하고, 비공개 메서드를 테스트하거나, 사이드 채널(인터페이스 대신 데이터베이스 질의)을 통해 검증합니다. 징후: 동작은 변경되지 않았는데 리팩터링할 때 테스트가 깨집니다.
  • 동어반복(Tautological): 단언문이 코드가 값을 계산하는 방식과 동일하게 예상 값을 재계산합니다(expect(add(a, b)).toBe(a + b), 동일한 방식으로 수동 파생된 스냅샷, 자신과 동일하다고 단언된 상수). 이는 구성에 의해 통과하며 코드와 결코 불일치할 수 없습니다. 예상 값은 독립적인 진실 공급원(알려진 올바른 리터럴, 작업 예제, 명세서)에서 가져와야 합니다.
  • 수평 분할(Horizontal slicing): 모든 테스트를 먼저 작성한 다음 모든 구현을 작성합니다. 대량 테스트는 상상된 동작을 검증합니다. 사용자 대면 동작보다는 것들의 _형태_를 테스트하며, 테스트는 실제 변경에 둔감해지고, 구현을 이해하기 전에 테스트 구조에 전념합니다. 대신 수직 슬라이스로 작업하십시오. 하나의 테스트 → 하나의 구현 → 반복. 각 테스트는 마지막 주기가 가르쳐준 것에 반응하는 **추적자 총알(tracer bullet)**입니다.

루프의 규칙

  • Red before green. 먼저 실패하는 테스트를 작성한 다음, 통과시키기에 충분한 코드만 작성하십시오. 미래의 테스트를 예상하거나 추측성 기능을 추가하지 마십시오.
  • 한 번에 하나의 슬라이스. 주기당 하나의 seam, 하나의 테스트, 하나의 최소 구현.
  • 리팩터링은 루프의 일부가 아닙니다. 리팩터링은 검토 단계(code-review 스킬 참조)에 속하며, red → green 구현 주기에 속하지 않습니다.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

관련 스킬