
참고한 원본 글 : https://www.anthropic.com/engineering/claude-code-best-practices
Anthropic이 공개한 Claude Code는 단순한 코드 자동 완성 도구를 넘어, 개발자의 쉘 환경과 파일 시스템에 직접 접근하여 자율적으로 작업을 수행하는 '에이전트형(Agentic)' 개발 도구다. 하지만 이 강력한 자율성은 명확한 가이드라인 없이는 오히려 예측 불가능한 결과를 낳을 수 있다.
이 글에서는 Anthropic이 공식적으로 밝힌 엔지니어링 블로그의 내용을 기반으로, Claude Code의 잠재력을 100% 끌어내기 위한 핵심적인 베스트 프랙티스를 항목별로 심층 분석하고, 실제 적용 가능한 예제와 함께 제시하고자 한다.
1. 초기 설정 최적화 (Customize Your Setup)
Claude가 프로젝트에 대한 이해도를 높이고 원활하게 작업을 수행하게 하려면, 초기 환경 설정이 매우 중요하다.
가. CLAUDE.md: 프로젝트의 두뇌를 만들어주기
Claude는 대화를 시작할 때 프로젝트 루트 디렉터리에 CLAUDE.md 파일이 있는지 확인하고, 있다면 해당 내용을 컨텍스트에 자동으로 포함시킨다. 이 파일을 통해 우리는 Claude에게 프로젝트의 핵심 정보를 사전에 각인시킬 수 있다.
- 문제 상황: 매번 새로운 작업을 지시할 때마다 프로젝트의 구조, 주요 라이브러리, 코딩 스타일 등을 반복적으로 설명해야 한다.
- 해결 방안:
CLAUDE.md에 프로젝트의 핵심 정보를 명시하여, Claude가 언제나 일관된 컨텍스트를 유지하게 한다. - 실제
CLAUDE.md작성 예제:
# Claude Code를 위한 프로젝트 가이드라인
## 1. 프로젝트 개요
- 이 프로젝트는 Node.js와 Express를 사용하는 REST API 서버입니다.
- 데이터베이스는 PostgreSQL을 사용하며, ORM은 Prisma를 사용합니다.
## 2. 주요 디렉터리 구조
- `/src/routes`: API 엔드포인트 정의
- `/src/controllers`: 비즈니스 로직 처리
- `/src/models`: 데이터베이스 모델 및 쿼리
- `/prisma`: Prisma 스키마 및 마이그레이션 파일
## 3. 핵심 명령어
- **개발 서버 시작:** `npm run dev`
- **유닛 테스트 실행:** `npm test`
- **DB 마이그레이션:** `npx prisma migrate dev`
## 4. 코딩 스타일 가이드
- 모든 비동기 함수는 `async/await`을 사용합니다.
- 에러 처리는 `try...catch` 블록과 커스텀 `ErrorHandler` 미들웨어를 통해 이루어집니다.
- 변수명은 camelCase를 따릅니다.
## 5. 설치된 주요 도구
- GitHub CLI (`gh`)가 설치되어 있습니다. 이슈 생성 및 PR 요청 시 활용 가능합니다.
나. 도구 허용 목록 (Allowlisting Tools)
보안을 위해 Claude는 파일 수정이나 특정 명령어 실행 전 사용자에게 허가를 요청한다. 반복적이고 안전한 작업에 대해서는 이 확인 절차를 생략하여 작업 속도를 높일 수 있다.
- 문제 상황:
git commit,npm install등 안전하고 빈번한 명령어를 실행할 때마다[y/n]입력을 해야 해서 작업 흐름이 끊긴다. - 해결 방안:
claude allow [command]명령어를 통해 특정 도구나 명령어를 허용 목록에 추가한다. - 예제:
# git commit 명령어와 하위 명령어들을 항상 허용
claude allow "git commit"
# 모든 파일 수정 작업을 항상 허용
claude allow edit
다. GitHub CLI (gh) 설치
gh 명령어가 설치되어 있으면 Claude가 GitHub 관련 작업을 훨씬 원활하게 처리할 수 있다.
- 활용 예제:
- "방금 완료한 작업에 대해 'feat: 사용자 로그인 기능 추가'라는 제목으로 PR을 생성해줘."
- "현재 프로젝트의 버그 이슈 목록을 보여주고, 가장 최근 이슈를 기반으로 새로운 브랜치를 만들어줘."
2. Claude의 능력 확장: 더 많은 도구 제공하기
Claude는 사용자의 쉘 환경에 있는 모든 도구를 활용할 수 있다. 이를 적극적으로 이용하여 반복 작업을 자동화할 수 있다.
가. 커스텀 Bash 도구 활용
팀에서 사용하는 고유한 스크립트나 도구가 있다면, Claude가 이를 인지하고 사용하게 만들 수 있다.
- 문제 상황: 팀에서만 사용하는
./scripts/deploy_staging.sh같은 배포 스크립트를 Claude가 알지 못해 사용할 수 없다. - 해결 방안:
CLAUDE.md에 해당 스크립트의 존재와 사용법을 명확히 문서화한다. CLAUDE.md추가 예제:
## 6. 커스텀 도구
- **스테이징 환경 배포:** `./scripts/deploy_staging.sh` 스크립트를 실행합니다.
- **로그 분석:** `python3 ./scripts/analyze_logs.py --level=error` 스크립트로 에러 로그를 분석할 수 있습니다.
나. 커스텀 슬래시(/) 명령어
반복적인 워크플로우를 .claude/commands 디렉터리에 마크다운 파일로 저장하여, 팀 전체가 공유하는 강력한 명령어로 만들 수 있다.
- 문제 상황: 새로운 기능을 개발할 때마다 브랜치 생성, 커밋 메시지 템플릿 적용, PR 생성 등의 절차를 매번 수동으로 지시해야 한다.
- 해결 방안:
/new-feature라는 커스텀 명령어를 만들어 전체 과정을 자동화한다. - 커스텀 명령어 생성 예제 (
.claude/commands/new-feature.md):이제 터미널에서/new-feature만 입력하면 Claude가 위 절차를 순서대로 수행한다.
# /new-feature 명령어: 새로운 기능 개발 시작
1. 사용자에게 기능 이름을 물어봅니다 (예: 'user-authentication').
2. `git checkout main` 및 `git pull` 명령어로 최신 코드를 받습니다.
3. `git checkout -b feat/{{기능_이름}}` 형식으로 새로운 브랜치를 생성합니다.
4. 기능 개발에 필요한 기본 파일들(예: `{{기능_이름}}.js`, `{{기능_이름}}.test.js`)을 생성합니다.
5. 사용자에게 브랜치와 파일이 준비되었음을 알립니다.
3. 검증된 공통 워크플로우 적용
복잡한 작업을 성공적으로 완료하기 위한 효과적인 패턴들이 존재한다.
가. 탐색 → 계획 → 코딩 → 커밋 (Explore → Plan → Code → Commit)
큰 작업을 한 번에 맡기기보다 단계를 나누어 점진적으로 진행하는 것이 성공률이 높다.
- 실제 대화 예제:
- [탐색] 사용자: "사용자 프로필에 2단계 인증(2FA)을 추가하려고 해. 먼저 인증 관련 로직이 있는 파일들을 전부 찾아서 요약해줘."
- [계획] 사용자: "좋아. 이제
auth.js와userModel.js파일을 어떻게 수정해서 2FA 기능을 구현할지 구체적인 계획을 단계별로 세워줘." - [코딩] 사용자: "계획이 완벽하네. 이제 그 계획대로 코드를 수정해줘."
- [커밋] 사용자: "잘했어. 변경 사항을 'feat: Add 2FA to user profile' 메시지로 커밋해줘."
나. 테스트 주도 개발 (TDD)
명확한 목표(테스트 통과)를 제시하면 Claude는 훨씬 더 안정적인 코드를 생성한다.
- 실제 대화 예제:
- 사용자: "
utils.js파일에 이메일 주소의 유효성을 검사하는isValidEmail함수를 만들 거야. 먼저, 유효한 이메일과 유효하지 않은 이메일 케이스를 모두 테스트하는 코드를utils.test.js에 추가해줘." - Claude: (테스트 코드 생성)
- 사용자: "
npm test를 실행해서 테스트가 실패하는지 확인해줘." - Claude: (테스트 실행 및 실패 확인)
- 사용자: "좋아, 이제
utils.js에 저 테스트를 통과할 수 있는isValidEmail함수를 구현해줘."
- 사용자: "
다. 시각적 목표 제공 (Visual Targets)
프론트엔드 작업 시, 최종 결과물 이미지를 제공하면 텍스트로 설명하는 것보다 훨씬 효과적이다.
- 활용 방법: 디자인 목업 이미지 파일(
mockup.png)을 터미널에 끌어다 놓거나 경로를 붙여넣고, "이 이미지와 똑같은 로그인 폼을 만들어줘.login.css파일을 수정해." 와 같이 지시한다. 이후 "현재 결과물을 스크린샷으로 찍어서 원본 이미지와 비교해줘." 라고 요청하여 반복적으로 수정할 수 있다.
라. 코드베이스 Q&A
새로운 프로젝트에 참여했을 때, 동료에게 질문하듯 Claude에게 물어볼 수 있다.
- 질문 예제:
- "이 프로젝트에서 로깅은 어떻게 처리돼? 관련 코드는 어디에 있어?"
- "
calculatePrice함수의 엣지 케이스는 어떤 것들이 있을까? 관련 테스트 코드를 보여줘."
4. 모든 워크플로우 최적화 팁
어떤 작업을 하든 공통적으로 적용할 수 있는 효율성 향상 팁이다.
- 구체적으로 지시하기 (Be Specific):
- 나쁜 예: "버그 좀 고쳐줘."
- 좋은 예: "
checkout.js파일의calculateTotal함수에서 장바구니에 할인 상품만 있을 때 총액이 음수가 되는 버그를 수정해줘."
- 이미지와 URL 활용하기 (Use Images and URLs):
- 스크린샷, 아키텍처 다이어그램, API 문서 URL 등을 프롬프트에 직접 포함하여 Claude에게 정확한 시각적/문서적 컨텍스트를 제공한다.
- 조기에, 그리고 자주 수정하기 (Course-Correct Early and Often):
- Claude가 잘못된 방향으로 가고 있다고 판단되면 즉시
Escape키를 눌러 작업을 중단시키고, "아니, 그 라이브러리를 쓰면 안 돼. 대신 내장http모듈을 사용해줘." 와 같이 방향을 바로잡아준다.
- Claude가 잘못된 방향으로 가고 있다고 판단되면 즉시
/clear로 컨텍스트 관리하기 (Manage Context with/clear):- 하나의 복잡한 작업을 끝내고 완전히 다른 작업을 시작할 때는
/clear명령어로 이전 대화 내용을 컨텍스트 창에서 지워주는 것이 좋다. 이는 Claude가 이전 컨텍스트에 혼동되는 것을 방지한다.
- 하나의 복잡한 작업을 끝내고 완전히 다른 작업을 시작할 때는
- 체크리스트 활용하기 (Use Checklists):
- 수십 개의 파일을 리팩토링하거나 마이그레이션하는 작업의 경우, 마크다운 체크리스트를 만들어 Claude에게 제시한다.
- 체크리스트 예제:
# 레거시 API 마이그레이션 작업 목록
- [ ] `api/v1/users.js`를 `api/v2/users.js`로 복사
- [ ] `api/v2/users.js`의 `getUser` 함수 응답에 `email` 필드 추가
- [ ] `api/v1/products.js`를 `api/v2/products.js`로 복사
- [ ] `api/v2/products.js`의 가격 반환 로직에 세금 계산 추가
"이 체크리스트를 따라서 순서대로 작업을 수행하고, 각 항목이 완료될 때마다 체크 표시를 업데이트해줘."
5. 고급 활용: 자동화 및 병렬 처리
대화형 터미널을 넘어서 Claude Code를 활용하는 방법이다.
가. 헤드리스 모드 (Headless Mode)
CI/CD 파이프라인이나 Git pre-commit hook 등 비대화형 환경에서 Claude를 실행할 수 있다.
- 활용 예제 (Git pre-commit hook):
- 커밋을 시도할 때마다 헤드리스 모드로 Claude를 실행하여, 새로 변경된 파일에 대해 주석이 부족한 부분이 있으면 자동으로 주석을 추가하도록 설정할 수 있다.
claude code --headless "Add JSDoc comments to all new functions in the staged files."
나. 다중 Claude 워크플로우 (Multi-Claude Workflows)
여러 Claude 세션을 동시에 실행하여 복잡한 작업을 협력적으로 또는 병렬적으로 처리한다.
- 역할 분리 (Writer/Reviewer 패턴):
- 터미널 1 (Writer): "새로운 API 엔드포인트를 만들어줘."
- 터미널 2 (Reviewer): "터미널 1에서 작성한 코드를 읽고, 보안 취약점이 있는지 검토하고, 엣지 케이스를 커버하는 테스트 코드를 작성해줘."
- 병렬 처리 (
git worktrees활용):git worktree를 사용하여 하나의 레포지토리에서 여러 브랜치를 동시에 다른 디렉터리에 체크아웃한다. 각 디렉터리에서 별도의 Claude 세션을 실행하여, 기능 A 개발과 버그 B 수정을 동시에 진행할 수 있다.
결론
이 글에서 분석한 Anthropic의 공식 가이드라인은 Claude Code를 단순한 코드 생성기가 아닌, 개발자와 능동적으로 소통하고 협력하는 '개발 파트너'로 활용하는 방법을 제시한다. 명확한 컨텍스트를 제공(CLAUDE.md)하고, 반복 작업을 자동화(슬래시 명령어)하며, 복잡한 문제는 검증된 워크플로우(탐색→계획)로 접근하는 것이 핵심이다. 이러한 베스트 프랙티스를 체계적으로 적용한다면, Claude Code는 개발 팀의 생산성을 한 차원 높은 수준으로 끌어올리는 강력한 자산이 될 것이다.
'빅데이타 & 머신러닝 > 생성형 AI (ChatGPT etc)' 카테고리의 다른 글
| Open AI Day 2025 발표 내용 정리 #1 (0) | 2025.10.08 |
|---|---|
| AI 자동화와 Zapier, n8n 소개 및 비교 (4) | 2025.07.17 |
| Langchain이 있는데, Langgraph가 왜 필요할까? (1) | 2025.07.17 |
| 고급 Agent를 위한 Langgraph 개념 이해 #4 - Tool 호출 (2) | 2025.07.15 |
| 고급 Agent를 위한 Langgraph 개념 이해 #3 - Edge (1) | 2025.07.10 |