01 CLAUDE.md 계층 구조
왜 설정 파일이 필요한가?
Claude Code는 설정 없이도 작동합니다. 하지만 CLAUDE.md를 추가하면 프로젝트의 기술 스택과 컨벤션을 알고 코드를 작성합니다. 예를 들어 "Next.js App Router 사용, Server Components 기본"이라고 적어두면, 구식 Pages Router 패턴 대신 올바른 코드가 나옵니다.
4단계 계층
Claude Code는 여러 레벨의 설정 파일을 자동으로 읽어들입니다. 더 구체적인 파일이 우선합니다.
~/.claude/CLAUDE.md Global./CLAUDE.md Project.claude/local.md Local.claude/rules/*.md RulesLocal > Project > Global 순으로 우선. Deny 규칙이 최우선. 서브디렉토리에 위치한 CLAUDE.md는 해당 영역 작업 시 자동 로드됩니다.
| 내용 | 위치 | 예시 |
|---|---|---|
| 보편적 선호도 | ~/.claude/CLAUDE.md | "변경 후 테스트 실행", "Conventional Commits" |
| 팀 표준 | ./CLAUDE.md | "Next.js App Router 사용", "shadcn/ui 컴포넌트" |
| 개인 설정 | .claude/local.md | "로컬 DB: localhost:5432" |
| 도메인별 규칙 | .claude/rules/ | "code-style.md", "testing.md", "security.md" |
02 CLAUDE.md 작성 가이드
핵심 원칙: WHY-WHAT-HOW 프레임워크로 구조화하고, 60~80줄 이하로 유지합니다.
길이 제한 & 토큰 효율성
| 수준 | 줄 수 | 근거 |
|---|---|---|
| 이상적 | 60줄 이하 | HumanLayer 팀의 실무 벤치마크 |
| 최대 권장 | 80줄 | 초과 시 Claude가 내용 무시 시작 |
| 절대 한계 | 300줄 | 커뮤니티 합의 최대치 |
Claude Code 시스템 프롬프트가 이미 ~50개 명령어를 포함합니다. 프론티어 모델도 150~200개 명령어만 안정적으로 따릅니다. 모든 줄이 주의력을 위해 경쟁합니다.
권장 섹션 구성
효율성 자가 진단
"이것을 제거하면 Claude가 실수할까?" → 아니라면 삭제하세요.
직접 만들어보기
아래 템플릿을 프로젝트 루트에 CLAUDE.md로 저장하고, 주석 부분을 자신의 프로젝트에 맞게 채워보세요:
# [프로젝트 이름]
## Overview
[한 줄로 프로젝트 설명]
## Tech Stack
- [언어/프레임워크]
- [DB/ORM]
- [기타 핵심 도구]
## Commands
- [빌드 명령어]
- [테스트 명령어]
- [린트 명령어]
## Conventions
- [팀 코딩 컨벤션 1~3개]
## Important
- [절대 수정 금지 파일이나 주의사항]
작성 후 Claude Code를 실행하여 "CLAUDE.md 내용을 요약해줘"라고 입력하면 정상 인식 여부를 확인할 수 있습니다.
03 포함할 것 / 제외할 것
CLAUDE.md의 모든 줄은 토큰을 소비합니다. 반드시 필요한 것만 포함하세요.
- 기술 스택 (언어, 프레임워크, DB)
- 프로젝트 구조 & 디렉토리 역할
- 빌드/테스트/린트 명령어
- Claude가 틀리는 패턴 교정
- 절대 수정 금지 파일 목록
- 금지 사항 + 대안 제시
- 선호 도구 (bun, pnpm 등)
- 파일:줄 참조 (Progressive Disclosure)
- 코드 스타일 규칙 (린터가 할 일)
- 코드 스니펫 임베딩 (빨리 구식화)
@-file참조 (매번 전체 임베딩)- 성격/페르소나 지시 (토큰 낭비)
- 작업별 지시사항 (스킬로 분리)
- 자명한 내용 ("좋은 코드 작성")
- 중복 지시사항
- 프로젝트별 내용 (글로벌 파일에)
Progressive Disclosure 패턴
모든 정보를 CLAUDE.md에 넣지 말고, 중요한 정보를 찾는 방법을 알려주세요.
상세 API 가이드는 @docs/api-guide.md 참조
(매 세션마다 전체 파일 임베드됨)
복잡한 API 사용법은 docs/api-guide.md 참조
인증 구현 패턴: src/auth/jwt.ts:15-65
04 7가지 안티패턴
Boris Cherny(Claude Code 창시자) 등 커뮤니티에서 발견된 대표적인 실수들입니다.
너무 길면 Claude가 절반을 무시합니다. 중요한 규칙이 소음에 묻힙니다.
해결: 80줄 이하 유지. Claude가 이미 올바르게 하는 것은 삭제.
Kitchen Sink(부엌 싱크대)는 "이것저것 다 던져넣는다"는 관용 표현입니다. 여러 관련 없는 작업을 한 세션에 섞으면 컨텍스트가 오염됩니다.
해결: 관련 없는 작업 간 /clear 사용. "AI 컨텍스트는 우유와 같다 - 신선해야 한다"
Claude가 틀리고, 수정하고, 또 틀리면 컨텍스트가 실패한 시도로 가득 찹니다.
해결: 2회 실패 후 /clear하고 더 좋은 초기 프롬프트로 재시작.
@-file 참조는 매 실행마다 전체 파일을 임베드합니다.
해결: 경로 참조로 대체. Claude가 필요할 때만 읽도록 유도.
들여쓰기, 세미콜론, 줄 길이 등은 결정론적 도구가 훨씬 효율적입니다.
해결: Prettier, Biome, ESLint 등 린터 사용. CLAUDE.md에서 제거.
예시 없이 지시하면 Claude가 추측합니다. 1~2줄 예시만으로도 스타일이 고정됩니다.
해결: 최소한의 예시 포함. 특히 네이밍, 출력 형식에 효과적.
Claude가 그럴듯해 보이지만 실제로 작동 안 하는 코드를 생성할 수 있습니다.
해결: 테스트, 타입 체크, 스크린샷 등 검증 기준을 명시.
05 실전 CLAUDE.md 예시
커뮤니티에서 검증된 실제 CLAUDE.md 구조를 소개합니다.
글로벌 CLAUDE.md (~/.claude/CLAUDE.md)
markdown# 개인 개발 선호도
## 핵심 원칙
- Clean Architecture 우선
- 가독성 > 복잡한 솔루션
- 변경 전 코드베이스 탐색, 복잡한 작업은 계획 후 구현
- 변경 후 테스트 실행
## 코딩 표준
- 모든 함수에 타입 힌트/타입 정의
- 작은 diff 선호 (요청하지 않은 리팩토링 금지)
- 로직 변경 시 테스트 필수
- 접근성: 레이블, 키보드 네비게이션
## 도구 선호도
- 패키지 매니저: bun (npm 대신)
- 린터: Biome (ESLint + Prettier 대체)
- 커밋: Conventional Commits
- 민감 데이터 커밋 금지
## 커뮤니케이션
- 아키텍처 결정 전 명확히 질문
- 비자명한 선택에 이유 문서화
- 코드 주석: 영어 / 문서: 한국어
프로젝트 CLAUDE.md (./CLAUDE.md)
markdown# E-Commerce Platform
## Overview
Next.js 14 기반 전자상거래 플랫폼. App Router 사용.
## Tech Stack
- Next.js 14 (App Router) + TypeScript (strict)
- Prisma + PostgreSQL, Tailwind CSS, Zod
## Architecture
- /app - Pages, layouts, API routes
- /components - 재사용 컴포넌트
- /lib - 유틸리티 및 DB 클라이언트
- /prisma - DB 스키마
## Commands
- npm run dev # localhost:3000
- npm test # Jest + RTL
- npm run db:push # Prisma 스키마 푸시
- npm run lint # ESLint + Prettier
## Conventions
- Server Components 기본, 인터랙션 필요 시만 'use client'
- DB 쿼리는 /lib/queries에 분리
- Zod 스키마로 모든 입력 검증
## Important
- 결제 코드는 /lib/payments 에서만 수정
- 환경 변수는 .env.example 참고
자기 개선 루프
- Claude가 실수하면 → 수정
- 두 번째 동일 실수 → CLAUDE.md 업데이트
- 2주마다 검토: 중복 제거, 구식 정보 갱신
- PR 리뷰에서 잡힌 패턴 위반 → CLAUDE.md에 추가
06 모듈화 (.claude/rules/)
v2.0.64+에서 지원. CLAUDE.md 하나로 부족할 때 도메인별로 규칙을 나눌 수 있습니다.
rules/ 디렉토리의 파일은 CLAUDE.md와 동일한 우선순위로 자동 로드됩니다.paths 필드로 특정 파일 패턴에만 규칙 적용 가능.경로 기반 규칙 예시
yaml + markdown---
paths:
- "src/backend/**/*.py"
- "tests/backend/**/*.py"
---
# Backend Python 규칙
- FastAPI 라우트 핸들러 패턴 준수
- Pydantic 모델로 요청/응답 정의
- 비동기 함수 우선 사용
07 settings.json 설정 관리
Claude Code의 핵심 설정 파일. 권한, 플러그인, 환경변수, hooks를 구조화합니다.
설정 우선순위 (5단계)
| 순위 | 위치 | 범위 |
|---|---|---|
| 1 | ~/.claude/settings.json | 전역 (모든 프로젝트) |
| 2 | .claude/settings.json | 프로젝트 (팀 공유) |
| 3 | .claude/settings.local.json | 프로젝트 개인 |
| 4 | Enterprise Policy | 조직 관리자 |
| 5 | CLI 플래그 | 세션 단위 |
권한 체인
우선순위: deny > allow > ask > default
json{
"permissions": {
"allow": [
"Read(**/*.{js,ts,tsx,json,md})",
"Bash(npm *)",
"Bash(git status)",
"Bash(git diff*)"
],
"deny": [
"Read(.env*)",
"Write(node_modules/**)",
"Bash(rm -rf *)",
"Bash(git push --force)"
],
"ask": [
"Bash(git push*)",
"Bash(git commit*)",
"Write(package.json)"
]
}
}
08 MCP 서버 관리
MCP(Model Context Protocol)는 Claude Code에 외부 도구를 연결하는 표준 방식입니다. 기본 상태에서는 코드 편집과 터미널 명령만 가능한데, MCP 서버를 연결하면 GitHub PR 관리, 웹 검색, 데이터베이스 조회도 할 수 있습니다.
필수 MCP 서버 Top 5
MCP 설정 파일 (.mcp.json)
json{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": { "GITHUB_TOKEN": "${GITHUB_TOKEN}" }
},
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"]
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": { "BRAVE_API_KEY": "${BRAVE_API_KEY}" }
}
}
}
프로젝트 루트의 .mcp.json은 해당 프로젝트에서만 활성화됩니다. ~/.claude/.mcp.json은 전역 MCP 설정입니다.
09 스킬 관리
스킬(Skill)은 반복적인 워크플로우를 재사용 가능한 명령어로 패키징한 것입니다. 예를 들어 "코드 리뷰" 과정을 스킬로 만들면, 매번 같은 지시를 반복하지 않아도 됩니다. 토큰 절약을 위해 3단계(Tier)로 나눠서 필요한 만큼만 로드합니다.
3-Tier 로딩 시스템
name (64자), description (1024자). Claude가 모든 스킬을 미리 인식.SKILL.md 구조
markdown---
name: code-review
description: 코드 리뷰 수행 시 사용. PR, 코드 변경, 품질 검토 요청 시 자동 활성화.
---
# 코드 리뷰 지침
## 검토 영역
1. **가독성**: 변수명, 함수명, 주석
2. **보안**: SQL 인젝션, XSS, 인증/인가
3. **성능**: 알고리즘 복잡도, 메모리 사용
4. **테스트**: 테스트 커버리지, 엣지 케이스
## 출력 형식
- 긍정적 측면 먼저 언급
- 개선 사항은 구체적 제안과 함께
- 우선순위: Critical / High / Medium / Low
10 Hooks 자동화
Hooks는 Claude Code가 특정 동작을 할 때 자동으로 셸 명령어를 실행하는 기능입니다. 예를 들어 "파일을 저장할 때마다 자동으로 코드 포맷팅 실행" 같은 자동화를 설정할 수 있습니다. Claude의 판단에 의존하지 않고 항상 확실하게 실행됩니다(결정론적 동작).
라이프사이클 이벤트
| 이벤트 | 시점 | 주요 용도 |
|---|---|---|
PreToolUse | 도구 실행 전 | 파일 보호, 위험 명령 차단 |
PostToolUse | 도구 실행 후 | 자동 포맷팅, 린트, 테스트 |
SessionStart | 세션 시작 | 환경변수 설정, 초기화 |
Stop | 응답 완료 | 알림 전송, 로깅 |
UserPromptSubmit | 프롬프트 제출 | 입력 검증, 키워드 감지 |
Notification | 입력 필요 | Slack/Discord 알림 |
실전 Hooks 예시
json{
"hooks": {
"PostToolUse": [
{
"match": "Write(**.py)",
"command": "black ${file} && isort ${file}",
"description": "Python 자동 포맷팅"
},
{
"match": "Write(**.{js,ts,tsx})",
"command": "prettier --write ${file}",
"description": "JS/TS 포맷팅"
}
],
"PreToolUse": [
{
"match": "Write(config/production.*)",
"command": "echo 'Production protected'; exit 1",
"description": "프로덕션 설정 보호"
},
{
"match": "Write(**)",
"command": "if grep -q 'API_KEY\\|SECRET' ${file}; then exit 1; fi",
"description": "민감 데이터 검출"
}
],
"Stop": [
{
"command": "notify-send 'Claude Code' 'Task completed'",
"description": "Linux 데스크톱 알림"
}
]
}
}
${file} — 작업 대상 파일, ${tool} — 도구 이름, $CLAUDE_PROJECT_DIR — 프로젝트 루트
11 Dotfiles & 크로스 환경 동기화
여러 머신에서 일관된 Claude Code 환경을 유지하는 방법입니다.
권장 Dotfiles 구조
심볼릭 링크 설치
bash#!/bin/bash
# install.sh
# 기존 설정 백업
[ -d ~/.claude ] && mv ~/.claude ~/.claude.bak.$(date +%Y%m%d)
# 심볼릭 링크 생성
ln -sf ~/dotfiles/claude/.claude ~/.claude
# 또는 GNU Stow 사용 (권장)
cd ~/dotfiles && stow claude
.gitignore 필수 항목
gitignore# 절대 커밋 금지
.credentials.json
*.local.json
*.local.md
.env*
# 대화 히스토리 (프라이버시)
projects/
# 캐시
*.log
statsig/
커뮤니티 도구
12 비용 최적화
전략적 모델 선택과 캐싱을 조합하면 50~90% 비용 절감이 가능합니다.
모델별 역할 분담
| 모델 | 용도 | 비용 |
|---|---|---|
| Haiku 4.5 | 빠른 단순 작업 (파일 읽기, 기본 편집) | Sonnet의 1/3 |
| Sonnet 4.5 | 일상 개발 (최적 능력/비용 균형) | 기준 |
| Opus 4.6 | 복잡한 아키텍처, 멀티파일 추론 | Sonnet의 ~1.7x |
최적화 전략 4가지
/model haiku 전환, /compact 압축, 간결한 CLAUDE.md 유지./cost — 현재 세션 토큰 사용량 확인. /stats — 사용 패턴 분석. 평균 $6/day, 90th percentile $12/day.
13 커뮤니티 사례 & 팁
실제 개발자들의 검증된 워크플로우와 생산성 팁을 모았습니다.
Boris Cherny (Claude Code 창시자) 워크플로우
- 병렬 에이전트: 터미널 5개 + 브라우저 5~10개 Claude 인스턴스 동시 실행
- 공유 메모리: CLAUDE.md 하나를 팀 전체가 주 단위로 기여. 실수할 때마다 추가
- 슬래시 커맨드 자동화:
/commit-push-pr같은 커스텀 명령어로 하루 수십 번 호출 - Chrome 확장: 모든 변경사항 자동 테스트, UI 검증 반복
YK Dojo 45가지 팁 핵심
/clear, /compact 사용.엔터프라이즈 성공 사례
| 기업 | 규모 | 성과 |
|---|---|---|
| TELUS | 57,000명 | 월 100B+ 토큰 처리 |
| Zapier | 800+ 에이전트 | 내부 워크플로우 자동화 |
| Bridgewater | 분석팀 | AI 투자 분석 어시스턴트로 워크플로우 개선 |
| Altana 등 | - | 개발 속도 2~10x 가속 (공식 사례) |
생산성 핵심 팁
- 관련 없는 작업 사이에
/clear사용 (Kitchen Sink 방지) - 2회 실패 후 대화 리셋 — 오염된 컨텍스트에서 벗어나기
- CLAUDE.md에 실패한 시도 섹션 추가 — 다시 시도 방지
- 시스템 프롬프트 크기 50% 줄이기 — 토큰 효율성
- 테스트, 스크린샷, 예상 출력으로 자체 검증 가능하게
14 참고 리소스
커뮤니티 리소스에서 엄선한 링크 모음입니다.
공식 문서
- Best Practices for Claude Code — 공식 베스트 프랙티스
- Using CLAUDE.MD files — CLAUDE.md 사용법
- Claude Code Settings — 설정 가이드
- Connect to tools via MCP — MCP 연결
- Automate workflows with hooks — Hooks 가이드
- Manage costs effectively — 비용 관리
커뮤니티 가이드
- Writing a good CLAUDE.md — HumanLayer (60줄 벤치마크 출처)
- The Complete Guide to CLAUDE.md — Builder.io 완전 가이드
- Creating the Perfect CLAUDE.md — Dometrain 멀티 언어 예시
- ClaudeLog — 종합 가이드, 튜토리얼, 모범 사례
GitHub 레포지토리
| 레포 | 특징 |
|---|---|
| awesome-claude-code | 75+ 리소스 큐레이션 |
| everything-claude-code | Anthropic 해커톤 우승. 13개 서브에이전트, 30+ 스킬 |
| brianlovin/claude-config | 7개 스킬 + sync/install 자동화. 인기 설정 레포 |
| claude-code-showcase | 8개 섹션 구조. hooks, skills, agents 포함 |
| claude-code-global-config | 프로덕션 레디 글로벌 템플릿 |
| claude-md-templates | Next.js, Python/FastAPI 스택별 템플릿 |
| claude-code-tips | 45가지 기본~고급 팁 모음 |
| my-claude-code-setup | 메모리 뱅크 시스템. 멀티 파일 구조 |
한국어 리소스
- revfactory/claude-code-guide — 한국어 바이브코딩 가이드
- revfactory/claude-code-mastering — 한국어 마스터 가이드북
- PyTorch 한국 커뮤니티 — 30가지 활용 팁
도구 & 유틸리티
- MCPcat.io — MCP 서버 가이드 & 디렉토리
- claude-code-hooks-mastery — Hook 마스터 가이드
- claudekit — 27개 명령어, 7개 모드, 34개 스킬
- awesome-claude-code-subagents — 100+ 전문 서브에이전트
15 FAQ & 트러블슈팅
자주 묻는 질문과 흔한 문제 해결 방법을 모았습니다.
CLAUDE.md 관련
- 파일 위치 확인: 프로젝트 루트에
CLAUDE.md가 있는지 확인. 파일명 대소문자 주의 - 길이 확인: 80줄을 넘으면 뒷부분이 무시될 수 있음. 60줄 이하 권장
- 확인 방법: Claude Code에서 "CLAUDE.md 내용을 요약해줘"라고 물어보세요
- 충돌 확인: 글로벌(
~/.claude/CLAUDE.md)과 프로젝트 CLAUDE.md가 상충하는 내용이 없는지 확인
- 같은 규칙을 다른 표현으로 2~3번 반복하면 준수율이 높아집니다
- "~하지 마라"보다 "~대신 ~해라"가 더 효과적
- 세션이 길어지면
/compact로 컨텍스트를 압축하세요
세션 관련
/compact— 컨텍스트를 요약하여 토큰 절약/clear— 새 세션으로 시작 (가장 효과적)- CLAUDE.md 줄 수 확인 — 300줄 이상이면 대폭 축소
- 2회 실패 후
/clear: 실패한 시도가 컨텍스트에 쌓여 반복 유발 - 새 세션에서 더 구체적인 프롬프트로 재시도
- 반복되는 실수는 CLAUDE.md에 "절대 ~하지 말 것" 추가
MCP 관련
# 1. 서버 목록 및 상태 확인
claude mcp list
# 2. 특정 서버 로그 확인
claude mcp logs [서버이름]
# 3. 환경변수 확인 (API 키가 설정되어 있는지)
echo $GITHUB_TOKEN
echo $BRAVE_API_KEY
.mcp.json의 JSON 문법 오류 확인 (쉼표, 괄호)npx명령이 작동하는지 확인:npx -y @modelcontextprotocol/server-github --help- 환경변수는
~/.bashrc또는~/.zshrc에export로 설정
비용 관련
- 모델 전환: 단순 작업은
/model haiku(Sonnet 대비 1/3 비용) - CLAUDE.md 축소: 매 메시지마다 포함되므로 짧을수록 절약
/compact습관화: 긴 세션의 토큰 비용 40~80% 절감/clear활용: 주제가 바뀌면 새 세션 시작/cost로 모니터링: 현재 세션 사용량 실시간 확인
Hooks 관련
settings.json의hooks섹션 JSON 문법 확인match패턴이 실제 도구 호출과 일치하는지 확인 (예:Write(**.py))- Hook 명령어가 시스템에 설치되어 있는지 확인 (예:
prettier,black) command에서 직접 실행해보기: 터미널에서 해당 명령어 테스트
기타
/init이 자동 생성한 CLAUDE.md는 출발점일 뿐입니다. 반드시 60줄 이하로 축소하세요:
- Claude가 이미 올바르게 하는 것 삭제
- 린터가 처리하는 스타일 규칙 삭제
- 자명한 내용 ("좋은 코드를 작성하라") 삭제
각 패키지/서비스 디렉토리에 독립 CLAUDE.md를 두면 됩니다. Claude Code는 현재 작업 디렉토리부터 루트까지 CLAUDE.md를 자동 탐색합니다.
Anthropic 공식 문서를 참고하거나, GitHub 이슈에서 검색해보세요.