Claude Code 완전 정복: 에이전틱 개발자를 위한 필수 워크플로우와 컨텍스트 최적화
서문
- cursor 실행 시 모델을 AUTO 로 설정하였더니, 토큰 사용량이 생각보다 많이 나왔다. raw하게 질문하는 것보다 명확하게 질문하여 토큰 수를 아껴야 하는 상황을 인지했다.
Part 1: 에이전틱 개발자의 사고방식
- 큰 문제를 잘게 쪼개는 능력
- “로그인 페이지를 만들어줘”
- ai 에게 너무 많은 결정권을 줘, 원하지 않는 방향으로 갈 가능성이 높음
에이전틱 개발자의 접근 방식 예시
- 사용자 모델을 위한 데이터베이스 스키마를 설계해줘. 필드는 username, email, password_hash, created_at, updated_at이 필요해.
- 이 스키마를 바탕으로 Drizzle ORM 마이그레이션 파일을 생성해줘.
- React와 TailwindCSS를 사용하여 로그인 폼 UI 컴포넌트를 만들어줘. 이메일과 비밀번호 입력 필드, 그리고 ‘로그인’ 버튼이 필요해.
- 사용자명과 비밀번호를 받아 /api/auth/login 엔드포인트로 POST 요청을 보내는 로직을 작성해줘.
- 로그인 성공 시 토큰을 localStorage에 저장하고 대시보드로 리다이렉트하는 로직을 추가해줘.
- 로그인 실패 시나리오(잘못된 비밀번호, 존재하지 않는 사용자)에 대한 테스트 코드를 작성해줘.
- 시각화: A→B 로 가는 방법
- 직접 경로 (실패 확률 높음) : A → B
- 단계적 경로 (성공 확률 높음) : A → A1 → A2 → A3 → B
- 각 단계에서 검증하고, 문제가 있으면 그 단계만 수정하면 되므로 디버깅이 훨씬 쉬움
- Plan Mode vs. YOLO Mode
- 계획 모드 Plan Mode
- 코드베이스 읽고 분석, 아키텍처 파악, 의존성 탐색, 구현 계획을 단계별로 작성
- 우리가 승인하기 전까지는 아무것도 편집하지 않음 → Think twice, execute once
- 계획 모드를 사용해야 하는 경우
- 처음 해보는 복잡한 작업, 여러 파일에 걸친 대규모 리팩토링, 아키텍처 변경이 필요한 작업, 실수 시 복구 비용이 큰 작업 (데이터베이스 마이그레이션)
저는 90%의 시간 동안 계획 모드를 기본으로 사용합니다. 최신 버전에서는 계획을 거부할 때 피드백을 제공할 수 있어, 반복 작업이 더 빠릅니다.
- 욜로 모드 YOLO Mode
- Claude는 모든 작업에 대해 자동으로 승인함
claude --dangerously-skip-permission- 욜로 모드를 사용해야 할 때
- 간단하고 명확한 작업 (이 함수에 주석을 추가해줘!), 실험적인 프로토타입 작업, 컨테이너 안에서 격리된 환경에서 작업할 때, 반복적이고 시간이 많이 걸리는 작업 (대량의 파일 처리)
- 욜로 모드는 호스트 시스템에서 직접 사용하면 안됨 → 반드시 컨테이너 안에서 사용할 것을 권장
- 컨텍스트: AI에게 기억력을 제공
- 컨텍스트 context
- ai 의 working memory
- 이 공간의 시스템 프롬프트, 코드 파일, 대화 기록 등으로 가득 차면, AI는 초기의 중요한 지시 사항을 잊어버리는 Context Drift 현상을 겪게 됨 → 이로 인해 성능이 39% 까지 저하될 수 있음
- 컨텍스트 관리 전략
- 단일 목적 대화
- 하나의 대화(터미널 세션)에서는 하나의 명확한 목표에만 집중
- 로그인 기능 구현하다가 대시보드 ui 개선 요청을 하면 컨텍스트가 오염됨. 이 경우 별도의 대화를 새로 시작해야 함
- 선제적 압축
- 대화가 길어지면, 다음 에이전트를 위해 HANDOFF.md 파일을 작성하도록 지시하고,
/clear로 새롭게 시작 - /context로 X-Ray 비전
- /context 명령어를 사용하면 무엇이 컨텍스트를 차지하는지 전확히 확인할 수 있음 → 이 정보를 바탕으로 불필요한 MCP를 비활성화 하거나 사용하지 않는 스킬을 언로드 할 수 있음
- 시스템 프롬프트 크기, MCP 서버 프롬프트, 메모리 파일, 로드된 스킬과 에이전트, 대화 기록
- 자동 압축 비활성화
- 컨텍스트가 가득 차면 자동으로 압축하는데, 자동 압축을 끄고 수동으로 관리할 것을 추천
- 자동 압축을 하면 사용해야 하는 토큰이 예약되므로, 실제 사용 가능한 컨텍스트가 줄어듦
- 압축 시점을 직접 ㅈ제어하여 중요한 정보가 손실되지 않도록 할 수 있음
- HANDOFF.md 방식이 더 명확하고 검증 가능함
HANDOFF.md 작성 프롬프트
Put the rest of the plan in the system-prompt-extraction folder as HANDOFF.md. Explain what you have tried, what worked, what didn’t work, so that the next agent with fresh context is able to just load that file and nothing else to get started on this task and finish it up
- 올바른 추상화 수준 선택
- Vibe Coding 레벨 = 높은 추상화
- 전체 구조와 흐름만 파악하고, 개별 코드 라인은 신경쓰지 않음
- 일회성 프로젝트나 프로토타입, 중요하지 않은 코드베이스 부분, 빠른 실험이 필요할 때
- Deep Dive 레벨 = 낮은 추상화
- 파일 구조, 함수, 개별 코드 라인, 심지어 의존성까지도 검토
- 프로덕션 코드, 보안이 중요할 경우, 복잡한 버그 디버깅
실전 예시
- 높은 추상화: “사용자 프로필 페이지를 만들어줘” → 전체 구조 파악
- 중간 추상화: “프로필 편집 폼의 유효성 검사 로직을 보여줘” → 특정 기능 검토
- 낮은 추상화: “이 정규식이 왜 이메일 유효성 검사에 실패하는지 설명해줘” → 세부 디버깅
- 미지의 영역에서 더 용감하게
- 반복적 문제 해결의 과정
- 초기 시도: Claude가 제안한 솔루션을 시도 → 작동하지 않음
- 속도 조절: “천천히 가자. 이 줄이 정확히 무슨 의미인지 설명해줘”
- 방향 전환: 막다른 골목이면 다른 접근 방식 탐색
- 깊이 조절: 필요에 따라 추상화 수준을 높이거나 낮춤
- 최종 해결: 우아한 솔루션 발견
Part 2: 기초부터 탄탄하게 - 환경 설정과 필수 명령어
- 터미널을 통해 실시간으로 토큰 수, 모델에 대한 정보를 끊임없이 파악
- 슬래시 명령어를 통해 시스템을 직접 제어하고 정보를 얻음
- /usage, /clear, /stats, /context, /permissions, /export
!접두사를 붙이면 즉시 셸 명령을 실행하고 결과를 컨텍스트에 주입 → 토큰 낭비를 방지하고 속도를 높임
- ai를 위한 프로젝트 설명서
CLAUDE.md는 AI 파일을 위한 프로젝트 설명서이자 행동 지침- 이 파일을 최우선으로 참고하여 프로젝트의 기술 스택, 코딩 스타일, 주요 라이브러리, 해서는 안 될 일을 파악
- /init 을 통해 코드베이스를 분석하여 초안을 자동으로 생성해준다.
- 다만, 최대한 간결하고 명확하게 유지해야 함
처음에는 CLAUDE.md 없이 시작하세요. 같은 말을 반복하게 되면 그때 추가하세요. 과도한 정보는 컨텍스트를 낭비합니다.
- 터미널 별칭으로 빠른 접근 (사용자 스타일마다 다를 듯)
- 세션 관리: 대화를 잃지 않는 방법
- continue where you left off 할 수 있는 방법이 있는지 확인해보기
- /rename을 통해 세션에 의미있는 이름을 붙이고, 그 세션 이름으로 재개하기
Part 4: 컨텍스트 관리의 예술
- 선제적으로 컨텍스트 압축하기
- HANDOFF.md 워크플로우
# 1. 대화가 50k 토큰 이상 사용 중일 때 > "/context로 현재 사용량 확인" # 2. HANDOFF.md 생성 요청 > "지금까지의 작업 내용을 HANDOFF.md 파일로 정리해줘. 다음 에이전트가 이 파일만 읽고 작업을 이어갈 수 있도록 시도한 것, 성공한 것, 실패한 것, 다음 단계를 명확히 작성해줘." # 3. 새 세션 시작 > "/clear" # 4. HANDOFF.md 로드 > "@HANDOFF.md 이 파일을 읽고 작업을 이어가줘"
일반적으로 10개 미만의 MCP와 80개 미만의 활성 도구를 유지하는 것이 최적입니다.
Part 7: 시스템 최적화와 자동화
- 시스템 프롬프트 슬림화
- 왜 시스템 프롬프트를 줄여야 하는가
- 더 많은 코드 파일과 대화 기록을 컨텍스트에 담을 수 있음
- 응답 속도 향상 (처리할 토큰이 적음)
- 비용 절감 (토큰 사용량 감소)
- 어떻게 줄일 것인가 … 다음을 제거
- 장황한 예시: 도구 설명에 포함된 불필요하게 긴 예시
- 반복적인 지시: 여러 곳에서 반복되는 동일한 지시사항
- 과도한 안전 경고: 너무 자주 반복되는 경고 메세지
- 사용하지 않는 도구 설명: 거의 사용되지 않는 도구의 긴 설명
패치 적용 방법
# ykdojo의 저장소 클론 git clone https://github.com/ykdojo/claude-code-tips.git cd claude-code-tips # 패치 적용 스크립트 실행 ./scripts/apply-patches.sh
- 장시간 작업을 위한 수동 지수 백오프
- 장시간 실행되는 작업을 맡길 때, 매 초마다 상태를 확인하는 것은 비효율 → Exponential Backoff 전략을 사용
- 토큰을 절약하고, 다른 작업을 병렬로 수행할 수 있게 함
- 지수 백오프
- 처음에는 짧은 간격으로 확인하고, 점차 간격을 늘려가는 방식
- 1 → 2 → 4 → 8 → … 분후 확인
실전 프롬프트
> "대용량 CSV 파일(10GB)을 처리하는 스크립트를 실행해줘. 지수 백오프 방식으로 진행 상황을 확인해줘. 처음 1분 후, 그 다음 2분 후, 4분 후, 8분 후 확인해." # Claude가 실행: # 1. 스크립트 실행 # 2. 1분 대기 후 상태 확인 # 3. 2분 대기 후 상태 확인 # 4. 작업 완료 시까지 반복
- 백그라운드에서 bash 명령 및 에이전트 실행
- 장시간 실행되는 명령어나 에이전트를 백그라운드로 보내고, 다른 작업을 계속 할 수 있게 함
서브에이전트 백그라운드 실행
> "security-auditor 에이전트를 백그라운드에서 실행하여 전체 코드베이스를 스캔해줘. 완료되면 알려줘." # Claude가: # 1. 서브에이전트 백그라운드 실행 # 2. 메인 작업 계속 진행 # 3. 주기적으로 서브에이전트 상태 확인 # 4. 완료 시 결과 수집
병렬 서브에이전트 활용
> "대규모 코드베이스를 분석해야 해. 3개의 서브에이전트를 백그라운드에서 실행하여 각각 다른 모듈을 분석하도록 해줘." # Claude가: # - Agent 1: /src/auth 모듈 분석 # - Agent 2: /src/api 모듈 분석 # - Agent 3: /src/database 모듈 분석 # 모두 병렬로 실행
- 자동화의 자동화
- automation of automation을 통해 더 높은 수준의 추상화에 집중할 수 있게 함
- Level 0: ChatGPT에서 코드를 복사하여 터미널에 붙여넣기
- Level 1: ChatGPT 플러그인(Kaguya)을 만들어 자동 실행
- Level 2: Claude Code 사용으로 터미널 통합
- Level 3: 음성 전사 시스템 구축으로 타이핑 자동화
- Level 4: CLAUDE.md로 반복 지시 자동화
- Level 5: 커스텀 슬래시 명령어로 워크플로우 자동화
- Level 6: Skills로 Claude의 자동 판단 자동화
- Level 7: Hooks로 규칙 강제 자동화
Part 8: 컨테이너와 샌드박스
- docker 컨테이너 설정
FROM ubuntu:22.04 # 기본 도구 설치 RUN apt-get update && apt-get install -y \ curl git tmux vim \ nodejs npm python3 python3-pip # Claude Code 설치 RUN curl -fsSL https://claude.ai/install.sh | sh # Gemini CLI 설치 (선택사항) RUN npm install -g @google/generative-ai-cli # 작업 디렉토리 WORKDIR /workspace CMD ["/bin/bash"]
실행
# 이미지 빌드 docker build -t claude-sandbox . # 컨테이너 실행 (호스트 디렉토리 마운트) docker run -it --rm \ -v $(pwd):/workspace \ -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \ claude-sandbox # 컨테이너 안에서 Claude Code 실행 claude --dangerously-skip-permissions
Part 10: 실전 활용 사례
- 작성 - 테스트 사이클 완성
제가 가장 좋아하는 프롬프트는 ‘모든 것을 다시 확인하고, 검증 가능한 것과 불가능한 것을 표로 만들어줘’입니다
완전한 워크플로우
> "사용자 인증 미들웨어를 작성하고, 테스트 코드도 함께 작성해줘. 테스트를 실행하여 모두 통과하는지 확인해줘." # Claude가: # 1. 미들웨어 코드 작성 (src/middleware/auth.ts) # 2. 테스트 코드 작성 (src/middleware/auth.test.ts) # 3. npm test 실행 # 4. 테스트 실패 시 코드 수정 # 5. 모든 테스트 통과할 때까지 반복
TDD (Test-Driven Development) 워크플로우
> "TDD 방식으로 작업해줘. 먼저 실패하는 테스트를 작성하고, 그 테스트를 통과시키는 코드를 작성해줘." # Claude가: # 1. 실패하는 테스트 작성 # 2. git commit -m "Add failing test for user auth" # 3. 테스트를 통과시키는 최소한의 코드 작성 # 4. 테스트 실행 → 통과 확인 # 5. git commit -m "Implement user auth to pass test"
Part 12: 고급 기능과 SDK
- Extended Thinking
- MAX_THINKING_TOKENS 설정하여 내부 추론에 많은 토큰을 할당하고, 복잡한 아키텍처 결정이나 디버깅에 활용
결론
- 큰 문제를 작은 단위로 분해하라: AI는 명확한 지시를 받았을 때 가장 뛰어난 성능을 발휘합니다.
- 컨텍스트는 우유와 같다: 신선하고 압축된 상태를 유지하세요. 오래된 컨텍스트는 성능을 저하시킵니다.
- 올바른 추상화 수준을 선택하라: 때로는 Vibe Coding으로, 때로는 Deep Dive로 상황에 맞게 조절하세요.
- 자동화의 자동화: 같은 작업을 3번 이상 반복한다면, 자동화할 방법을 찾으세요.
- 사용이 최고의 학습: 10억 토큰을 소비하며 직관을 키우세요.
Designing Data-Intensive Applications - (2) Defining NonFunctional Requirements
이 챕터는 데이터 중심 애플리케이션의 핵심인 세 가지 비기능적 요구사항(신뢰성, 확장성, 유지보수성)을 정의합니다. 트위터의 타임라인 구축 사례를 통해 읽기/쓰기 시점의 부하 분산 전략(Fan-out)과 트레이드오프를 살펴보고, p99.9와 같은 꼬리 지연 시간(Tail Latency) 관리의 중요성을 강조합니다. 최종적으로는 복잡성을 제어하는 추상화와 변화에 유연한 설계가 장기적인 시스템 운영에 어떤 영향을 미치는지 다룹니다. This chapter defines the three pillars of data-intensive applications: Reliability, Scalability, and Maintainability. Through the case study of X (Twitter) home timelines, it explores the trade-offs of fan-out strategies between write and read paths. It also emphasizes the importance of managing tail latencies (p99.9) and explains how abstraction and evolvability are crucial for long-term system health and managing accidental complexity.
Designing Data-Intensive Applications - (1) Trade-offs in Data Systems Architecture
데이터 집약적 애플리케이션 설계에 대한 내용으로, 운영 시스템(OLTP)과 분석 시스템(OLAP)의 차이를 설명하며, 데이터 웨어하우스와 데이터 레이크의 개념을 다룬다. 클라우드 서비스와 자체 호스팅 시스템의 장단점을 비교하고, 분산 시스템과 단일 노드 시스템의 전환 시점을 논의한다. 또한, 데이터 시스템과 법률, 사회의 균형을 맞추는 중요성에 대해서도 언급한다.

NEWPySpark: 대용량 분산 처리 DataFrame 기초
PySpark는 Apache Spark를 Python 환경에서 사용할 수 있게 해주는 API로, 대량의 데이터를 분산 처리할 수 있다. 핵심 구조로는 Driver Node, Worker Node, Cluster Manager가 있으며, RDD와 DataFrame이 주요 데이터 구조이다. 학습 로드맵은 DataFrame 기초 조작, 스파크 최적화 및 고급 기능, 확장 모듈 다루기로 구성된다. Lazy Evaluation, SparkSession 생성, 데이터 불러오기 및 변환, 집계, 조인 등의 기법을 통해 성능을 최적화할 수 있다. 또한, Spark SQL, Structured Streaming, MLlib 등의 확장 모듈을 활용하여 데이터 엔지니어링을 강화할 수 있다.

Google Antigravity 시작하기 및 실제 프로젝트 구현해보기
구글 안티그래비티를 실제 프로젝트에 적용하며 얻은 기술적 통찰을 정리한다. 단순한 코드 추천을 넘어 스스로 계획을 수립하고 실행하는 '에이전트'로서의 특징과, 실제 배포 과정에서의 생산성 및 쿼터 관리 효율성을 분석한다. 개발자의 역할이 단순 코더에서 전체 프로세스를 관리하는 디렉터로 변화하는 지점을 가식 없이 기술한다. This post provides a technical review of Google Antigravity based on real-world project application. It explores its capabilities as an autonomous "Agent" that goes beyond code suggestions to planning and execution. The review analyzes productivity gains and the realities of quota management, highlighting the industry's shift where developers evolve from manual coders into strategic directors of AI agents.
