Claude Code 구성을 위한 .claude/ 폴더 구조 이해하기

프로젝트 및 전역 구성 폴더
.claude 디렉터리는 두 가지가 있습니다: 하나는 git에 커밋되는 팀 구성을 위한 프로젝트 루트에 있고, 다른 하나는 세션 기록과 같은 개인 선호도 및 기기 로컬 상태를 위한 홈 디렉터리(~/.claude/)에 있습니다.
CLAUDE.md: 지침 매뉴얼
CLAUDE.md는 각 세션 시작 시 Claude의 시스템 프롬프트에 로드되어 대화 내내 따릅니다. 프로젝트 루트, 전역 선호도를 위한 ~/.claude/, 또는 폴더별 규칙을 위한 하위 디렉터리에 CLAUDE.md를 둘 수 있습니다.
효과적인 CLAUDE.md 내용에는 다음이 포함됩니다:
- 빌드, 테스트, 린트 명령어(npm run test, make build 등)
- 주요 아키텍처 결정 사항
- 명확하지 않은 함정
- 가져오기 규칙, 명명 패턴, 오류 처리 스타일
- 주요 모듈의 파일 및 폴더 구조
CLAUDE.md는 200줄 이하로 유지하세요. 그보다 긴 파일은 너무 많은 컨텍스트를 소비하기 시작하여 Claude의 지침 준수도가 떨어집니다.
CLAUDE.md 구조 예시
# 프로젝트: Acme API명령어
npm run dev # 개발 서버 시작 npm run test # 테스트 실행 (Jest) npm run lint # ESLint + Prettier 검사 npm run build # 프로덕션 빌드
아키텍처
- Express REST API, Node 20
- Prisma ORM을 통한 PostgreSQL
- 모든 핸들러는 src/handlers/에 위치
- 공유 타입은 src/types/에
규칙
- 모든 핸들러에서 요청 검증에 zod 사용
- 반환 형태는 항상 { data, error }
- 클라이언트에 스택 추적을 절대 노출하지 않음
- console.log 대신 로거 모듈 사용
주의사항
- 테스트는 모의 객체가 아닌 실제 로컬 DB를 사용합니다. 먼저
npm run db:test:reset실행 - 엄격한 TypeScript: 사용하지 않는 가져오기는 절대 없음
CLAUDE.local.md를 통한 개인 재정의
전체 팀에 적용되지 않는 개인 선호도를 위해 프로젝트 루트에 CLAUDE.local.md를 생성하세요. Claude는 기본 CLAUDE.md와 함께 이를 읽으며, 개인적인 조정이 저장소에 절대 들어가지 않도록 자동으로 gitignore됩니다.
rules/ 폴더를 통한 모듈식 지침
더 큰 팀의 경우, rules/ 폴더는 단일 큰 CLAUDE.md 파일보다 확장성이 더 좋은 모듈식 지침을 제공합니다.
📖 전체 소스 읽기: HN AI Agents
👀 See Also

종단 간 LLM 스택 추적: 키 입력부터 스트리밍된 토큰까지
소프트웨어 엔지니어가 LLM에 프롬프트를 보낼 때 스택의 모든 계층에서 발생하는 일을 추적하는 포괄적인 문서를 작성했습니다. 클라이언트 측 토큰 카운팅, 네트워크 프로토콜, API 게이트웨이, 안전 분류기, 토큰화, KV 캐시, 샘플링 파이프라인, 스트리밍 메커니즘을 다룹니다.

OpenClaw 업데이트 후 'Cannot find module' 오류 해결 방법
OpenClaw를 2026.3.24 버전에서 2026.4.5로 업데이트한 후, 사용자들이 'Cannot find module @buape/carbon' 오류를 겪고 있습니다. 해결 방법은 패키지를 전역으로 설치하는 대신 수동으로 설치 후 스크립트를 실행하는 것입니다.

vLLM 설정 및 320GB VRAM을 갖춘 10x NVIDIA V100 서버에서의 테스트
법률 업무를 위한 로컬 AI 서버를 구축한 변호사가 10x Tesla V100 SXM2 32GB GPU에서의 vLLM 테스트 결과를 공유하며, Volta 아키텍처에서 작동하는 것(FP16 비양자화, bitsandbytes 4비트)과 작동하지 않는 것(GPTQ, AWQ, FlashAttention2)을 상세히 설명합니다.

SOUL.md 규칙이 긴 AI 에이전트 세션에서 표류하는 문제와 해결 방법
SOUL.md 규칙은 처음 10-15개의 메시지에서는 완벽하게 작동하지만, 대화 컨텍스트가 초기 시스템 프롬프트를 재정의하면서 20-30번째 메시지 즈음부터는 점차 벗어나기 시작합니다. 해결책은 각각의 다른 작업 전에 세션을 초기화하기 위해 /new를 더 적극적으로 사용하는 것입니다.