0
.claude/ 폴더 완전 해부 — Claude Code를 제대로 길들이는 법
devops
요약
기사 전체 정리
Claude Code 쓰면서 .claude/ 폴더 한 번도 안 열어본 사람 꽤 많을 텐데, 이 폴더 구조를 제대로 이해하면 Claude Code의 동작을 프로젝트에 맞게 완전히 커스터마이징할 수 있다는 이야기임.
두 개의 .claude 폴더
.claude/폴더는 사실 두 군데에 존재함. 프로젝트 루트의.claude/는 팀 공유 설정이고, 홈 디렉토리의~/.claude/는 개인 설정 + 세션 히스토리 저장소임- 프로젝트 레벨 폴더는 git에 커밋해서 팀 전체가 동일한 규칙을 공유하는 게 핵심임
CLAUDE.md — 가장 중요한 파일
CLAUDE.md는 Claude Code가 세션 시작할 때 제일 먼저 읽어서 시스템 프롬프트에 넣는 파일임. 여기 적힌 건 세션 내내 따름- "테스트 먼저 작성해", "console.log 대신 커스텀 로거 써" 같은 지시를 넣으면 진짜로 지킴
- 프로젝트 루트,
~/.claude/CLAUDE.md(글로벌), 하위 디렉토리별로 각각 둘 수 있고, Claude는 이걸 전부 읽어서 합침
중요
> CLAUDE.md는 200줄 이하로 유지할 것. 그 이상 길어지면 컨텍스트를 너무 많이 잡아먹어서 오히려 지시 준수율이 떨어진다는 거임.
- 넣어야 할 것: 빌드/테스트/린트 커맨드, 아키텍처 결정사항, 비자명한 gotcha, import 컨벤션, 폴더 구조
- 넣지 말아야 할 것: 린터/포매터가 이미 처리하는 것, 장문의 이론 설명, 링크로 대체 가능한 문서
CLAUDE.local.md는 개인 전용 오버라이드 파일로, 자동으로 gitignore 처리됨. 팀 설정 건드리지 않고 개인 취향 반영할 때 씀
rules/ 폴더 — CLAUDE.md가 커지면 이걸로 분리
.claude/rules/안의 모든 마크다운 파일이CLAUDE.md와 함께 자동 로드됨api-conventions.md,testing.md,database.md식으로 관심사별로 쪼개면 각 담당자가 자기 영역만 관리할 수 있음- **경로 스코핑이 진짜 강력함 — YAML frontmatter에
paths를 지정하면 해당 경로 파일 작업할 때만 로드됨. 예를 들어src/api/</strong>스코프를 걸면 React 컴포넌트 수정할 때는 로드 안 됨
commands/ 폴더 — 커스텀 슬래시 명령어
.claude/commands/에 마크다운 파일을 넣으면 그대로 슬래시 커맨드가 됨.review.md→/project:review`백틱에!붙이면 셸 명령어 실행 결과를 프롬프트에 주입할 수 있음. 단순 저장 텍스트가 아니라 동적 프롬프트가 되는 거임$ARGUMENTS로 인자 전달도 가능 —/project:fix-issue 234하면 이슈 234 내용을 자동으로 가져와서 프롬프트에 넣어줌- 프로젝트 커맨드는
.claude/commands/에, 개인 커맨드는~/.claude/commands/에 두면/user:command-name으로 접근 가능
skills/ 폴더 — 알아서 발동하는 워크플로우
- commands와 비슷하게 생겼지만 결정적 차이가 있음: 슬래시 커맨드 없이도 Claude가 대화 맥락 보고 알아서 발동시킴
SKILL.md에 YAML frontmatter로 설명을 적어두면, 대화 내용이 해당 설명과 매칭될 때 자동 호출됨- commands는 단일 파일이지만 skills는 폴더 단위 패키지 — 보조 문서 파일을 함께 번들링할 수 있음
agents/ 폴더 — 전문 서브에이전트
.claude/agents/에 마크다운으로 서브에이전트 페르소나를 정의할 수 있음. 각 에이전트는 별도 시스템 프롬프트, 사용 가능 도구, 모델 설정을 가짐- 예를 들어
code-reviewer.md를 만들면 코드 리뷰 요청 시 독립된 컨텍스트 윈도우에서 작업하고 결과만 돌려줌. 메인 세션이 토큰으로 더러워지지 않음 tools필드로 에이전트가 할 수 있는 걸 제한함 — 보안 감사용 에이전트는 Read/Grep/Glob만 허용하고 Write는 막는 식model필드로 저렴한 모델 지정 가능. 읽기 전용 탐색은 Haiku로 충분하고, Sonnet/Opus는 진짜 필요한 작업에만 쓰면 됨
settings.json — 권한 관리
.claude/settings.json에서 Claude가 뭘 할 수 있고 뭘 못 하는지 제어함- allow 리스트: 확인 없이 바로 실행 가능한 명령어 (
npm run *,git *, 파일 읽기/쓰기 등) - deny 리스트: 무조건 차단 (
rm -rf,curl,.env접근 등) - 둘 다 아닌 건 실행 전에 물어봄 — 이 중간 지대가 의도된 안전장치임
settings.local.json은 개인용 권한 오버라이드. 자동 gitignore 처리됨
글로벌 ~/.claude/ 폴더
~/.claude/projects/에 프로젝트별 세션 기록과 자동 메모리가 저장됨. Claude가 작업하면서 발견한 명령어, 패턴, 아키텍처 인사이트를 알아서 기록함- Claude가 "알려준 적 없는 걸 기억하는" 것처럼 보이면 여기 저장된 자동 메모리 때문임.
/memory로 확인·수정 가능
팁
> 처음 시작할 때 권장 순서: /init으로 CLAUDE.md 생성 → settings.json에 allow/deny 설정 → 자주 쓰는 워크플로우를 commands로 만들기 → CLAUDE.md가 커지면 rules/로 분리 → 개인 취향은 ~/.claude/CLAUDE.md에
- 결국
.claude/폴더는 "나는 누구고, 이 프로젝트는 뭐고, 어떤 규칙을 따라야 하는지"를 Claude에게 알려주는 프로토콜임. 이걸 명확하게 정의할수록 Claude를 교정하는 시간은 줄고 실제 작업 시간은 늘어남
댓글
댓글
댓글을 불러오는 중...