Claude Code in Action
Claude Code Hands-on #1 — 컨텍스트 관리부터 커스텀 명령어까지
이 글은 Anthropic 공식 Course Claude Code in Action 한국어로 번역 & 정리한 글입니다. Hands-on 시리즈 첫 번째 편입니다.
컨텍스트 관리란#
Claude Code를 개발 프로젝트에 투입할 때 가장 중요한 것은 컨텍스트 관리다.
프로젝트에는 수십, 수백 개의 파일이 있지만 Claude가 실제로 필요한 정보는 그 중 극히 일부다. 오히려 관련 없는 정보를 너무 많이 제공하면 Claude의 성능이 떨어진다.
목표는 단순하다 — Claude가 지금 당장 필요한 정보만 보도록 유도하는 것.
/init — 프로젝트 첫 분석#
새 프로젝트에서 Claude Code를 처음 실행할 때는 /init 명령어로 시작하는 게 좋다. Claude가 전체 코드베이스를 분석해서 다음을 파악한다.
- 프로젝트의 목적과 전체 아키텍처
- 핵심 명령어와 중요 파일 위치
- 코딩 패턴과 구조
분석이 끝나면 Claude는 결과를 요약하고 CLAUDE.md 파일을 생성한다.
파일 생성 권한을 요청할 때 Enter를 눌러 각각 승인하거나, Shift+Tab을 눌러 세션 전체에서 파일 쓰기를 자유롭게 허용할 수 있다.
CLAUDE.md 파일#
CLAUDE.md는 Claude Code가 모든 요청마다 자동으로 읽는 파일이다. 두 가지 역할을 한다.
- Claude가 코드베이스를 빠르게 이해해 관련 코드를 찾을 수 있도록 도움
- Claude에게 전달할 일반적인 지침을 담는 공간
Claude Code는 세 단계의 CLAUDE.md를 인식한다.
| 파일 | 위치 | 특징 |
|---|---|---|
CLAUDE.md | 프로젝트 루트 | /init이 생성, 소스 컨트롤에 커밋, 팀 전체 공유 |
CLAUDE.local.md | 프로젝트 루트 | 커밋 안 함, 개인 지침만 담기 |
~/.claude/CLAUDE.md | 홈 디렉터리 | 머신의 모든 프로젝트에 적용 |
세 파일의 내용은 모두 Claude에게 보내는 모든 요청에 포함된다.
Memory Mode — # 단축키#
# 명령어를 입력하면 Memory Mode가 활성화되어 CLAUDE.md 파일을 지능적으로 편집할 수 있다.
예를 들어 Claude가 코드에 주석을 너무 자주 달면 이렇게 입력한다.
# don't write comments so often
Claude가 이 지침을 알맞은 CLAUDE.md 파일에 자동으로 병합한다.
한 번 추가하면 이후 대화에서 같은 실수를 반복하지 않는다. Escape로 멈추고 → #로 수정 → 다시 진행 흐름과 함께 쓰면 특히 강력하다.
@ 파일 멘션#
Claude가 특정 파일을 봐야 할 때 @ 기호 뒤에 파일 경로를 입력하면 해당 파일 내용이 요청에 자동으로 포함된다.
How does the auth system work? @auth
Claude가 코드베이스를 직접 검색하는 것보다 훨씬 효율적이다. 관련 파일을 정확히 가리키기 때문에 검색 과정 없이 바로 답변이 나온다.
CLAUDE.md 안에서도 동일한 @ 문법을 쓸 수 있다. 프로젝트의 많은 영역에서 참조되는 파일이라면 CLAUDE.md에 미리 등록해두면 좋다.
# Reference the @prisma/schema.prisma file anytime you need to understand
# the structure of data inside the database
이렇게 등록된 파일은 모든 요청마다 자동으로 컨텍스트에 포함되어, Claude가 관련 질문에 즉시 응답할 수 있다.
스크린샷으로 소통하기#
Claude와 소통할 때 가장 효과적인 방법 중 하나는 스크린샷이다.
UI의 특정 부분을 수정하고 싶을 때 스크린샷을 첨부하면 Claude가 정확히 무엇을 말하는지 이해한다.
스크린샷을 붙여넣으려면 Ctrl+V 를 사용한다. macOS에서도 Cmd+V가 아닌 Ctrl+V다. 이미지를 붙여넣은 뒤 원하는 변경 사항을 바로 요청하면 된다.
Planning Mode#
복잡한 작업에서 Claude가 코드베이스를 충분히 탐색한 뒤 구현하도록 유도하려면 Planning Mode를 활성화한다.
Shift + Tab을 두 번 누르면 된다. (이미 자동 승인 모드라면 한 번으로 충분하다.)
Planning Mode에서 Claude는:
- 프로젝트 파일을 더 광범위하게 읽는다
- 상세한 구현 계획을 작성한다
- 정확히 무엇을 할 것인지 보여준다
- 승인을 받은 후에야 실행에 옮긴다
계획을 검토하면서 Claude가 놓친 부분이 있다면 그 자리에서 방향을 수정할 수 있다.
Thinking Mode#
Claude는 복잡한 문제를 풀기 전에 더 많은 시간을 들여 추론할 수 있는 Thinking Mode를 제공한다.
요청 안에 다음 키워드를 포함하기만 하면 된다.
| 키워드 | 추론 수준 |
|---|---|
think | 기본 추론 |
think more | 확장 추론 |
think a lot | 심층 추론 |
think longer | 장시간 추론 |
ultrathink | 최대 추론 |
각 모드는 Claude에게 더 많은 토큰을 할당해 어려운 문제를 더 깊이 분석한다.
다만 두 기능 모두 추가 토큰을 소비하므로 비용 측면도 고려하자.
Planning vs Thinking — 언제 무엇을 쓰나#
두 기능은 다루는 복잡성의 종류가 다르다.
Planning Mode는 이런 상황에 적합하다.
- 코드베이스 전반을 이해해야 하는 작업
- 여러 파일이나 컴포넌트에 영향을 주는 변경
- 다단계 구현
Thinking Mode는 이런 상황에 적합하다.
- 복잡한 로직 문제
- 디버깅이 어려운 버그
- 알고리즘 문제
두 모드를 동시에 사용하면 넓이와 깊이를 모두 잡을 수 있다.
대화 흐름 제어#
복잡한 작업을 진행하다 보면 대화 흐름을 직접 제어해야 할 때가 있다.
Escape — 중단하기#
Claude가 잘못된 방향으로 가거나 너무 많은 것을 한꺼번에 처리하려 할 때 Escape 키를 누르면 응답을 즉시 중단할 수 있다.
특히 Claude가 같은 실수를 반복할 때 유용하다.
- Escape로 현재 응답을 중단
#단축키로 올바른 방법을 메모리에 추가- 수정된 정보로 대화를 이어간다
이후 대화에서 같은 오류가 반복되지 않는다.
Escape 두 번 — 대화 되감기#
긴 대화를 진행하다 보면 이미 해결된 디버깅 과정이나 관련 없는 내용이 쌓이기 마련이다.
Escape를 두 번 누르면 보낸 메시지 목록이 표시되고, 원하는 시점으로 되돌아갈 수 있다.
- Claude가 코드베이스에 대해 쌓은 이해는 유지하면서
- 불필요한 대화 히스토리만 제거할 수 있다
/compact#
/compact 명령어는 대화 전체를 요약하면서 Claude가 배운 핵심 정보를 보존한다.
다음 상황에 적합하다.
- Claude가 현재 작업에 대한 지식을 많이 쌓았을 때
- 관련된 다음 작업으로 넘어가고 싶을 때
- 대화는 길어졌지만 중요한 컨텍스트가 남아있을 때
/clear#
/clear 명령어는 대화 히스토리를 완전히 삭제해 새로 시작한다.
완전히 다른 작업으로 전환할 때, 또는 이전 컨텍스트가 새 작업을 방해할 수 있을 때 사용한다.
| 상황 | 추천 |
|---|---|
| 관련 작업 연속으로 진행 | /compact |
| 완전히 다른 작업으로 전환 | /clear |
| 특정 시점부터 다시 | Escape 두 번 |
커스텀 명령어#
Claude Code에는 기본 제공 명령어 외에, 자주 쓰는 작업을 커스텀 명령어로 등록할 수 있다.
만드는 방법#
- 프로젝트의
.claude폴더를 연다 - 그 안에
commands디렉터리를 만든다 - 원하는 명령어 이름으로 마크다운 파일을 만든다 (예:
audit.md)
파일명이 곧 명령어 이름이 된다. audit.md → /audit
커스텀 명령어를 추가한 뒤에는 Claude Code를 재시작해야 인식된다.
예시 — /audit#
의존성 취약점을 점검하는 /audit 명령어 예시다.
1. Run `npm audit` to find vulnerable packages
2. Run `npm audit fix` to apply updates
3. Run tests to verify nothing broke
인자 넘기기 — $ARGUMENTS#
$ARGUMENTS 플레이스홀더를 사용하면 명령어에 동적으로 인자를 전달할 수 있다.
예를 들어 write_tests.md 파일을 이렇게 만들면:
Write comprehensive tests for: $ARGUMENTS
Testing conventions:
* Use Vitest with React Testing Library
* Place test files in a __tests__ directory next to the source file
* Name test files as [filename].test.ts(x)
* Use @/ prefix for imports
Coverage:
* Test happy paths
* Test edge cases
* Test error states
다음처럼 실행할 수 있다.
/write_tests the use-auth.ts file in the hooks directory
인자는 파일 경로에 한정되지 않는다. Claude에게 방향과 컨텍스트를 주는 어떤 문자열이든 넘길 수 있다.
정리#
| 기능 | 언제 쓰나 |
|---|---|
/init | 새 프로젝트 첫 실행 시 |
CLAUDE.md | 프로젝트 전반 지침 등록 |
# Memory Mode | 반복 실수 수정, 지침 추가 |
@ 파일 멘션 | Claude에게 특정 파일을 직접 가리킬 때 |
Ctrl+V 스크린샷 | UI 변경 사항을 시각적으로 전달 |
| Planning Mode | 다파일 구현, 복잡한 변경 |
| Thinking Mode | 복잡한 로직, 알고리즘 문제 |
| Escape | 잘못된 방향 즉시 중단 |
| Escape × 2 | 대화 특정 시점으로 되감기 |
/compact | 컨텍스트 유지하며 대화 압축 |
/clear | 완전히 다른 작업 시작 |
| 커스텀 명령어 | 반복 워크플로우 자동화 |
관련 포스트
Claude Code Hands-on #4 — 실전 Hooks와 Claude Code SDK
Hooks 보안 설정, TypeScript 타입체크 자동화, 쿼리 중복 방지 Hook까지 실전 활용법과 함께, 전체 Hook 타입 목록과 Claude Code SDK를 이용한 프로그래밍 방식 자동화를 정리했습니다.
Claude Code Hands-on #3 — Hooks로 도구 실행 제어하기
Claude Code의 Hooks를 사용하면 도구 실행 전후에 커스텀 명령어를 끼워넣을 수 있다. 코드 포매터 자동 실행부터 민감한 파일 접근 차단까지, 실전 예제와 함께 정리했습니다.
Claude Code Hands-on #2 — MCP 서버와 GitHub 통합
Claude Code에 MCP 서버를 추가해 브라우저를 직접 제어하고, GitHub Actions와 통합해 PR 리뷰와 이슈 처리를 자동화하는 방법을 정리했습니다.