Writing Plans
개요 (Overview)
엔지니어가 우리 코드베이스에 대한 맥락이 전혀 없고 취향이 모호하다고 가정하고 포괄적인 구현 계획을 작성하세요. 각 작업에 대해 수정해야 할 파일, 코드, 테스트, 확인해야 할 문서, 테스트 방법 등 엔지니어가 알아야 할 모든 것을 문서화하세요. 전체 계획을 한 입 크기(Bite-sized)의 작업으로 제공하세요. DRY, YAGNI, TDD, 빈번한 커밋을 준수하세요.
그들이 숙련된 개발자라고 가정하되, 우리의 도구 세트나 문제 도메인에 대해서는 거의 모른다고 가정하세요. 또한 좋은 테스트 설계를 잘 모른다고 가정하세요.
시작 시 알림: "구현 계획을 생성하기 위해 writing-plans 스킬을 사용하고 있습니다."
컨텍스트: 이 스킬은 전용 워크트리(브레인스토밍 스킬로 생성됨)에서 실행되어야 합니다.
계획 저장 위치: docs/plans/YYYY-MM-DD-<feature-name>.md
한 입 크기 작업 세분화 (Bite-Sized Task Granularity)
각 단계는 하나의 액션(2-5분)입니다:
- "실패하는 테스트 작성" - 단계
- "실패하는지 확인하기 위해 실행" - 단계
- "테스트를 통과시키기 위한 최소한의 코드 구현" - 단계
- "테스트를 실행하고 통과하는지 확인" - 단계
- "커밋" - 단계
계획 문서 헤더 (Plan Document Header)
모든 계획은 반드시 다음 헤더로 시작해야 합니다:
# [기능명] 구현 계획
> **Claude용:** 필수 서브 스킬: 이 계획을 작업별로 구현하려면 superpowers:executing-plans를 사용하세요.
**목표:** [이것이 무엇을 만드는지 설명하는 한 문장]
**아키텍처:** [접근 방식에 대한 2-3 문장]
**기술 스택:** [주요 기술/라이브러리]
---
작업 구조 (Task Structure)
### 작업 N: [컴포넌트 이름]
**파일:**
- 생성: `exact/path/to/file.py`
- 수정: `exact/path/to/existing.py:123-145`
- 테스트: `tests/exact/path/to/test.py`
**단계 1: 실패하는 테스트 작성**
```python
def test_specific_behavior():
result = function(input)
assert result == expected
단계 2: 테스트가 실패하는지 확인
명령어 제안: pytest tests/path/test.py::test_name -v (사용자 실행 요망)
사용자 실행 후 예상 결과: "function not defined"와 함께 실패(FAIL)
단계 3: 최소한의 구현 작성
def function(input):
return expected
단계 4: 테스트가 통과하는지 확인
명령어 제안: pytest tests/path/test.py::test_name -v (사용자 실행 요망)
사용자 실행 후 예상 결과: 통과(PASS)
단계 5: 커밋
git add tests/path/test.py src/path/file.py
git commit -m "feat: add specific feature"
## 기억할 점 (Remember)
- 항상 정확한 파일 경로 사용
- 계획에 완전한 코드 포함 ("유효성 검사 추가"와 같이 모호하게 작성 금지)
- 예상 출력과 함께 정확한 명령어 포함
- @ 구문으로 관련 스킬 참조
- DRY, YAGNI, TDD, 빈번한 커밋
## 실행 이관 (Execution Handoff)
계획을 저장한 후, 사용자에게 실행 방향을 제안하세요:
**"계획이 완료되어 `docs/plans/<filename>.md`에 저장되었습니다. 이제 사용자님께서 이 계획을 어떻게 진행할지 선택해 주시면 됩니다:**
**1. 단계적 상호작용 (현재 세션 유지)** - 작업 단위(Bite-Sized)별로 명령어를 제안받고, 직접 실행한 후 에러나 결과를 건네주어 피드백 루프를 도는 방식 (권장)
**2. 완료 후 일괄 리뷰** - 사용자가 별도로 계획에 따라 전부 구현한 뒤, 완성된 코드를 리뷰받는 방식
**어느 방식을 선택하시겠습니까?"**
**단계적 상호작용 선택 시:**
- 작업당 명령어/코드를 제안하고 사용자의 실행 결과를 분석하여 다음 단계 안내
- 에이전트는 절대 직접 명령을 치지 않음