BinaryZero
BinaryZero
BinaryZero
전체 방문자
오늘
어제
  • 분류 전체보기 (36)
    • AI 도구 리뷰 (8)
    • AI 개발 활용 (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • 개인정보처리방침
  • 소개

공지사항

인기 글

태그

  • 바이브코딩
  • ai 자동화
  • mcp서버
  • ai에이전트
  • 코딩에디터
  • n8n
  • Playwright MCP
  • ai코딩
  • cursor ai
  • AI자동화
  • 멀티에이전트
  • 노코드
  • claude
  • AI 코딩
  • mcp 서버
  • Ollama
  • 개발생산성
  • n8n설치
  • ai개발도구
  • LLM

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
BinaryZero

BinaryZero

AI 개발 활용

CLAUDE.md 파일 작성법 — 프로젝트 컨텍스트 설정으로 AI 코딩 속도 10배 올리기

2026. 3. 25. 06:39

CLAUDE.md가 뭔데 이렇게 중요할까요?

Claude Code를 쓰면서 매번 이런 경험 해보신 적 없으신가요? "이 프로젝트는 Zustand 쓰는데 왜 Redux를 추천하지?", "파일 구조를 맨날 다시 설명해야 하네", "건드리지 말라고 한 auth 모듈을 또 수정했네". 이런 문제는 전부 CLAUDE.md 파일 하나로 해결됩니다.

CLAUDE.md는 프로젝트 루트에 놓는 마크다운 파일입니다. Claude Code가 세션을 시작할 때 이 파일을 가장 먼저 읽습니다. 쉽게 말하면 "이 프로젝트에서 지켜야 할 규칙서"를 AI에게 항상 들고 있게 하는 것입니다.

필자는 바이브코딩으로 실제 앱을 여러 개 출시하고 운영하고 있는데요, CLAUDE.md를 제대로 세팅한 전후로 생산성 차이가 체감상 10배는 납니다. 과장이 아닙니다. 오늘은 필자가 실제로 쓰는 CLAUDE.md 구조를 5개 섹션으로 나눠서 하나하나 설명해드리겠습니다.

섹션 1: 프로젝트 정체성 — "우리가 뭘 만들고 있는지"

첫 번째 섹션은 프로젝트의 기본 정보입니다. 여기서 핵심은 구체적으로 쓰는 것입니다.

# Project: GodLife Pixel
한국 시장 타겟 비주얼 습관 트래커 앱
- Stack: Expo 55, TypeScript strict, Zustand, Supabase
- Target: iOS + Android (EAS Build)
- Language: 한국어 UI, 영어 코드/주석

왜 이게 중요할까요? 이걸 안 쓰면 Claude가 React(웹)로 코드를 짜거나, JavaScript로 작성하거나, 웹 전용 프로젝트 구조를 만들어버립니다. 2분만 투자하면 이후 수십 시간의 수정 작업을 아낄 수 있습니다.

섹션 2: 아키텍처 규칙 — "파일은 어디에 두는지"

프로젝트의 폴더 구조와 패턴을 명시하는 섹션입니다. Claude가 새 파일을 만들 때 이 규칙을 따르게 됩니다.

# Architecture
- Components: src/components/ (아토믹 디자인)
- Screens: src/screens/{기능명}/
- State: src/store/ (Zustand 슬라이스, Redux 사용 금지)
- API: src/api/ (타입이 있는 서비스 함수)
- Types: src/types/ (공유 TypeScript 인터페이스)
- Navigation: Expo Router 파일 기반 라우팅

이걸 쓰고 나면 Claude가 생성하는 모든 새 파일이 정확한 위치에 만들어집니다. 컴포넌트를 lib/에 만든다거나, 스크린을 pages/에 만드는 일이 사라집니다.

섹션 3: 코딩 컨벤션 — "코드 스타일 통일"

이 섹션이 없으면 Claude의 응답마다 코딩 스타일이 달라집니다. 어떤 때는 클래스 컴포넌트, 어떤 때는 함수형. 어떤 때는 default export, 어떤 때는 named export. 이걸 명시적으로 잡아줍니다.

# Conventions
- 함수형 컴포넌트만 사용 (클래스 컴포넌트 금지)
- Named exports 사용 (default export 금지)
- 모든 스크린에 Error Boundary 적용
- API 호출은 반드시 try/catch로 감싸고 사용자 에러 메시지 표시
- const > let, var 사용 금지
- async/await 사용 (.then() 체인 금지)
- 비즈니스 로직 주석은 한국어, 기술 주석은 영어

실천 팁: 프로젝트에 이미 있는 코드를 훑어보고, 본인이 쓰는 패턴을 그대로 적으시면 됩니다. Claude가 만드는 코드가 기존 코드와 일관되게 됩니다.

섹션 4: 경계선 — "절대 하지 말아야 할 것" (가장 중요)

대부분의 개발자가 이 섹션을 빠뜨리는데요, 이게 사실 가장 중요한 섹션입니다. 필자가 이걸 추가하게 된 계기는 뼈아픈 경험 때문입니다.

한번은 Claude에게 "프로필 화면 개선해줘"라고 요청했는데, Claude가 "도움이 될 것 같아서" 인증 모듈까지 리팩토링해버렸습니다. 앱 전체가 깨졌습니다. 그날 이후 바로 NEVER 리스트를 만들었습니다.

# Boundaries
NEVER:
- auth 모듈(src/api/auth.ts)을 명시적 승인 없이 수정
- 테스트 파일 삭제 또는 이름 변경
- 마이그레이션 계획 없이 DB 스키마 변경
- 먼저 물어보지 않고 새 의존성 설치
- 요청하지 않은 기존 코드 리팩토링

ALWAYS:
- 현재 작업 범위 밖의 파일 수정 전 반드시 확인
- 기존 에러 핸들링 패턴 유지
- PR 제안 전 타입 체크 실행

핵심은 NEVER 리스트입니다. AI가 "도움이 될 것 같아서" 멋대로 하는 것을 원천 차단해줍니다. 이 섹션 하나만으로도 CLAUDE.md를 만들 가치가 있습니다.

섹션 5: 프로젝트 고유 지식 — "이 프로젝트만의 함정들"

모든 프로젝트에는 "문서에 안 나오는데 아는 사람만 아는 것"이 있습니다. 레거시 결정, 알려진 버그, 환경별 차이 같은 것들입니다.

# Knowledge
- AdMob: 개발 환경에서는 테스트 ID 사용, 실제 ID는 프로덕션 빌드에서만
- Supabase RLS: 모든 테이블에 Row Level Security 활성화됨
- EAS Build: dev 프로파일은 internal distribution 사용
- 알려진 이슈: Zustand persist 미들웨어가 Android의 Expo SecureStore와 충돌
- /legacy 엔드포인트는 동작하지만 deprecated됨, 사용 금지

이 섹션이 없으면 Claude는 반드시 이 지뢰밭 중 하나를 밟게 됩니다. 그리고 디버깅에 30분~1시간이 날아갑니다. 5분만 투자하면 이걸 방지할 수 있습니다.

실제 결과: Before vs After

필자가 2주간 CLAUDE.md 유무에 따른 차이를 직접 추적한 결과입니다.

CLAUDE.md 없을 때:

Claude 응답당 평균 3~4번 수정 지시를 해야 했습니다. "아니 Zustand 쓰라고", "그 폴더 아니고 src/components/에 넣어" 같은 것들이죠. 세션 시작할 때마다 15분씩 프로젝트를 설명해야 했고, 요청하지 않은 리팩토링으로 다른 부분이 깨지는 일도 빈번했습니다. 파일마다 코딩 스타일도 제각각이었습니다.

CLAUDE.md 넣은 후:

수정 지시가 응답당 0~1번으로 감소했습니다. 세션 시작 시 컨텍스트 설명 시간이 제로가 되었고, NEVER 리스트 덕분에 무단 리팩토링이 완전 차단되었습니다. 모든 새 파일이 기존 프로젝트 패턴과 일치하게 되었습니다.

고급 팁 4가지

팁 1: 하위 디렉토리 CLAUDE.md 활용하기

Claude Code는 하위 폴더의 CLAUDE.md도 읽습니다. 루트 파일을 상속하면서 로컬 컨텍스트를 추가하는 구조입니다.

project/
├── CLAUDE.md              (전역 규칙)
├── src/
│   ├── components/
│   │   └── CLAUDE.md      (컴포넌트 패턴, prop 규칙)
│   └── api/
│       └── CLAUDE.md      (API 패턴, 에러 처리)

프로젝트가 커지면 하나의 CLAUDE.md로는 한계가 옵니다. 이 계층 구조를 일찍 도입하면 나중에 편합니다.

팁 2: Git에 커밋하세요

CLAUDE.md는 코드베이스의 일부입니다. Git에 커밋해두면 팀원이 합류하거나, 한 달 후에 프로젝트로 돌아왔을 때 가장 빠른 온보딩 문서가 됩니다.

팁 3: 문제가 생길 때마다 업데이트하세요

Claude가 예상 밖의 행동을 할 때마다 "CLAUDE.md에 규칙을 추가했으면 방지할 수 있었나?"를 자문해보세요. 답이 "예"라면 즉시 추가하시면 됩니다. 필자의 CLAUDE.md는 몇 달간 꾸준히 성장해왔고, 갈수록 정교해지고 있습니다.

팁 4: 500줄을 넘기지 마세요

너무 짧으면 컨텍스트가 부족하고, 너무 길면 중요한 규칙이 묻힙니다. 대부분의 프로젝트에서 100~300줄이 최적입니다. 500줄을 넘기면 하위 디렉토리 파일로 분리하는 걸 권장합니다.

지금 바로 복사해서 쓸 수 있는 스타터 템플릿

아래 템플릿을 프로젝트 루트에 CLAUDE.md로 저장하고, 괄호 안을 본인 프로젝트에 맞게 채우시면 됩니다.

# Project: [프로젝트명]
[한 줄 설명]

## Stack
- Framework: [예: Next.js 16 / Expo 55 / Express]
- Language: [예: TypeScript strict]
- State: [예: Zustand / Redux / Context]
- Database: [예: Supabase / Firebase / PostgreSQL]
- Deployment: [예: Vercel / EAS / Docker]

## Architecture
- [폴더]: [역할]
- [폴더]: [역할]

## Conventions
- [코딩 스타일 규칙]
- [네이밍 규칙]
- [import 순서]

## Boundaries
NEVER:
- [Claude가 절대 하면 안 되는 것]

ALWAYS:
- [Claude가 항상 해야 하는 것]

## Knowledge
- [프로젝트 고유 정보]
- [알려진 이슈]
- [환경별 주의사항]

마무리: 컨텍스트가 곧 생산성입니다

CLAUDE.md는 단순한 설정 파일이 아닙니다. "대충 도와주는 AI"와 "내 프로젝트를 이해하는 AI" 사이의 다리입니다. 5개 섹션, 100줄 이내로 시작해보세요. 일주일만 써보시면 없이 코딩하던 시절로 돌아갈 수 없을 겁니다.

다음 글에서는 Cursor 사용자를 위한 .cursorrules 파일 세팅법을 다룰 예정입니다.

이 글에 소개된 서비스와 도구는 작성 시점 기준이며, 업데이트에 따라 변경될 수 있습니다.

'AI 개발 활용' 카테고리의 다른 글

Continue.dev 설치해서 VS Code에서 로컬 AI 코딩 어시스턴트 쓰기 — Ollama 연동부터 커스텀 프롬프트까지  (0) 2026.03.26
Supabase MCP 서버로 Claude에서 직접 DB 쿼리하기 — 설치부터 실전 활용까지  (0) 2026.03.26
Claude Code Channels 설치하고 Discord·Telegram에서 코딩하기 — 설정부터 실전 활용까지  (0) 2026.03.24
Claude Desktop에 Playwright MCP 서버 연결해서 웹 자동화하기  (0) 2026.03.24
n8n 설치부터 AI 워크플로우 만들기 — 노코드 자동화 실전 가이드  (0) 2026.03.24
    'AI 개발 활용' 카테고리의 다른 글
    • Continue.dev 설치해서 VS Code에서 로컬 AI 코딩 어시스턴트 쓰기 — Ollama 연동부터 커스텀 프롬프트까지
    • Supabase MCP 서버로 Claude에서 직접 DB 쿼리하기 — 설치부터 실전 활용까지
    • Claude Code Channels 설치하고 Discord·Telegram에서 코딩하기 — 설정부터 실전 활용까지
    • Claude Desktop에 Playwright MCP 서버 연결해서 웹 자동화하기
    BinaryZero
    BinaryZero
    에이전틱 AI 시대, 개발 생산성을 10배 높이는 노하우를 공유합니다. Cursor AI, Claude Code, MCP 서버 구축부터 로컬 LLM 활용법까지 최신 AI 개발 도구와 실전 코딩 자동화 기술을 다루는 테크 블로그입니다.

    티스토리툴바