Ch9. Agentic 개발 체계
Claude Code 중심 CLAUDE.md 설계, 멀티세션, 서브에이전트, Hooks 자동화
엔터프라이즈 CLAUDE.md 설계
모노레포에서는 계층적 CLAUDE.md 구조를 사용합니다. Claude Code는 현재 작업 디렉토리에서 루트까지 모든 CLAUDE.md를 병합하여 컨텍스트로 사용합니다.
<!-- CLAUDE.md (루트) -->
# 프로젝트 개요
Turborepo 모노레포. Yarn 4 + Next.js 16 + Vercel 배포.
## 공통 명령어
- `yarn dev` — 전체 개발 서버
- `turbo run build --filter=앱명` — 특정 앱 빌드
- `turbo run test` — 전체 테스트
## 아키텍처
apps/ → 배포 단위, packages/ → 재사용 단위.
의존성 방향: types → utils/db(Prisma) → ui → apps.
API는 각 Next.js 앱의 API Routes + Server Actions로 처리.
## 주요 패키지
- @acme/db — Prisma 클라이언트 (스키마: packages/db/prisma/)
- @acme/ui — 공유 UI 컴포넌트
- @acme/utils — 유틸리티 함수
## Git 규칙
- 커밋 메시지: conventional commits (feat/fix/chore)
- 커밋/푸시 금지: 명시적 요청 전까지 실행하지 않는다<!-- apps/web/CLAUDE.md -->
# apps/web (메인 서비스)
Next.js App Router. 포트 3000.
## 라우팅
- /(public) — 공개 페이지
- /(auth) — 인증 필요 (middleware.ts에서 처리)
- /api/* — API Routes (외부 웹훅, 서드파티 연동)
## 데이터 접근
- DB: import { db } from '@acme/db' (Prisma)
- 뮤테이션: Server Actions 우선, 외부 연동만 API Routes
- 스키마 변경: packages/db/prisma/schema.prisma 수정 후 prisma migrate dev
## 환경 변수
- DATABASE_URL: Neon PostgreSQL (서버리스)
- NEXT_PUBLIC_APP_URL: 앱 URL모노레포 멀티세션 전략
Git worktree를 활용하면 여러 Claude Code 세션이 동시에 다른 앱을 작업할 수 있습니다:
# worktree 생성
git worktree add ../monorepo-web -b feat/web-redesign
git worktree add ../monorepo-admin -b feat/admin-rbac
# 세션 1: web 작업
cd ../monorepo-web && claude
# 세션 2: admin 작업
cd ../monorepo-admin && claude
# 세션 3: 메인 레포에서 패키지 작업
cd ../monorepo && claude| 세션 | 작업 디렉토리 | 담당 |
|---|---|---|
| 세션 1 | monorepo-web/ | apps/web 피처 개발 |
| 세션 2 | monorepo-admin/ | apps/admin 피처 개발 |
| 세션 3 | monorepo/ | packages/* 공통 코드, 리뷰 |
서브에이전트 역할 분리
Claude Code의 Task 도구로 서브에이전트를 역할별로 분리합니다:
| 에이전트 | 역할 | 도구 권한 |
|---|---|---|
| Explore | 코드베이스 탐색, 구조 파악 | Read, Grep, Glob |
| Plan | 아키텍처 설계, 접근법 결정 | Read, Grep, Glob |
| Bash | 빌드, 테스트, Git 작업 | Bash |
| General | 복합 작업, 멀티스텝 구현 | 전체 |
<!-- CLAUDE.md에 서브에이전트 가이드라인 추가 -->
## 에이전트 활용 가이드
- 코드 탐색: Task(subagent_type=Explore) 사용
- 구현 전 설계: Task(subagent_type=Plan) 사용
- 빌드/테스트: Task(subagent_type=Bash) 사용
- 3개 이상 파일 수정: TodoWrite로 진행 상황 추적Hooks 기반 자동화 레시피
// .claude/settings.json
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"command": "prettier --write $CLAUDE_FILE_PATH 2>/dev/null || true"
}
],
"PreToolUse": [
{
"matcher": "Bash",
"command": "echo '$CLAUDE_TOOL_INPUT' | jq -r '.command' | grep -qE '(rm -rf /|DROP TABLE|format c:)' && echo 'BLOCK: 위험한 명령 차단' && exit 1 || exit 0"
}
]
}
}| Hook | 타이밍 | 용도 |
|---|---|---|
PreToolUse | 도구 실행 전 | 위험 명령 차단, 파일 접근 제한 |
PostToolUse | 도구 실행 후 | 자동 포맷팅, 린트 실행 |
Notification | 장시간 작업 완료 시 | 슬랙/디스코드 알림 |
Git worktree 실전 워크플로우
# 1. 피처 브랜치별 worktree 생성
git worktree add ../proj-feat-auth -b feat/auth
git worktree add ../proj-feat-payment -b feat/payment
# 2. 각 worktree에서 Claude Code 세션 시작
# (tmux/screen으로 세션 관리)
tmux new-session -s auth -c ../proj-feat-auth "claude"
tmux new-session -s payment -c ../proj-feat-payment "claude"
# 3. 완료 후 worktree 정리
git worktree remove ../proj-feat-auth
git worktree remove ../proj-feat-payment연관 핸드북
Claude Code의 기본 사용법·멀티세션·Hooks 상세 내용은 Claude Code 고급 활용에서 더 깊게 다룹니다.
2025~2026 Claude Code 변경
Agent SDK
Claude Code 2.x에서 Agent SDK가 도입되어 프로그래밍 방식으로 에이전트를 생성하고 관리할 수 있습니다. CI/CD 파이프라인에서 코드 리뷰, 마이그레이션, 리팩토링을 자동화하는 데 활용합니다.
Worktree 기반 에이전트 격리
서브에이전트를 isolation: "worktree" 모드로 실행하면 별도의 git worktree에서 작업하므로, 메인 브랜치를 오염시키지 않습니다. 독립적인 피처 개발이 안전해집니다.
MCP 서버 통합
Model Context Protocol(MCP) 서버를 통해 외부 도구(DB, API, 검색 등)를 에이전트에 연결할 수 있습니다. .claude/settings.json에서 MCP 서버를 선언하면 에이전트가 자동으로 해당 도구를 활용합니다.
v2.1.76부터 MCP Elicitation이 지원되어, MCP 서버가 작업 도중 사용자에게 구조화된 입력(DB 커넥션 정보, 환경 선택 등)을 요청할 수 있습니다.
1M 컨텍스트 기본화
Opus 4.6의 1M 컨텍스트 윈도우가 Max, Team, Enterprise 플랜에서 기본 활성화됩니다(v2.1.75). 대규모 모노레포 분석이나 장기 세션에서 컨텍스트 부족 문제가 크게 줄어듭니다.
Hooks 강화
| Hook | 추가된 기능 |
|---|---|
PreToolUse | 도구별 세분화 매칭, 환경 변수 전달 |
PostToolUse | 파일 경로 변수 ($CLAUDE_FILE_PATH) |
PostCompact | compaction 완료 후 로깅/알림 자동화 (v2.1.76) |
Elicitation | MCP 서버의 구조화된 입력 요청 (v2.1.76) |
Notification | 장시간 작업 완료 알림 (Slack, Discord) |
Stop | 에이전트 종료 시 자동 정리 |
StopFailure | API 에러 시 자동 복구 로직 실행 (v2.1.79) |
Claude Code v2.1.77-81 엔터프라이즈 기능 (2026-03)
--bare 플래그: CI 파이프라인 결정론적 실행
v2.1.78에서 도입된 --bare 플래그는 Hooks, LSP, 플러그인을 모두 스킵하고 최소 환경에서 에이전트를 실행합니다. CI/CD 파이프라인에서 환경 차이로 인한 비결정적 동작을 제거할 때 사용합니다.
# CI 파이프라인에서 결정론적 실행
claude --bare -p "이 PR의 코드를 리뷰해줘" --output-format json
# GitHub Actions 예시
- name: AI 코드 리뷰
run: |
claude --bare -p "$(cat .claude/prompts/review.md)" \
--output-format json > review-result.json--bare vs 일반 모드
일반 모드는 Hooks·스킬·MCP 서버가 모두 로드되어 풍부한 컨텍스트를 제공합니다.
--bare는 이를 모두 제거해 순수 LLM 추론만 사용하므로, CI에서 재현 가능한 결과를 보장합니다.
--channels 연구 프리뷰: 원격 도구 승인
v2.1.80에서 추가된 --channels 플래그는 원격 MCP 도구의 승인 흐름을 제어합니다. Team/Enterprise 플랜에서는 기본 비활성화되어, 관리자가 허용한 채널만 사용 가능합니다.
rate_limits 상태표시줄
v2.1.77부터 상태표시줄에 API 사용량이 표시됩니다. 5시간/7일 윈도우 기준으로 남은 용량을 실시간 모니터링할 수 있어, 팀 단위 비용 관리에 유용합니다.
Frontmatter 기반 에이전트 행동 제어
v2.1.81에서 CLAUDE.md frontmatter로 에이전트 행동을 선언적으로 제어할 수 있게 되었습니다:
---
effort: medium
maxTurns: 15
disallowedTools:
- Bash(rm:*)
- Bash(docker:*)
---
# 프로젝트 CLAUDE.md
이 프로젝트에서 에이전트는 최대 15턴까지 작업하며,
rm과 docker 명령은 사용할 수 없습니다.| frontmatter 키 | 설명 | 예시 |
|---|---|---|
effort | 추론 깊이 제어 | low, medium, high |
maxTurns | 최대 대화 턴 수 | 15, 30 |
disallowedTools | 차단할 도구 패턴 | ["Bash(rm:*)", "Bash(docker:*)"] |
이 선언적 제어는 팀 전체의 에이전트 행동을 일관되게 관리하면서도, 프로젝트별 커스터마이징이 가능하게 합니다.
Codex v0.116.0 엔터프라이즈 (2026-03)
OpenAI Codex도 엔터프라이즈 기능을 강화했습니다. Claude Code와의 비교 관점에서 주요 기능을 정리합니다:
| 기능 | Codex v0.116.0 | Claude Code v2.1.81 |
|---|---|---|
| 승인 가디언 | Smart Approvals (정책 기반 자동 승인) | PreToolUse Hook + permissions |
| 프록시 지원 | 엔터프라이즈 프록시 (SSL_CERT_FILE) | MCP 서버 경유 |
| 사용자 입력 훅 | userpromptsubmit (프롬프트 제출 시) | Elicitation (MCP 입력 요청) |
| CI 실행 | codex --quiet | claude --bare |
멀티 에이전트 환경
엔터프라이즈에서는 Claude Code와 Codex를 병행 사용하는 팀이 늘고 있습니다. 거버넌스 정책은 에이전트 종류와 무관하게 통일해야 합니다 (Ch11 참고).
참고 문서
- Claude Code: CLAUDE.md (영어)
- Claude Code: Hooks (영어)
- Claude Code: Agent SDK (영어)
- Git: Worktree (영어)