AI를 비서 한 명이 아니라 개발팀 5명처럼 부리는 법: 실전 워크플로우 & 자동화 가이드
아직도 AI를 단순히 "이거 어떻게 해?" 하고 물어보는 질문 자판기로 쓰고 있는가? 고수들은 AI를 5명짜리 개발팀처럼 부린다. 이 글에서는 Claude Code 창시자의 실제 워크플로우부터, 레거시 코드 리팩토링, 반복 작업 자동화, 슬랙 연동 협업, 그리고 터미널 기반 바이브 코딩까지 — 생산성을 200% 이상 끌어올리는 실전 기법을 총정리한다.
1. 화면 5분할, AI 5명과 동시에 일하기
Claude Code의 창시자 보리스 체르니(Boris Cherny) 는 AI를 비서 한 명이 아니라 소규모 개발팀처럼 운영한다. 그의 끝판왕 워크플로우를 해부해보자.
1인 5역: 터미널 분할 병렬 실행
보리스는 터미널(Tmux/iTerm2) 화면을 5개로 분할하여 각 창에 서로 다른 작업을 동시에 지시한다.
┌──────────────┬──────────────┬──────────────┐
│ 창 1 │ 창 2 │ 창 3 │
│ 테스트 코드 │ 리팩토링 │ 버그 수정 │
│ 작성 중... │ 진행 중... │ 분석 중... │
├──────────────┴──────────────┤──────────────┤
│ 창 4 │ 창 5 │
│ API 문서 생성 중... │ 코드 리뷰 │
│ │ 진행 중... │
└─────────────────────────────┴──────────────┘
5개의 AI가 각자 독립된 컨텍스트에서 동시에 작업한다. 혼자서 소규모 개발팀을 거느리는 것과 같은 효과다. 순차적으로 하나씩 시켰다면 5시간 걸릴 일이 1시간 만에 끝난다.
가장 똑똑한 모델을 고집하라
비용이나 속도 때문에 가벼운 모델(Haiku 등)을 쓰고 싶은 유혹이 있다. 하지만 고수들은 가장 똑똑한 모델(Opus)을 고집한다. 이유는 간단하다.
빠르지만 멍청한 AI가 친 사고를 사람이 수습하는 시간이, 느리지만 똑똑한 AI가 처음부터 제대로 하는 시간보다 훨씬 비싸다.
똑똑한 모델은 도구를 잘 다루고, 에지 케이스를 스스로 고려하며, 사람의 개입을 최소화한다. 5개 창을 동시에 돌릴 때 한 창에서 사고가 나면 전체 흐름이 꼬이므로, 각 창의 신뢰도가 곧 전체 생산성을 결정한다.
자가 검증 루프 (Self-Correction)
AI에게 코드를 짜게 하고 그냥 끝내면? 60%의 확률로 어딘가 깨져 있다. 보리스는 AI에게 엄격한 규칙을 준다.
코드를 수정한 뒤 반드시:
1. npm run build → 빌드 성공 확인
2. npm run test → 모든 테스트 통과 확인
3. 실패 시 → 원인 분석 후 재수정
4. 성공할 때까지 반복
AI가 스스로 채점하고, 틀리면 다시 고치는 피드백 루프다. 이 루프 하나만 넣어도 결과물 품질이 2~3배 올라간다. CLAUDE.md에 이 규칙을 적어두면 매번 말하지 않아도 자동으로 적용된다.
2. 5만 줄 레거시 코드, 안전하게 리팩토링하기
설계도도 없고 테스트 코드도 없는 5만 줄짜리 레거시 코드를 건드리는 것은 폭탄 해체와 같다. 잘못 자르면 전체 서비스가 터진다. AI에게 안전하게 이 폭탄을 해체시키는 3단계 전략이다.
1단계: 특성 분석 테스트 (Characterization Tests) 먼저 만들기
AI에게 다짜고짜 "이 코드 예쁘게 고쳐줘"라고 하면? 겉보기엔 깔끔하지만 작동하지 않는 코드를 만들어낸다. 기존 코드의 버그마저 "수정"해버리기 때문이다.
먼저 해야 할 일은 현재 코드가 있는 그대로 어떻게 작동하는지 사진을 찍어두는 것이다.
Prompt: "이 calculateDiscount 함수의 현재 동작을 그대로 기록하는
특성 분석 테스트(Characterization Tests)를 작성해.
버그처럼 보이더라도 현재 동작을 그대로 기대값으로 사용해."
이 테스트가 나중에 코드를 고치다 망가뜨렸을 때 즉시 알려주는 안전망이 된다.
2단계: CLAUDE.md에 '절대 건드리면 안 되는 선' 긋기
프로젝트의 CLAUDE.md에 하드 룰(Hard Rules) 을 명시한다.
## ⛔ 절대 수정 금지 파일
- database/config.ts (DB 연결 설정)
- auth/middleware.ts (인증 모듈)
- payment/gateway.ts (결제 게이트웨이)
## 🔒 수정 시 반드시 물어볼 것
- api/routes/\*.ts (API 라우트 변경 시)
- migrations/ (DB 마이그레이션 추가 시)
AI는 CLAUDE.md를 세션 시작 시 가장 먼저 읽으므로, 이 규칙을 절대로 어기지 않는다. 폭탄 해체 시 "이 선만은 자르지 마"라고 빨간 테이프를 붙여두는 것과 같다.
3단계: 점진적 수정 + 즉시 검증
한 번에 다 고치라고 하면 안 된다. 아주 작은 단위로 쪼개서 지시한다.
1회차: "할인 계산 로직만 별도 함수로 분리해"
→ 테스트 실행 → 통과 → Git Commit ✅
2회차: "분리한 함수에 타입 정의를 추가해"
→ 테스트 실행 → 통과 → Git Commit ✅
3회차: "매직 넘버를 상수로 교체해"
→ 테스트 실행 → 실패 ❌ → 원인 분석 → 재수정 → 통과 → Commit ✅
하나를 고칠 때마다 테스트하고, 성공하면 커밋. 이 루프를 반복하면 5만 줄의 레거시도 서비스 장애 없이 점진적으로 개선할 수 있다.
3. 반복 작업 자동화: 커스텀 명령어 & Hooks
매일 수십 번씩 같은 프롬프트를 타이핑하고 있다면? 그건 시간 낭비다. 스마트홈 매크로처럼, 자주 쓰는 지시를 자동화하자.
나만의 슬래시 명령어 (Custom Slash Commands)
매번 이렇게 치는가?
"이 코드의 보안 취약점을 확인하고, 성능 이슈가 없는지 분석하고, 한국어로 리뷰 코멘트를 작성해줘."
이 긴 지시를 .claude/commands/review.md 파일에 한 번만 저장해두면:
# /review 명령어
아래 파일을 리뷰하세요.
## 체크리스트
1. 보안 취약점 (SQL Injection, XSS, CSRF 등)
2. 성능 병목 (N+1 쿼리, 불필요한 루프 등)
3. 에러 핸들링 누락 여부
4. 타입 안정성
## 출력 형식
- 한국어로 작성
- 심각도(Critical/Warning/Info)를 표시
- 수정 코드 예시 포함
앞으로는 터미널에 /review라고 4글자만 치면 된다. 팀 전체가 같은 기준으로 코드 리뷰를 할 수 있다.
Hooks: 이벤트 기반 자동 실행
Hooks는 Claude의 특정 동작에 자동으로 반응하는 트리거다. settings.json에 설정한다.
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"command": "npx prettier --write $FILEPATH"
}
]
}
],
"PostSession": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Glass.aiff"
}
]
}
}
| Hook | 트리거 시점 | 예시 |
|---|---|---|
| PostToolUse (Write) | 파일 수정 직후 | 자동 코드 포매팅 (Prettier) |
| PostToolUse (Bash) | 명령어 실행 직후 | 린트(ESLint) 검사 |
| PostSession | 세션 종료 시 | 완료 알림음 재생 🔔 |
| PreToolUse (Bash) | 명령어 실행 직전 | 위험 명령어 차단 (rm -rf 등) |
Claude가 파일을 수정할 때마다 자동으로 Prettier가 돌아가고, 작업이 끝나면 "띠링~" 알림음이 울린다. 사소하지만 개발 경험이 완전히 달라진다.
4. 슬랙에 입사한 AI 신입사원
에디터도 터미널도 필요 없다. 팀원들이 이미 소통하고 있는 슬랙(Slack) 안에서 바로 AI에게 일을 시킬 수 있다.
문맥을 읽는 AI
슬랙에 버그 리포트가 올라왔다고 하자.
#bugs 채널
────────────────────────────
김개발: 프로덕션에서 로그인이 안 되는 이슈 발생
에러 로그: "TypeError: Cannot read property 'id' of null"
재현 방법: OAuth 로그인 시 가끔 발생
└─ 이매니저: @Claude 이 버그 확인해서 고쳐줘
@Claude를 멘션하면 AI는 스레드의 전체 대화 맥락을 읽고 문제를 스스로 파악한다. 별도로 에러 로그를 복사해서 붙여넣을 필요가 없다.
웹 세션 연동 → 자동 PR 생성
슬랙에서 지시를 내리면 백그라운드에서 벌어지는 일:
슬랙에서 @Claude 멘션
↓
백그라운드에서 claude.ai/code 세션 열림
↓
코드 분석 → 원인 파악 → 수정
↓
슬랙 스레드에 진행 상황 실시간 보고
↓
[PR 생성] 버튼 → GitHub Pull Request 자동 생성
팀원 모두가 슬랙에서 해결 과정을 투명하게 지켜볼 수 있다. PM은 진행 상황을 알기 위해 개발자를 찾아다닐 필요가 없고, 개발자는 슬랙 버튼 하나로 수정 코드를 PR로 올릴 수 있다.
5. 에디터(Cursor)를 넘어 터미널로 가야 하는 이유
Cursor 같은 에디터 기반 AI도 편리하다. 하지만 고수들이 검은 터미널 화면(Claude Code)으로 넘어가는 데는 결정적인 이유가 있다.
초대형 파일 처리 능력
에디터 기반 AI는 수만 줄짜리 파일을 수정할 때 텍스트를 갈아끼우다 멈추거나 에러를 내는 경우가 잦다. 에디터의 diff 적용 메커니즘이 대용량 파일에 최적화되어 있지 않기 때문이다.
| 항목 | 에디터 기반 (Cursor 등) | 터미널 기반 (Claude Code) |
|---|---|---|
| 대용량 파일 | ~5,000줄에서 불안정 | 18,000줄 이상도 안정적 |
| 수정 방식 | 텍스트 diff 적용 (깨지기 쉬움) | 직접 파일 쓰기 (안정적) |
| 멈춤 현상 | 자주 발생 | 거의 없음 |
레거시 코드나 자동 생성된 대형 파일을 다룰 때, 이 차이는 치명적이다.
비동기 작업의 꽃: 큐잉(Queuing) 시스템
Cursor에서는 AI가 코드를 짜는 동안 가만히 기다려야 한다. 하지만 Claude Code에서는 다르다.
사용자: "이 함수 리팩토링해줘"
AI: (작업 시작...)
사용자: "아, 주석도 영어로 추가해줘" ← 큐에 쌓임
사용자: "그리고 보안 로직도 넣어줘" ← 큐에 쌓임
사용자: "에러 핸들링도 빠졌네, 추가해" ← 큐에 쌓임
AI: (리팩토링 완료 → 주석 추가 → 보안 로직 → 에러 핸들링 순서대로 처리)
생각나는 대로 지시사항을 쌓아두면, AI가 순차적으로 처리한다. 지시를 던져놓고 커피를 마시거나 다른 메신저를 보다가 돌아오면 모든 일이 끝나 있다. 이것이 진정한 비동기 업무다.
Cursor vs Claude Code 선택 기준
| 상황 | 추천 도구 |
|---|---|
| 빠른 프로토타이핑, 소규모 파일 수정 | Cursor (시각적, 직관적) |
| 대규모 리팩토링, 레거시 코드 | Claude Code (안정적, 강력) |
| 병렬 작업 (5분할 등) | Claude Code (터미널 분할) |
| 비동기 작업, 큐잉 필요 | Claude Code (큐잉 지원) |
| AI 처음 사용, 학습 단계 | Cursor (낮은 진입 장벽) |
반드시 하나만 써야 하는 것은 아니다. 상황에 따라 도구를 바꿔 쓰는 것이 진짜 고수다.
📝 요약 (치트시트)
| 전략 | 핵심 포인트 |
|---|---|
| 5분할 병렬 코딩 | 터미널 분할로 AI 5명 동시 운영 + Opus 고집 + 자가 검증 루프 |
| 레거시 리팩토링 | 특성 분석 테스트 → 하드 룰(CLAUDE.md) → 작은 단위 수정 + 커밋 반복 |
| 자동화 | /review 커스텀 명령어 + PostToolUse Hook으로 포매팅·린트 자동화 |
| 슬랙 연동 | @Claude 멘션으로 버그 분석 → 자동 PR 생성. 팀 전체 투명 협업 |
| 터미널 코딩 | 18,000줄+ 안정 처리 + 큐잉 시스템으로 진정한 비동기 작업 |
한 줄 요약: AI를 질문 자판기로 쓰지 마라. 화면을 쪼개고, 규칙을 정하고, 자동화를 걸고, 슬랙에 입사시켜라. 그러면 AI는 비서가 아니라 팀이 된다.