TIP/AI

바이브코딩 오케스트레이션(feat 슬랙 + 아사나MCP + 작은 크론봇)

고생쨩 2026. 5. 8. 15:25

기존엔 텔레그램에 자작 Claude 원격 프로그램(cc-telegram, 봇 채팅으로 Claude 세션을 원격 제어하던 사이드 프로젝트)을 사용하다 체계적인 관리를 위해 Asana 기반으로 방법을 바꾸고 한 달 정도 지남.
텔레그램 방식은 작업 단위 추적, 스레드별 히스토리 검색, 동시 진행 중인 작업 시각화, 리뷰 단계 분리가 어려웠음. 칸반보드로 옮기니 이 네 가지가 한 번에 해결돼서 현재 사용 중인 방법을 공유함.

다른 칸반보드 앱도 MCP나 CLI, API 등으로 관리가 가능하면 비슷한 구성으로 옮길 수 있을 듯.

우리 팀 같은 경우 디자인/FE 쪽은 AI 최적화가 아직 힘들어서 사람 손으로 진행함. 클로드의 디자인 생성 기능, 구글 Stitch, pencil.dev 등 여러 툴을 테스트해봤는데, 시각 일관성·디자인 토큰 매핑·세부 마감 측면에서 자동화 파이프라인에 그대로 끼우긴 부족함. 방법을 아예 바꿔야 자동화가 가능해질 것 같아서, 아직은 시기상조인 듯.


전체 흐름 한눈에 보기

[Human] 기획 todo
   ↓ (담당자=AI 지정)
[AI]    기획 진행중
   ↓
[Human] 기획 리뷰  ←→ [AI] 수정 루프
   ↓
[Human] 디자인 todo → [Human] 디자인 진행중 → [Human] 디자인 리뷰
   ↓
[Human] 개발 todo
   ↓ (담당자=AI 지정)
[AI]    개발 진행중
   ↓
[Human] 개발 리뷰  ←→ [AI] 수정 루프
   ↓
완료 / 보류

핵심은 두 가지임.

  1. AI 전용 Asana 계정을 담당자로 지정하면 크론봇이 그 티켓을 자동으로 픽업함. 담당자가 사람으로 돌아오는 순간 AI는 손을 뗌.
  2. 휴먼 리뷰 단계를 워크플로우 안에 명시적으로 박아둠. 자동화는 todo→진행중 구간만, 리뷰 게이트는 항상 사람이 닫음.

슬랙 설정

알림 용도가 전부라서 앱 만들고 필요한 권한 생성해서 토큰 받으면 끝.

  • 섹션 이동, 리뷰어 호출, 배포 완료 같은 이벤트만 슬랙 채널로 푸시
  • 모바일에서 즉시 확인용으로만 사용 (작성/수정은 항상 Asana에서)

Asana 설정

  • 칸반보드를 기본으로 사용
  • AI 계정과 사람 계정 분리 — 권한 분리, 감사 로그 분리, 책임 추적 모두를 위해 가장 중요한 항목
  • 사용자 지정 필드(Custom Field) 로 우선순위 필드 추가
  • 사용자 지정 필드로 기획 리뷰어 / 디자인 리뷰어 / 개발 리뷰어를 사용자 타입 필드로 지정

참고: Asana의 사용자 지정 필드는 Starter 이상 유료 플랜 기능임. 무료(Personal) 플랜이면 태그(Tab+T)로 우선순위를, 설명란 상단 컨벤션이나 멘션으로 리뷰어를 대체할 수 있음. 또한 Personal 플랜은 협업 인원수 제한이 있어 AI 전용 좌석을 추가하면 한도에 먼저 닿을 수 있음 — 플랜 비용을 미리 확인할 것.

섹션 설정

총 11개 섹션으로 나눴음. 필요에 따라 줄여도 됨. 핵심은 휴먼 리뷰 게이트진행 중 작업의 자동 루프.

1) 기획 todo [인간]

  • 사람이 설명을 최대한 자세히 작성
  • 모든 내용 기입 후 담당자를 AI로 지정
  • 크론봇이 내용 확인 후 보강 필요/사용자 결정 필요 항목을 댓글로 남기고 기획 리뷰어 멘션

2) 기획 진행중 [AI]

  • 크론봇이 기획 todo 중 본인 담당으로 지정된 티켓을 읽어 자동으로 진행중으로 이동
  • 리서치 — Claude·Codex·Gemini를 병렬로 호출해 각자 답을 받고 교차 검증
    • 역할은 느슨하게 분담: Claude는 추론·초안, Codex는 구현 가능성·코드 영향도, Gemini는 외부 자료 리서치·대안 검토
    • 세 결과 중 충돌이 있으면 댓글로 정리해 사람 판단을 요청
  • 계획 수립 — Claude가 작성하고 Codex·Gemini가 리뷰
  • 크론봇이 확정된 계획을 하위 태스크로 잘게 분해해 작성

3) 기획 리뷰 [인간]

  • AI 기획 완료 시 자동으로 이 섹션으로 이동 + 리뷰어 멘션
  • 사람이 내용을 검토하고 수정 필요 시 댓글에 상세히 적은 뒤 다시 AI 호출
  • 수정 완료 시 하위 태스크 생성자(=AI 계정)를 다시 멘션해 재작업 — 최종 합의까지 반복
  • 최종 통과 시 리뷰어가 디자인 todo 또는 개발 todo로 카드 이동

4) 디자인 todo [인간]

  • 사람 진행

5) 디자인 진행중 [인간]

  • 사람 진행

6) 디자인 리뷰 [인간]

  • 사람 진행
  • 완료 시 개발 todo로 카드 이동

7) 개발 todo [인간]

  • 기획 리뷰 또는 디자인 리뷰가 완료된 카드가 흘러옴
  • 크론봇이 내용 확인 후 보강/결정 필요 사항을 댓글로 남기고 개발 리뷰어 멘션

8) 개발 진행중 [AI]

  • 크론봇이 본인 담당 티켓을 자동 픽업
  • 구현 — Claude Code가 메인, Codex/Gemini는 코드 리뷰 보조
  • 작업 단위는 가능한 한 작게 — PR 단위로 분리해 하위 티켓 생성
  • 테스트 코드 작성과 통과 확인까지 AI가 수행
  • 진행 상황은 댓글로 자동 업데이트(커밋 해시, PR 링크 등)
  • 테스트/빌드 실패 또는 PR 충돌이 일정 횟수 이상 반복되면 자동으로 보류 또는 사람 호출 (재시도 한도와 호출 조건은 별도 규칙으로 정해둠)

9) 개발 리뷰 [인간]

  • AI 개발 완료 시 자동으로 이 섹션으로 이동 + 리뷰어 멘션
  • 사람이 코드를 검토하고 수정 필요 시 하위 태스크로 상세히 작성해 AI에게 배정
  • 수정 완료 시 하위 태스크 생성자를 다시 멘션 — 최종 합의까지 반복
  • 최종 통과 시 리뷰어가 카드를 완료로 이동

10) 완료 [인간/Auto]

  • 모든 리뷰가 끝나고 배포까지 완료된 카드들이 모이는 섹션
  • 주기적으로 아카이브해 보드 정리

11) 보류 [Any]

  • 우선순위가 밀리거나 외부 의존성으로 진행이 막힌 카드
  • 어느 단계에서든 이동 가능
  • 보류 사유는 댓글에 명시
  • 재개 시 원래 있던 섹션으로 되돌림

크론봇 설정

크론봇은 자체 개발한 백그라운드 스케줄러 프로그램임. Asana MCP를 직접 호출해 본인 담당 티켓을 폴링하고, 필요할 때 Claude/Codex/Gemini CLI를 spawn 하는 얇은 데몬.

티켓 관리 방식

  • 빠른 응답을 위해 Claude Code를 거치지 않고 크론봇 자체가 Asana MCP에 직접 붙어 티켓을 관리(읽기/쓰기 도구 모두 사용)
  • Asana MCP 엔드포인트: https://mcp.asana.com/v2/mcp (Streamable HTTP, v2)
  • 권한 분리를 위해 AI 전용 Asana 계정을 따로 발급받아 OAuth 연동
    • 토큰은 OS 키체인 또는 암호화된 secret store에 보관
    • AI 계정의 프로젝트 접근 범위를 최소한으로(필요한 보드만) 좁힘
  • 크론봇 프롬프트에 "본인 담당으로 지정된 태스크만 읽는다"를 명시
  • 태스크를 읽을 때 함께 가져오는 항목들:
    • 제목, 설명, 하위 태스크 전체
    • 댓글 스레드(리뷰어 피드백 반영용)
    • 첨부 파일(기획서, 레퍼런스 등)
    • 사용자 지정 필드(기획/디자인/개발 리뷰어 정보)
    • 현재 섹션(어느 단계인지 파악)
  • 한 번에 여러 티켓 처리 시 우선순위 필드 기준으로 정렬
  • 해야 할 일 / 하고 있는 일 큐는 JSON으로 관리(동시 실행 방지)
    • 키는 task_gid, 값은 {owner_pid, started_at, heartbeat_at}
    • lockfile + 원자적 rename으로 write
    • heartbeat이 일정 시간 끊긴 항목은 stale로 보고 재진입

크론 동작 방식

  • 크론봇은 watchdog 모드로 상시 동작
  • 티켓 확인 폴링 주기는 1분
    • Asana API/MCP rate limit 이슈가 있으니 변경분 위주 조회 + 429 응답 시 Retry-After/exponential backoff 처리 권장
  • 진행 중 티켓의 세션 활성 여부를 확인 — 죽었거나 미완료 종료라면 동일 티켓에 대해 재진입 루프 진행

프로젝트별 크론봇 설정

  • 프로젝트 디렉터리에서 크론봇을 실행하고 Asana 프로젝트명을 입력
  • 해당 프로젝트의 .cronbot/ 폴더에 설정이 저장됨

처음에는 크론봇 안에 실행 하네스(에이전트, 스킬 등등)까지 묶어 두었다가, 프로젝트별로 분리하는 게 낫다고 판단해 떼어냄. 성격이 다른 여러 프로젝트에 공용 하네스를 강제하면 결국 어딘가에서 깨짐. 유명한 오케스트레이션 툴들도 아직 이 부분을 깔끔하게 해결한 것은 못 봤음.


한 달 써본 장점

  • 사람이 일하던 칸반 흐름을 그대로 유지하면서 전체 프로젝트가 굴러감 — 새 사람이 합류해도 보드만 보면 됨
  • 작업 히스토리가 댓글·하위 태스크·필드 변경 로그로 체계적으로 남아 사후 분석이 쉬움
  • 세션이 중단되거나 미완료 종료돼도 크론봇 watchdog이 다시 집어 듦 — 별도의 루프 보조 플러그인(예: 자체 ralph-loop류 무한 루프 도우미) 없이도 복구가 됨

한 달 써본 단점 / 한계

  • 모바일 Asana 앱은 티켓 관리(특히 사용자 지정 필드 편집, 하위 태스크 정렬)가 다소 아쉬움 — 댓글 확인은 무난
  • 기획 작성 시 그냥 한글로 코딩하는 느낌이 남
  • 디자인/FE 단계는 여전히 사람 의존 — 전체 사이클의 병목이 이쪽으로 이동함
  • 직접 코딩할때보다 확실히 AI 피로감이 더 많이 올라감

위 내용을 참고해 설정하면 좀 더 체계적인 오케스트레이션 관리가 가능함. 크론봇은 좀 더 다듬어서 따로 공유 드릴 예정.