Claude Code의 에이전트 기반 워크플로우를 활용하여 코드 생성, 리팩터링, 디버깅을 자동화하고, CI/CD에 통합하는 방법을 다룹니다.
Claude Code는 터미널에서 동작하는 AI 개발 에이전트입니다. IDE에 통합된 도구와 달리, 터미널 환경에서 독립적으로 프로젝트를 탐색하고 코드를 수정합니다. 이 특성은 몇 가지 고유한 장점을 제공합니다.
Claude Code의 핵심 장점:
1. 프로젝트 전체 맥락 이해
- 파일 시스템을 직접 탐색하여 코드 구조 파악
- 수천 개의 파일에 걸친 맥락 수집
- 의존성 관계와 아키텍처 패턴 분석
2. 자율적 작업 수행
- 여러 파일에 걸친 변경을 자율적으로 수행
- 빌드, 테스트 실행 후 에러 자동 수정
- Git 명령어를 활용한 버전 관리
3. CLAUDE.md 기반 컨텍스트
- 프로젝트별 지침을 파일로 관리
- 팀 컨벤션, 아키텍처 결정을 지속적으로 참조
- 새 팀원에 대한 온보딩 문서 역할
4. 확장성
- MCP 서버를 통한 외부 도구 통합
- 커스텀 슬래시 명령어
- 훅(Hooks)을 통한 자동화CLAUDE.md는 Claude Code가 프로젝트를 이해하는 데 사용하는 컨텍스트 파일입니다. 잘 설계된 CLAUDE.md는 Claude Code의 생산성을 크게 높입니다.
# 프로젝트명 - CLAUDE.md
## 프로젝트 개요
프로젝트의 목적과 핵심 기능을 간결하게 설명
## 기술 스택
사용 중인 프레임워크, 라이브러리, 도구 목록
## 프로젝트 구조
디렉토리 구조와 각 디렉토리의 역할
## 개발 명령어
빌드, 테스트, 린트, 배포 명령어
## 코딩 컨벤션
팀의 코딩 규칙과 패턴
## 아키텍처 결정
주요 아키텍처 결정과 그 이유
## 주의 사항
알려진 제약 조건, 주의해야 할 패턴# OrderService - CLAUDE.md
## 프로젝트 개요
주문 관리 마이크로서비스. 주문 생성, 조회, 취소, 결제 연동을 담당.
## 기술 스택
- Runtime: Node.js 20 + TypeScript 5.4
- Framework: NestJS 10
- Database: PostgreSQL 16 + Prisma ORM
- Message Queue: RabbitMQ
- Cache: Redis
- Test: Vitest + Supertest
## 개발 명령어
- pnpm dev: 개발 서버 실행
- pnpm build: 프로덕션 빌드
- pnpm test: 전체 테스트 실행
- pnpm test:e2e: E2E 테스트 실행
- pnpm prisma:migrate: DB 마이그레이션
- pnpm lint: ESLint + Prettier 검사
## 코딩 컨벤션
- 함수 선언: function 키워드 사용
- 에러 처리: AppError 클래스 상속, 에러 코드 반드시 포함
- 네이밍: camelCase (변수/함수), PascalCase (클래스/타입)
- 파일: kebab-case.ts
- 모든 공개 함수에 JSDoc 필수
- 비즈니스 로직은 Service 계층에만 존재
- Controller는 요청 검증과 응답 변환만 담당
## 아키텍처
- Clean Architecture: Controller -> Service -> Repository
- CQRS: 조회와 명령을 분리 (QueryService / CommandService)
- Event-driven: 주문 상태 변경 시 이벤트 발행 (RabbitMQ)Claude Code로 새로운 기능을 구현할 때의 효과적인 지시 방법을 다룹니다.
좋은 지시의 예:
"주문 취소 API를 추가해 줘.
- PATCH /api/orders/:id/cancel
- 취소 가능 상태: PENDING, CONFIRMED
- 이미 취소/완료된 주문은 409 에러
- 취소 시 order.cancelled 이벤트 발행
- 기존 createOrder의 패턴을 따라 구현해 줘"
이 지시가 효과적인 이유:
1. 엔드포인트 명세가 구체적
2. 비즈니스 규칙이 명확
3. 에러 시나리오가 정의됨
4. 참조할 기존 패턴을 제시나쁜 지시의 예:
"주문 취소 기능 만들어 줘"
이 지시가 비효과적인 이유:
1. API 명세가 없음
2. 어떤 상태에서 취소 가능한지 불분명
3. 에러 처리 기준이 없음
4. 기존 패턴 참조가 없음기존 코드의 리팩터링을 지시할 때는 목표와 제약 조건을 명확히 합니다.
리팩터링 지시 템플릿:
"다음 리팩터링을 수행해 줘:
대상: [파일 또는 모듈]
목표: [달성하고자 하는 것]
제약:
- 공개 API는 변경하지 않을 것
- 기존 테스트가 모두 통과할 것
- [추가 제약 조건]
참고:
- [관련 파일이나 패턴]"실제 리팩터링 요청의 예시입니다.
"src/services/order-service.ts 파일을 리팩터링해 줘.
대상: OrderService 클래스 (현재 600줄)
목표: CQRS 패턴에 따라 조회와 명령을 분리
결과물:
- src/services/order-query.service.ts (조회 로직)
- src/services/order-command.service.ts (명령 로직)
제약:
- Controller의 기존 메서드 시그니처는 유지
- 기존 테스트가 모두 통과해야 함
- OrderModule의 DI 설정도 함께 수정"Claude Code는 에러 메시지와 로그를 분석하여 원인을 추적하고 수정할 수 있습니다.
디버깅 지시 예시:
"다음 에러가 발생합니다. 원인을 찾아 수정해 줘.
에러 메시지:
TypeError: Cannot read property 'status' of undefined
at OrderService.cancelOrder (order-service.ts:142)
at OrderController.cancel (order-controller.ts:58)
재현 조건:
- POST /api/orders/invalid-id/cancel 호출 시 발생
- 존재하지 않는 주문 ID로 요청할 때
기대 동작:
- 404 Not Found 에러를 반환해야 합니다"Claude Code의 훅 기능을 활용하면 특정 이벤트 발생 시 자동으로 작업을 수행할 수 있습니다.
훅의 동작 시점:
PreToolUse:
- Claude Code가 도구를 사용하기 전에 실행
- 파일 수정 전 백업, 위험한 명령어 차단
PostToolUse:
- Claude Code가 도구를 사용한 후에 실행
- 파일 수정 후 포맷팅, 린트 자동 실행
Notification:
- 권한 요청, 작업 완료 등의 알림
- 슬랙 알림, 로깅 등과 연결 가능{
"hooks": {
"PostToolUse": [
{
"matcher": "write|edit",
"command": "npx prettier --write $CLAUDE_FILE_PATH"
}
],
"PreToolUse": [
{
"matcher": "bash",
"command": "echo 'Command: $CLAUDE_TOOL_INPUT' >> /tmp/claude-audit.log"
}
]
}
}이 설정은 Claude Code가 파일을 수정할 때마다 Prettier를 자동으로 실행하고, 모든 Bash 명령어를 감사 로그에 기록합니다.
Claude Code는 CI/CD 파이프라인에서 헤드리스 모드로 실행할 수 있습니다. 인터랙티브한 사용자 입력 없이 자동으로 작업을 수행합니다.
name: Claude Code Automation
on:
issues:
types: [labeled]
permissions:
contents: write
pull-requests: write
issues: write
jobs:
run-claude:
if: github.event.label.name == 'claude-code'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Claude Code
run: npm install -g @anthropic-ai/claude-code
- name: Run Claude Code
env:
ANTHROPIC_API_KEY: $ANTHROPIC_KEY_VALUE
run: |
ISSUE_BODY=$(gh issue view $ISSUE_NUMBER --json body -q .body)
claude -p "$ISSUE_BODY" --allowedTools "Edit,Write,Bash" --yes
- name: Create PR
env:
GITHUB_TOKEN: $GITHUB_TOKEN_VALUE
run: |
BRANCH="claude/issue-$ISSUE_NUMBER"
git checkout -b $BRANCH
git add -A
git diff --staged --quiet && exit 0
git commit -m "feat: implement issue #$ISSUE_NUMBER"
git push origin $BRANCH
gh pr create \
--title "feat: implement issue #$ISSUE_NUMBER" \
--body "Automated implementation by Claude Code" \
--base main이 워크플로우는 이슈에 claude-code 라벨이 붙으면 자동으로 Claude Code를 실행하여 이슈의 내용을 구현하고 PR을 생성합니다.
CI/CD에서 Claude Code를 실행할 때는 반드시 allowedTools 옵션으로 사용 가능한 도구를 제한하세요. 무제한 도구 접근은 보안 위험을 초래할 수 있습니다. 특히 네트워크 접근, 시크릿 접근이 가능한 도구는 신중하게 허용해야 합니다.
복잡한 작업은 여러 서브에이전트로 분할하여 병렬로 처리할 수 있습니다.
서브에이전트 활용 시나리오:
주 에이전트: 전체 작업 조율
서브에이전트 1: 백엔드 API 구현
서브에이전트 2: 프론트엔드 컴포넌트 구현
서브에이전트 3: 테스트 작성
각 서브에이전트는 독립적으로 작업하며,
주 에이전트가 결과를 통합합니다.Claude Code는 MCP(Model Context Protocol) 서버를 통해 외부 도구와 통합할 수 있습니다. 데이터베이스, API, 모니터링 시스템 등의 정보를 직접 조회하고 활용합니다.
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["@anthropic-ai/mcp-server-postgres"],
"env": {
"DATABASE_URL": "postgresql://localhost:5432/mydb"
}
},
"github": {
"command": "npx",
"args": ["@anthropic-ai/mcp-server-github"],
"env": {
"GITHUB_TOKEN": "ghp_..."
}
},
"sentry": {
"command": "npx",
"args": ["mcp-server-sentry"],
"env": {
"SENTRY_TOKEN": "..."
}
}
}
}이 설정으로 Claude Code가 다음과 같은 작업을 수행할 수 있습니다.
MCP 연동 활용 예시:
데이터베이스:
"users 테이블의 스키마를 확인하고,
활성 사용자 수를 조회해 줘"
GitHub:
"최근 열린 이슈 중 버그 라벨이 붙은 것을
우선순위별로 정리해 줘"
Sentry:
"최근 24시간 동안 가장 많이 발생한 에러를
분석하고 수정 방안을 제안해 줘"Claude Code를 일일 개발 루틴에 통합하는 예시입니다.
일일 개발 루틴:
아침:
1. "어제 남긴 TODO를 확인하고 정리해 줘"
2. "최근 이슈 중 내게 할당된 것을 정리해 줘"
개발 중:
3. "이 기능을 구현해 줘" (구체적 명세 제공)
4. "테스트를 작성하고 실행해 줘"
5. "빌드가 통과하는지 확인해 줘"
리뷰 대응:
6. "이 리뷰 코멘트를 반영해 줘" (PR 링크 제공)
7. "수정 사항이 기존 테스트를 깨지 않는지 확인해 줘"
마무리:
8. "오늘 변경 사항을 커밋해 줘"
9. "PR을 생성해 줘"Claude Code를 팀 워크플로우에 통합하는 패턴을 정리합니다.
팀 워크플로우 통합:
코드 표준 유지:
- CLAUDE.md에 팀 컨벤션 기록
- 새 팀원이 작성한 코드를 자동으로 컨벤션에 맞게 조정
이슈 기반 개발:
- GitHub 이슈에 명세 작성
- claude-code 라벨로 자동 구현 트리거
- 생성된 PR을 팀원이 리뷰
지식 관리:
- 아키텍처 결정을 CLAUDE.md에 기록
- 새 팀원의 온보딩 시 Claude Code가 코드 설명이 장에서는 Claude Code를 활용한 개발 자동화를 다루었습니다. CLAUDE.md 설계, 코드 생성/리팩터링/디버깅 패턴, 훅을 통한 자동화, CI/CD 통합, MCP 연동까지 Claude Code의 전방위적 활용법을 다루었습니다.
핵심 내용을 정리합니다.
다음 장에서는 이 시리즈에서 다룬 모든 도구를 하나의 CI/CD 파이프라인으로 통합합니다.
이 글이 도움이 되셨나요?
코드 리뷰, 테스트 생성, 문서화, PR 분석을 하나의 CI/CD 파이프라인으로 통합하고, 품질 게이트와 비용 관리 전략을 수립합니다.
GitHub Copilot의 인라인 자동 완성, Copilot Chat, Agent Mode를 실전에서 효과적으로 활용하는 전략과 팀 단위 도입 방법을 다룹니다.
전체 시리즈에서 다룬 AI 코드 리뷰, 테스트 생성, 문서화, PR 분석을 하나의 통합 시스템으로 구축하는 실전 프로젝트를 진행합니다.