Skip to content

Agent Teams - 병렬 팀 기반 개발

Claude Code Agent Teams를 활용한 병렬 멀티 에이전트 오케스트레이션

Agent Teams는 Claude Code v2.1.32+의 실험적 기능으로, 복잡한 멀티 도메인 작업을 팀 기반으로 병렬 처리합니다.


개요

Agent Teams는 J.A.R.V.I.S./F.R.I.D.A.Y. 오케스트레이터가 여러 전문 에이전트를 팀으로 구성하여 병렬로 작업을 수행하는 기능입니다.

기존 Sub-Agent 방식 vs Agent Teams

구분Sub-Agent 방식Agent Teams 방식
실행순차 실행병렬 실행
통신Task() 호출/반환SendMessage로 실시간 협업
작업 관리오케스트레이터가 직접 관리공유 TaskList로 자율 분배
상태Stateless팀 세션 동안 상태 유지
적합한 경우단일 도메인, 간단한 작업멀티 도메인, 복잡한 작업

활성화 조건

필수 요구사항

  1. Claude Code 버전: v2.1.32 이상
  2. 환경 변수: CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
  3. 설정 파일: .jikime/config/workflow.yaml에서 team.enabled: true
bash
# 환경 변수 설정
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

# 또는 settings.json에 추가
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

자동 활성화 조건

다음 조건 중 하나라도 충족되면 자동으로 팀 모드가 활성화됩니다:

조건기준값설명
도메인 수>= 3frontend, backend, database 등
파일 수>= 10변경될 파일 개수
복잡도 점수>= 71-10 스케일

빠른 시작 가이드

Step 1: 환경 설정

bash
# 1. Claude Code 버전 확인 (v2.1.32 이상 필요)
claude --version

# 2. 환경 변수 설정 (터미널에서)
export CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1

# 3. 또는 ~/.claude/settings.json에 영구 설정
{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

Step 2: 프로젝트 설정 확인

bash
# JikiME-ADK 초기화 (이미 되어있다면 생략)
jikime-adk init

# workflow.yaml에서 team 설정 확인
cat .jikime/config/workflow.yaml | grep -A 5 "team:"

Step 3: 팀 모드 실행

bash
# Plan Phase에서 팀 모드 사용
/jikime:1-plan "사용자 인증 시스템 구현" --team

# Run Phase에서 팀 모드 사용
/jikime:2-run SPEC-AUTH-001 --team

상세 사용 가이드

시나리오 1: 새로운 기능 개발 (Full Stack)

복잡한 기능을 백엔드, 프론트엔드, 테스트를 병렬로 개발하는 경우:

bash
# 1. Plan Phase - 팀으로 요구사항 분석
/jikime:1-plan "OAuth 2.0 기반 소셜 로그인 구현 (Google, GitHub, Kakao)" --team

# 내부적으로 발생하는 일:
# - team-researcher: 기존 인증 코드 분석
# - team-analyst: 요구사항 및 엣지 케이스 도출
# - team-architect: 기술 설계 및 아키텍처 결정
# → 결과: SPEC-SOCIAL-LOGIN-001.md 생성

# 2. SPEC 승인 후 Run Phase - 팀으로 구현
/jikime:2-run SPEC-SOCIAL-LOGIN-001 --team

# 내부적으로 발생하는 일:
# - team-backend-dev: OAuth 프로바이더 연동, API 엔드포인트 구현
# - team-frontend-dev: 로그인 버튼, 콜백 페이지 구현
# - team-tester: E2E 테스트, 단위 테스트 작성
# - team-quality: TRUST 5 품질 검증

# 3. 완료 후 동기화
/jikime:3-sync SPEC-SOCIAL-LOGIN-001

시나리오 2: UI/UX 중심 기능 개발

디자이너가 포함된 팀으로 UI 중심 기능을 개발하는 경우:

bash
# design_implementation 패턴 사용
/jikime:2-run SPEC-DASHBOARD-001 --team --pattern=design_implementation

# 팀 구성:
# - team-designer: 디자인 토큰, 컴포넌트 스타일 정의
# - team-backend-dev: 대시보드 데이터 API
# - team-frontend-dev: React 컴포넌트 구현
# - team-tester: 비주얼 리그레션 테스트

시나리오 3: 복잡한 버그 조사

여러 가설을 병렬로 조사하는 경우:

bash
# investigation 패턴 사용
/jikime:build-fix --team

# 팀 구성 (경쟁적 가설 조사):
# - hypothesis-1: 메모리 누수 가설 조사
# - hypothesis-2: 레이스 컨디션 가설 조사
# - hypothesis-3: API 타임아웃 가설 조사
# → 가장 먼저 원인을 찾은 가설이 채택됨

시나리오 4: 프로덕션 배포 전 품질 검증

품질 게이트가 중요한 경우:

bash
# quality_gate 패턴 사용
/jikime:2-run SPEC-PAYMENT-001 --team --pattern=quality_gate

# 팀 구성:
# - team-backend-dev: 결제 로직 구현
# - team-frontend-dev: 결제 UI 구현
# - team-tester: 보안 테스트, 결제 플로우 테스트
# - team-quality: TRUST 5 + 보안 감사 + 성능 검증

팀 모드 vs Solo 모드 선택 가이드

상황권장 모드명령어
간단한 버그 수정Solo/jikime:2-run SPEC-001 --solo
단일 파일 수정Solo/jikime:2-run SPEC-001 --solo
멀티 도메인 기능Team/jikime:2-run SPEC-001 --team
10개 이상 파일 변경Team자동 감지
UI + API + DB 동시 변경Team/jikime:2-run SPEC-001 --team
복잡한 리팩토링Team/jikime:2-run SPEC-001 --team

팀원 간 협업 패턴

SendMessage 활용 예시

javascript
// Backend → Frontend: API 준비 완료 알림
SendMessage(
  recipient: "frontend-dev",
  type: "api_ready",
  content: {
    endpoint: "POST /api/auth/oauth/callback",
    schema: {
      provider: "string",
      code: "string",
      state: "string"
    },
    response: {
      user: "User",
      accessToken: "string",
      refreshToken: "string"
    }
  }
)

// Frontend → Tester: 컴포넌트 준비 완료 알림
SendMessage(
  recipient: "tester",
  type: "component_ready",
  content: {
    component: "SocialLoginButton",
    path: "src/components/auth/SocialLoginButton.tsx",
    testable: true,
    props: ["provider", "onSuccess", "onError"]
  }
)

// Tester → Quality: 테스트 완료 알림
SendMessage(
  recipient: "quality",
  type: "tests_passed",
  content: {
    coverage: 87,
    passedTests: 45,
    failedTests: 0,
    duration: "2m 34s"
  }
)

// Quality → Team Lead: 품질 게이트 통과
SendMessage(
  recipient: "team-lead",
  type: "quality_gate_passed",
  content: {
    trust5Score: 4.2,
    securityIssues: 0,
    performanceScore: "A",
    recommendation: "Ready for production"
  }
)

파일 변경 요청 패턴

javascript
// Frontend에서 Backend 타입 변경 요청
SendMessage(
  recipient: "backend-dev",
  type: "change_request",
  content: {
    file: "src/types/auth.ts",
    requestedChange: "Add 'profileImage' field to User type",
    reason: "Required for social login avatar display",
    priority: "high"
  }
)

// Backend 응답
SendMessage(
  recipient: "frontend-dev",
  type: "change_completed",
  content: {
    file: "src/types/auth.ts",
    change: "Added profileImage: string | null to User type",
    commitRef: "abc123"
  }
)

트러블슈팅

문제 1: 팀 모드가 활성화되지 않음

증상: --team 플래그를 사용해도 순차 실행됨

해결 방법:

bash
# 1. Claude Code 버전 확인
claude --version  # v2.1.32 이상이어야 함

# 2. 환경 변수 확인
echo $CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS  # "1"이어야 함

# 3. 설정 파일 확인
cat .jikime/config/workflow.yaml | grep "team:" -A 3
# enabled: true 확인

# 4. 강제 활성화
/jikime:2-run SPEC-001 --team --force

문제 2: 팀원 간 통신 실패

증상: SendMessage가 전달되지 않음

해결 방법:

bash
# 1. 팀 세션 상태 확인
# 팀 이름이 올바른지 확인

# 2. 수신자 이름 확인 (정확한 이름 사용)
# ✅ "backend-dev"
# ❌ "team-backend-dev"
# ❌ "backendDev"

# 3. 팀 재시작
/jikime:team-restart

문제 3: 파일 충돌 발생

증상: 두 팀원이 같은 파일을 수정하려 함

해결 방법:

javascript
// 1. 직접 수정하지 말고 소유자에게 요청
SendMessage(
  recipient: "backend-dev",  // 파일 소유자
  type: "change_request",
  content: {
    file: "src/types/user.ts",
    requestedChange: "Add socialProvider field",
    reason: "Needed for OAuth integration"
  }
)

// 2. 공유 파일은 조율 후 수정
// src/types/**, src/utils/** 등은 SendMessage로 조율 필요

문제 4: 팀원이 유휴 상태로 대기

증상: 팀원이 작업 없이 대기 중

해결 방법:

javascript
// TaskList에서 할당되지 않은 작업 확인
TaskList()

// 유휴 팀원에게 작업 할당
TaskCreate(
  subject: "Implement error handling for OAuth callback",
  description: "Add try-catch and error UI for failed OAuth",
  owner: "frontend-dev"  // 유휴 팀원 지정
)

문제 5: 품질 게이트 실패

증상: team-quality가 작업을 거부함

해결 방법:

bash
# 1. 품질 리포트 확인
# team-quality가 보낸 메시지에서 실패 원인 확인

# 2. 일반적인 실패 원인:
# - 테스트 커버리지 미달 (80% 이상 필요)
# - 린트 에러 존재
# - 보안 취약점 발견
# - 성능 기준 미달

# 3. 해당 팀원에게 수정 요청
SendMessage(
  recipient: "tester",
  type: "coverage_required",
  content: {
    current: 72,
    required: 80,
    uncoveredFiles: ["src/services/oauth.ts"]
  }
)

Best Practices

1. 팀 구성 최적화

yaml
# 프로젝트 규모별 권장 팀 구성
small_project:  # < 5개 파일
  mode: solo

medium_project:  # 5-20개 파일
  mode: team
  pattern: implementation
  roles: [backend-dev, frontend-dev, tester]

large_project:  # > 20개 파일
  mode: team
  pattern: quality_gate
  roles: [backend-dev, frontend-dev, designer, tester, quality]

2. 효과적인 파일 소유권 설정

yaml
# 명확한 경계 설정
file_ownership:
  team-backend-dev:
    - "src/api/**"
    - "src/services/**"
    - "src/repositories/**"
    - "prisma/**"

  team-frontend-dev:
    - "src/components/**"
    - "src/pages/**"
    - "src/hooks/**"
    - "src/stores/**"

  # 공유 파일은 최소화
  shared:
    - "src/types/**"  # 타입 정의만 공유

3. 통신 최소화

javascript
// ❌ 나쁜 예: 너무 잦은 통신
SendMessage(recipient: "frontend-dev", type: "progress", content: "Started task")
SendMessage(recipient: "frontend-dev", type: "progress", content: "50% done")
SendMessage(recipient: "frontend-dev", type: "progress", content: "Almost done")

// ✅ 좋은 예: 의미 있는 통신만
SendMessage(
  recipient: "frontend-dev",
  type: "api_ready",
  content: { endpoint: "/api/users", schema: {...} }
)

4. 품질 게이트 활용

yaml
# 중요한 기능에는 항상 quality 팀원 포함
critical_features:
  - payment
  - authentication
  - user_data

pattern_for_critical: quality_gate

5. Fallback 대비

yaml
# Sub-Agent 폴백 설정
workflow:
  team:
    fallback:
      enabled: true
      log_level: "warn"
      preserve_progress: true  # 진행 상황 보존

Team 에이전트 목록

Plan Phase 에이전트 (읽기 전용)

에이전트모델역할스킬
team-researcherhaiku코드베이스 탐색, 아키텍처 분석jikime-foundation-philosopher
team-analystinherit요구사항 분석, 엣지 케이스 도출jikime-workflow-spec
team-architectinherit기술 설계, 대안 평가jikime-domain-architecture

Run Phase 에이전트 (구현 권한)

에이전트모델역할파일 소유권
team-backend-devinheritAPI, 서비스, 비즈니스 로직 구현src/api/**, src/services/**
team-frontend-devinheritUI 컴포넌트, 페이지 구현src/components/**, src/pages/**
team-designerinheritUI/UX 설계, 디자인 토큰design/**, src/styles/tokens/**
team-testerinherit테스트 작성, 커버리지 검증tests/**, **/*.test.*
team-qualityinherit (읽기 전용)TRUST 5 검증, 품질 게이트-

팀 구성 패턴

1. plan_research (Plan Phase)

SPEC 문서 생성을 위한 병렬 리서치 팀

yaml
roles:
  - researcher  # 코드베이스 탐색
  - analyst     # 요구사항 분석
  - architect   # 기술 설계

사용 시점: /jikime:1-plan --team 또는 복잡도 자동 감지

2. implementation (Run Phase)

기능 구현을 위한 개발 팀

yaml
roles:
  - backend-dev   # 서버 사이드
  - frontend-dev  # 클라이언트 사이드
  - tester        # 테스트

사용 시점: /jikime:2-run SPEC-001 --team

3. design_implementation

UI/UX가 중요한 기능 구현

yaml
roles:
  - designer      # UI/UX 설계
  - backend-dev
  - frontend-dev
  - tester

4. quality_gate

품질 검증이 중요한 프로덕션 배포

yaml
roles:
  - backend-dev
  - frontend-dev
  - tester
  - quality       # TRUST 5 검증

5. investigation

복잡한 버그의 경쟁적 가설 조사

yaml
roles:
  - hypothesis-1
  - hypothesis-2
  - hypothesis-3
model: haiku  # 빠르고 저렴한 모델

사용 시점: /jikime:build-fix --team


워크플로우

Team Plan Workflow

┌─────────────────────────────────────────────────────────┐
│  Phase 0: TeamCreate("jikime-plan-{feature}")           │
│  ↓                                                       │
│  Phase 1: 병렬 Spawn                                     │
│  ├─ Task(team-researcher) ──┐                           │
│  ├─ Task(team-analyst) ─────┼─→ 병렬 실행               │
│  └─ Task(team-architect) ───┘                           │
│  ↓                                                       │
│  Phase 2: 모니터링 & 조정                                │
│  (SendMessage로 실시간 협업)                             │
│  ↓                                                       │
│  Phase 3: 결과 통합 → SPEC 문서 생성                    │
│  ↓                                                       │
│  Phase 4: 사용자 승인 (AskUserQuestion)                 │
│  ↓                                                       │
│  Phase 5: TeamDelete + /clear                           │
└─────────────────────────────────────────────────────────┘

Team Run Workflow

┌─────────────────────────────────────────────────────────┐
│  Phase 0: TeamCreate + Task 분해 (파일 소유권 할당)     │
│  ↓                                                       │
│  Phase 1: 병렬 구현 팀 Spawn                            │
│  ├─ backend-dev (src/api/**)                            │
│  ├─ frontend-dev (src/components/**)                    │
│  ├─ tester (tests/**)                                   │
│  └─ quality (읽기 전용)                                 │
│  ↓                                                       │
│  Phase 2: 병렬 구현                                      │
│  - SendMessage("api_ready") → frontend 작업 시작        │
│  - SendMessage("component_ready") → tester 작업 시작    │
│  ↓                                                       │
│  Phase 3: 품질 게이트                                    │
│  - team-quality가 TRUST 5 검증                          │
│  - 통과 시 완료, 실패 시 수정 요청                      │
│  ↓                                                       │
│  Phase 4: TeamDelete                                    │
└─────────────────────────────────────────────────────────┘

Team API 레퍼런스

TeamCreate

팀 세션을 초기화합니다.

javascript
TeamCreate(team_name: "jikime-plan-auth-feature")

Task (팀 모드)

팀원을 생성합니다. 반드시 team_namename 파라미터가 필요합니다.

javascript
Task(
  subagent_type: "team-backend-dev",
  team_name: "jikime-run-spec-001",
  name: "backend-dev",
  prompt: "..."
)

SendMessage

팀원 간 또는 팀 리드에게 메시지를 보냅니다.

javascript
// API 준비 알림
SendMessage(
  recipient: "frontend-dev",
  type: "api_ready",
  content: {
    endpoint: "POST /api/auth/login",
    schema: { email: "string", password: "string" }
  }
)

// 버그 리포트
SendMessage(
  recipient: "backend-dev",
  type: "bug_report",
  content: {
    test: "auth.test.ts:45",
    expected: "200 OK",
    actual: "500 Error"
  }
)

// 셧다운 요청
SendMessage(
  type: "shutdown_request",
  recipient: "researcher",
  content: "Plan phase complete"
)

TaskCreate/Update/List/Get

공유 작업 목록을 관리합니다.

javascript
// 작업 생성
TaskCreate(
  subject: "Implement login API",
  description: "...",
  owner: "backend-dev"
)

// 상태 업데이트
TaskUpdate(taskId: "1", status: "in_progress")
TaskUpdate(taskId: "1", status: "completed")

// 작업 목록 조회
TaskList()  // 모든 팀원이 볼 수 있음

// 상세 조회
TaskGet(taskId: "1")

TeamDelete

팀 세션을 종료합니다. 모든 팀원이 셧다운된 후 호출해야 합니다.

javascript
// 먼저 모든 팀원에게 셧다운 요청
SendMessage(type: "shutdown_request", recipient: "all", ...)

// 팀원 종료 확인 후
TeamDelete(team_name: "jikime-run-spec-001")

파일 소유권

팀 모드에서 파일 충돌을 방지하기 위해 각 팀원은 특정 파일 패턴을 소유합니다.

yaml
file_ownership:
  team-backend-dev:
    - "src/api/**"
    - "src/services/**"
    - "src/repositories/**"
    - "src/models/**"
    - "src/middleware/**"
    - "prisma/migrations/**"

  team-frontend-dev:
    - "src/components/**"
    - "src/pages/**"
    - "src/app/**"
    - "src/hooks/**"
    - "src/stores/**"
    - "src/styles/**"

  team-designer:
    - "design/**"
    - "src/styles/tokens/**"

  team-tester:
    - "tests/**"
    - "__tests__/**"
    - "**/*.test.*"
    - "**/*.spec.*"
    - "cypress/**"
    - "playwright/**"

  shared:  # SendMessage로 조정 필요
    - "src/types/**"
    - "src/utils/**"
    - "src/lib/**"

충돌 해결

자신이 소유하지 않은 파일을 수정해야 할 경우:

javascript
// ❌ 직접 수정하지 않음

// ✅ 파일 소유자에게 요청
SendMessage(
  recipient: "backend-dev",
  type: "change_request",
  content: {
    file: "src/types/user.ts",
    requested_change: "Add 'refreshToken' field",
    reason: "Needed for token refresh flow"
  }
)

Hook 이벤트

TeammateIdle

팀원이 작업을 완료하고 유휴 상태가 될 때 호출됩니다.

yaml
TeammateIdle:
  exit_code_0: "유휴 상태 수락 - 더 이상 작업 없음"
  exit_code_2: "유휴 거부 - TaskList에서 추가 작업 할당"

TaskCompleted

팀원이 작업을 완료로 표시할 때 호출됩니다.

yaml
TaskCompleted:
  exit_code_0: "완료 수락 - 작업 종료"
  exit_code_2: "완료 거부 - 추가 작업 필요"
  validation:
    - 테스트 통과
    - 커버리지 목표 달성
    - 린트 에러 없음

사용 예시

Plan Phase에서 팀 모드 사용

bash
# 명시적 팀 모드
/jikime:1-plan "사용자 인증 시스템 구현" --team

# 자동 감지 (복잡도가 높으면 자동 활성화)
/jikime:1-plan "복잡한 멀티 도메인 기능"

Run Phase에서 팀 모드 사용

bash
# 명시적 팀 모드
/jikime:2-run SPEC-001 --team

# 디자이너 포함 팀
/jikime:2-run SPEC-001 --team --pattern=design_implementation

디버깅에서 팀 모드 사용

bash
# 경쟁적 가설 조사
/jikime:build-fix --team

# 여러 가설을 병렬로 조사

강제 Sub-Agent 모드

bash
# 팀 모드 비활성화 (단순 작업)
/jikime:2-run SPEC-001 --solo

설정 파일

.jikime/config/workflow.yaml

yaml
workflow:
  execution_mode: "auto"  # auto | subagent | team

  team:
    enabled: true
    max_teammates: 10
    default_model: "inherit"
    require_plan_approval: true
    delegate_mode: true
    teammate_display: "auto"

    auto_selection:
      min_domains_for_team: 3
      min_files_for_team: 10
      min_complexity_score: 7

    file_ownership:
      team-backend-dev:
        - "src/api/**"
        - "src/services/**"
      team-frontend-dev:
        - "src/components/**"
        - "src/pages/**"
      team-tester:
        - "tests/**"

    patterns:
      plan_research:
        roles: [researcher, analyst, architect]
      implementation:
        roles: [backend-dev, frontend-dev, tester]

    hooks:
      teammate_idle:
        enabled: true
        validate_work: true
      task_completed:
        enabled: true
        require_quality_check: true

Fallback 동작

팀 모드가 실패하거나 요구사항이 충족되지 않을 경우:

  1. 경고 로그 출력
  2. Sub-Agent 모드로 자동 전환
  3. 마지막 완료 작업부터 이어서 실행
  4. 데이터 손실 없음

Fallback 트리거 조건

  • CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS 환경 변수 미설정
  • workflow.team.enabled: false
  • TeamCreate 실패
  • 팀원 Spawn 실패
  • 네트워크 오류

관련 문서


버전 정보

항목
문서 버전1.1.0
필요 Claude Codev2.1.32+
상태Experimental
최종 업데이트2026-02-15

변경 이력

버전날짜변경 내용
1.1.02026-02-15빠른 시작 가이드, 상세 사용 가이드, 트러블슈팅, Best Practices 추가
1.0.02026-02-14최초 문서 작성

Released under the MIT License.