peach-team-analyze
Peach Think Team
어떤 주제든 받아서 스스로 팀을 설계하고 조사→분석→타당성 검토→결과 도출까지 자동 처리하는 범용 오케스트레이터 스킬.
0. 환경 체크
0-1. 에이전트 팀 기능 활성화 확인
cat ~/.claude/settings.json | grep -i "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS"
"1"없으면 즉시 중단하고 안내:
⚠️ 에이전트 팀 기능이 비활성화되어 있습니다.
~/.claude/settings.json에 아래 내용을 추가한 후 Claude Code를 재시작하세요:
{
"env": {
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
}
}
0-2. tmux 환경 감지
echo "${TMUX:-not_in_tmux}"
not_in_tmux이면 → 안내 출력 후 계속 진행 (tmux 없어도 in-process 모드로 동작):
💡 tmux 환경이 아닙니다.
팀원을 실시간으로 동시에 확인하려면 tmux 세션 안에서 실행하세요:
tmux new-session -s think && claude
지금은 in-process 모드로 진행합니다. (Shift+Down으로 팀원 전환)
0-3. Codex 플러그인 감지
cat ~/.claude/settings.json | grep -i "openai-codex"
"codex@openai-codex": true있으면 →CODEX_AVAILABLE=true- 없으면 →
CODEX_AVAILABLE=false(critic 팀원으로 대체, 안내 출력)
ℹ️ Codex 플러그인 미감지 — critic 팀원으로 교차 검증을 대체합니다.
(Codex 활성화: settings.json에 "codex@openai-codex": true 추가)
Inputs
/peach-team-analyze [주제]
# 옵션
# model=sonnet|opus|haiku (팀원 모델 override, 기본값: sonnet)
model 옵션:
- 미지정: 기본값 sonnet으로 모든 팀원 실행
- 지정 시: 모든 팀원(analyst, critic)을 해당 모델로 override
- 팀원 투입(§5) 시 각 Agent 호출의 model 파라미터로 전달
1. 복잡도 판단 — 팀 vs 단독
주제를 받으면 팀을 꾸리기 전에 먼저 복잡도를 판단한다. 오버엔지니어링을 방지하기 위함이다.
복잡도 점수표
| 항목 | 조건 | 점수 |
|---|---|---|
| 관점 다양성 | 2개 이상의 독립적 관점이 필요한가 | +1 |
| 병렬 분리 | 동시에 처리 가능한 독립 영역이 2개 이상인가 | +1 |
| 교차 검증 | 결론에 반론/타당성 검토가 의미 있는가 | +1 |
판단 기준
| 점수 | 처리 방식 |
|---|---|
| 0점 | 단독 처리 — 팀 없이 바로 답변 |
| 1점 | 경계 — 사용자에게 확인 후 결정 |
| 2~3점 | 팀 구성 → 에이전트 팀 실행 |
0점 예시 (단독 처리):
- "React Query v5 마이그레이션 방법 알려줘"
- "이 코드 버그 원인 찾아줘"
- "A vs B 간단 비교"
2~3점 예시 (팀 필요):
- "우리 서비스 인증 아키텍처 어떻게 바꿔야 해?" (보안/성능/유지보수 3관점)
- "이 기능 개발 전략 잡아줘" (조사+설계+리스크 분리)
- "경쟁사 3곳 분석해줘" (병렬 조사 후 종합)
1점일 때 사용자 확인 예시:
이 주제는 단독으로도 처리 가능합니다.
팀으로 진행하면 더 다각적이지만 시간이 걸립니다.
[1] 팀으로 진행 [2] 단독으로 바로 답변
2. 팀 유형 자율 결정
점수 2~3점이면 주제 성격에 따라 팀 유형을 자율 결정한다.
팀 유형
| 유형 | 언제 | 구성 |
|---|---|---|
| 조사 팀 | 정보 수집·비교·현황 파악 | PM + 분석가 N명(관점별) + critic |
| 실행 팀 | 설계·계획·산출물 생성 | PM + 개발자 N명(영역별) + critic |
| 검증 팀 | 품질·타당성·리스크 검토 | PM + reviewer + tester + critic |
| 혼합 팀 | 복합 과제 | PM + 조사+실행+검증 혼합 + critic |
critic 역할 (항상 포함)
- 팀원 결론에 반론을 시도하는 독립 검토자
- 주제 복잡도에 따라 critic 투입 시점 결정:
- 단순(2점): 마지막에 한 번만
- 복잡(3점): 중간 + 마지막
3. 팀 구성안 제시 → 사용자 확인
팀을 꾸리기 전에 반드시 구성안을 먼저 보여준다. 엉뚱한 팀 구성으로 리소스를 낭비하지 않기 위함이다.
📋 팀 구성안
주제: [주제 한 줄 요약]
팀 유형: [조사/실행/검증/혼합]
팀원:
├─ PM(리더): 종합 판단 및 결과 도출
├─ [역할1]: [담당 관점/영역]
├─ [역할2]: [담당 관점/영역]
├─ [역할3]: [담당 관점/영역] (복잡도 높을 때)
└─ critic: 결론 타당성 반론 검토
🔍 Codex 교차검증
├─ 적용 여부: [적용 / 스킵]
├─ 사유: [코드 분석 필요 / 문서 분석만으로 충분 / etc.]
├─ 검증 초점: [구체적으로 Codex에게 무엇을 확인시킬지]
└─ 작업 디렉토리: [절대경로]
예상 산출물: [결과물 형태]
이 구성으로 진행할까요? 교차검증 범위를 조정하시겠습니까? [Y/n]
Codex 적용 자동 판단 기준 (사용자가 오버라이드 가능):
- 코드 분석/실행이 필요한 경우 → 자동 적용
- 문서 분석/설계 판단만으로 충분한 경우 → 자동 스킵
- 사용자가 명시적으로 [적용/스킵]을 지정하면 → 해당 선택 우선
사용자가 수정 요청하면 구성안 수정 후 재확인. 5초 내 응답 없거나 Y이면 → 바로 실행.
4. 팀 생성 및 태스크 등록
TeamCreate: team_name="think-[주제-축약]-team"
# 조사 팀 예시
TaskCreate:
1. "[관점1] 조사" (owner: analyst-1)
2. "[관점2] 조사" (owner: analyst-2)
3. "[관점3] 조사" (owner: analyst-3) ← 관점 수에 따라 가변
4. "종합 판단" (blockedBy: 1,2,3, owner: pm)
5. "타당성 검토" (blockedBy: 4, owner: critic)
# 실행 팀 예시
TaskCreate:
1. "[영역1] 작성" (owner: dev-1)
2. "[영역2] 작성" (owner: dev-2)
3. "통합 검증" (blockedBy: 1,2, owner: pm)
4. "타당성 검토" (blockedBy: 3, owner: critic)
태스크 의존성 규칙:
- 병렬 가능한 조사/작업:
blockedBy없음 - PM 종합: 모든 팀원 완료 후
- critic: PM 종합 후
5. 팀원 투입 (병렬 실행)
모든 팀원을 같은 turn에서 run_in_background: true로 동시 투입한다.
팀원 프롬프트 필수 원칙
- 역할 선언: "너는 [역할]이다. Task #N 담당."
- 배경 충분히: 팀원은 대화 이력을 전혀 모름 — 주제, 목적, 맥락을 상세히
- 파일 경로 절대경로: 참조할 파일이 있으면 절대경로로 명시
- 완료 프로토콜: "완료 후 TaskUpdate Task #N → completed, PM(team-lead@팀이름)에게 SendMessage로 보고. 150줄 이내"
- 출력 제한: 보고서 줄 수 명시 (토큰 절약)
critic 팀원 프롬프트 핵심
너는 독립 비판 검토자(critic)이다. Task #N 담당.
PM의 종합 판단 결과를 받아 아래 관점에서 반론을 시도하라:
1. 빠진 관점이나 증거는 없는가?
2. 논리적 비약이나 과도한 단순화는 없는가?
3. 리스크나 부작용이 충분히 다뤄졌는가?
반론이 타당하면 → "수정 필요: [구체적 항목]"
결론이 견고하면 → "타당성 확인: [근거]"
보고는 PM에게 SendMessage. 100줄 이내.
6. 보고 수집 및 PM 종합
PM이 모든 팀원 보고를 수신하면:
- 선정 기준 먼저 선언 — 결론을 내리기 전에 평가 기준을 명시한다
평가 기준: - 독립 분해 가능한가? (병렬 처리가 의미 있는가) - 검증 가능한 산출물이 있는가? - 역할 분담이 단독 대비 실질적 이점이 있는가? - 공통점/합의점 정리
- 충돌점/이견 명시
- critic 반론 반영 여부 결정
- 최종 결론 도출
팀원 무응답 대응
1. SendMessage로 보고 재요청 → 3분 대기
2. 응답 없으면 → 새 팀원(v2)으로 재투입
3. config.json에서 무응답 팀원 강제 제거 후 TeamDelete 진행
7. Codex 교차 검증 (CODEX_AVAILABLE=true 시)
PM 종합 완료 후 codex:codex-rescue 서브에이전트를 스폰하여 교차검증을 실행한다.
/codex:adversarial-review는disable-model-invocation제약으로 오케스트레이터가 자동 호출할 수 없다. 대신codex:codex-rescue로 Codex CLI에 교차검증 작업을 task로 전달한다.
프롬프트 작성 규칙 (필수)
codex-rescue는 독립 컨텍스트에서 실행되므로, 판단에 필요한 모든 정보를 프롬프트에 인라인으로 포함해야 한다. 컨텍스트 없이 "약점을 찾아줘"만 보내면 무응답이 된다.
프롬프트 템플릿:
Agent(
subagent_type="codex:codex-rescue",
run_in_background=true,
prompt="""
아래 분석 결론의 약점을 찾아줘.
critic이 이미 검토한 항목은 중복 제외하고, 외부 관점에서 놓친 점만 보고.
## PM 종합 결론
[PM 종합 판단 본문 전체를 여기에 인라인]
## critic 검토 결과 (중복 제외 대상)
[critic 보고 본문 전체를 여기에 인라인]
## 질문
- 이 결론에 놓친 리스크가 있는가?
- [주제 특화 질문]
50줄 이내 보고.
"""
)
인라인 기준:
- PM 종합: 핵심 발견 + 결론 + 권고 (전문 권장, 200줄 이하로 압축)
- critic 보고: 수정 필요/타당성 확인 판정표 전체
- 관련 파일: 코드 경로만 명시 (codex-rescue가 Bash로 파일 내용을 읽을 수 있음)
critic → Codex 순서 정의
critic과 Codex는 역할이 다르다. 중복을 방지하기 위해 순서를 정의한다:
- critic (§5에서 실행): 내부 논리 검증 — 빠진 관점, 논리적 비약, 과도한 단순화
- Codex (§7에서 실행): critic 보고서를 전달받아 critic이 언급하지 않은 외부 관점 + 반사실적 시나리오만 검토
피드백 반영 루프
- Codex 피드백이 결론 수정을 요구하면 → PM 재종합 1회 허용
- 재종합 후 Codex가 재반론하면 → PM 최종 확정 우선, 루프 종료
- Codex 피드백이 경미하면 → 최종 결과에 "반영" 또는 "검토 완료, 이견 없음"으로 명시
Codex 실행 결과 사용자 확인
Codex 교차검증 결과를 받은 후, PM이 바로 반영하지 않고 사용자에게 먼저 보여준다:
🔍 Codex 교차검증 결과
[Codex 보고 요약 3~5줄]
이 피드백을 결론에 반영할까요?
[1] 반영 [2] 무시 [3] 추가 검증 요청
- [1] 반영: PM이 Codex 피드백을 반영하여 재종합
- [2] 무시: Codex 피드백을 무시하고 현재 결론 확정
- [3] 추가 검증: 사용자가 지정한 항목으로 Codex 재실행
작업 디렉토리 고정 (필수)
Codex에 전달하는 프롬프트에 반드시 작업 디렉토리를 명시한다. 컨텍스트 이탈(다른 프로젝트 파일 읽기) 방지:
Agent(
subagent_type="codex:codex-rescue",
prompt="""
작업 디렉토리: /절대경로/프로젝트
이 디렉토리 밖의 파일은 읽지 마라.
...
"""
)
fallback
- CODEX_AVAILABLE=false: critic 팀원 결과로 대체. 별도 안내 없이 진행.
- 사용자가 §3에서 Codex 스킵 선택: §7 전체 생략, critic 결과로 최종 확정.
- Codex 무응답/타임아웃: 60초 대기 → 응답 없으면 스킵, critic 결과로 진행.
- Codex 결과 부실: 프롬프트를 보강하여 1회 재시도 → 재시도 후에도 부실하면 critic 결과로 진행.
- Codex 컨텍스트 이탈 감지: Codex가 작업 디렉토리 밖 파일을 읽은 경우 → 결과 무효, critic 결과로 대체.
8. 팀 정리
SendMessage(shutdown_request) → 모든 팀원에게
TeamDelete → 팀 정리
TeamDelete 실패 시 (active members 오류):
# config.json에서 팀원 강제 제거 후 재시도
python3 -c "
import json, os
path = os.path.expanduser('~/.claude/teams/[팀이름]/config.json')
with open(path) as f: data = json.load(f)
data['members'] = [m for m in data['members'] if m['name'] == 'team-lead']
with open(path, 'w') as f: json.dump(data, f, indent=2)
"
9. 최종 결과 출력
## [주제] — 분석 결과
### 팀 구성
- 팀 유형: [유형]
- 팀원: [역할 목록]
- Codex 교차검증: [적용/미적용]
### 핵심 발견
1. [발견 1]
2. [발견 2]
3. [발견 3]
### 선정 기준
- 독립 분해 가능성: [평가]
- 산출물 검증 가능성: [평가]
- 역할 분담 실질 이점: [평가]
### 결론
[PM 종합 판단 — 명확하고 직접적으로]
### critic 검토
[타당성 확인 / 수정 반영 내역]
※ "조건부 타당" 판정이 있으면 해당 조건을 결론에 반드시 병기
### Codex 교차검증 (적용 시)
[이견 없음 / 반영된 수정 사항]
### 다음 액션
→ [권장 행동 1]
→ [권장 행동 2]
참조 문서
references/team-patterns.md— 팀 유형별 상세 프롬프트 예시, 팀 운영 실전 패턴, tmux pane 관리 참고
사용 예시
# 어떤 주제든 그냥 전달
/peach-think-team 우리 서비스 인증 아키텍처 JWT vs Session 어떻게 결정해야 해?
/peach-think-team 경쟁사 3곳(토스, 카카오페이, 네이버페이) 결제 UX 분석해줘
/peach-think-team 이 PR diff를 보고 설계 상 문제점 찾아줘
/peach-think-team 내년 기술 로드맵 어떻게 잡으면 좋을지 다각도로 검토해줘
More from peachsolution/peach-harness
peach-gen-spec
|
59peach-gen-db
DB DDL/마이그레이션 생성 전문가. "테이블 만들어줘", "DB 스키마 생성", "마이그레이션 생성" 키워드로 트리거. 확정 Spec 또는 명확한 테이블 구조를 기준으로 dbmate 마이그레이션 파일을 생성.
59peach-qa-gate
|
58peach-gen-design
|
58peach-add-api
|
57peach-gen-backend
Backend API 전문 생성 스킬. "백엔드 만들어줘", "API 생성", "서버 코드 만들어줘" 키워드로 트리거. TDD 검증 필수, AI와 티키타카로 완성도 확보.
57