CoreCode문서

CoreCode 제대로 쓰기

CLAUDE.md 작성법

최종 업데이트:

CLAUDE.md는 Claude Code가 세션을 시작할 때마다 읽는 프로젝트 브리핑입니다. 잘 쓰면 Claude가 같은 실수를 반복하지 않고, 길고 어수선하면 매 턴 컨텍스트를 낭비합니다. 이 페이지는 Anthropic의 공식 가이드를 따르며, 요금에 미치는 영향도 함께 다룹니다.

핵심 요약
  • CLAUDE.md는 강제 설정이 아니라 컨텍스트입니다. Claude가 참고하지만 모든 규칙을 보장하지는 않습니다. 절대 일어나면 안 되는 일은 훅으로 막으세요.
  • 개인 규칙은 ~/.claude/CLAUDE.md, 프로젝트 규칙은 ./CLAUDE.md 또는 ./.claude/CLAUDE.md, 본인만의 프로젝트 선호는 .gitignore에 추가한 ./CLAUDE.local.md에 둡니다.
  • 구체적이고 확인할 수 있는 규칙을 쓰고, 파일 하나는 200줄 이내로 유지하며, 제목과 글머리 기호로 구조화하세요.
  • 코드베이스 일부에만 적용되는 규칙은 paths로 범위를 정해 .claude/rules/에, 여러 단계로 된 절차는 스킬로 쓰세요.
  • 매 턴 함께 전송됩니다. 세션 도중 수정한 내용은 /clear, /compact 또는 재시작 후에 적용됩니다.

CLAUDE.md란

이 프로젝트에서 Claude가 알아야 할 내용을 적은 평범한 Markdown 파일입니다. 빌드와 테스트 방법, 코드 컨벤션, 구조, "항상 X를 하라" 같은 규칙이 들어갑니다. Claude Code는 세션을 시작할 때마다 이 파일을 컨텍스트로 읽습니다.

강제 설정은 아닙니다. 규칙이 구체적이고 간결할수록 Claude가 일관되게 따릅니다. 보호된 디렉터리를 수정하는 것처럼 절대 일어나면 안 되는 일에는 PreToolUse 훅을 쓰세요.

Claude Code에는 자동 메모리도 있습니다. 사용자가 준 교정 내용은 ~/.claude/projects/<project>/memory/에 저장됩니다. CLAUDE.md에는 사용자가 쓴 규칙이, 자동 메모리에는 Claude가 배운 내용이 들어가며, 둘 다 매 세션 로드됩니다.

어디에 두나

범위위치용도
사용자~/.claude/CLAUDE.md모든 프로젝트에 적용되는 선호. 예: 응답 언어, 사용하는 도구
프로젝트./CLAUDE.md 또는 ./.claude/CLAUDE.md팀 규칙: 빌드 명령, 코드 규약, 아키텍처. 커밋하세요
로컬./CLAUDE.local.md이 프로젝트에 대한 본인만의 선호. 예: 로컬 테스트 URL. .gitignore에 추가하세요

Claude Code는 시작할 때 작업 디렉터리와 그 위의 모든 디렉터리에서 CLAUDE.md를 읽어 위에서 아래로 이어 붙입니다. 그래서 시작한 위치에 가장 가까운 파일이 마지막에 읽힙니다. 하위 디렉터리의 CLAUDE.md는 Claude가 그 하위 디렉터리의 파일을 읽거나 수정할 때 나중에 로드됩니다.

시작하는 법

프로젝트에서 /init을 실행하세요. Claude가 코드베이스를 분석해 찾아낸 빌드 명령, 테스트 방법, 컨벤션을 담은 CLAUDE.md를 만들어 줍니다. 이미 있으면 덮어쓰지 않고 개선안을 제안합니다. 그다음 Claude가 스스로 알아낼 수 없던 내용을 덧붙이세요.

무엇을 담을까

매번 다시 설명하게 될 내용을 적어 두는 곳이라고 생각하세요. 다음 경우에 한 줄을 추가합니다.

모든 세션에 필요한 사실만 담으세요. 여러 단계로 된 절차는 필요할 때 로드되는 스킬로 쓰고, 코드베이스 한 부분에 대한 규칙은 .claude/rules에 두세요.

효과 있는 규칙 쓰는 법

막연한 바람이 아니라 확인할 수 있는 규칙을 쓰세요.

이렇게 쓰지 말고이렇게 쓰세요
코드를 제대로 포맷하라들여쓰기는 스페이스 2칸을 쓴다
변경 사항을 테스트하라커밋하기 전에 npm test를 실행한다
파일을 잘 정리하라API 핸들러는 src/api/handlers/에 둔다

짧은 예시입니다.

# Project

## Commands
- Install: pnpm install (not npm)
- Test: pnpm test, must pass before committing
- Run locally: pnpm dev, port 3000

## Conventions
- TypeScript strict mode, no any
- API handlers in src/api/handlers/, one route per file
- Schema changes only through prisma migrate

다른 파일 가져오기

@path로 다른 파일을 가져올 수 있습니다. 예: See @README and @docs/git-instructions.md. 상대 경로는 그것을 포함한 CLAUDE.md를 기준으로 해석되며, 가져오기는 최대 4단계까지 중첩됩니다. 백틱 안의 `@README`는 가져오지 않습니다.

가져오기는 파일을 정리해 줄 뿐 컨텍스트 비용을 줄이지는 않습니다. 가져온 내용도 매번 로드됩니다. 프로젝트가 자기 디렉터리 밖의 파일을 처음 가져올 때 Claude Code가 승인을 요청합니다.

.claude/rules로 범위별 분리

큰 프로젝트에서는 지침을 .claude/rules/ 아래의 testing.md, api-design.md 같은 주제별 파일로 나누세요. paths가 없는 규칙은 CLAUDE.md처럼 시작할 때 로드되고, paths가 있는 규칙은 Claude가 일치하는 파일을 다룰 때만 로드됩니다.

---
paths:
  - "src/api/**/*.ts"
---
# API rules
- Validate every endpoint's input
- Return errors as ApiError

CLAUDE.md의 한 섹션이 여러 단계의 절차로 커졌다면 스킬로 만들 수 있습니다. 스킬은 사용할 때만 로드됩니다. 스킬 가이드를 참고하세요.

이미 AGENTS.md가 있다면

Claude Code v2.1.277부터 Claude는 AGENTS.md를 직접 읽습니다. CLAUDE.md가 없으면 AGENTS.md를 읽고, 있으면 CLAUDE.md만 읽습니다. 여러 코딩 도구가 한 파일을 공유하게 하려면 CLAUDE.md에 @AGENTS.md 한 줄을 추가하세요.

비용과 캐시

더 절약하는 방법은 Claude Code 비용 절감 가이드에 있습니다.

로드되었는지 확인하는 법

FAQ

CLAUDE.md는 얼마나 길어야 하나요?

Anthropic은 파일당 200줄 이내를 권장합니다. 코드베이스 일부에 대한 규칙은 paths를 붙여 .claude/rules/로, 여러 단계의 절차는 스킬로 옮기세요.

Claude가 CLAUDE.md를 따르지 않는 이유는 무엇인가요?

대개 규칙이 모호하거나, 파일이 길거나, 규칙끼리 모순되거나, 세션 도중의 수정이 아직 적용되지 않은 경우입니다. /context로 파일이 로드되었는지 확인하고, 규칙을 구체적이고 확인 가능하게 쓰며, 반드시 지켜야 하는 것은 훅을 쓰세요.

CLAUDE.md를 수정했는데 반영되지 않는 이유는 무엇인가요?

실행 중인 세션은 다시 읽지 않습니다. /clear, /compact를 실행하거나 Claude Code를 다시 시작하세요.

CLAUDE.md와 AGENTS.md를 함께 쓸 수 있나요?

CLAUDE.md가 있으면 기본적으로 CLAUDE.md만 읽습니다. 하나의 지침을 공유하려면 CLAUDE.md에 @AGENTS.md를 추가하세요.