진도
🧬 Stage 3 · 프롬프트 → 컨텍스트 엔지니어링

AI에게 무엇을 줄지
설계하는 법

프롬프트를 잘 쓰는 것과 컨텍스트를 잘 설계하는 것은 다릅니다. 프롬프트는 한 번 쓰고 끝. 컨텍스트 엔지니어링은 시스템을 만드는 것입니다. 이 Stage가 끝나면 AI가 매번 같은 결과를 내는 "공장"이 손에 들어옵니다.

학습 시간 약 3~4시간
핵심 하네스 3종
산출물 3개
✦ 이 커리큘럼을 관통하는 한 문장
"기술은 AI가, 영혼은 사람이"
Stage 1·2에서 만든 문서들이 "무엇을 만들지"였다면, Stage 3는 AI가 그 문서를 어떻게 읽고 따를지를 설계합니다. 컨텍스트 엔지니어링은 영혼(나)과 기술(AI) 사이의 통역 시스템입니다.
🎯 Stage 2에서 받아온 것 → Stage 3에서 만들 것
예시 프로젝트: AI 뉴스레터 자동화 서비스
Stage 2의 PRD.md초안 CLAUDE.md를 가져와서 — Karpathy 4원칙으로 다듬은 완성형 CLAUDE.md, 자동 트리거되는 SKILL.md 3개, 위험 명령을 막는 settings.json Hooks를 만듭니다. 이 3종 세트가 Stage 5의 Claude Code를 안전하게 굴리는 보호막이 됩니다.
Stage 1: 기획
Stage 2: 문서화
Stage 3: 컨텍스트 엔지니어링
Stage 5: Claude Code
Stage 6: 배포
Stage 7: 자동화

Karpathy 4원칙

Andrej Karpathy의 AI 협업 원칙 — 2026년 현업 표준이 된 4가지 황금률

Andrej Karpathy(전 OpenAI · Tesla AI 디렉터)가 정립한 AI 협업 4원칙은 2025~2026년에 걸쳐 사실상 모든 시니어 엔지니어의 표준이 됐습니다. 비개발자도 이 4원칙만 지키면 AI가 폭주하는 사고를 90% 막을 수 있습니다.

PRINCIPLE 01
생각 먼저, 코드 나중
Think Before Coding
"바로 만들어줘"는 금지. 먼저 무엇을·왜·어떻게의 계획을 받아내고, 검토한 뒤에 구현으로 넘어갑니다. AI는 계획 단계에서 가장 똑똑합니다.
📰 뉴스레터 적용 "발송 기능 만들어줘" ❌ → "발송 기능을 만들기 전에 어떤 라이브러리를 쓸지, 실패 처리는 어떻게 할지 먼저 계획안 보여줘" ⭕
PRINCIPLE 02
단순함이 먼저
Simplicity First
동작하는 가장 단순한 해법부터. AI는 과하게 짤 수 있습니다. "더 단순한 방법은 없는지" 항상 물어보세요.
📰 뉴스레터 적용 "Redis로 큐 만들어줘" ❌ → "구독자 1,000명까진 cron + DB 한 줄로 끝내고, 5,000명 넘을 때 큐 도입하자" ⭕
PRINCIPLE 03
최소한만 수정
Surgical Changes
한 번에 한 파일만 손대도록 지시. "전체 리팩토링" 금지. 작은 변경을 자주 — 무엇이 망가졌는지 추적 가능해야 합니다.
📰 뉴스레터 적용 "발송 로직 다시 짜줘" ❌ → "send-email.ts의 retry 부분만 3회로 바꾸고, 다른 파일은 건드리지 마" ⭕
PRINCIPLE 04
목표에서 역산
Goal-Driven
"이걸 다 끝냈을 때 어떤 모습이어야 하나"를 먼저 정의. 그 모습에서 거꾸로 작업을 분해. 중간에 길을 잃지 않습니다.
📰 뉴스레터 적용 "랜딩페이지 만들어" ❌ → "최종 모습: 가입 → 결제 → 첫 메일 받기까지 3분. 이 흐름을 막는 모든 단계만 만들어" ⭕
🎯 4원칙을 한 줄 프롬프트로
매 작업 시작 시 이 한 줄을 붙이세요:
"Karpathy 4원칙대로: 먼저 계획 → 단순한 해법 → 최소 수정 → 목표 역산. 코드 짜기 전에 계획부터 보여줘."

이 한 줄이 AI의 폭주를 막는 가장 효과적인 가드레일입니다. CLAUDE.md에 박아두면 매번 자동 적용됩니다.

CLAUDE.md 완전 마스터

짧을수록 강하다 — 100줄의 헌법이 1,000줄의 매뉴얼을 이긴다

📏 황금률: 100줄 이내 (Boris Cherny 방식)

Anthropic의 Boris Cherny가 정립한 황금률입니다. CLAUDE.md는 100줄을 넘지 않는다. 매 세션마다 AI 컨텍스트에 자동 로드되기 때문에, 길수록 다른 정보를 밀어냅니다. 길게 쓰고 싶은 것들은 별도 파일로 분리하고 CLAUDE.md엔 "참조 링크"만.

✅ CLAUDE.md에 들어갈 것 vs 별도 파일로 뺄 것
들어갈 것: 절대 금지 사항 / 핵심 규칙 / 응답 언어 / 사용 라이브러리 목록 / 자주 쓰는 명령어 / 진짜 실수했던 것의 교훈
뺄 것: API 명세 → docs/API.md · DB 스키마 → docs/SCHEMA.md · 디자인 가이드 → docs/UI_GUIDE.md

CLAUDE.md엔 "DB 스키마는 docs/SCHEMA.md 참조" 한 줄만 적습니다. AI가 필요할 때 읽습니다.
⚠️ CRITICAL 키워드 — AI의 주의를 끄는 법

AI는 인간처럼 강조 신호에 반응합니다. 진짜 절대 어기면 안 되는 규칙엔 CRITICAL, NEVER, ALWAYS 같은 키워드를 씁니다. 남용하면 효과가 없으니 진짜 중요한 3~5개에만.

CLAUDE.md (예시 발췌) ★ CRITICAL 사용법
## CRITICAL — 반드시 지킬 것 - NEVER commit secrets (API 키, .env 내용물) - NEVER run `git push --force` on main branch - ALWAYS read PRD.md before adding new feature - ALWAYS respond in Korean - ALWAYS show plan before writing code (Karpathy 1원칙)
🧠 진짜 실수했던 것만 적기
CLAUDE.md를 처음 쓰는 사람의 실수: 일반론적 모범 답안을 적기. 예: "코드는 깨끗하게 짜자" → 의미 없음. 대신 "지난주에 send 함수를 .env 없이 짜서 카카오 발송이 멈췄다 → 카카오 API 호출 시 ALWAYS process.env.KAKAO_KEY 사용"처럼 실제 실패 사례에서 나온 교훈을 적습니다.
📜 뉴스레터 서비스 CLAUDE.md 실전 예시 (~100줄)
CLAUDE.md newsletter-mvp · 95 lines
# 뉴스레터 자동화 서비스 — 에이전트 지침서 ## 프로젝트 매일 오전 8시 AI가 IT/비즈니스 뉴스를 수집·요약해서 구독자에게 이메일로 자동 발송. 월 9,900원 구독. 1인 창업가가 운영. 비개발자. ## 기술 스택 - Frontend: Next.js 15 (App Router) + Tailwind - Backend: Supabase (Auth + DB + Edge Functions) - 자동화: n8n (cron 발송) · 별도 권한, 수정 금지 - AI: Claude API (claude-sonnet-4) - 결제: Stripe Checkout - 이메일: SendGrid - 배포: Vercel ## CRITICAL — 반드시 지킬 것 - NEVER commit .env, .env.local 파일 - NEVER 카카오 API 작업 (Stage 7에서 추가) - NEVER n8n 워크플로우 직접 수정 - NEVER npm install 을 자동 실행 (확인 후 진행) - ALWAYS 한국어로 응답 - ALWAYS Karpathy 4원칙 (계획 → 단순 → 최소 수정 → 목표 역산) - ALWAYS 코드 작성 전 plan 보여주기 ## 코딩 규칙 - TypeScript 사용 (any 금지) - Server Component 우선, Client는 정말 필요할 때 - 환경변수: process.env.* (KAKAO_KEY, SENDGRID_KEY 등) - 에러는 try/catch + 한국어 로그 - 함수명: camelCase, 파일명: kebab-case ## 자주 쓰는 명령 - 개발: pnpm dev - 빌드: pnpm build - 타입체크: pnpm typecheck - DB 마이그레이션: pnpm db:push ## 문서 참조 - 제품 요구사항: docs/PRD.md - 기술 구조: docs/ARCHITECTURE.md - DB 스키마: docs/SCHEMA.md - API 명세: docs/API.md - 디자인 가이드: docs/UI_GUIDE.md - 결정 기록: docs/ADR.md ## 작업 흐름 1. 새 기능 요청 → PRD.md 해당 섹션 먼저 읽기 2. 영향받을 파일 목록 + 변경 계획 보여주기 3. 사용자 승인 후 구현 4. 완료 후 ADR.md에 결정 사항 1줄 추가 ## 실전 교훈 (실제 망가졌던 것) - 2026-04-12: send-email 무한 재시도로 SendGrid 일일 한도 초과 → 재시도 ALWAYS 3회 제한 (exponential backoff) - 2026-04-20: 구독 취소 후에도 발송됨 → 발송 직전 ALWAYS subscriber.status === 'active' 검증 - 2026-04-28: claude-3 모델로 짠 코드를 sonnet-4로 안 바꿈 → 모델 ALWAYS claude-sonnet-4-20250514 사용
📈 살아있는 문서로 만들기
CLAUDE.md는 한 번 쓰고 끝이 아닙니다. 매번 사고가 날 때마다 1~2줄씩 추가합니다. "실전 교훈" 섹션이 시간이 갈수록 늘어납니다. 6개월 후 그 부분이 가장 비싼 자산입니다 — 같은 실수를 두 번 안 하게 만드는 면역 체계.
⚡ CLAUDE.md 작성 프롬프트
내 프로젝트의 CLAUDE.md를 100줄 이내로 작성해줘. 프로젝트: AI 뉴스레터 자동화 서비스 운영자: 비개발자 1인 창업가 스택: Next.js 15 + Supabase + n8n + Claude API + SendGrid + Stripe 구조 (Boris Cherny 100줄 황금률): 1. 프로젝트 (3줄 요약) 2. 기술 스택 (목록) 3. CRITICAL — NEVER/ALWAYS 5~7개 (진짜 절대 어기면 안 되는 것만) 4. 코딩 규칙 (5줄 이내) 5. 자주 쓰는 명령 6. 문서 참조 (CLAUDE.md에 안 적고 별도 파일로 뺄 것들) 7. 작업 흐름 (Karpathy 4원칙 적용) 8. 실전 교훈 (빈 섹션, 시간 지나면서 채워질 것) 마크다운, 100줄 이내, 일반론 금지, 진짜 적용 가능한 규칙만.

SKILL.md 작성법

CLAUDE.md가 헌법이라면 SKILL은 시행령 — 특정 상황에 자동으로 발동하는 규칙

Skill은 "특정 작업에서만 적용되는 미니 규칙 묶음"입니다. CLAUDE.md는 항상 로드되지만, Skill은 특정 키워드·파일·상황에서만 자동 활성화됩니다. 컨텍스트 낭비 없이 정밀한 규율이 가능해집니다.

⚖️ 슬래시 명령 vs 자동 트리거
슬래시 명령 방식: /newsletter-draft 입력 → SKILL 활성화. 사용자가 의도적으로 호출.
자동 트리거 방식: 사용자가 "뉴스 요약" 같은 키워드를 쓰면 자동으로 SKILL 로드. 더 매끄럽지만 정확한 트리거 정의가 필요.

처음엔 슬래시 명령부터, 익숙해지면 자동 트리거로.
.claude/skills/ 폴더 구조 tree
my-newsletter-mvp/ ├── CLAUDE.md # 항상 로드 ├── .claude/ │ └── skills/ │ ├── newsletter-draft.md # /newsletter-draft 호출 시 │ ├── seo-check.md # /seo-check 호출 시 │ └── send-preview.md # /send-preview 호출 시 ├── docs/ └── src/
🔌 Karpathy Skills 플러그인
Andrej Karpathy 본인이 만든 karpathy-skills 플러그인은 30개 이상의 검증된 SKILL을 제공합니다. 설치: Claude Code에서 /plugin install karpathy-skills. 코드 리뷰·리팩토링·테스트 작성 등 자주 쓰는 작업의 모범 답안이 들어있습니다. 처음에는 이걸 깔고 사용하면서 패턴을 익히고, 그 후 내 프로젝트 전용 SKILL을 만드세요.
🛠️ 뉴스레터 서비스용 커스텀 Skill 3개
📰
newsletter-draft.md
/newsletter-draft
수집된 뉴스 5개를 받아 일관된 포맷의 뉴스레터 초안을 생성. 톤·길이·이모지 사용 규칙 자동 적용.
흐름: 뉴스 5개 입력 → 헤드라인 생성 → 1줄 요약 × 5 → 인사말 → 마무리 멘트 → 마크다운 출력
🔍
seo-check.md
/seo-check
콘텐츠 SEO 점수를 체크. 타이틀 길이, 메타 디스크립션, 키워드 밀도, 이미지 alt 검증.
흐름: 콘텐츠 입력 → 7개 항목 체크 → 0~100점 산출 → 개선 제안 3가지 → 한 줄 결론
📨
send-preview.md
/send-preview
발송 직전 미리보기 검토. 깨진 링크, 오타, 환경변수 누락, 이미지 로딩 여부 자동 체크.
흐름: 뉴스레터 초안 입력 → 6단계 검증 → 통과/실패 표시 → 위험 항목 빨간색 → 발송 가능 여부 판단
⚡ SKILL.md 생성 프롬프트
내 뉴스레터 자동화 서비스에 필요한 SKILL.md 3개를 작성해줘. 각 SKILL 구조: - name: 슬래시 명령어 - trigger: 자동 활성화 조건 (특정 키워드·파일 패턴·상황) - description: 1줄 설명 - when_to_use: 언제 쓰는지 (3가지 상황) - workflow: 6단계 이내 작업 흐름 - output_format: 출력 형식 명세 - example: 실제 입출력 예시 1쌍 만들 SKILL 3개: 1. newsletter-draft — 뉴스 5개 → 뉴스레터 초안 2. seo-check — 콘텐츠 SEO 점수 3. send-preview — 발송 전 미리보기 검증 마크다운 형식. .claude/skills/ 폴더에 그대로 저장 가능하게.

settings.json Hooks

AI가 위험한 행동을 시도하면 자동으로 막는 가드레일

Hook은 "특정 시점에 자동으로 실행되는 스크립트"입니다. AI가 위험한 명령을 치려는 순간 가로채서 차단하거나, 작업이 끝나면 자동으로 검증합니다. 인간이 매번 감시할 필요 없는 자동 면역 체계.

🛡️ 2가지 핵심 Hook
PreToolUse
위험 명령어 자동 차단
AI가 도구(Bash, Edit 등)를 호출하기 직전 가로챔. 위험 패턴이면 차단하고 사용자에게 확인 요청.
차단 예:
• rm -rf
• git push --force
• .env 파일 수정
• node_modules 삭제
Stop
작업 종료 시 자동 검증
AI가 "끝났습니다" 보고 직후 자동 실행. lint·type·build 통과 시에만 진짜 종료.
자동 실행:
• pnpm typecheck
• pnpm lint
• pnpm build
• 실패 시 AI에게 재작업 요청
.claude/settings.json (뉴스레터 서비스 완성 예시) JSON
{ "hooks": { "PreToolUse": [ { "matcher": "Bash", "hooks": [{ "type": "command", "command": "./hooks/block-dangerous.sh", // rm -rf, git push --force, .env 수정 차단 }] }, { "matcher": "Edit|Write", "hooks": [{ "type": "command", "command": "./hooks/protect-env.sh", // .env, .env.local 수정 시 사용자 확인 }] } ], "Stop": [{ "hooks": [{ "type": "command", "command": "pnpm typecheck && pnpm lint && pnpm build", // 실패하면 AI가 다시 일하게 만듦 }] }] }, "permissions": { "allow": ["Bash(pnpm:*)", "Bash(git:*)", "Read", "Edit", "Write"], "deny": ["Bash(rm -rf:*)", "Bash(git push --force:*)"] } }
💚 Hook 첫 셋업의 효과
처음에는 귀찮게 느껴집니다. 하지만 한 번이라도 "AI가 production DB를 wipe했다" 같은 사고가 나면 평생 켜두게 됩니다. Hook이 없는 AI 코딩은 안전벨트 없이 운전하는 것과 같습니다. Stage 5에서 첫 코드 작업 시작 전에 반드시 settings.json부터.

컨텍스트 로트(Context Rot) 방지

대화가 길어질수록 AI가 점점 멍청해지는 현상 — 막을 줄 알아야 합니다

컨텍스트 로트(Context Rot)란 대화 창에 너무 많은 내용이 쌓여서 AI가 핵심을 잃어버리는 현상입니다. 이전 결정과 모순된 코드를 짜고, 이미 고친 버그를 다시 만들고, 톤이 흐트러집니다. 70% 룰을 알면 막을 수 있습니다.

📊 70% 룰 — 컨텍스트 사용량 신호등
현재 컨텍스트 사용량 (예시)
0%50%70%100%
0~50%
안전 영역 — 자유롭게 작업. AI 정확도 최고.
50~70%
주의 영역 — 새 작업이면 /compact 고려.
70~100%
로트 영역 — 즉시 /clear 또는 새 세션.
⚙️ /clear vs /compact 차이
/clear: 대화 완전 초기화. CLAUDE.md만 다시 로드. 다른 작업으로 넘어갈 때.
/compact: 핵심만 요약해서 유지. 같은 작업을 계속할 때.

헷갈리면 /clear가 안전. 잃을 게 없으면 비우는 게 정답입니다.
🚱 한 작업 = 한 세션 — 주방 싱크대 안티패턴
❌ 주방 싱크대 패턴
하나의 세션에 "PRD도 검토하고, 발송 코드도 짜고, 디자인도 봐주고, 결제 로직도 짜줘" 다 던지기. 컨텍스트가 폭발하고 결국 모든 작업이 어중간하게 끝남.
✅ 한 작업 = 한 세션
세션 1: 발송 코드만 → /clear → 세션 2: 결제 로직만 → /clear → 세션 3: 디자인 검토만. 각 세션이 깨끗하고 결과물이 정확.
🧹 세션 종료 의식 만들기
한 작업이 끝나면 매번 같은 종료 의식을 가지세요:
① 결과물을 git commit → ② 배운 점이 있으면 CLAUDE.md "실전 교훈"에 1줄 추가 → ③ /clear → ④ 새 작업 시작.

의식이 습관이 되면 컨텍스트 로트는 영원히 사라집니다.

장PM 에이전트 설계서 방법론

큰 작업을 5단계로 분해해서 AI 폭주 없이 완주하는 워크플로우

"뉴스레터 자동화 시스템 만들어줘"처럼 큰 작업을 한 번에 시키면 AI는 100% 길을 잃습니다. 장PM이 정립한 5단계 워크플로우로 분해하면 큰 작업도 안전하게 완주할 수 있습니다. 이게 2026년 시니어들이 큰 기능을 짜는 표준 방식입니다.

STEP 01
Blueprint
전체 그림 1장. "최종 모습 + 큰 단계 5개"
STEP 02
Deep-Dive
각 단계를 파일·함수 단위로 분해. 의문점 모두 해소
STEP 03
구현
설계서대로 한 단계씩. Karpathy 4원칙 적용
STEP 04
AutoResearch
막히면 AI가 스스로 문서 조사. 답을 가져옴
STEP 05
Reflect
완료 후 회고. CLAUDE.md "실전 교훈"에 추가
📐 각 단계의 책임
Blueprint: 사람이 주도. AI는 초안 보조. 여기서 모든 큰 결정을 끝냄.
Deep-Dive: AI가 주도. 사람은 검토 + 의문점 질문.
구현: AI가 작성. 사람은 단계별 승인.
AutoResearch: AI가 막힐 때 스스로 docs/ 폴더와 외부 문서 검색.
Reflect: 사람과 AI 함께. 무엇이 잘됐고 무엇이 어려웠는지.
📰 뉴스레터 자동화 에이전트 설계서 예시
Blueprint (1장): "사용자 가입 → 주제 선택 → 결제 → 매일 8시 자동 메일. 5개 모듈: auth, plan, payment, scheduler, sender"
Deep-Dive: 각 모듈마다 파일 목록 + 함수 시그니처 + 의존성 정리.
구현: auth → plan → payment → scheduler → sender 순서로. 각 모듈 완료 후 git commit.
AutoResearch: "Stripe webhook 검증" 막힘 → AI가 Stripe 공식 문서 읽고 답변.
Reflect: "scheduler를 cron이 아닌 n8n으로 한 게 신의 한 수 → 다음에도 외부 자동화는 n8n 우선"을 CLAUDE.md에 추가.
⚡ 에이전트 설계서 작성 프롬프트 (장PM 방법론)
큰 기능을 짜기 전에 장PM 5단계 방법론으로 설계서를 먼저 만들어줘. 기능: AI 뉴스레터 자동화 서비스의 발송 시스템 (Sender 모듈) 역할: 매일 오전 8시, 활성 구독자 전원에게 개인화된 뉴스레터 발송 작성할 5단계: [1. Blueprint] (1장 요약) - 최종 모습 한 단락 - 큰 단계 3~5개 [2. Deep-Dive] - 파일 목록 (절대경로) - 핵심 함수 시그니처 (TypeScript) - 외부 의존성 (라이브러리·API·환경변수) - 의문점 + 결정한 답 [3. 구현 체크리스트] - 작업 순서 5~8개 (한 줄씩) - 각 작업 후 git commit 메시지 안 [4. AutoResearch 항목] - 막힐 가능성 있는 지점 3개 - 각 지점에서 참조할 외부 문서 URL [5. Reflect 질문지] - 완료 후 자문할 질문 5개 - CLAUDE.md "실전 교훈"에 추가될 후보 형식 마크다운, AI가 그대로 따라할 수 있는 수준의 구체성으로.

🎯 Stage 3 산출물 — 이걸 만들어야 끝입니다
내 손으로 만든 3종 하네스 세트
읽기만 하면 의미 없습니다. Stage 2에서 만든 폴더에 아래 3종을 직접 넣으세요. 이 3종이 Stage 5의 Claude Code를 안전하게 굴리는 보호막이자 자동화 엔진이 됩니다.
📜 CLAUDE.md — 뉴스레터 서비스 전용 지침서 완성본
Stage 2의 초안을 100줄 이내로 압축. CRITICAL 5~7개, 코딩 규칙, 자주 쓰는 명령, 문서 참조, 작업 흐름(Karpathy 4원칙), 실전 교훈(빈 섹션) 포함. 파일명: CLAUDE.md (프로젝트 루트)
🛠️ .claude/skills/ — SKILL.md 3개 완성
newsletter-draft.md, seo-check.md, send-preview.md 각각 작성. trigger·workflow·output_format·example 포함. 파일명: .claude/skills/*.md
🛡️ settings.json — Hooks 가드레일 설정 완성
PreToolUse(위험 명령 차단) + Stop(자동 검증) + permissions(allow/deny). 위험 명령은 명시적으로 차단. 파일명: .claude/settings.json
📎 Stage 연결 고리: CLAUDE.md는 Stage 5에서 Claude Code 첫 실행 시 자동 로드됩니다. .claude/skills/ 3개는 Stage 5 실습에서 직접 호출해 사용합니다. settings.json은 Stage 5~6 전체 작업의 보호막으로 작동합니다. 이 3종이 없으면 Stage 5는 위험한 모험, 있으면 안전한 자동화입니다.

🤖
Stage 3 AI 튜터
컨텍스트 엔지니어링 · CLAUDE.md · SKILL · Hooks · 장PM 방법론
LIVE AI
AI 튜터 응답