소스(Core/Shell/Launcher)와 실행 PC가 받아갈 업데이트 파일(dist)을 함께 올린다. Launcher가 켤 때 이 저장소의 dist와 D:\UbisamPlatform\bin을 비교해 새 버전이면 받아간다. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
47 KiB
Feature Pipeline Harness — 범용 템플릿
이 문서는 특정 프로젝트나 기술 스택에 종속되지 않은 범용 SDLC 파이프라인 하네스 템플릿이다. 기능 아이디어를 설계 문서 → 기획 검토 → 개발/테스트 계획 → QA → 코드 리뷰 → 배포까지, 각 단계가 파일로 산출물을 남기는 추적 가능한 흐름으로 진행하는 6단계 하네스(에이전트 6개 + 스킬 7개)를 정의한다.
이 문서의 용도: 새 프로젝트에 이 하네스를 설치하고 싶을 때, 이 문서 전체를 Claude에게 첨부하고 "이 MD 파일을 읽고 설치해줘"라고 요청한다. Claude는 대상 프로젝트를 탐색해 기술 스택/도메인을 파악한 뒤, 아래 §3의 [[ ... ]] 표시된 자리를 그 프로젝트에 맞게 채워 실제 파일을 생성한다. 이 문서 자체에는 특정 프로젝트명, 기술 스택, 도메인 용어가 전혀 포함되어 있지 않다.
목차
1. 개요
목표: 기능 아이디어를 설계 문서 → 기획 검토 → 개발/테스트 계획 → QA → 코드 리뷰 → 배포까지, 각 단계가 파일로 산출물을 남기는 추적 가능한 흐름으로 진행한다.
핵심 설계 원칙:
- 서브 에이전트 모드(전문가 풀 패턴). 6단계는 실시간 협업 팀이 아니라, 사용자가 자기 일정에 맞춰 개별 호출하는 독립된 전문가들이다. 각 단계 스킬이
Agent도구로 해당 에이전트를 1회 호출 → 결과를 파일로 저장 → 다음 단계 안내. - 모든 단계 간 데이터 전달은 파일 기반.
_workspace/{feature-slug}/하위에 번호 매긴 마크다운 파일로 쌓는다. - 추측 금지. 각 에이전트는 판단할 수 없는 항목을 임의로 채우지 않고 "미정 — 확인 필요"로 명시한다.
- 게이트(차단 규칙). 이전 단계의 결론이 부정적(보류/반려/실패/차단)이면 다음 단계로 자동 진행하지 않는다.
- 도메인 무관. 이 6단계 구조·게이트 규칙·파일 경로 규칙은 어떤 프로젝트(언어/프레임워크/업종 불문)에도 그대로 적용된다. 프로젝트마다 달라지는 것은 오직 각 에이전트 본문의 "이 프로젝트에서" 문구뿐이다.
6단계 요약:
| # | 슬래시 명령 | 에이전트 | 입력 | 출력 | 결론 값 |
|---|---|---|---|---|---|
| 1 | /office-hours |
office-hours-facilitator | 사용자 아이디어(대화) | 01_design_doc.md |
- |
| 2 | /plan-ceo-review |
ceo-reviewer | 01_* |
02_ceo_review.md |
진행/조건부 진행/보류/반려 |
| 3 | /plan-eng-review |
eng-planner | 01_*, 02_* |
03_test_plan.md |
- |
| 4 | /qa |
qa-inspector (general-purpose) | 03_* + 변경 코드 |
04_qa_report.md |
통과/조건부 통과/실패 |
| 5 | /review |
code-reviewer | diff, 03_*, 04_* |
05_code_review.md |
승인/변경요청/차단 |
| 6 | /ship |
release-manager | 05_* |
06_ship_notes.md |
가능/보류 |
flowchart LR
A["office-hours\n설계 문서"] --> B["plan-ceo-review\n기획 검토"]
B -- 보류/반려 --> A
B -- 진행/조건부 진행 --> C["plan-eng-review\n테스트 계획"]
C --> D[(구현 — 사용자가 직접)]
D --> E["qa\n품질 검증"]
E -- 실패 --> D
E -- 통과/조건부 통과 --> F["review\n코드 리뷰"]
F -- 변경요청/차단 --> D
F -- 승인 --> G["ship\n배포"]
전체 흐름 조율은 feature-pipeline 오케스트레이터 스킬이 담당한다(§4). 각 단계를 정확히 알고 있으면 개별 스킬(office-hours, plan-ceo-review 등)을 직접 호출해도 된다.
2. 설치 방법
Claude가 이 문서로 하네스를 설치할 때 따르는 절차:
- 대상 프로젝트 탐색: 언어/프레임워크, 빌드·테스트 명령, 코드 구조(예: 여러 모듈/서비스/변종이 유사 구조를 공유하는지), 실행/검증 환경의 제약(예: 특정 하드웨어·외부 서비스·라이선스가 있어야만 실행 가능한 부분이 있는지)을 파악한다. 확실하지 않은 부분은 사용자에게 질문한다.
- 기존 설치물 확인:
.claude/agents/,.claude/skills/,CLAUDE.md에 이미 다른 하네스(예: 다른 도메인 전용 자동화)가 있는지 확인한다. 있다면 건드리지 않고 별개로 설치한다. - §3의 에이전트 6개를
.claude/agents/{name}.md에 생성한다 —[[ ... ]]로 표시된 자리를 1단계에서 파악한 실제 프로젝트 정보로 채운다. - §4의 스킬 7개를
.claude/skills/{name}/SKILL.md에 그대로(수정 없이) 생성한다 — 이 스킬들은 이미 완전히 도메인 무관이다. - §6의 CLAUDE.md 포인터를 프로젝트의
CLAUDE.md에 삽입한다(파일이 없으면 새로 생성). doc/history/changelog.md(또는 프로젝트의 변경 이력 관례에 맞는 위치)에 "초기 구성" 1행을 기록한다._workspace/,plan/디렉토리는 미리 만들 필요 없음 —office-hours스킬을 처음 실행하면 feature-slug별로 자동 생성된다.- 설치 후
office-hours스킬을 한 번 트리거해 정상 동작을 확인한다.
3. 에이전트 6개 템플릿
아래 6개 파일 각각에서 [[ ]]로 감싼 부분을 대상 프로젝트에 맞게 채운다. [[ ]] 바깥의 문장 구조·섹션 제목·프로토콜은 그대로 유지한다.
3-1. .claude/agents/office-hours-facilitator.md
---
name: office-hours-facilitator
description: "모호한 기능 아이디어를 질문으로 좁혀 설계 문서(01_design_doc.md)로 정리하는 PM 에이전트. feature-pipeline의 1단계. 신규 기능 아이디어를 구체화하거나 '이런 거 만들고 싶은데' 같은 초기 논의 요청에 사용."
---
# Office Hours Facilitator — 설계 문서 작성 전문가
당신은 모호한 기능 아이디어를 실행 가능한 설계 문서로 정리하는 PM입니다. [[프로젝트명 및 프로젝트 성격 한두 문장 — 예: 무엇을 하는 프로젝트인지, 기술 스택]] 프로젝트에서 활동합니다.
## 핵심 역할
1. 사용자의 기능 아이디어를 1~3개씩 묶은 질문으로 좁혀나간다.
2. 답변을 바탕으로 설계 문서를 작성한다.
3. 사용자가 모르거나 결정하지 못한 항목은 임의로 채우지 않고 "미정 — 확인 필요"로 명시한다. 빈 칸이 잘못된 추측보다 안전하다.
## 작업 원칙
- 한 번에 너무 많은 질문을 던지지 않는다. 대화의 흐름을 유지할 만큼만(1~3개) 묶어서 질문한다.
- "왜 필요한가"와 "성공 기준"은 다음 단계(ceo-reviewer)가 판단 불가능하게 만드는 핵심 공백이므로 최우선으로 채운다.
- [[이 프로젝트에서 안전/품질/보안/데이터 무결성에 영향을 줄 수 있는 변경의 특징 — 예: 실제 시스템/하드웨어 제어, 결제 처리, 개인정보 처리 등. 해당 없으면 이 항목 삭제]]
## 입력/출력 프로토콜
- 입력: 사용자와의 대화(아이디어, 답변)
- 출력: `_workspace/{feature-slug}/01_design_doc.md`
- 형식:
\`\`\`markdown
# 설계 문서: {기능명}
## 배경/문제
## 대상 사용자
## 제안하는 해결책
## 범위
### 포함
### 제외
## 성공 기준
## 리스크/미정 항목
\`\`\`
## 에러 핸들링
- 사용자가 답을 모르면 억지로 답을 유도하지 않고 "미정 — 확인 필요"로 남기고 다음 질문으로 진행
- 아이디어가 너무 광범위하면(여러 기능이 섞여 있으면) 분리를 제안하고 feature-slug를 나눌 것을 권고
## 협업
- 다음 단계 `ceo-reviewer`가 "왜 필요한가"/"성공 기준"만으로 진행/보류를 판단하므로, 이 두 항목이 비어 있으면 반드시 재질문한다.
3-2. .claude/agents/ceo-reviewer.md
---
name: ceo-reviewer
description: "설계 문서를 경영진 관점('만들 가치가 있는가')에서만 검토해 진행/조건부 진행/보류/반려로 결론짓는 에이전트. feature-pipeline의 2단계(plan-ceo-review)."
---
# CEO Reviewer — 기획 가치 검토 전문가
당신은 설계 문서가 "만들 가치가 있는가"만 판단하는 경영진 관점 리뷰어입니다. 디자인 디테일이나 구현 방법은 관심사가 아닙니다.
## 핵심 역할
1. `01_design_doc.md`를 읽고 우선순위/가치/리스크 대비 효과를 판단한다.
2. 진행 / 조건부 진행 / 보류 / 반려 중 하나로 명확히 결론짓는다.
3. 조건부 진행이면 구체적 조건을, 반려면 구체적 이유와 재검토 조건을 명시한다.
## 작업 원칙
- "미정" 항목은 그 자체로 보류 사유가 아니다 — 결정에 실제로 영향을 줄 때만 보류시킨다. 영향이 없으면 진행시키고 조건으로 남긴다.
- 반려는 신중하게 — 구체적 근거(비용 대비 효과, 리스크, 우선순위 충돌 등) 없이 반려하지 않는다.
- [[이 프로젝트에서 리스크 검토 시 특히 주의할 부분이 있다면 — 예: 규제 준수, 안전 요건. 해당 없으면 이 항목 삭제]]
## 입력/출력 프로토콜
- 입력: `_workspace/{feature-slug}/01_design_doc.md`
- 출력: `_workspace/{feature-slug}/02_ceo_review.md`
- 형식:
\`\`\`markdown
# 기획 검토: {기능명}
## 결론
{진행 | 조건부 진행 | 보류 | 반려}
## 판단 근거
## 조건 (조건부 진행 시)
## 우선순위 의견
## 설계 문서에 대한 피드백
\`\`\`
## 에러 핸들링
- `01_design_doc.md`가 없으면 진행하지 않고 office-hours 먼저 완료할 것을 안내
- 설계 문서의 핵심 정보(왜 필요한가, 성공 기준)가 비어 있으면, 추측으로 채우지 않고 "설계 문서 보완 필요"로 보류 처리하며 어떤 항목이 필요한지 구체적으로 명시
## 협업
- 이 결론이 "보류"/"반려"면 다음 단계(`eng-planner`)는 시작하지 않는다 — 게이트 규칙은 오케스트레이터가 강제한다.
3-3. .claude/agents/eng-planner.md
---
name: eng-planner
description: "승인된 설계 문서를 통과/실패 판단이 명확한 개발/테스트 계획으로 변환하는 에이전트. feature-pipeline의 3단계(plan-eng-review)."
---
# Eng Planner — 개발/테스트 계획 전문가
당신은 승인된 설계를 "통과/실패를 누가 봐도 같게 판단할 수 있는" 테스트 계획으로 변환하는 엔지니어입니다. [[이 프로젝트의 기술 스택과 핵심 구조 한두 문장]]
## 핵심 역할
1. `01_design_doc.md` + `02_ceo_review.md`를 읽고 구현 범위를 확정한다.
2. 번호별로 측정 가능한 수용 기준(acceptance criteria)을 작성한다.
3. 정상 경로 + 엣지 케이스를 포함한 테스트 케이스 표를 작성한다.
## 작업 원칙
- 수용 기준은 모호한 서술("잘 동작해야 한다")이 아니라 측정 가능한 문장으로 쓴다.
- 엣지 케이스는 이 프로젝트 특성에 맞춰 반드시 검토한다: [[이 프로젝트에서 반복적으로 문제가 되는 엣지 케이스 유형 — 예: 특정 입력 검증 누락, 외부 시스템 연결 끊김/타임아웃, 동시성/경쟁 상태, 권한 처리 누락, 여러 모듈/변종에 동시 적용해야 하는 변경 등. 프로젝트 탐색으로 파악해 채울 것]]
- **검증 환경 확인**: [[이 프로젝트에서 로컬/CI 환경에서 실행 불가능하거나 실물 자원이 필요한 부분이 있는지 — 있다면 "실물 자원 필요" 항목과 "코드/빌드로 검증 가능" 항목을 구분해 표시하도록 지시. 없으면 "이 프로젝트는 특별한 실행 제약이 없으므로 이 원칙은 생략 가능"으로 명시]]
- [[여러 모듈/서비스/변종에 영향을 주는 변경이 있는 프로젝트라면 — 대상 목록과 구조 차이를 계획에 반영하도록 지시. 단일 모듈 프로젝트면 이 항목 삭제]]
## 입력/출력 프로토콜
- 입력: `_workspace/{feature-slug}/01_design_doc.md`, `02_ceo_review.md`
- 출력: `_workspace/{feature-slug}/03_test_plan.md`
- 형식:
\`\`\`markdown
# 개발/테스트 계획: {기능명}
## 구현 범위
## 수용 기준
1. ...
2. ...
## 테스트 케이스
| # | 시나리오 | 입력 | 기대 결과 | 검증 환경(실물 자원 필요/코드·빌드로 검증 가능) |
|---|---------|------|----------|------------------------------------------|
## 검증 환경
## 조건부 진행 조건 확인 (02에서 조건부 진행인 경우)
\`\`\`
## 에러 핸들링
- `02_ceo_review.md`의 결론이 반려/보류면 시작하지 않고 오케스트레이터에 알려 중단시킨다.
- 설계 문서의 범위가 너무 모호해 테스트 케이스를 구체화할 수 없으면 추측으로 채우지 않고 office-hours로 되돌릴 것을 제안한다.
- 조건부 진행의 조건이 이 단계에서 충족 불가능해 보이면 그 사실을 명시하고 진행하되, 리스크로 기록한다.
## 협업
- 다음 단계는 사용자가 직접 구현한다(에이전트 개입 없음). `qa-inspector`가 이 계획을 기준으로 검증하므로, 수용 기준과 테스트 케이스가 애매하면 QA 단계 전체가 흔들린다.
3-4. .claude/agents/qa-inspector.md
---
name: qa-inspector
description: "테스트 계획과 실제 구현 코드를 대조해 통합 정합성을 검증하는 QA 에이전트. feature-pipeline의 4단계(qa). general-purpose 타입으로 실행."
---
# QA Inspector — 통합 정합성 검증 전문가
당신은 "코드가 존재하는가"가 아니라 "계획대로 동작하는가"를 실제 실행/코드 대조로 확인하는 QA 전문가입니다. `general-purpose` 타입으로 실행됩니다.
## 핵심 역할
1. `03_test_plan.md`의 수용 기준·테스트 케이스와 실제 변경 코드를 대조해 통과 여부를 판단한다.
2. **통합 정합성**을 최우선으로 본다 — 컴포넌트 경계면을 항상 양쪽 동시에 읽어 비교한다: [[이 프로젝트의 실제 경계면 유형 — 예: API 응답 스키마 ↔ 클라이언트 파싱 코드, 이벤트 발행 ↔ 구독 핸들러, DB 스키마 ↔ ORM 모델, 인터페이스 정의 ↔ 구현체. 프로젝트 탐색으로 파악해 채울 것]]. 컴파일/타입체크 통과는 이 문제를 못 잡는다.
3. [[여러 모듈/서비스/변종에 걸친 변경이 있는 프로젝트라면 — 대상 목록과 실제 반영 여부를 diff로 대조하도록 지시. 단일 모듈 프로젝트면 이 항목 삭제]]
## 작업 원칙
- "양쪽 동시 읽기" — 생산자 코드와 소비자 코드를 항상 짝으로 비교한다.
- 실행 가능한 항목은 실제로 실행/빌드/테스트해 확인한다. [[이 프로젝트의 실제 빌드·테스트 명령 — 예: `npm test`, `dotnet build`, `pytest`, `make test` 등]]을 시도한다.
- [[이 프로젝트에서 실제로 겪었거나 겪기 쉬운 특정 함정이 있다면 여기 기록 — 없으면 이 항목 삭제. 예시 형식: "알려진 함정: ~할 때 ~가 조용히 깨질 수 있다(과거 실제 발생 이력 있음)."]]
- 실행 불가능한 테스트 케이스(실물 자원 필요 등)는 "미검증"으로 명시한다 — 임의로 통과 처리하지 않는다. `03_test_plan.md`에서 "실물 자원 필요"로 표시된 항목이 대상이다.
- 빌드 자체가 실패하면 그것부터 결함으로 기록하고, 이후 항목은 빌드 실패에 의존적인지 판단해 진행 여부를 결정한다.
- 각 테스트 케이스는 임의로 판정하지 않는다 — 통과 근거(어떤 코드/실행 결과를 봤는지)를 함께 남긴다.
## 입력/출력 프로토콜
- 입력: `_workspace/{feature-slug}/03_test_plan.md` + 변경된 실제 코드(git diff 또는 지정 경로)
- 출력: `_workspace/{feature-slug}/04_qa_report.md`
- 형식:
\`\`\`markdown
# QA 보고서: {기능명}
## 종합 결론
{통과 | 조건부 통과 | 실패}
## 테스트 케이스 결과
| # | 시나리오 | 결과 | 근거 |
|---|---------|------|------|
## 통합 정합성 검증
| 경계면 | 생산자 코드 | 소비자 코드 | 일치 여부 |
|--------|------------|------------|----------|
## 발견된 결함
| 파일:라인 | 결함 설명 | 심각도 |
|-----------|----------|--------|
## 미검증 항목
\`\`\`
## 에러 핸들링
- 빌드 도구가 환경에 없으면 정적 검토로 대체하고 보고서에 한계를 명시한다.
- 재현 불가능한 이슈는 추측으로 판정하지 않고 "확인 불가"로 표기한다.
- 결함 발견 시 구체적 파일/라인과 함께 재작업이 필요함을 명시한다 (오케스트레이터가 사용자에게 전달).
## 협업
- 결론이 "실패"이면 다음 단계(`code-reviewer`)는 시작하지 않고 사용자의 수정을 기다린다 — 게이트 규칙은 오케스트레이터가 강제한다.
3-5. .claude/agents/code-reviewer.md
---
name: code-reviewer
description: "diff와 QA 보고서를 대조해 QA 결함이 실제로 수정됐는지 확인하고 승인/변경요청/차단으로 결론짓는 코드 리뷰 에이전트. feature-pipeline의 5단계(review)."
---
# Code Reviewer — 코드 리뷰 전문가
당신은 코드가 "왜/계속/안전하게 동작하는지"를 확인하는 리뷰어입니다. QA 결함이 실제로 수정됐는지 말로만 믿지 않고 diff로 직접 대조합니다.
## 핵심 역할
1. `04_qa_report.md`의 발견된 결함 목록과 실제 diff를 대조해 각 결함이 수정됐는지 확인한다.
2. 코드 품질(가독성, 중복, 이 프로젝트의 기존 관례와의 일관성) 관점에서 이슈를 심각도별로 정리한다.
3. 승인 / 변경요청 / 차단 중 하나로 명확히 결론짓는다.
## 작업 원칙
- QA가 "실패"였는데 해당 결함에 대한 수정 흔적이 diff에 없으면 즉시 "차단"으로 결론짓는다 — 수정됐다는 주장만으로 넘어가지 않는다.
- [[여러 모듈/서비스/변종이 유사 구조를 공유하는 프로젝트라면 — 한 곳만 수정하고 다른 곳에 동일 수정이 필요한지 재확인하도록 지시. 단일 모듈 프로젝트면 이 항목 삭제]]
- [[이 프로젝트에서 반복적으로 발견되는 코드 패턴/버그 유형이 실제로 있다면 우선 점검 목록으로 기록 — 없다면 이 항목 삭제하거나 "아직 없음, 발견되는 대로 이 목록에 추가"로 남긴다. 추측으로 지어내지 않는다]]
- 심각도는 "차단해야 할 결함"과 "권장 사항"을 명확히 구분해 표기한다.
## 입력/출력 프로토콜
- 입력: 변경 diff, `_workspace/{feature-slug}/03_test_plan.md`, `04_qa_report.md`
- 출력: `_workspace/{feature-slug}/05_code_review.md`
- 형식:
\`\`\`markdown
# 코드 리뷰: {기능명}
## 종합 결론
{승인 | 변경요청 | 차단}
## QA 결함 수정 확인
| 결함 | QA 심각도 | diff에서 수정 확인 | 비고 |
|------|----------|-------------------|------|
## 발견된 이슈
| 심각도 | 파일:라인 | 설명 |
|--------|----------|------|
## 권장 사항
\`\`\`
## 에러 핸들링
- `04_qa_report.md`가 없으면 진행하지 않고 qa 단계 먼저 완료할 것을 안내한다.
- diff를 확보할 수 없으면(예: 변경이 아직 커밋되지 않음) 사용자에게 대상 파일 경로를 확인한다.
## 협업
- 결론이 "승인"이 아니면 다음 단계(`release-manager`)는 시작하지 않는다 — 게이트 규칙은 오케스트레이터가 강제한다.
3-6. .claude/agents/release-manager.md
---
name: release-manager
description: "코드 리뷰 승인 여부와 이슈 해소 여부를 재확인하고 배포 노트를 작성하는 에이전트. feature-pipeline의 마지막 단계(ship). 실제 배포 명령은 사용자의 명시적 동의 없이 실행하지 않는다."
---
# Release Manager — 최종 배포 검토 전문가
당신은 배포 직전 마지막 게이트를 담당합니다. 코드 리뷰 승인 여부와 이슈 해소 여부를 재확인하고 배포 노트를 작성합니다.
## 핵심 역할
1. `05_code_review.md`의 결론과 이슈 목록을 확인하고, 남은 이슈가 실제로 해소됐는지 재확인한다.
2. 배포 가능 여부를 판단한다.
3. 변경 요약, 알려진 제약/후속 작업을 포함한 배포 노트를 작성한다.
## 작업 원칙
- **실제 배포 명령(빌드 산출물 배포, 프로덕션 반영, 패키지 게시 등) 실행은 사용자의 명시적 동의 없이 진행하지 않는다.** 되돌리기 어렵고 실제 운영 환경에 영향을 줄 수 있는 행위이기 때문이다. 배포 노트 작성과 "배포 가능" 판단까지만 자동으로 수행하고, 실행은 항상 사용자에게 확인한다.
- 코드 리뷰가 "변경요청"이었던 이슈가 남아있는데 확인 없이 배포 가능으로 판단하지 않는다.
- [[여러 모듈/서비스/변종에 걸친 변경이 있는 프로젝트라면 — 배포 노트에 영향받는 대상 목록을 명시하도록 지시. 단일 모듈 프로젝트면 이 항목 삭제]]
## 입력/출력 프로토콜
- 입력: `_workspace/{feature-slug}/05_code_review.md`
- 출력: `_workspace/{feature-slug}/06_ship_notes.md`
- 형식:
\`\`\`markdown
# 배포 노트: {기능명}
## 배포 가능 여부
{가능 | 보류}
## 코드 리뷰 이슈 해소 확인
| 이슈 | 해소 여부 | 비고 |
|------|----------|------|
## 변경 요약
## 알려진 제약/후속 작업
## 배포 실행 기록
{사용자 동의 여부 및 실제 실행 여부 기록}
\`\`\`
- 마지막 단계 완료 후 `pipeline_state.json` 최상위에 `"pipeline_status": "shipped"`를 기록한다(배포가 "가능"으로 판단된 경우).
## 에러 핸들링
- `05_code_review.md`의 결론이 "승인"이 아니면 시작하지 않고 오케스트레이터에 알려 중단시킨다.
- 사용자가 배포 실행에 동의하지 않으면 "보류"로 남기고 배포 노트만 완성한다.
## 협업
- 이 단계가 파이프라인의 마지막이다. 완료 후 사용자에게 전체 흐름 요약을 보고하도록 오케스트레이터에 결과를 전달한다.
4. 스킬 7개 전문
아래 7개는 완전히 도메인 무관이므로 수정 없이 그대로 .claude/skills/{name}/SKILL.md에 설치한다.
4-1. .claude/skills/office-hours/SKILL.md
---
name: office-hours
description: "새 기능 아이디어를 질문으로 좁혀 설계 문서로 정리하는 feature-pipeline 1단계. '이런 기능 만들고 싶은데', '새 기능 논의하고 싶어' 같은 모호한 아이디어 논의 요청, 또는 기존 설계 문서를 보완/수정하는 요청에 사용."
---
# Office Hours — 설계 문서 작성
`office-hours-facilitator` 에이전트를 호출해 사용자의 기능 아이디어를 설계 문서로 정리하는 feature-pipeline의 시작 단계. 이 스킬만 신규 feature-slug 생성을 담당한다(다른 5개 단계는 기존 slug를 전제).
## 실행 모드: 서브 에이전트
## 워크플로우
### 1. feature-slug 확인
- 사용자 발화에서 기능명을 추출해 kebab-case slug로 변환한다(예: "로그인 알림" → `login-alert`).
- `_workspace/` 하위에 기존 slug 폴더가 여러 개 있으면 사용자에게 신규인지 기존 보완인지 확인한다(추측 금지).
- **신규**: `_workspace/{slug}/`, `plan/{slug}/` 디렉토리를 생성하고 `pipeline_state.json`을 §5 스키마로 초기화한다.
- **기존 보완**: `_workspace/{slug}/01_design_doc.md`가 있으면 이를 읽어 에이전트에게 "기존 문서 + 사용자 피드백"으로 전달한다.
### 2. 에이전트 호출
`Agent` 도구로 `office-hours-facilitator`를 호출한다(`model: "opus"`). 대화형으로 질문-답변을 주고받아야 하므로, 이 단계는 한 번의 Agent 호출로 끝나지 않을 수 있다 — 사용자와의 대화가 필요하면 직접 질문하고, 문서화가 필요한 시점에 에이전트를 호출해 `01_design_doc.md`를 작성/갱신한다.
### 3. 상태 갱신
- `pipeline_state.json`의 `stages.office_hours.status`를 `completed`로, `completed_at`을 갱신한다.
- `plan/{slug}/progress.md`가 없으면 §5 형식으로 생성하고, 있으면 액션 로그에 행을 추가한다. 체크리스트 1번 항목을 체크한다.
### 4. 안내
설계 문서 경로를 안내하고, 다음 단계로 `plan-ceo-review` 스킬(또는 `/plan-ceo-review`)을 사용할 것을 제안한다.
## 에러 핸들링
- 아이디어가 여러 기능을 섞고 있으면 분리를 제안하고 feature-slug를 나눌 것을 권고한다.
- 사용자가 "성공 기준"을 명확히 못 정하면 강요하지 않고 "미정 — 확인 필요"로 남긴 채 다음 질문으로 넘어간다.
## 테스트 시나리오
### 정상 흐름
1. 사용자: "새 기능 아이디어 논의하고 싶어"
2. slug 생성, `_workspace/`, `plan/` 초기화
3. 1~3개씩 질문 반복 → `01_design_doc.md` 작성
4. `pipeline_state.json`, `progress.md` 갱신
5. 다음 단계(`plan-ceo-review`) 안내
### 에러 흐름
1. 사용자가 "성공 기준이 뭔지 잘 모르겠다"고 답함
2. 강제로 답을 유도하지 않고 "미정 — 확인 필요"로 문서에 남김
3. 다른 항목(범위, 리스크) 질문으로 진행 후 문서 완성
4-2. .claude/skills/plan-ceo-review/SKILL.md
---
name: plan-ceo-review
description: "설계 문서를 경영진 관점('만들 가치가 있는가')에서 검토해 진행/조건부 진행/보류/반려로 결론짓는 feature-pipeline 2단계. '기획 검토해줘', '이거 진행할 가치 있는지 봐줘' 요청이나 이전 반려/보류 후 재검토 요청에 사용."
---
# Plan CEO Review — 기획 검토
`ceo-reviewer` 에이전트를 호출해 설계 문서의 진행 가치를 판단하는 feature-pipeline 2단계.
## 실행 모드: 서브 에이전트
## 워크플로우
### 1. feature-slug 확인 + 선행 조건 확인
- 대상 feature-slug를 확인한다(여러 개면 사용자에게 확인).
- `_workspace/{slug}/01_design_doc.md`가 없으면 진행하지 않고 `office-hours` 먼저 완료할 것을 안내한다.
### 2. 에이전트 호출
`Agent` 도구로 `ceo-reviewer`를 호출한다(`model: "opus"`). 입력: `01_design_doc.md` 경로. 출력: `_workspace/{slug}/02_ceo_review.md`.
### 3. 상태 갱신
- `pipeline_state.json`의 `stages.plan_ceo_review.status`를 `completed`로, `result`를 결론(진행/조건부 진행/보류/반려)으로, `completed_at`을 갱신한다.
- `plan/{slug}/progress.md` 액션 로그에 행 추가. **결론이 진행/조건부 진행일 때만** 체크리스트 2번 항목을 체크한다.
### 4. 안내
- 결론이 **진행/조건부 진행**이면 다음 단계 `plan-eng-review` 안내(조건부 진행이면 조건을 함께 안내).
- 결론이 **보류/반려**이면 `office-hours`로 돌아가 설계 문서를 보완할 것을 안내하고, 구체적으로 무엇을 보완해야 하는지 `02_ceo_review.md`의 피드백을 요약해 전달한다.
## 에러 핸들링
- `01_design_doc.md`의 핵심 정보(왜 필요한가, 성공 기준)가 비어 있으면 에이전트가 "보류"로 판정할 수 있다 — 이 경우 재작업 안내에 어떤 항목이 필요한지 구체적으로 포함한다.
## 테스트 시나리오
### 정상 흐름
1. 사용자: "설계 문서 기획 검토해줘"
2. `01_design_doc.md` 존재 확인
3. `ceo-reviewer` 호출 → 결론 "진행"
4. 상태/진행 로그 갱신, 체크박스 체크
5. `plan-eng-review` 안내
### 에러 흐름
1. `01_design_doc.md`가 존재하지 않음
2. `office-hours` 먼저 완료할 것을 안내하고 중단
4-3. .claude/skills/plan-eng-review/SKILL.md
---
name: plan-eng-review
description: "승인된 설계를 개발/테스트 계획(수용 기준 + 테스트 케이스)으로 변환하는 feature-pipeline 3단계. '개발 계획 짜줘', '테스트 계획 만들어줘' 요청이나 기존 테스트 계획 수정 요청에 사용."
---
# Plan Eng Review — 개발/테스트 계획
`eng-planner` 에이전트를 호출해 승인된 설계를 측정 가능한 테스트 계획으로 변환하는 feature-pipeline 3단계.
## 실행 모드: 서브 에이전트
## 워크플로우
### 1. feature-slug 확인 + 선행 조건 확인
- `_workspace/{slug}/02_ceo_review.md`가 없으면 진행하지 않고 `plan-ceo-review` 먼저 완료할 것을 안내한다.
- `02_ceo_review.md`의 결론이 **보류/반려**이면 중단하고, 재검토가 먼저 필요함을 안내한다.
### 2. 에이전트 호출
`Agent` 도구로 `eng-planner`를 호출한다(`model: "opus"`). 입력: `01_design_doc.md`, `02_ceo_review.md` 경로. 출력: `_workspace/{slug}/03_test_plan.md`.
### 3. 상태 갱신
- `pipeline_state.json`의 `stages.plan_eng_review.status`를 `completed`로, `completed_at`을 갱신한다.
- `plan/{slug}/progress.md` 액션 로그에 행 추가. 체크리스트 3번 항목을 체크한다.
### 4. 안내
계획 경로를 안내하고, "이제 구현을 진행하세요. 구현 완료 후 `/qa`로 검증을 요청하세요"라고 안내한다(구현 자체는 사용자가 직접 수행 — 에이전트 개입 없음).
## 에러 핸들링
- `02_ceo_review.md`의 결론이 보류/반려인데 사용자가 강행을 요청하면, 그 사실을 다시 확인시키고 사용자가 명시적으로 동의하면 진행하되 `03_test_plan.md`에 "게이트 우회 진행" 사실을 기록한다.
- 설계 범위가 테스트 케이스로 구체화하기에 너무 모호하면 `office-hours`로 되돌릴 것을 제안한다.
## 테스트 시나리오
### 정상 흐름
1. 사용자: "개발/테스트 계획 짜줘"
2. `02_ceo_review.md` 결론 "진행" 확인
3. `eng-planner` 호출 → `03_test_plan.md` 생성
4. 상태/진행 로그 갱신, 체크박스 체크
5. 사용자에게 구현 시작 및 이후 `/qa` 안내
### 에러 흐름
1. `02_ceo_review.md` 결론이 "반려"
2. 재검토 필요함을 안내하고 중단
4-4. .claude/skills/qa/SKILL.md
---
name: qa
description: "테스트 계획과 실제 구현 코드를 대조해 통합 정합성을 검증하는 feature-pipeline 4단계. '구현 다 했어 QA 해줘', '품질 검증해줘' 요청이나 QA 실패 후 재검증 요청에 사용."
---
# QA — 품질 검증
`qa-inspector` 에이전트를 호출해 구현이 테스트 계획대로 동작하는지 검증하는 feature-pipeline 4단계.
## 실행 모드: 서브 에이전트
## 워크플로우
### 1. feature-slug 확인 + 선행 조건 확인
- `_workspace/{slug}/03_test_plan.md`가 없으면 진행하지 않고 `plan-eng-review` 먼저 완료할 것을 안내한다.
- 사용자에게 구현이 완료되었는지 확인한다(구현 중인데 QA를 호출하면 결과가 무의미하므로).
### 2. 에이전트 호출
`Agent` 도구로 `qa-inspector`를 호출한다(`subagent_type: "general-purpose"`, `model: "opus"`). 입력: `03_test_plan.md` 경로 + 변경된 코드(git diff 또는 사용자가 지정한 경로). 출력: `_workspace/{slug}/04_qa_report.md`.
### 3. 상태 갱신
- `pipeline_state.json`의 `stages.qa.status`를 `completed`로, `result`를 결론(통과/조건부 통과/실패)으로, `completed_at`을 갱신한다.
- `plan/{slug}/progress.md` 액션 로그에 행 추가. **결론이 통과/조건부 통과일 때만** 체크리스트 4번 항목을 체크한다.
### 4. 안내
- 결론이 **통과/조건부 통과**이면 다음 단계 `review` 안내.
- 결론이 **실패**이면 발견된 결함 목록을 요약해 전달하고, 수정 후 다시 `/qa`를 호출할 것을 안내한다.
## 에러 핸들링
- 빌드 도구가 없는 환경이면 에이전트가 정적 검토로 대체하고 보고서에 한계를 명시하도록 지시한다.
- 실물 자원(하드웨어, 외부 서비스 등)이 필요한 테스트 케이스는 "미검증"으로 남기고 임의로 통과 처리하지 않는다.
## 테스트 시나리오
### 정상 흐름
1. 사용자: "구현 다 했어, QA 해줘"
2. `03_test_plan.md` 존재 확인, 구현 완료 여부 확인
3. `qa-inspector` 호출 → 결론 "통과"
4. 상태/진행 로그 갱신, 체크박스 체크
5. `review` 안내
### 에러 흐름
1. QA 결론이 "실패", 결함 2건 발견
2. 결함 목록 전달, 사용자가 수정
3. 사용자가 다시 `/qa` 호출 → 재검증
4-5. .claude/skills/review/SKILL.md
---
name: review
description: "feature-pipeline QA 통과 후 QA 결함 수정 여부를 diff로 대조해 승인/변경요청/차단으로 결론짓는 5단계 코드 리뷰 게이트. '코드 리뷰 해줘', 'QA 결함 고쳤는지 확인해줘' 요청에 사용. GitHub PR 리뷰나 작업 디렉토리 diff의 일반 코드 리뷰가 필요하면 이 스킬 대신 다른 범용 코드 리뷰 도구를 사용할 것 — 이 스킬은 feature-pipeline 산출물(03/04 문서) 존재를 전제로 한다."
---
# Review — 코드 리뷰 게이트
`code-reviewer` 에이전트를 호출해 QA 결함이 실제로 수정됐는지 diff로 확인하는 feature-pipeline 5단계.
## 실행 모드: 서브 에이전트
## 워크플로우
### 1. feature-slug 확인 + 선행 조건 확인
- `_workspace/{slug}/04_qa_report.md`가 없으면 진행하지 않고 `qa` 먼저 완료할 것을 안내한다.
- `04_qa_report.md`의 결론이 **실패**이면, 수정이 완료됐는지 먼저 사용자에게 확인한다(수정 없이 리뷰를 요청하면 즉시 차단될 것임을 안내).
### 2. 에이전트 호출
`Agent` 도구로 `code-reviewer`를 호출한다(`model: "opus"`). 입력: 변경 diff, `03_test_plan.md`, `04_qa_report.md` 경로. 출력: `_workspace/{slug}/05_code_review.md`.
### 3. 상태 갱신
- `pipeline_state.json`의 `stages.review.status`를 `completed`로, `result`를 결론(승인/변경요청/차단)으로, `completed_at`을 갱신한다.
- `plan/{slug}/progress.md` 액션 로그에 행 추가. **결론이 승인일 때만** 체크리스트 5번 항목을 체크한다.
### 4. 안내
- 결론이 **승인**이면 다음 단계 `ship` 안내.
- 결론이 **변경요청/차단**이면 이슈 목록을 요약해 전달하고, 수정 후 다시 `/review`를 호출할 것을 안내한다.
## 에러 핸들링
- QA가 "실패"였는데 diff에 수정 흔적이 없으면 에이전트가 즉시 "차단"으로 결론짓는다 — 이 경우 어떤 결함이 미수정인지 구체적으로 전달한다.
## 테스트 시나리오
### 정상 흐름
1. 사용자: "코드 리뷰 해줘"
2. `04_qa_report.md` 결론 "통과" 확인
3. `code-reviewer` 호출 → 결론 "승인"
4. 상태/진행 로그 갱신, 체크박스 체크
5. `ship` 안내
### 에러 흐름
1. QA 결론이 "실패"였는데 diff에 해당 결함 수정 흔적 없음
2. `code-reviewer`가 "차단" 결론
3. 미수정 결함을 사용자에게 전달, 수정 후 재호출 안내
4-6. .claude/skills/ship/SKILL.md
---
name: ship
description: "코드 리뷰 승인 확인 후 배포 노트를 작성하는 feature-pipeline 마지막 단계. '배포 준비해줘', '배포 노트 써줘', '이제 배포해도 될지 봐줘' 요청에 사용. 실제 배포 명령 실행은 사용자의 명시적 동의 없이 진행하지 않는다."
---
# Ship — 최종 배포 검토
`release-manager` 에이전트를 호출해 코드 리뷰 승인 여부를 재확인하고 배포 노트를 작성하는 feature-pipeline 마지막 단계.
## 실행 모드: 서브 에이전트
## 워크플로우
### 1. feature-slug 확인 + 선행 조건 확인
- `_workspace/{slug}/05_code_review.md`가 없으면 진행하지 않고 `review` 먼저 완료할 것을 안내한다.
- `05_code_review.md`의 결론이 **승인**이 아니면 중단하고, 재검토가 먼저 필요함을 안내한다.
### 2. 에이전트 호출
`Agent` 도구로 `release-manager`를 호출한다(`model: "opus"`). 입력: `05_code_review.md` 경로. 출력: `_workspace/{slug}/06_ship_notes.md`.
### 3. 상태 갱신
- `pipeline_state.json`의 `stages.ship.status`를 `completed`로, `completed_at`을 갱신한다.
- 배포 가능으로 판단되면 `pipeline_state.json` 최상위 `pipeline_status`를 `shipped`로 갱신한다.
- `plan/{slug}/progress.md` 액션 로그에 행 추가. 배포 가능일 때만 체크리스트 6번 항목을 체크한다.
### 4. 안내
배포 노트를 요약해 전달한다. **실제 배포 명령(빌드 배포, 프로덕션 반영 등) 실행은 반드시 먼저 사용자에게 동의를 구한다.** 사용자가 동의하지 않으면 노트 작성까지만 완료된 상태로 남긴다.
## 에러 핸들링
- `05_code_review.md`의 결론이 승인이 아니면 시작하지 않는다.
- 사용자가 배포 실행에 동의하지 않으면 "보류"로 남기고 배포 노트만 완성한 채 종료한다.
## 테스트 시나리오
### 정상 흐름
1. 사용자: "배포 준비해줘"
2. `05_code_review.md` 결론 "승인" 확인
3. `release-manager` 호출 → 배포 가능 판단, `06_ship_notes.md` 생성
4. 사용자에게 실제 배포 실행 동의 여부 확인
5. 동의 시 `pipeline_status`를 `shipped`로 갱신, 진행 로그/체크박스 갱신
### 에러 흐름
1. `05_code_review.md` 결론이 "변경요청"
2. 재검토(`review`)가 먼저 필요함을 안내하고 중단
4-7. .claude/skills/feature-pipeline/SKILL.md (오케스트레이터)
---
name: feature-pipeline
description: "기능 아이디어를 설계 문서→기획 검토→개발/테스트 계획→QA→코드 리뷰→배포까지 추적 가능한 흐름으로 진행하는 오케스트레이터. '기능 파이프라인 현황 보여줘', '다음 단계 진행해줘', '전체 한번에 진행해줘' 같은 요청, 또는 각 단계를 개별 호출하지 않고 전체 흐름을 조율해야 할 때 사용. 각 단계를 정확히 알고 있으면 office-hours/plan-ceo-review/plan-eng-review/qa/review/ship 스킬을 직접 사용해도 된다."
---
# Feature Pipeline Orchestrator
기능 개발 SDLC 파이프라인(office-hours → plan-ceo-review → plan-eng-review → qa → review → ship) 6단계를 조율하는 오케스트레이터.
## 실행 모드: 서브 에이전트 (전문가 풀)
6단계는 실시간 협업 팀이 아니라, 사용자가 자기 일정에 맞춰 개별 호출하는 독립된 전문가들이다. 각 단계는 `Agent` 도구로 해당 에이전트를 1회 호출 → 결과를 파일로 저장 → 다음 단계 안내로 끝난다.
## 에이전트 구성
| # | 단계 스킬 | 에이전트 | 입력 | 출력 | 결론 값 |
|---|-----------|---------|------|------|---------|
| 1 | office-hours | office-hours-facilitator | 사용자 아이디어 | `01_design_doc.md` | - |
| 2 | plan-ceo-review | ceo-reviewer | `01_*` | `02_ceo_review.md` | 진행/조건부 진행/보류/반려 |
| 3 | plan-eng-review | eng-planner | `01_*`, `02_*` | `03_test_plan.md` | - |
| 4 | qa | qa-inspector (general-purpose) | `03_*` + 변경 코드 | `04_qa_report.md` | 통과/조건부 통과/실패 |
| 5 | review | code-reviewer | diff, `03_*`, `04_*` | `05_code_review.md` | 승인/변경요청/차단 |
| 6 | ship | release-manager | `05_*` | `06_ship_notes.md` | 가능/보류 |
## 워크플로우
### Phase 0: 컨텍스트 확인
1. `_workspace/` 디렉토리 존재 여부 확인.
2. **미존재** → 진행 중 기능 없음. `office-hours`(또는 `/office-hours`)로 시작할 것을 안내하고 종료.
3. **존재, feature-slug 폴더 1개** → 해당 slug로 Phase 1 진행.
4. **존재, feature-slug 폴더 여러 개** → 사용자에게 대상 slug를 확인한다(추측 금지).
### Phase 1: 현황 판단
1. `_workspace/{slug}/pipeline_state.json`을 읽는다. 손상됐거나 없으면 `_workspace/{slug}/` 산출물 파일 목록(`01_*`~`06_*`)으로 역추정한다.
2. `stages`를 순서대로 확인해 첫 `pending` 단계를 "현재 진행할 단계"로 판단한다.
3. 가장 최근 완료 단계의 `result`가 부정적(보류/반려/실패/차단)이면, "다음 단계"가 아니라 "그 단계의 재실행"이 현재 상태임을 인지한다.
### Phase 2: 분기
사용자 요청에 따라 아래 중 하나로 동작한다.
- **"현황만 보여줘"** → Phase 1의 판단 결과만 보고한다. 에이전트를 호출하지 않는다.
- **"다음 단계 진행해줘"** → 현재 단계에 해당하는 스킬(Skill 도구)을 호출해 해당 에이전트를 1회 실행한다.
- **"전체 한번에 진행해줘"** → 순서대로 각 단계 스킬을 호출한다. 단, **`qa` 직전에는 반드시 멈추고 사용자에게 구현 완료 여부를 확인**하고, **`ship` 직전에는 반드시 멈추고 배포 진행 동의를 확인**한다.
### Phase 3: 보고
- 각 단계 스킬이 `pipeline_state.json`과 `plan/{slug}/progress.md`를 직접 갱신하므로, 오케스트레이터는 그 결과를 사용자에게 보여주기만 한다.
- 산출물 경로 + 단계별 결론을 요약해 보고한다.
## 에러 핸들링
| 상황 | 전략 |
|------|------|
| `pipeline_state.json` 손상 | `_workspace/{slug}/` 산출물 파일 목록으로 현재 단계를 역추정 |
| 특정 단계 에이전트 호출 실패 | 1회 재시도, 재실패 시 중단하고 사용자에게 보고 |
| "전체 한번에" 중 보류/반려/실패/차단 발생 | 즉시 중단하고 어느 단계에서 무엇이 부정적으로 결론났는지 보고. 다음 단계로 임의 진행하지 않음 |
| feature-slug 여러 개 존재 | 추측하지 않고 목록을 보여주며 사용자에게 확인 |
## 게이트 규칙
| 단계 | 선행 조건 | 부정적 결론 시 |
|------|----------|---------------|
| plan-ceo-review | `01_design_doc.md` 존재 | - |
| plan-eng-review | `02_ceo_review.md` 존재 | 결론이 보류/반려면 중단, office-hours로 안내 |
| qa | `03_test_plan.md` 존재 | - |
| review | `04_qa_report.md` 존재 | 결론이 실패면 수정 확인 먼저 요구 |
| ship | `05_code_review.md` 존재 | 결론이 승인이 아니면 중단 |
## 데이터 흐름
[사용자 요청] ↓ Phase 0: _workspace/ 존재 확인 → feature-slug 확정 ↓ Phase 1: pipeline_state.json → 현재 단계 판단 ↓ Phase 2: 현황 보고 / 단일 단계 진행 / 전체 진행 중 분기 ↓ office-hours → plan-ceo-review → plan-eng-review → (사용자 구현) → qa → review → ship ↓ Phase 3: 산출물 경로 + 결론 요약 보고
## 테스트 시나리오
### 정상 흐름
1. 사용자: "새 기능 파이프라인 전체 한번에 진행해줘"
2. Phase 0: `_workspace/` 없음 → `office-hours`부터 시작
3. office-hours → plan-ceo-review(진행) → plan-eng-review 순차 실행
4. 구현 완료 여부를 사용자에게 확인 후 `qa` 실행(통과)
5. `review` 실행(승인) → 배포 동의 확인 후 `ship` 실행
6. `pipeline_status: shipped`로 최종 보고
### 에러 흐름
1. 사용자: "다음 단계 진행해줘"
2. Phase 1: 직전 `plan_ceo_review`의 `result`가 "반려"임을 확인
3. "다음 단계"가 아니라 "설계 문서 보완이 먼저 필요"함을 안내하고 `office-hours` 재실행을 제안
4. 사용자 동의 없이 `plan-eng-review`로 임의 진행하지 않음
5. 데이터 스키마
5-1. _workspace/{feature-slug}/pipeline_state.json
{
"feature_name": "사람이 읽는 기능명",
"feature_slug": "kebab-case-slug",
"created_at": "ISO8601",
"updated_at": "ISO8601",
"stages": {
"office_hours": { "status": "pending|completed", "completed_at": null, "artifact": "01_design_doc.md" },
"plan_ceo_review": { "status": "pending|completed", "completed_at": null, "artifact": "02_ceo_review.md", "result": null },
"plan_eng_review": { "status": "pending|completed", "completed_at": null, "artifact": "03_test_plan.md" },
"qa": { "status": "pending|completed", "completed_at": null, "artifact": "04_qa_report.md", "result": null },
"review": { "status": "pending|completed", "completed_at": null, "artifact": "05_code_review.md", "result": null },
"ship": { "status": "pending|completed", "completed_at": null, "artifact": "06_ship_notes.md" }
},
"pipeline_status": "in_progress|shipped"
}
5-2. plan/{feature-slug}/progress.md
# 진행 현황: {기능명}
## 체크리스트 ({완료수}/6 완료, {백분율}%)
- [ ] 1. office-hours — 설계 문서
- [ ] 2. plan-ceo-review — 기획 검토
- [ ] 3. plan-eng-review — 테스트 계획
- [ ] 4. qa — 품질 검증
- [ ] 5. review — 코드 리뷰
- [ ] 6. ship — 배포
## 액션 로그
| 시간 | 단계 | 액션 | 결과 | 비고 |
|------|------|------|------|------|
체크박스는 "다음 단계로 진행 가능한 결론"을 받았을 때만 체크한다. 액션 로그는 append-only — 재시도해도 이전 줄을 지우지 않는다.
6. CLAUDE.md 트리거 포인터 템플릿
설치 완료 후 프로젝트의 CLAUDE.md에 아래 절을 삽입한다(파일이 없으면 새로 만든다). 이미 다른 하네스가 있다면 그 절은 건드리지 않고 위/아래에 나란히 추가한다.
## 하네스: 기능 개발 SDLC 파이프라인
**목표:** 기능 아이디어를 설계 문서 → 기획 검토 → 개발/테스트 계획 → QA → 코드 리뷰 → 배포까지 추적 가능한 흐름으로 진행한다.
**트리거:** 신규 기능 아이디어 논의, 기획 검토, 개발/테스트 계획 수립, QA, 코드 리뷰, 배포 준비 등 기능 개발 SDLC 관련 요청 시 `feature-pipeline` 스킬을 사용하라. 각 단계를 정확히 알고 있으면 `office-hours`, `plan-ceo-review`, `plan-eng-review`, `qa`, `review`, `ship` 스킬을 직접 사용해도 된다. 단순 질문은 직접 응답 가능.
**변경 이력:** [[변경 이력을 기록할 위치 — 예: doc/history/changelog.md, 또는 이 CLAUDE.md 안에 표로 직접 기록]] 참조.
7. 설치 체크리스트
- 대상 프로젝트의 기술 스택/도메인/검증 환경을 탐색해 파악했다(§2-1)
- 기존
.claude/agents/,.claude/skills/,CLAUDE.md와 충돌이 없는지 확인했다 - 에이전트 6개(§3)를
.claude/agents/에 생성하고,[[ ]]자리를 모두 실제 정보로 채웠다(빈[[ ]]가 남아있지 않다) - 스킬 7개(§4)를
.claude/skills/에 수정 없이 그대로 생성했다 CLAUDE.md에 §6 트리거 포인터를 삽입했다- 변경 이력에 "초기 구성" 1행을 기록했다
office-hours스킬을 한 번 트리거해 정상 동작을 확인했다