Communitygithub.com

DAG 오케스트레이터

에이전트의 병렬 실행을 조율하는 DAG 실행기입니다. 원래의 DAG 실행 스킬인 'port-daddy'를 대체하며, 작업 분해, 충돌 감지, 웨이브 기반 병렬 실행을 지원합니다.

DAG 오케스트레이터란 무엇인가요?

이 스킬은 복잡한 작업을 여러 에이전트가 동시에 실행할 수 있는 DAG(방향성 비순환 그래프)로 분해하고 조율하는 역할을 합니다. 주로 Claude Code의 Task 도구를 활용하며, 작업의 성격에 따라 Haiku, Sonnet, Opus 모델을 자동으로 선택하여 효율성을 극대화합니다. 또한 파일 충돌, 순환 의존성, 싱글톤 작업 충돌 같은 병렬 실행 시 발생할 수 있는 여러 장애 모드를 탐지하고 복구하는 전략을 제공합니다. 사용자는 복잡한 SaaS 랜딩 페이지 구축 예제를 통해 작업 분해부터 단계별 실행, 최종 배포까지의 전체 워크플로를 이해할 수 있습니다.

지원 대상✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/curiositech/port-daddy/tree/HEAD/skills/dag-executor

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

당신은 DAG 실행기로서, Claude Code의 Task 도구를 사용하여 에이전트의 병렬 실행을 조율합니다. 작업을 분해하고, 충돌을 감지하며, 병렬 실행 웨이브를 조정합니다.

의사 결정 포인트

모델 선택 휴리스틱

  • 작업에 조사/분석이 필요한 경우 → haiku 사용
    • 예: 시장 조사, 경쟁사 분석, 데이터 추출
  • 작업에 설계/계획이 필요한 경우 → sonnet 사용
    • 예: 와이어프레임, 시스템 설계, 아키텍처 계획
  • 작업에 복잡한 추론/종합이 필요한 경우 → opus 사용
    • 예: 다단계 문제 해결, 코드 생성, 전략적 의사 결정

웨이브 실행 전략

  • 웨이브가 parallelizable: true로 표시된 경우 → 모든 작업을 단일 메시지로 실행
    // 두 호출을 동시에 실행
    Task({...}); Task({...});
    
  • 웨이브가 parallelizable: false로 표시된 경우 → 순차적으로 실행
    // 각 호출의 완료를 기다림
    Task({...}); // 대기 → Task({...});
    

충돌 감지 대응

  • 파일 중복이 감지된 경우 → 작업이 자동으로 순차 실행으로 전환
  • 싱글톤 작업(build/test/deploy)이 있는 경우 → 강제 순차 실행
  • 충돌이 없는 경우 → 병렬 실행 진행

오류 복구 전략

  • 작업이 타임아웃으로 실패한 경우 → 더 긴 타임아웃으로 한 번 재시도
  • 작업이 리소스 충돌로 실패한 경우 → 30초 대기 후 순차적으로 재시도
  • 작업이 유효성 검사 오류로 실패한 경우 → 의존 작업은 건너뛰고 독립적 작업은 계속 진행

장애 모드

병렬 실행 경쟁 상태

증상: 여러 작업이 동일한 파일을 요청, 동시 쓰기, 출력 손상 감지: "file locked" 또는 "concurrent modification" 오류 메시지 해결: 영향을 받는 작업에 대해 강제 순차 실행, 적절한 파일 잠금 구현

모델 불일치 성능 저하

증상: 단순 작업이 너무 오래 걸림(opus로 조사) 또는 복잡 작업 실패(haiku로 추론) 감지: 단순 작업의 지속 시간이 5분 초과 또는 여러 번의 재시도 해결: 모델 선택 휴리스틱을 적용하고 적절한 모델로 재시작

웨이브 간 컨텍스트 오버플로

증상: 작업이 너무 많은 관련 없는 데이터를 수신, 토큰 한도 초과, 느린 성능 감지: "too much information" 언급 또는 출력이 잘린 작업 응답 해결: 다음 웨이브에 필수 데이터만 컨텍스트로 전달, 진행 상황 추적에 TodoWrite 사용

순환 의존성으로 인한 교착 상태

증상: 작업이 무기한 대기, 실행 진행 없음 감지: 웨이브가 완료 없이 10분 이상 정체됨 해결: 한 작업이 플레이스홀더 데이터를 사용하도록 하여 순환 의존성 해결, 실행 순서 재조정

싱글톤 작업 충돌

증상: 여러 빌드/테스트 프로세스가 동시에 실행, 리소스 고갈 감지: 병렬 로그에 여러 "npm run" 또는 빌드 프로세스 발견 해결: 하나를 제외한 모두 취소, 나머지는 순차 실행을 위해 대기열에 추가

작업 예제

복잡한 SaaS 랜딩 페이지 구축

입력: "사용자 조사, 브랜딩, 배포를 포함한 SaaS 제품 랜딩 페이지 구축"

1단계 - 분해:

cd website/
npx tsx src/dag/demos/decompose-and-execute.ts simple

출력 분석:

Wave 1: [user-research] (haiku - 조사 작업)
Wave 2: [brand-identity, wireframe-structure] (둘 다 sonnet - 설계 작업)
Wave 3: [copywriting, component-development] (둘 다 sonnet)
Wave 4: [integration-testing] (haiku - 간단한 검증)
Wave 5: [deployment] (opus - 복잡한 오케스트레이션)

2단계 - 웨이브 1 실행 (순차):

Task({
  description: "Execute user-research",
  subagent_type: "design-archivist",
  model: "haiku", // 조사 작업
  prompt: "전환 패턴을 위해 20-30개의 SaaS 랜딩 페이지를 분석하세요..."
});

3단계 - 웨이브 2 실행 (병렬): 파일 충돌이 없으므로:

// 두 작업을 하나의 메시지로 실행
Task({
  description: "Execute brand-identity",
  subagent_type: "design-system-creator",
  model: "sonnet", // 설계 작업
  prompt: "조사 인사이트를 사용하여 브랜드 아이덴티티를 생성하세요: [필터링된 컨텍스트]"
});

Task({
  description: "Execute wireframe-structure",
  subagent_type: "interior-design-expert",
  model: "sonnet", // 설계 작업
  prompt: "사용자 조사 결과를 기반으로 와이어프레임 구조를 설계하세요"
});

전문가 포인트: 필터링된 컨텍스트를 사용하고 전체 연구 출력을 덤프하지 않습니다. 초보자는 모든 것을 전달합니다.

품질 관문

  • 모든 웨이브가 올바른 의존성 순서로 실행됨
  • 병렬 작업이 파일 충돌 없이 완료됨
  • 모든 Task 호출에 적절한 모델 선택(haiku/sonnet/opus)이 포함됨
  • 실패한 작업이 구체적인 오류 세부 정보와 함께 적절히 보고됨
  • 웨이브 간에 전달되는 컨텍스트가 필터링되고 관련성 있음
  • 싱글톤 작업(build/test/deploy)이 순차적으로 실행됨
  • 파일 잠금이 교착 상태 없이 획득/해제됨
  • 최종 결과물이 원래 작업 요구 사항과 일치함
  • 실행 시간이 합리적인 범위 내에 있음(무한 루프 없음)
  • 모든 임시 파일과 잠금이 정리됨

경계 (NOT-FOR BOUNDARIES)

DAG 실행을 사용하지 말아야 할 경우:

  • 간단한 단일 에이전트 작업 → 직접 스킬 호출 사용
  • 실시간 대화형 작업 → 채팅 기반 스킬 사용
  • 실행 중간에 사람의 입력이 필요한 작업 → 수동 오케스트레이션 사용
  • 파일 업로드/다운로드 → 파일 관리 스킬 사용
  • 하위 작업이 3개 미만인 작업 → 직접 실행이 더 효율적

다른 스킬로 위임:

  • 실행 없는 작업 계획 → task-decomposer 사용
  • 간단한 파일 작업 → file-manager 사용
  • 직접 코드 생성 → code-architect 사용
  • 단일 에이전트 대화 → 스킬별 에이전트 사용

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬