1. Claude Code는 왜 기억을 못 할까?

Claude Code를 쓰다 보면 이런 경험을 하게 됩니다.

"어제 분명히 pnpm 쓰라고 했는데 오늘 또 npm을 써버렸어..."
"커밋 전에 테스트 실행하라고 했잖아, 왜 또 빠뜨려..."
"매번 같은 설명을 반복해야 하다니..."

이유는 단순합니다. Claude Code의 각 세션(대화)은 완전히 독립적으로 시작되기 때문입니다. 어제 한 대화 내용은 오늘 새 세션에서 전혀 없는 것처럼 시작돼요.

마치 매일 아침 기억을 잃는 개발자 동료와 일하는 것처럼요.

이 문제를 해결하는 두 가지 메커니즘이 바로 CLAUDE.md자동 메모리입니다.


2. 두 가지 메모리 시스템 한눈에 보기

구분 CLAUDE.md 자동 메모리

누가 작성 개발자(나) Claude 스스로
담는 내용 프로젝트 규칙, 지침 작업하며 발견한 패턴과 노하우
범위 프로젝트 / 사용자 / 조직 작업 폴더(git 저장소) 단위
로드 시점 매 세션 시작 시 자동 로드 매 세션 시작 시 자동 로드 (200줄 제한)
비유 팀 공지판 Claude의 개인 메모장

두 시스템은 서로 보완 관계입니다. CLAUDE.md는 내가 규칙을 정해주고, 자동 메모리는 Claude가 스스로 유용한 정보를 축적합니다.


3. CLAUDE.md — 개발자가 작성하는 규칙 파일

CLAUDE.md란?

세션이 시작될 때 Claude가 자동으로 읽는 마크다운 파일입니다.

한 번 작성해 두면 매 대화에서 Claude가 이 파일을 먼저 읽고 규칙을 따릅니다.

# CLAUDE.md 예시

## 패키지 매니저
- npm 대신 반드시 pnpm을 사용하세요

## 커밋 규칙
- 커밋 전에 반드시 `pnpm test`를 실행하세요
- 커밋 메시지는 한국어로 작성합니다

## 코드 스타일
- 들여쓰기는 2칸(space)으로 통일합니다
- 함수형 컴포넌트만 사용합니다

## 프로젝트 구조
- API 핸들러는 src/api/handlers/ 폴더에 위치합니다
- 공통 유틸리티는 src/utils/ 폴더에 위치합니다

언제 CLAUDE.md에 추가해야 할까?

  • ✅ Claude가 같은 실수를 두 번 반복할 때
  • ✅ 지난 세션과 동일한 설명을 또 입력하게 될 때
  • ✅ 새 팀원이 합류해서 공통 규칙이 필요할 때
  • ✅ 코드 리뷰에서 발견한 팀 표준을 문서화하고 싶을 때

핵심 원칙: "매번 말해야 한다면 파일에 적어두자!"

/init으로 자동 생성하기

CLAUDE.md를 처음 만들 때 직접 쓰기 어렵다면 /init 명령을 써보세요.

/init

Claude가 프로젝트를 분석해서 빌드 명령, 테스트 방법, 발견한 규칙들을 자동으로 채워줍니다. 이미 CLAUDE.md가 있다면 덮어쓰지 않고 개선 사항만 제안합니다.


4. CLAUDE.md 파일 위치와 범위

CLAUDE.md는 여러 위치에 둘 수 있고, 위치에 따라 적용 범위가 달라집니다.

파일 위치 적용 범위 주요 용도 git 공유

./CLAUDE.md 현재 프로젝트 팀 공통 규칙 ✅ 올림
./.claude/CLAUDE.md 현재 프로젝트 팀 공통 규칙 ✅ 올림
~/.claude/CLAUDE.md 내 모든 프로젝트 개인 코딩 스타일 ❌ 로컬만
./CLAUDE.local.md 현재 프로젝트, 나만 개인 로컬 설정 ❌ .gitignore
/etc/claude-code/CLAUDE.md 회사 전체 컴퓨터 조직 정책 IT팀 관리

파일 로드 순서

프로젝트 실행 시
  ↓
상위 디렉토리부터 찾기 시작 (루트까지 올라가며)
  ↓
각 위치의 CLAUDE.md → CLAUDE.local.md 순서로 로드
  ↓
하위 디렉토리 파일은 해당 폴더 작업 시 추가 로드

💡 : CLAUDE.local.md는 반드시 .gitignore에 추가하세요. 팀과 공유하면 안 되는 개인 설정(로컬 DB 주소, 개인 API 키 등)을 여기에 보관하세요.


5. 효과적인 지침 작성법

CLAUDE.md 지침은 구체적일수록 잘 따릅니다. 모호한 표현은 Claude가 자의적으로 해석할 수 있어요.

구체적 vs 모호한 지침 비교

❌ 모호한 표현:
"코드를 제대로 포맷합니다"
"변경 사항을 테스트합니다"
"파일을 정리된 상태로 유지합니다"

✅ 구체적인 표현:
"들여쓰기는 2칸(space)으로 통일합니다"
"커밋하기 전에 pnpm test를 실행합니다"
"API 핸들러는 src/api/handlers/에 저장합니다"

좋은 CLAUDE.md 작성 팁

크기 관리: 파일당 200줄 이내를 목표로 하세요.

너무 길면 Claude가 중요한 규칙을 놓칠 수 있고, 컨텍스트 윈도우를 많이 소비해서 오히려 효율이 떨어집니다.

구조화: 마크다운 헤더와 목록을 활용해 섹션을 나눠주세요.

## 패키지 매니저
## 코드 스타일
## 테스트 규칙
## 폴더 구조

일관성: 서로 충돌하는 규칙이 없는지 주기적으로 검토하세요. 두 규칙이 충돌하면 Claude가 임의로 선택합니다.

HTML 주석 활용: 유지보수자를 위한 메모를 남기고 싶지만 Claude가 읽지 않아도 되는 내용은 HTML 주석으로 작성하세요. 컨텍스트 토큰을 소비하지 않습니다.

<!-- 이 규칙은 2025년 3월 팀 회의에서 결정됨 -->
- API 응답은 항상 JSON 형태로 반환합니다

6. 파일 가져오기(@import) 기능

CLAUDE.md에서 다른 파일을 불러올 수 있습니다.

# CLAUDE.md

프로젝트 개요는 @README를 참조하세요.
사용 가능한 명령어는 @package.json을 참조하세요.

# 추가 지침
- git 워크플로우: @docs/git-instructions.md
- 배포 절차: @docs/deploy-guide.md

@경로/파일명 형식으로 참조하면 해당 파일 내용이 세션 시작 시 함께 로드됩니다.

⚠️ 주의: 가져온 파일도 컨텍스트에 전부 로드되므로, 파일이 많을수록 컨텍스트를 더 소비합니다. 꼭 필요한 파일만 가져오세요.

다른 에이전트 도구의 AGENTS.md 활용

다른 AI 도구가 사용하는 AGENTS.md가 있다면, CLAUDE.md에서 가져와서 두 도구가 같은 규칙을 공유하게 할 수 있습니다.

# CLAUDE.md
@AGENTS.md

## Claude Code 전용 추가 설정
- src/billing/ 변경 시 반드시 계획 모드(Plan Mode) 사용

7. .claude/rules/로 규칙 주제별 분리하기

CLAUDE.md가 200줄을 넘어서기 시작하면 주제별로 파일을 분리할 때입니다.

my-project/
├── CLAUDE.md                  ← 핵심 규칙만 (200줄 이하)
└── .claude/
    └── rules/
        ├── code-style.md      ← 코딩 스타일 규칙
        ├── testing.md         ← 테스트 관련 규칙
        ├── security.md        ← 보안 요구사항
        └── api-design.md      ← API 설계 규칙

.claude/rules/ 안의 모든 .md 파일은 자동으로 인식됩니다. 하위 폴더로도 구성할 수 있어요.

.claude/rules/
├── frontend/
│   ├── react.md
│   └── css.md
└── backend/
    ├── spring.md
    └── database.md

팀 간 규칙 공유 (심볼릭 링크)

여러 프로젝트에서 공통 규칙을 쓰고 싶다면 심볼릭 링크를 활용하세요.

# 공유 규칙 폴더를 현재 프로젝트에 링크
ln -s ~/shared-claude-rules .claude/rules/shared

# 특정 파일만 링크
ln -s ~/company-standards/security.md .claude/rules/security.md

8. 경로별 규칙 — 특정 파일에만 적용하기

규칙에 paths 설정을 추가하면 해당 경로의 파일을 작업할 때만 로드됩니다. 컨텍스트를 절약하고 노이즈를 줄일 수 있습니다.

---
paths:
  - "src/api/**/*.ts"
---

# API 개발 규칙
# (TypeScript API 파일 작업 시에만 자동 적용)

- 모든 API 엔드포인트는 입력 검증을 포함해야 합니다
- 표준 오류 응답 형식을 사용합니다: { success, data, message }
- OpenAPI 문서 주석을 포함합니다

여러 경로를 지정할 수도 있습니다.

---
paths:
  - "src/**/*.{ts,tsx}"
  - "lib/**/*.ts"
  - "tests/**/*.test.ts"
---

자주 쓰는 경로 패턴

패턴 적용 대상

**/*.ts 모든 폴더의 TypeScript 파일
src/**/* src 폴더 아래 모든 파일
*.md 프로젝트 루트의 마크다운 파일
src/**/*.{ts,tsx} TypeScript, TSX 파일
tests/**/*.test.ts 테스트 파일만

💡 paths 설정이 없는 규칙은 항상 로드됩니다. 자주 쓰지 않는 규칙은 경로를 지정해서 필요할 때만 로드되게 하면 효율적입니다.


9. 자동 메모리 — Claude가 스스로 쓰는 메모장

자동 메모리란?

Claude가 작업하면서 유용하다고 판단한 정보를 스스로 파일에 저장하는 기능입니다.

개발자가 아무것도 안 해도 Claude가 알아서 기록합니다.

저장되는 내용 예시:

  • 이 프로젝트의 빌드 명령어
  • 디버깅 과정에서 발견한 노하우
  • 자주 사용하는 코드 패턴
  • 아키텍처 관련 발견

ℹ️ Claude Code v2.1.59 이상에서 사용 가능합니다. claude --version으로 확인하세요.

저장 위치

~/.claude/projects/<프로젝트명>/memory/
├── MEMORY.md          ← 핵심 인덱스 (매 세션 처음 200줄 자동 로드)
├── debugging.md       ← 디버깅 관련 상세 메모
├── api-conventions.md ← API 설계 발견 사항
└── ...                ← Claude가 필요에 따라 생성하는 주제 파일들

MEMORY.md는 인덱스 역할을 하며, 처음 200줄만 매 세션에 자동 로드됩니다. 상세 내용은 주제별 파일로 분리해서 필요할 때만 읽어요.

⚠️ 자동 메모리는 컴퓨터 로컬에만 저장됩니다. 팀원과 공유되지 않으며, 다른 기기에도 동기화되지 않습니다.

Claude에게 직접 기억 요청하기

자동 저장 외에 직접 요청도 가능합니다.

"항상 npm이 아닌 pnpm을 쓴다는 걸 기억해줘"
→ Claude가 MEMORY.md에 자동으로 저장

"이것을 CLAUDE.md에 추가해줘"
→ 팀과 공유되는 규칙 파일에 직접 추가

자동 메모리 켜기/끄기

기본적으로 켜져 있습니다. 끄고 싶다면:

# 세션 내에서 끄기
/memory  → 토글 사용

# 설정 파일로 끄기
# .claude/settings.json
{
  "autoMemoryEnabled": false
}

# 환경 변수로 끄기
CLAUDE_CODE_DISABLE_AUTO_MEMORY=1 claude

10. /memory 명령으로 메모리 관리하기

/memory

이 명령 하나로 현재 메모리 상태를 모두 확인하고 관리할 수 있습니다.

기능 설명

로드된 파일 목록 확인 어떤 CLAUDE.md가 현재 세션에 로드됐는지 보기
자동 메모리 내용 확인 Claude가 저장한 메모 찾아보기
파일 직접 편집 에디터로 바로 열기
자동 메모리 토글 켜기/끄기

Claude가 메모리 파일을 읽거나 쓸 때 인터페이스에 "Writing memory" 또는 "Recalled memory" 메시지가 표시됩니다.


11. 자주 겪는 문제와 해결법

❓ "Claude가 CLAUDE.md 규칙을 자꾸 무시해요"

체크리스트:

# 1. /memory 실행해서 파일이 로드됐는지 확인
/memory
# 목록에 없으면 Claude가 못 보는 것

# 2. 지침을 더 구체적으로 수정
"코드를 정리합니다" → "2칸 space 들여쓰기 사용"

# 3. 서로 충돌하는 규칙 찾기
# 같은 동작에 다른 규칙이 있으면 Claude가 임의로 선택

💡 CLAUDE.md는 시스템 프롬프트가 아니라 사용자 메시지로 전달됩니다. 100% 강제 준수가 아닌 "강력한 권고" 수준입니다. 구체적일수록 잘 따릅니다.

❓ "CLAUDE.md가 너무 길어졌어요"

해결책 3가지:

1. 경로별 규칙 활용
   → paths 설정으로 필요할 때만 로드

2. .claude/rules/로 분리
   → 주제별 파일로 나누기

3. Skills로 이동
   → 항상 필요하지 않은 내용은 Skills에 저장
      (필요할 때만 로드됨)

❓ "/compact 후 규칙이 사라졌어요"

프로젝트 루트의 CLAUDE.md는 압축 후에도 살아남습니다. /compact 후에 Claude가 자동으로 다시 읽고 주입합니다.

사라진 경우는 두 가지 중 하나입니다:

  • 대화 중에만 말하고 파일에 저장하지 않은 경우
  • 하위 폴더의 중첩된 CLAUDE.md인 경우 (아직 재로드 안 됨)

해결: 중요한 규칙은 반드시 파일로 저장하세요.

❓ "자동 메모리가 뭘 저장했는지 모르겠어요"

/memory
→ 자동 메모리 폴더 선택
→ 저장된 파일 목록 확인
→ 원하는 파일 열어서 읽기/편집/삭제

모든 메모리 파일은 일반 마크다운이라 직접 편집하거나 삭제할 수 있습니다.


12. 마무리 — 어떻게 시작할까?

Claude Code 메모리 시스템을 한 줄로 요약하면:

"반복해서 말하게 되는 것은 파일에 적어두고, Claude가 발견하는 것은 Claude가 스스로 기록하게 하라"

핵심 정리

  • CLAUDE.md: 매 세션 자동 로드되는 팀 규칙 파일. 200줄 이내 유지
  • CLAUDE.local.md: 나만 쓰는 개인 로컬 설정. .gitignore에 추가
  • .claude/rules/: 주제별 규칙 분리. 경로 지정으로 필요 시만 로드
  • 자동 메모리: Claude가 스스로 쌓는 노하우. /memory로 확인
  • /init: CLAUDE.md 자동 생성 명령. 처음 시작할 때 유용

초보자 권장 시작 순서

1단계: /init 실행 → CLAUDE.md 자동 생성
         ↓
2단계: 반복되는 지시사항 → CLAUDE.md에 추가
         ↓
3단계: 파일 길어짐 → .claude/rules/로 분리
         ↓
4단계: /memory로 자동 메모리 확인 및 정리

처음에는 간단하게 /init으로 시작하고, 개발하면서 불편한 점이 생길 때마다 CLAUDE.md에 한 줄씩 추가해나가는 방식을 추천합니다. 🚀


📌 참고 문서: Claude Code 메모리 공식 한국어 문서

 

+ Recent posts