# 오케스트레이터 스킬 템플릿 (Antigravity CLI) 오케스트레이터는 팀 전체를 조율하는 상위 스킬이다. Antigravity CLI에서는 메인 에이전트가 오케스트레이터 역할을 하며, `invoke_subagent` 도구를 호출하여 각 서브에이전트에게 작업을 위임하고 전체 워크플로우를 통제한다. **실행 모드별 3가지 템플릿:** - **템플릿 A: 서브에이전트 모드 (기본)** — 순차적 위임, 파일 기반 데이터 전달 - **템플릿 B: 병렬 서브에이전트 모드** — 독립 작업 동시 실행 - **템플릿 C: 하이브리드 모드** — Phase마다 다른 패턴 혼합 --- ## 템플릿 A: 서브에이전트 모드 (기본 · 순차) 2명 이상의 서브에이전트가 순차적으로 협업할 때 사용한다. 각 서브에이전트는 독립된 격리 컨텍스트에서 실행되며, 약속된 파일 경로를 통해 중간 결과를 넘겨받아 가공한다. ```markdown --- name: {domain}-orchestrator description: "{도메인} 서브에이전트 팀을 조율하는 오케스트레이터. {초기 실행 키워드}. 후속 작업: {도메인} 결과 수정, 부분 재실행, 업데이트, 보완, 다시 실행, 이전 결과 개선 요청 시에도 반드시 이 스킬을 사용." --- # {Domain} Orchestrator {도메인}의 서브에이전트 팀을 조율하여 {최종 산출물}을 생성하는 통합 스킬. ## 실행 모드: 서브에이전트 (순차) ## 서브에이전트 구성 | 에이전트 TypeName | 역할 | 스킬 | 출력 | |:---|:---|:---|:---| | {agent-1} | {역할} | {skill} | `_workspace/{phase}_{agent}_{artifact}.md` | | {agent-2} | {역할} | {skill} | `_workspace/{phase}_{agent}_{artifact}.md` | ## 워크플로우 ### Phase 0: 컨텍스트 확인 (후속 작업 지원) 기존 산출물 존재 여부를 확인하여 실행 모드를 결정한다: 1. `_workspace/` 디렉토리 존재 여부 확인 2. 실행 모드 결정: - **`_workspace/` 미존재** → 초기 실행. Phase 1로 진행 - **`_workspace/` 존재 + 사용자가 부분 수정 요청** → 부분 재실행. `invoke_subagent`를 통해 해당 서브에이전트만 호출하고, 기존 산출물 중 수정 대상만 덮어쓴다. - **`_workspace/` 존재 + 새 입력 제공** → 새 실행. 기존 `_workspace/`를 `_workspace_{YYYYMMDD_HHMMSS}/`로 백업 이동한 뒤 Phase 1 진행. 3. 부분 재실행 시: 이전 산출물 경로를 `invoke_subagent` 프롬프트에 포함하여, 서브에이전트가 기존 결과를 읽고 피드백을 반영하도록 지시한다. ### Phase 1: 준비 1. 사용자 입력 분석 — {무엇을 파악하는지} 2. 작업 디렉토리에 `_workspace/` 생성 - **초기 실행**: 새 `_workspace/` 생성 - **새 실행**: 기존 `_workspace/`를 백업 이동한 직후 새 `_workspace/` 재생성 3. 입력 데이터를 `_workspace/00_input/`에 저장 ### Phase 2: {주요 작업 — 예: 분석/조사} 1. `invoke_subagent` 도구 호출로 {agent-1} 구동: - **TypeName**: "{agent-1}" - **Role**: "{agent-1-role}" - **Prompt**: "지정된 입력 경로 `_workspace/00_input/`에서 데이터를 읽어 {구체적 분석 수행 내용}을 수행하고, 결과를 `_workspace/02_{agent-1}_result.md`에 작성하세요." 2. `invoke_subagent` 도구 호출로 {agent-2} 구동: - **TypeName**: "{agent-2}" - **Role**: "{agent-2-role}" - **Prompt**: "{agent-1}의 분석 결과 파일 `_workspace/02_{agent-1}_result.md`를 로드하여 {구체적 가공 내용}을 수행하고, 결과를 `_workspace/02_{agent-2}_result.md`에 최종 작성하세요." ### Phase 3: {후속 작업 — 예: 생성/구현} 3. `invoke_subagent` 도구 호출로 {agent-3} 구동: - **TypeName**: "{agent-3}" - **Role**: "{agent-3-role}" - **Prompt**: "`_workspace/02_{agent-2}_result.md`를 로드하여 {구체적 생성 내용}을 수행하고, 결과를 `_workspace/03_{agent-3}_result.md`에 작성하세요." ### Phase 4: 통합 1. 모든 서브에이전트의 산출물 파일 Read (`view_file` 도구 활용) 2. {통합/검증 로직 적용} 3. 최종 산출물 생성: `{output-path}/{filename}` ### Phase 5: 정리 1. `_workspace/` 디렉토리 보존 (중간 산출물은 삭제하지 않음 — 사후 검증 및 히스토리 역추적용) 2. 사용자에게 결과 요약 보고 ## 데이터 흐름 ``` [오케스트레이터/메인] │ ├── invoke_subagent("agent-1") ──→ _workspace/02_agent1_result.md │ │ │ ↓ (Read) ├── invoke_subagent("agent-2") ──→ _workspace/02_agent2_result.md │ │ │ ↓ (Read) ├── invoke_subagent("agent-3") ──→ _workspace/03_agent3_result.md │ └── 최종 결과 통합 및 생성 → 최종 산출물 ``` ## 에러 핸들링 | 상황 | 전략 | |------|------| | 서브에이전트 1명 실패 | 1회 재호출 시도. 재실패 시 보고서에 누락을 명시하고 다음 단계 진행 | | 과반 실패 | 사용자에게 즉각 에러 로그를 보고하고 진행 여부 컨펌 | | 타임아웃 | 현재까지 수집된 부분 결과 및 백업 파일을 활용하여 복구 진행 | | 서브에이전트 간 데이터 충돌 | 데이터를 덮어쓰지 않고 출처를 병기하여 보존 | ## 테스트 시나리오 ### 정상 흐름 1. 사용자가 {입력}을 제공 2. Phase 1에서 {분석 결과} 도출 3. Phase 2에서 서브에이전트들 순차 실행 4. Phase 3에서 산출물을 통합하여 최종 결과 생성 5. 예상 결과: `{output-path}/{filename}` 생성 ### 에러 흐름 1. Phase 2에서 {agent-2} 실행 도중 에러 중단 2. 오케스트레이터가 1회 재호출을 수행 3. 재실행 실패 시 해당 단계를 누락 처리 4. 나머지 결과로 Phase 3 진행 5. 최종 보고서에 "{agent-2} 작업 영역 수집 실패"를 명시하고 보존 ``` --- ## 템플릿 B: 병렬 서브에이전트 모드 (병렬) 독립적인 여러 작업을 동시에 실행하여 리소스를 아끼고 속도를 높일 때 사용한다. 출력 파일들이 겹치지 않도록 경로 및 파일명을 명확히 구별해야 한다. ```markdown --- name: {domain}-orchestrator description: "{도메인} 서브에이전트 팀을 병렬 조율하는 오케스트레이터. {초기 실행 키워드}. 후속 작업 키워드 포함." --- ## 실행 모드: 병렬 서브에이전트 ## 서브에이전트 구성 | 에이전트 TypeName | 역할 | 스킬 | 출력 | |:---|:---|:---|:---| | {agent-1} | {역할} | {skill} | `_workspace/02_{agent-1}.md` | | {agent-2} | {역할} | {skill} | `_workspace/02_{agent-2}.md` | | {agent-3} | {역할} | {skill} | `_workspace/02_{agent-3}.md` | ## 워크플로우 ### Phase 0: 컨텍스트 확인 (Template A와 동일 — `_workspace/` 존재 여부 분기) ### Phase 1: 준비 1. 입력 분석 2. `_workspace/` 생성 ### Phase 2: 병렬 실행 모든 서브에이전트가 백그라운드에서 실행될 수 있도록 순차적으로 `invoke_subagent` 도구를 즉시 호출한다 (각각 고유 출력 경로 지정): 1. `invoke_subagent` 호출 ({agent-1}) 2. `invoke_subagent` 호출 ({agent-2}) 3. `invoke_subagent` 호출 ({agent-3}) *모든 서브에이전트 완료 노티 및 응답을 수집할 때까지 대기.* ### Phase 3: 통합 1. 각 서브에이전트 완료 보고를 확인하고 `_workspace/` 하위 결과 수집 (Read) 2. 통합 로직 적용 → 최종 산출물 작성 ### Phase 4: 정리 1. `_workspace/` 보존 2. 결과 요약 보고 ## 에러 핸들링 - 에이전트 1개 실패: 1회 재실행. 지속 실패 시 누락 명시 후 파이프라인 진행. - 과반 실패: 사용자 조작 유도 및 컨펌. - 출력 파일 경로 중복 방지: 각 에이전트의 출력 파일명에 TypeName을 포함하여 고유화. ``` --- ## 템플릿 C: 하이브리드 모드 Phase마다 서로 다른 실행 패턴(순차, 병렬, 직접 실행)을 혼합하여 워크플로우를 설계한다. 각 Phase 상단에 `**실행 패턴:** {순차 | 병렬 | 직접}`를 필히 명시한다. ```markdown --- name: {domain}-orchestrator description: "{도메인} 오케스트레이터 (하이브리드). {키워드}. 후속 작업 키워드 포함." --- ## 실행 모드: 하이브리드 | Phase | 패턴 | 이유 | |:---|:---|:---| | Phase 2 (병렬 수집) | 병렬 서브에이전트 | 복수의 독립 자료 수집 속도 최적화 | | Phase 3 (합의 통합) | 직접 실행 (메인 통합) | 복합적 정합성 및 가치 판단 필요 | | Phase 4 (독립 검증) | 순차 서브에이전트 | QA 전문 에이전트를 통한 철저한 사후 분석 | ## 워크플로우 ### Phase 2: 병렬 자료 수집 **실행 패턴:** 병렬 서브에이전트 여러 서브에이전트를 동시 구동한다. 결과는 각기 `_workspace/02_{agent}_raw.md`에 안전하게 분할 저장된다. ### Phase 3: 합의 기반 통합 **실행 패턴:** 직접 실행 메인 에이전트가 Phase 2의 출력 파일들을 모두 취합하여 읽어들여 상충 내용을 보완하고 종합적인 정합성을 반영한다. 최종 통합본 `_workspace/03_integrated.md`를 생산한다. ### Phase 4: 독립 검증 **실행 패턴:** 순차 서브에이전트 QA 서브에이전트 `invoke_subagent`를 구동하여, 입력으로 넘겨받은 `_workspace/03_integrated.md`에 대한 객관적인 품질 및 정합성 검증 레포트를 작성하도록 한다. ``` **하이브리드 전환 규칙:** - **병렬 → 순차**: 병렬 구동 중인 모든 백그라운드 서브에이전트의 작업 완료(메시지 수집)를 완전 대기한 뒤 순차 Phase로 진입한다. - **순차 → 병렬**: 이전 순차 단계 완료 후 저장된 최종 결과 경로를 모든 병렬 서브에이전트 프롬프트에 공유 및 전달하여 동시 작업을 시작한다. - **서브에이전트 → 직접 실행**: 서브에이전트가 완성해 둔 산출물들을 메인 오케스트레이터가 직접 도구로 읽고 처리한다. --- ## 작성 원칙 1. **실행 패턴 명시**: 오케스트레이터 스킬 상단에 어떤 패턴("순차 서브에이전트", "병렬 서브에이전트", "직접 실행", "하이브리드")을 쓰는지 반드시 적는다. 2. **`invoke_subagent` 도구 호출로 위임**: 서브에이전트 호출이 텍스트(예: @analyst)가 아닌, Antigravity CLI의 `invoke_subagent` 도구 실행임을 규정한다. 3. **고유 절대 경로 지정**: 에이전트 간 산출물이 엉키거나 덮어써지지 않도록 `_workspace/` 하위에 에이전트 이름이 들어간 고유 파일명을 설정한다. 4. **에러 폴백 설계**: 현실적인 실행 실패 및 복구 수단을 에러 핸들링 섹션에 기재한다. 5. **description 내 후속 제어 키워드 필수 반영**: 스킬이 1회용으로 사장되지 않도록 "재실행, 다시 실행, 수정, 업데이트, 보완" 등의 키워드를 description에 확실히 담는다. 6. **에러 핸들링은 현실적으로** — "모든 것이 성공한다"고 가정하지 않는다. 7. **테스트 시나리오 필수** — 정상 흐름 1개 + 에러 흐름 1개 이상 기술한다. ## description 작성 시 후속 작업 키워드 오케스트레이터 description은 초기 실행 키워드만으로는 부족하다. 다음 후속 작업 표현을 반드시 포함하라: - 재실행/다시 실행/업데이트/수정/보완 - "{도메인}의 {부분}만 다시" - "이전 결과 기반으로", "결과 개선" - 도메인 관련 일상적 요청 (예: 런치 전략 하네스라면 "런치", "홍보", "트렌딩" 등) 후속 키워드가 없으면 첫 실행 후 하네스가 사실상 죽은 코드가 된다. ## 실제 오케스트레이터 참고 병렬 서브에이전트 패턴의 오케스트레이터 기본 구조: 준비 → Phase 0(컨텍스트 확인) → invoke_subagent 병렬 호출 → 결과 수집 → 통합 → 정리. `rules/team-examples.md`의 리서치 팀 예시를 참조.