Claude Code 사용법 & 프롬프트 팁
자연어 프롬프트만 쓰던 사람을 위한 전체 기능 가이드 + 좋은 코드를 생성하는 프롬프트 작성법
- ⭐⭐⭐ — 매일 쓰는 필수 기능
- ⭐⭐ — 주 단위로 자주 씀
- ⭐ — 특정 상황에서 유용
⭐ 가장 자주 쓰는 것 (3개만 익혀도 작업이 달라짐)
처음 시작한다면 이 세 가지만 먼저 익히세요. 가장 효과가 빠릅니다.
@app.py처럼 입력하면 Claude가 그 파일을 읽고 응답합니다. Tab으로 자동완성됨.Shift+Tab을 한 번 누르면 진입. 큰 작업 시작 전에 먼저 계획을 세우고 검토받으면 실수가 크게 줄어듭니다.! npm test, ! git status — Claude를 안 거치고 빠르게 출력 확인.Shift+Tab으로 Plan Mode 진입 → 계획 검토 → 다시 Shift+Tab으로 Default/Auto 전환 → 구현 → /clear로 정리.
이 사이클을 익히는 것이 Claude Code 마스터로 가는 가장 빠른 길입니다.
1. Claude Code 개요
Claude Code는 자연어로 코드를 작성하는 CLI 도구지만, 단순한 채팅 인터페이스 이상입니다. 4가지 종류의 입력 방식이 있습니다.
| 접두사 | 용도 | 예시 |
|---|---|---|
/ |
슬래시 명령어 (빌트인 기능) | /init, /clear, /review |
@ |
파일/폴더 참조 | @app.py, @src/components |
! |
셸 명령 직접 실행 | ! npm test, ! git status |
# |
CLAUDE.md에 메모리 추가 (레거시) | # pytest를 사용한다 |
| (없음) | 자연어 프롬프트 | "로그인 기능 구현해줘" |
2. 슬래시 명령어 (/)
프롬프트 맨 앞에 /를 입력하면 사용 가능한 명령어 목록이 표시됩니다. 카테고리별로 자주 쓰는 것부터 배치했습니다.
2-1. 세션 관리
| 빈도 | 명령어 | 용도 |
|---|---|---|
| ⭐⭐⭐ | /clear |
컨텍스트 초기화. 새 작업 시작 전 필수. |
| ⭐⭐ | /init |
프로젝트 분석 후 CLAUDE.md 자동 생성. 새 프로젝트에서 처음 한 번. |
| ⭐⭐ | /resume |
저장된 세션 중에서 골라 재개. |
| ⭐ | /continue |
가장 최근 세션 즉시 재개. |
| ⭐ | /rename |
현재 세션에 이름 부여 (나중에 찾기 쉽게). |
# 로그인 기능 구현 완료 후 대시보드 작업 시작
/clear
# → 깨끗한 상태에서 새 작업 시작
# 어제 하던 작업 이어서
/resume
# → 저장된 세션 목록에서 선택
# 1. 프로젝트 폴더로 이동
! cd ~/projects/my-new-app
# 2. CLAUDE.md 자동 생성
/init
# → Claude가 프로젝트 구조 분석 후
# 언어/프레임워크/테스트 도구를 감지하고
# CLAUDE.md 초안을 만들어줌
# 3. 세션에 이름 부여
/rename initial-setup
# 터미널 1: 백엔드 API 작업
claude
> /rename backend-auth
# 터미널 2: 프론트엔드 UI 작업 (병렬)
claude
> /rename frontend-login
# 나중에 어느 세션이든 /resume으로 복귀
2-2. 컨텍스트 관리
| 빈도 | 명령어 | 용도 |
|---|---|---|
| ⭐⭐⭐ | /context |
컨텍스트 윈도우 사용량 시각화. 정기적으로 확인. |
| ⭐⭐ | /compact [지시] |
컨텍스트 요약/압축. 80% 이상 차면 실행. |
| ⭐ | /btw [질문] |
히스토리에 남지 않는 사이드 질문. |
/context
# → 현재 컨텍스트 사용량 표시 (예: 82% 사용)
/compact "최근 결제 로직 구현과 테스트 결과만 보존하고 나머지는 요약"
# → 중요한 부분만 유지하면서 공간 확보
/btw 그 환경변수 이름이 뭐였더라?
# → 작업 흐름 방해 없이 빠른 확인
# 좋은 예시 — 무엇을 보존할지 구체적으로
/compact 현재 진행 중인 OAuth 구현 코드와
@src/auth/oauth.ts 의 최신 버전을 보존하고
나머지 토론 내용은 요약해줘
# 나쁜 예시 — 막연한 지시
/compact 정리해줘 ← 중요 정보가 사라질 수 있음
# Claude가 큰 작업을 하는 중에...
/btw package.json의 react 버전이 뭐야?
# → 빠르게 확인하고 메인 작업으로 복귀
# 히스토리에 남지 않아서 컨텍스트가 깨끗
/btw 방금 만든 함수 이름이 뭐였지?
2-3. 실행 모드 / 모델
| 빈도 | 명령어 | 용도 |
|---|---|---|
| ⭐⭐ | /model [이름] |
단일 턴 모델 변경. 복잡한 작업엔 opus, 빠른 작업엔 haiku. |
| ⭐ | /fast |
Opus 4.6 고속 모드 (2.5배 빠름). |
2-4. 코드 품질
| 빈도 | 명령어 | 용도 |
|---|---|---|
| ⭐⭐ | /review |
미커밋 변경사항 검토. 위험 패턴, 누락 테스트 탐지. |
| ⭐⭐ | /simplify |
중복 제거, 패턴 최적화, 불필요한 변수 제거. |
| ⭐ | /security-review |
보안 취약점 종합 검토. |
# 1. 구현이 끝났으면 자동으로 코드 다듬기
/simplify
# → 중복 제거, 더 좋은 패턴 제안
# 2. PR 만들기 전 마지막 점검
/review
# → 누락된 테스트, 위험 패턴 탐지
# 3. 인증 / 결제 / 데이터 처리 코드면 반드시
/security-review
# → 보안 취약점 종합 검토
# 4. 모두 통과하면 커밋
! git add . && git commit -m "feat: OAuth 추가"
# 특정 파일/폴더로 범위 좁히기
@src/api/payment.ts 만 /review 해줘
@src/auth 폴더에 대해 /security-review 진행해줘
특히 토큰 처리 부분을 집중적으로.
2-5. 워크플로우 자동화
| 빈도 | 명령어 | 용도 |
|---|---|---|
| ⭐⭐⭐ | /goal <완료조건> NEW |
완료 조건을 정해두면 Claude가 여러 턴에 걸쳐 자율적으로 작업. (v2.1.139~) ↓ 2-7 참고 |
| ⭐⭐ | /agents |
서브에이전트 관리 (실행/중단). |
| ⭐ | /tasks |
백그라운드 작업 목록 확인. |
| ⭐ | /background |
현재 세션을 백그라운드로 전환. |
| ⭐ | /loop [간격] [명령] |
명령어 반복 실행 (예: /loop 5m /check-tests). |
| ⭐ | /schedule |
cron 기반 예약 실행. |
# 5분마다 테스트 자동 실행
/loop 5m npm test
# 30초마다 빌드 상태 확인
/loop 30s ! curl -s http://localhost:3000/health
# 1시간마다 PR 상태 점검
/loop 1h gh pr list --author @me
# 1. 시간이 오래 걸리는 작업 시작
@src 전체에 대해 마이그레이션 작업을 진행해줘.
모든 .js 파일을 .ts로 변환.
# 2. Ctrl+B로 백그라운드 전환
# 3. 다른 작업 진행
# 4. 진행 상태 확인
/tasks
# → 실행 중인 백그라운드 작업 목록 표시
2-6. 설정 및 구성
| 빈도 | 명령어 | 용도 |
|---|---|---|
| ⭐⭐ | /config |
테마, 모델, 에디터 모드, 언어 설정. |
| ⭐⭐ | /permissions |
도구 권한 관리 (특정 Bash 명령 허용 등). |
| ⭐⭐ | /memory |
CLAUDE.md 편집 인터페이스. |
| ⭐ | /hooks |
자동화 훅 관리. |
| ⭐ | /mcp |
MCP 서버 추가/관리. |
| ⭐ | /plugin |
플러그인 관리. |
| ⭐ | /skills |
스킬 활성화/비활성화. |
| ⭐ | /terminal-setup |
Shift+Enter 등 키 바인딩 설치. |
| ⭐ | /doctor |
설정 진단 (CLAUDE.md, 권한, 스킬 검증). |
| ⭐ | /debug |
디버그 로그 활성화. |
| ⭐ | /help |
전체 도움말. |
/permissions
# UI에서 다음을 설정:
# - npm/pytest/git 명령 자동 허용
# - rm -rf, sudo 차단
# - .env 파일 읽기 차단
/config
# → 일반 작업: Sonnet (균형)
# → 복잡한 알고리즘: Opus
# → 빠른 단순 작업: Haiku
/fast
# → Opus 4.6 고속 모드 토글
/model claude-haiku-4-5
# → 이번 턴만 Haiku 사용 (속도 우선)
# 문제가 생겼을 때 진단
/doctor
# → CLAUDE.md, 권한, 스킬, MCP 등 설정 검증
/debug
# → 상세 로그 출력 (다음 명령부터)
/hooks
# → 현재 등록된 훅 목록 확인
2-7. /goal — 자율 실행 모드 NEW · v2.1.139
2026년 5월 11일 출시된 Claude Code v2.1.139의 핵심 기능. 완료 조건(completion condition)을 한 줄로 정해두면, Claude가 매 턴마다 사용자의 새 프롬프트 없이도 스스로 다음 턴을 이어가며 그 조건이 충족될 때까지 작업한다. 기존 "한 번 시키고 → 답 받고 → 다시 시키는" 턴 기반 흐름을 장시간 자율 에이전트 흐름으로 바꿔주는 명령어.
- 아니오 → 그 이유를 다음 턴의 지침으로 전달 + Claude가 작업 계속
- 예 → 목표 자동 해제, 제어권이 사용자에게 복귀
기본 문법
# 목표 설정 (= 조건문 자체가 첫 지시문)
/goal All tests passing in CI, no TypeScript errors, server.ts bug fixed
# 현재 상태 보기 — 조건 / 경과 시간 / 턴 수 / 토큰 / 마지막 평가 사유
/goal
# 목표 해제 (다음 별칭들도 동일하게 동작)
/goal clear
/goal stop
/goal off
/goal reset
/goal none
/goal cancel
스크립트 / CI 용 — -p 플래그
# 비대화식 실행 (CI 파이프라인이나 야간 배치 작업에 활용)
claude -p /goal "npm test가 exit 0이 될 때까지 lib/parser.ts의 회귀 버그를 수정"
- 측정 가능한 종료 상태 — 테스트 결과, 빌드 exit code, lint 0 warnings
- 검증 방법 명시 — "
npm test가 exit 0", "tsc --noEmit에러 없음" - 지켜야 할 제약 — "공개 API는 변경하지 말 것", "DB 스키마는 그대로"
/goal test/auth/* 의 모든 테스트가 통과하고 ESLint warning이 0이 될 것.
검증: `pnpm test:auth` 가 exit 0, `pnpm lint` 가 exit 0.
조건: 공개 export 시그니처는 변경하지 말 것.
턴 상한: 30턴 또는 60분이 경과하면 중단.
한 개발자가 모호한 목표로 14시간 만에 $200을 태운 사례가 보고됨.
/goal에는 자체 하드 비용 캡이 없다 — 사용자가 직접 조건에 적어 넣어야 한다.
# 권장 표현
... or stop after 40 turns
... or stop if 90 minutes elapse
... or stop after $5 in token spend
- /goal 코드를 더 좋게 만들어줘 — 검증 불가, 무한 루프 위험
- /goal 사용자 경험을 개선 — 평가 모델이 대화만 보고 판단 못 함
- /goal 멋진 디자인으로 리팩토링 — 주관적 종료 조건 → 토큰 무한 소모
- 코드 마이그레이션 — "모든 .js → .ts 변환,
tsc통과까지" - 테스트 커버리지 끌어올리기 — "coverage 80% 달성, 모든 테스트 green"
- 리팩토링 — 완료 기준을 객관 지표로 묶을 수 있을 때
- 야간 / 주말 자율 실행 — 가드레일을 명확히 걸어둔 경우
- 회귀 버그 추적 — "이 테스트 케이스가 통과할 때까지"
턴 진행 중 표시되는 정보
- 경과 시간 (elapsed) — 목표 설정 시점부터의 wall-clock 시간
- 턴 수 (turns) — 모델 호출 횟수
- 토큰 사용량 (tokens) — 입력/출력 합산
- 평가자 사유 (last verdict) — 매 턴 끝에 Haiku가 "왜 아직 미달인지" 남긴 메모
# 목표 설정
/goal tests/parser.test.ts 가 전부 통과할 것. 검증: `npm test`가 exit 0.
제약: parser.ts의 공개 API 시그니처는 유지. 상한: 20턴 또는 30분.
# ── 턴 1 ── Claude가 스스로 시작
npm test 실행 → 3건 실패 (null 입력 처리 누락)
parser.ts의 parse() 에 null 가드 추가
[평가자] ❌ no — 아직 2건 실패 (빈 배열 케이스). 계속.
# ── 턴 2 ── 사용자가 아무것도 안 쳐도 자동 진행
빈 배열 분기 추가 → npm test 재실행 → 1건 실패 (중첩 객체)
[평가자] ❌ no — 1건 남음. 계속.
# ── 턴 3 ──
재귀 파싱 수정 → npm test → exit 0 (전부 통과)
[평가자] ✅ yes — 조건 충족. 공개 API도 그대로.
# → 목표 자동 해제, 제어권이 사용자에게 복귀 (3턴 만에 종료)
/goal 전 코드베이스에서 deprecated된 `oldClient` 호출을 전부 `newClient`로
교체할 것. 검증: `grep -r oldClient src/`가 0건, `npm run build`가 exit 0.
방법: 먼저 Explore 서브에이전트로 모든 호출 지점을 수집한 뒤 교체.
상한: 25턴 또는 45분.
주변 명령어와의 관계
| 명령 | 차이점 |
|---|---|
/loop |
고정된 간격으로 같은 명령을 반복 (시간 기반). /goal은 조건 충족까지(상태 기반). |
/agents |
특정 작업을 별도 에이전트로 위임. /goal은 현재 세션 자체를 자율 모드로 전환. |
/background + /tasks |
긴 작업을 백그라운드로 돌리는 컨테이너. /goal과 결합 가능 (조건부 + 백그라운드). |
| Plan Mode | 실행 전 계획 확정. /goal은 계획이 아니라 종료 조건을 미리 못박아두는 것. |
/goal을 출시했고, Anthropic이 11일 뒤인 2026-05-11에 Claude Code v2.1.139로 동등 기능을 추가했다. 양쪽 모두 "verifiable finish line(검증 가능한 종료점) 기반 멀티턴 자율 실행"이라는 같은 패러다임을 따른다.
3. @ 파일 참조 매우 자주 사용
@ 뒤에 파일 경로를 입력하면 Claude가 그 파일을 읽고 응답합니다. Tab으로 자동완성됩니다.
기본 사용
# 단일 파일
@app.py 이 파일의 라우트 구조를 설명해줘
# 여러 파일
@src/auth/session.ts 와 @src/api/login.ts 의 관계는?
# 폴더 전체
@src/components 이 폴더의 컴포넌트들을 나열해줘
# 홈 디렉토리
@~/.zshrc 내 셸 설정 확인해줘
# 특정 줄 부근
@src/auth/session.ts 의 47번 줄 로직 설명해줘
- 한 번에 3~5개 파일까지만 참조 (너무 많으면 컨텍스트 낭비)
- Tab 키로 자동완성됨 —
@pac+ Tab →@package.json - CLAUDE.md 안에서도
@docs/git-rules.md같은 임포트 가능 - MCP 리소스도 @ 메뉴에 표시됨 (
@github:issues/123)
실전 활용 예시
@src/api/payment.ts 에서 결제 실패 시 트랜잭션이
롤백되지 않는 버그가 있어. @tests/payment.test.ts 의
테스트 패턴 참고해서 재현 테스트 작성하고 수정해줘.
@src/components/Button.tsx 와 동일한 스타일 패턴으로
@src/components/IconButton.tsx 컴포넌트를 만들어줘.
Props는 @types/icon.ts 의 IconName을 사용.
@src/utils/auth.ts 의 refreshToken 함수가
@src/middleware/session.ts 의 어떤 흐름에서 호출되는지
순서대로 설명해줘. 다이어그램으로 그려도 좋아.
@src/api/users.ts 의 CRUD 패턴을 그대로 따라서
@src/api/products.ts 를 만들어줘. 다만 products는
재고(stock) 필드가 추가로 필요해.
@.env.example 의 환경변수들을 보고 @docs/setup.md 의
설치 가이드 섹션을 업데이트해줘. 누락된 변수가 있으면 추가.
4. ! Shell Mode 자주 사용
!를 프롬프트 맨 앞에 붙이면 Claude를 거치지 않고 셸 명령이 바로 실행되고, 결과가 대화에 추가됩니다.
! npm test
! git status
! ls -la
! python app.py
! cat .env.example
! pytest tests/test_auth.py -v
- 빠른 상태 확인 (
git status,ls) - 출력을 컨텍스트에 넣고 Claude에게 분석 요청할 때
- Claude의 해석 단계가 필요 없는 단순 명령
Esc 또는 빈 프롬프트에서 Backspace
활용 시나리오
# 1. 에러를 직접 실행
! python app.py
# 2. (에러 출력이 컨텍스트에 추가됨)
# 3. Claude에게 분석 요청
위 에러의 원인이 뭐야? 어떻게 고쳐?
! pytest tests/test_auth.py -v
# → 실패한 테스트 출력
실패한 테스트 케이스만 골라서
원인을 분석하고 수정 방안을 제시해줘.
! pip list | grep -i flask
! npm ls react
# 버전 확인 후
이 버전들로 호환 가능한 OAuth 라이브러리 추천해줘.
! cat .env.example
! find . -name "*.log" -mtime -1
! du -sh node_modules
! git log --oneline -10
! curl -s http://localhost:3000/api/health | jq
! psql -d mydb -c "SELECT COUNT(*) FROM users;"
! redis-cli ping
5. # 메모리 추가 가끔 사용
CLAUDE.md에 빠르게 메모를 추가합니다. 최신 버전에서는 /memory가 권장됩니다.
# 이 프로젝트는 FastAPI를 사용한다 (Flask 아님)
# 모든 테스트는 pytest로 실행
# 가상환경: poetry 사용
6. 키보드 단축키
필수 단축키 (자주 사용 순서)
| 빈도 | 키 | 기능 |
|---|---|---|
| ⭐⭐⭐ | Shift+Tab |
권한 모드 순환 (Default → Plan → Auto-accept) |
| ⭐⭐⭐ | Esc |
Claude 작업 중단 |
| ⭐⭐ | Esc Esc |
되감기 메뉴 (이전 상태로 복원) |
| ⭐⭐ | Ctrl+R |
명령어 히스토리 역검색 |
| ⭐⭐ | Ctrl+G |
외부 에디터에서 프롬프트 편집 (긴 프롬프트에 유용) |
| ⭐ | Ctrl+O |
트랜스크립트 뷰어 (도구 실행 상세) |
| ⭐ | Ctrl+B |
장시간 명령을 백그라운드로 |
| ⭐ | Ctrl+C |
입력/생성 취소 |
| ⭐ | Ctrl+D |
세션 종료 |
줄바꿈 (멀티라인 입력)
| 방법 | 비고 |
|---|---|
\ + Enter |
모든 터미널에서 동작 (안전한 선택) |
Shift+Enter |
iTerm2/Terminal.app/Windows Terminal 등 — /terminal-setup 후 사용 |
Ctrl+J |
모든 터미널 호환 (대안) |
Option+Enter |
맥에서 Option을 Meta로 설정 시 |
맥 Option 키 조합
| 키 | 기능 |
|---|---|
Option+P |
모델 빠른 전환 (확인 건너뜀) |
Option+T |
Extended Thinking 토글 |
Option+O |
Fast Mode 토글 |
7. 모드 (Modes) 매우 중요
Shift+Tab으로 3가지 모드를 순환합니다. 작업 성격에 따라 모드를 바꾸는 것이 핵심입니다.
| 모드 | 권한 | 언제 쓰나 |
|---|---|---|
| Default | 모든 작업 승인 필요 | 일반 작업, 신중해야 할 변경. 가장 안전. |
| Plan | 읽기 전용 | 큰 작업 전 분석/계획. 5+ 파일 수정, DB 스키마 변경, 처음 보는 코드. |
| Auto-Accept | 모든 변경 자동 승인 | 반복적/예측 가능한 작업, 이미 검증된 계획 실행. 위험성 인지하고 사용. |
1단계: Plan Mode 진입
Shift+Tab (Default → Plan)
→ "@src/auth 분석 후 OAuth 추가 계획 세워줘"
2단계: 계획 검토
Ctrl+G로 에디터에서 계획 수정/보강
3단계: 실행 모드로 전환
Shift+Tab → Default 또는 Auto-Accept
4단계: 구현
"계획대로 구현해줘"
5단계: 정리
/clear (다음 작업 준비)
모드별 실전 시나리오
# 예시 1: 처음 보는 코드를 신중하게 수정
@legacy/billing.py 의 calculate_tax 함수
버그 수정해줘. 각 변경마다 보여줘.
# 예시 2: 프로덕션 코드 수정
@src/payment 의 결제 로직을 수정해야 해.
변경 전후를 확인하면서 진행해줘.
# 예시 1: 큰 리팩토링 (수정 전 분석만)
Shift+Tab → Plan Mode
@src 전체에서 사용 중인 콜백 패턴을
async/await로 마이그레이션하려고 해.
영향받는 파일 목록과 변경 순서를 계획해줘.
# 예시 2: 처음 보는 코드베이스 파악
Shift+Tab → Plan Mode
이 프로젝트의 인증 흐름을 파악해줘.
관련 파일 목록과 각 파일의 역할,
요청 흐름을 다이어그램으로 정리해줘.
# 예시 1: 단순 반복 작업
Shift+Tab 두 번 → Auto-Accept
@src/components 의 모든 .jsx 파일을
.tsx로 변환하고 타입 추가해줘.
# 예시 2: 검증된 계획 실행
# (Plan Mode에서 이미 계획 승인됨)
Shift+Tab 두 번 → Auto-Accept
방금 검토한 계획대로 구현해줘.
중간에 멈추지 말고 끝까지.
- 중요한 코드(인증, 결제, DB 마이그레이션)에는 사용하지 마세요
- git 상태를 자주 확인 (
! git status,! git diff) - 위험한 명령(
rm,git reset)은 사전에/permissions으로 차단
8. 서브에이전트 (Sub-agents) 중급
특정 작업을 위한 격리된 AI. 자체 컨텍스트와 도구 집합을 가져 메인 세션의 컨텍스트를 보호합니다.
내장 서브에이전트
| 이름 | 용도 |
|---|---|
Explore |
코드베이스 탐색 (읽기 전용). 메인 컨텍스트 절약. |
Plan |
구현 계획 수립. |
general-purpose |
일반 작업. 균형잡힌 권한. |
커스텀 서브에이전트 만들기
.claude/agents/security-reviewer.md 파일 생성:
---
name: security-reviewer
description: 보안 취약점 검토 전문가
tools: Read Grep Glob Bash
model: opus
---
당신은 시니어 보안 엔지니어입니다.
SQL/XSS/Command injection, 인증/인가 결함, 시크릿 노출 등을 검토합니다.
각 이슈에 대해:
1. 코드 위치와 심각도 (Critical/High/Medium/Low)
2. 수정 방법 (코드 예시 포함)
3. 추가 테스트 제안
frontmatter 필드
| 필드 | 필수 | 설명 |
|---|---|---|
name |
✅ | 호출 이름. 파일명과 같게 두는 게 관례 (security-reviewer.md → security-reviewer). |
description |
✅ | 가장 중요한 필드. Claude가 "언제 이 에이전트를 자동으로 부를지" 판단하는 근거다. 구체적으로 쓸수록 자동 위임이 잘 된다. PROACTIVELY, MUST BE USED 같은 표현을 넣으면 더 적극적으로 위임한다. |
tools |
선택 | 공백 또는 쉼표로 구분. 생략하면 메인 세션의 모든 도구를 상속한다. 검토용 에이전트라면 Read Grep Glob처럼 최소 권한으로 좁히는 게 안전하다. |
model |
선택 | opus / sonnet / haiku / inherit. 단순 탐색은 haiku(빠르고 저렴), 정밀 검토는 opus처럼 작업 난이도에 맞춘다. |
description만 훑어보고 "이 작업에 딱 맞는 전문 에이전트가 있나?"를 판단한다. 본문(프롬프트)이 아무리 좋아도 description이 모호하면 영영 자동으로 안 불린다.
# 나쁜 예 — 언제 써야 할지 모름
description: 코드를 검토합니다
# 좋은 예 — 트리거 상황이 분명함
description: 보안 취약점 검토 전문가. 인증/인가 코드, API 엔드포인트,
사용자 입력 처리부를 수정하거나 추가한 직후 PROACTIVELY 호출할 것.
security-reviewer 서브에이전트로 @src/auth 코드를 검토해줘
# 또는
/agents
# → security-reviewer 선택
.claude/agents/test-writer.md)---
name: test-writer
description: 테스트 작성 전문가. 새 함수/모듈을 추가했거나 "테스트 짜줘"
라고 할 때 PROACTIVELY 사용. 엣지 케이스와 실패 경로까지 커버한다.
tools: Read, Grep, Glob, Edit, Bash
model: sonnet
---
당신은 테스트 작성 전문 엔지니어입니다.
작업 규칙:
1. 먼저 대상 코드와 기존 테스트 컨벤션(파일 위치·네이밍·assert 스타일)을 읽고 맞춘다.
2. 정상 경로 1~2개 + 엣지 케이스(빈 입력, 경계값, null, 예외)를 반드시 포함한다.
3. 테스트 작성 후 실제로 실행해 통과를 확인하고, 실패 시 원인을 보고한다.
4. 프로덕션 코드는 수정하지 않는다 — 버그를 발견하면 테스트로 드러내고 보고만 한다.
서브에이전트 활용 시나리오
# 메인 컨텍스트를 보존하면서 조사
Explore 서브에이전트로 이 프로젝트의 데이터베이스
모델 구조를 파악해줘. 모든 모델 파일을 찾고,
각 모델의 필드와 관계를 표로 정리해줘.
# → 서브에이전트가 별도 컨텍스트에서 탐색
# → 결과 요약만 메인 세션에 반환
# → 메인 세션 컨텍스트는 깨끗하게 유지
# 한 번에 여러 조사를 병렬로
다음을 병렬로 진행해줘:
1. Explore 에이전트로 @src/api 의 모든 엔드포인트 목록 수집
2. Explore 에이전트로 @tests 의 테스트 커버리지 분석
3. 위 두 결과를 비교해서 테스트 없는 엔드포인트 찾기
# 보안 검토
security-reviewer로 @src/auth 검토해줘
# 성능 분석
performance-engineer로 @src/api/search 의
N+1 쿼리 문제를 찾아줘
# 테스트 작성
test-writer로 @src/utils/parser.ts 의
엣지 케이스 테스트를 추가해줘
# 메인 세션에서 한 줄로 위임
> security-reviewer로 @src/auth/login.ts 를 검토해줘
# ── 서브에이전트가 별도 컨텍스트에서 실행 ──
# login.ts, 관련 미들웨어, 환경변수 사용처를 읽고 분석
# (이 과정의 토큰은 메인 세션 컨텍스트에 쌓이지 않음)
#
# ── 메인 세션에는 "요약 결과"만 돌아옴 ──
[High] login.ts:42 — 비밀번호를 평문으로 로깅함
→ console.log 제거, 마스킹 처리 필요
[Medium] login.ts:58 — 로그인 실패 횟수 제한 없음 (brute-force)
→ rate limiter 미들웨어 추가 권장
[Low] login.ts:13 — JWT 만료시간이 30일로 과도하게 김
# → 메인 세션 컨텍스트는 깨끗하게 유지된 채
# 핵심 결론(3건)만 받아 후속 작업을 이어감
| 쓰면 좋은 경우 | 안 쓰는 게 나은 경우 |
|---|---|
| 대량 파일 탐색·조사로 컨텍스트가 오염될 때 (결론만 필요) | 한두 파일만 보면 끝나는 가벼운 작업 (위임 오버헤드가 더 큼) |
| 독립적 작업을 병렬로 동시에 돌릴 때 | 중간 결과를 보며 대화형으로 방향을 바꿔야 할 때 |
| 반복되는 전문 작업을 고정된 규칙으로 위임 (보안검토·테스트) | 메인 세션의 누적 맥락을 그대로 이어가야 할 때 |
핵심은 컨텍스트 격리다. 서브에이전트는 자기 컨텍스트에서 일하고 요약만 돌려주므로, 메인 세션의 토큰·집중도를 아낀다.
실전 — 4단계 멀티에이전트 파이프라인 활용
"무언가를 만들 때 자료 탐색 → 자료 검토 → 제작 → 결과 검증을 각각 전담 에이전트에게 맡길 수 있나?" — 그렇다. 각 역할을 .claude/agents/ 아래 별도 .md 파일로 정의하면, 한 작업을 4명의 전문가가 분업해 처리하는 파이프라인이 된다.
- 메인 세션이 researcher를 부르고 → 그 출력을 받아
- fact-checker의 입력으로 넘기고 → 통과한 자료를
- builder에게 주고 → 산출물을
- qa-verifier로 검증한다.
.md의 description에 "무엇을 입력받아 무엇을 돌려주는지"를 분명히 적어두면 메인 세션이 더 잘 엮는다.
아래는 "결제(payment) 모듈을 새로 구현"하는 작업에 쓰는 4개 파일의 실제 예시다.
.claude/agents/researcher.md---
name: researcher
description: 자료·코드 탐색 전문가. 구현/문서 작업을 시작하기 전, 관련 코드·API
문서·기존 패턴을 출처와 함께 모을 때 PROACTIVELY 사용. 코드는 작성하지 않는다.
tools: Read, Grep, Glob, WebFetch
model: sonnet
---
당신은 자료 조사 전문가입니다. 코드를 작성하지 않습니다.
작업 규칙:
1. 요청 주제와 관련된 코드·문서·API를 빠짐없이 찾는다.
2. 각 항목에 출처를 반드시 붙인다 (파일:줄 번호, URL, 라이브러리 버전).
3. 확실한 사실과 추정을 구분해 표시한다.
4. 반환 형식: "사실 목록 + 출처 + 아직 미확인인 항목".
.claude/agents/fact-checker.md---
name: fact-checker
description: 조사 결과 검증 전문가. researcher가 모은 자료의 정확성·최신성을
교차검증할 때 사용. deprecated API·버전 불일치·근거 없는 주장을 걸러낸다.
tools: Read, Grep, Glob, WebFetch, Bash
model: opus
---
당신은 팩트체커입니다. 주어진 "사실 목록"을 의심하는 것이 임무입니다.
각 항목에 대해:
1. 출처를 직접 확인해 참 / 거짓 / 근거부족으로 판정한다.
2. deprecated 되었거나 더 최신 방법이 있으면 지적한다.
3. 검증된 사실만 통과시키고, 탈락 항목은 사유와 함께 따로 보고한다.
.claude/agents/builder.md---
name: builder
description: 구현 전문가. fact-checker가 검증한 자료를 바탕으로 실제 코드/문서를
작성할 때 사용. 전달받은 검증 자료 범위 안에서만 작업하고 추측하지 않는다.
tools: Read, Grep, Glob, Edit, Write, Bash
model: opus
---
당신은 구현 엔지니어입니다.
규칙:
1. 전달받은 '검증된 사실'만 근거로 쓴다. 자료가 부족하면 추측하지 말고
무엇이 더 필요한지 보고한다 (→ 메인 세션이 researcher를 다시 돌림).
2. 기존 코드 컨벤션·디렉터리 구조를 따른다.
3. 변경한 파일과 그 이유를 요약해 반환한다.
.claude/agents/qa-verifier.md---
name: qa-verifier
description: 산출물 검증 전문가. builder가 만든 결과가 요구사항을 충족하고
정상 동작하는지 확인할 때 PROACTIVELY 사용. 빌드·테스트·요구사항 대조를 수행한다.
tools: Read, Grep, Glob, Bash
model: sonnet
---
당신은 QA 검증자입니다. 만든 사람을 신뢰하지 않고 직접 확인합니다.
검증 절차:
1. 빌드·테스트·린트를 실제로 실행한다 (npm test, tsc --noEmit 등).
2. 원래 요구사항을 항목별 체크리스트로 하나씩 대조한다.
3. 통과/실패를 명확히 보고한다. 실패 시 builder가 다시 고칠 수 있도록
구체적 위치·원인을 남긴다 (# → 메인 세션이 ③으로 되돌림).
> 결제(payment) 모듈을 새로 구현해줘. 다음 순서로 진행:
1. researcher 로 결제 API 문서와 기존 결제 코드를 조사
2. 그 결과를 fact-checker 로 검증 (deprecated API 거르기)
3. 검증된 자료로 builder 가 모듈 구현
4. qa-verifier 로 테스트·요구사항 통과 확인
5. qa-verifier가 실패를 보고하면 builder로 돌아가 통과까지 3·4 반복
/goal payment 모듈이 qa-verifier 검증을 통과할 것.
검증: `npm test`가 exit 0 + 요구사항 체크리스트 전부 OK.
방법: researcher→fact-checker→builder→qa-verifier 순으로 진행하고,
검증 실패 시 builder 단계로 돌아가 반복.
상한: 25턴 또는 60분.
- 역할 분리 = 품질 — "만드는 자(builder)"와 "검사하는 자(qa-verifier)"를 분리해야 자기 결과를 무비판적으로 통과시키는 일을 막는다.
- 컨텍스트 격리 — 탐색 단계의 방대한 원자료가 제작 단계 컨텍스트를 오염시키지 않는다. 각 단계는 요약만 다음으로 넘긴다.
- 모델 최적화 — 탐색·검증은
sonnet, 정밀한 검토·제작은opus처럼 단계별로 비용/성능을 맞출 수 있다. - 재사용 — 한 번 만든
researcher.md·qa-verifier.md는 다른 작업에도 그대로 재활용된다.
9. 훅 (Hooks) 고급
생명주기 이벤트에 자동 실행되는 셸 명령. .claude/settings.json에 설정합니다.
주요 이벤트
| 이벤트 | 타이밍 | 활용 예 |
|---|---|---|
PreToolUse |
도구 실행 전 | 위험 명령 차단 |
PostToolUse |
도구 실행 후 | 파일 저장 후 lint 자동 실행 |
Stop |
Claude 대기 상태 | 완료 알림 |
SessionStart |
세션 시작 | 초기 설정 |
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [{
"type": "command",
"command": "npm run lint:fix"
}]
}],
"Stop": [{
"hooks": [{
"type": "command",
"command": "osascript -e 'display notification \"Claude 대기 중\"'"
}]
}]
}
}
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [
{ "type": "command", "command": "black ." },
{ "type": "command", "command": "isort ." }
]
}]
}
}
{
"hooks": {
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "grep -E '(rm -rf /|sudo|git push.*--force)' && exit 1 || exit 0"
}]
}]
}
}
# → 위험 명령이 감지되면 차단됨
{
"hooks": {
"SessionStart": [{
"hooks": [
{ "type": "command", "command": "test -f .env || echo '⚠️ .env 파일 없음'" },
{ "type": "command", "command": "node --version | grep -q v18 || echo '⚠️ Node 18 필요'" }
]
}]
}
}
10. MCP (Model Context Protocol) 선택 사항
외부 도구/서비스 연동 표준. GitHub, Gmail, Notion, Slack, PostgreSQL 등.
설치
claude mcp add github
claude mcp add notion
claude mcp add gmail
# 이슈 자동 구현
이슈 ENG-4521의 요구사항대로 구현하고 PR 만들어줘.
관련 코드 검색 → 구현 → 테스트 → 커밋 → PR 생성까지.
# PR 리뷰 자동화
PR #234의 변경사항을 리뷰하고 댓글로 피드백 남겨줘.
# 이슈 정리
'bug' 라벨이 붙은 오픈 이슈를 우선순위별로 정렬해줘.
# 시나리오: 신규 기능 출시 알림
다음을 순서대로 진행해줘:
1. GitHub에서 v2.0 마일스톤의 머지된 PR 목록 가져오기
2. Notion '릴리즈 노트' DB에 v2.0 페이지 생성
3. PR 제목과 설명을 요약해서 페이지에 정리
4. Slack #releases 채널에 알림 보내기
5. Gmail로 베타 사용자들에게 안내 메일 초안 작성
# PostgreSQL MCP 활용
PostgreSQL DB에서 최근 24시간 이내
가입한 사용자 수와 활성 비율을 조회해줘.
# 결과를 코드에 반영
위 쿼리 결과를 바탕으로 @src/dashboard/stats.ts 의
가입자 통계 표시 로직을 업데이트해줘.
11. 설정 파일 계층
| 파일 | 위치 | 용도 | 커밋? |
|---|---|---|---|
CLAUDE.md |
프로젝트 루트 | 프로젝트 지식/규칙 (마크다운) | O |
CLAUDE.local.md |
프로젝트 루트 | 개인 메모 | X |
~/.claude/CLAUDE.md |
홈 디렉토리 | 전역 지식 (모든 프로젝트) | — |
.claude/settings.json |
프로젝트 | 권한/훅/MCP (JSON) | O |
.claude/settings.local.json |
프로젝트 | 개인 동작 설정 | X |
~/.claude/settings.json |
홈 디렉토리 | 사용자 전역 설정 | — |
우선순위: local > project > user (높은 것이 낮은 것을 덮음)
좋은 CLAUDE.md 예시
# CLAUDE.md
## 응답 언어
- 한국어로 응답 (존댓말)
## 코드 스타일
- TypeScript strict mode (any 금지)
- ES2024 modules (import/export)
- 2칸 들여쓰기, 80자 라인
## 테스트
- 프레임워크: pytest
- 단일 테스트만 실행 (전체 X, 속도 문제)
- 테스트 파일: `tests/test_*.py`
## 자주 하는 실수
- .env 파일 누락 확인 필수
- DB 마이그레이션 후 반드시 테스트 실행
## 안티패턴 (금지)
- console.log → `@src/logger` 사용
- 직접 fetch → `@src/api/client` 사용
- 포함: 빌드/테스트 명령어, 코드 스타일, 자주 하는 실수, 아키텍처 결정
- 제외: 코드를 보면 알 수 있는 것, 자주 변하는 정보
- 길이: 500줄 이하 권장
12. 스킬 (Skills) & 플러그인 (Plugins)
스킬 만들기
.claude/skills/fix-issue/SKILL.md 생성:
---
name: fix-issue
description: GitHub 이슈를 분석하고 수정
argument-hint: "[issue-number]"
allowed-tools: Bash(gh *) Read Write Edit
---
GitHub 이슈 #$ARGUMENTS를 수정한다:
1. `gh issue view $ARGUMENTS`로 이슈 읽기
2. 관련 코드 검색
3. 구현 및 테스트
4. PR 생성
/fix-issue 123
스킬 vs 플러그인
| 측면 | 스킬 | 플러그인 |
|---|---|---|
| 저장소 | .claude/skills/ |
독립 디렉토리 |
| 배포 | 프로젝트에 직접 | 마켓플레이스 |
| 호출 | /skill-name |
/plugin:skill-name |
| 포함 가능 | 스킬, 훅 | 스킬, 훅, MCP, LSP |
13. 프롬프트 작성 팁
- 컨텍스트: @ 문법으로 관련 파일 명시 + 제약 조건
- 명세: 입력/출력 예시 + 엣지 케이스 + 검증 기준
- 단계 분해: Plan → Implement → Verify 사이클
13-1. 명확한 컨텍스트 제공 ⭐⭐⭐ 가장 중요
@ 멘션으로 관련 파일 지정
로그인 기능 구현해줘.
이전 코드 패턴이랑 맞춰서 JWT 사용해야 해.
@src/auth/session.ts 의 기존 JWT 흐름을 유지하면서
@docs/auth-architecture.md 의 Google OAuth 흐름을 추가해줘.
참고:
- @src/auth/middleware.ts (미들웨어 패턴)
- @src/config/env.example (환경변수)
- @tests/auth.test.ts (테스트 스타일)
제약 조건 명시
대시보드 만들어줘.
대시보드 구현. 제약 조건:
- UI: 기존 @shadcn/ui만 사용 (새 라이브러리 X)
- 상태: @src/store의 Zustand 패턴
- 스타일: Tailwind CSS만 (CSS-in-JS 금지)
- 아이콘: lucide-react만
환경변수:
- NEXT_PUBLIC_API_URL (필수)
- DASHBOARD_ENABLE_ANALYTICS (선택, 기본 false)
13-2. 명세 기반 프롬프팅 ⭐⭐⭐
입력/출력 예시 (Few-shot)
이메일 유효성 검사 함수 만들어줘.
validateEmail(email: string): boolean 만들어줘.
RFC 5322 표준 준수.
✅ "user@example.com" → true
✅ "john.doe+tag@company.co.uk" → true
❌ "user@.com" → false (@앞 비어있음)
❌ "user@domain" → false (도메인 누락)
❌ "user space@x.com" → false (공백 불가)
❌ "" → false
엣지 케이스 명시 (가장 중요!)
login(email, password): Promise<AuthToken> 구현.
정상: 일치 → 토큰 반환
엣지 케이스 (반드시 처리):
1. 존재하지 않는 사용자 → 404
2. 비밀번호 틀림 → 401
3. 3회 연속 실패 → 30분 잠금
4. 이미 로그인 → 새 토큰 발급 (기존 무효화)
5. 이메일 미인증 → 403 + 인증 메일 재전송
6. 빈 문자열 → 400
7. null/undefined → TypeError
검증 기준 제공
→ 테스트, 스크린샷, 메트릭으로 완성 기준을 측정 가능하게 만들어주세요.
@apps/web/src/pages/profile.tsx 리뉴얼.
디자인 목표:
- 세로 → 가로 2컬럼
- 배경: 흰색 → 그라데이션
- 버튼: 파란색 → 보라색
검증 방법:
1. 스크린샷 비교 (before/after.png)
2. 반응형 (375px/768px/1200px)
3. 접근성: 색상 대비 4.5:1 이상
완성 기준:
- 스크린샷에서 의도와 일치
- npm run test:a11y 통과
13-3. 단계적 작업 분해 ⭐⭐
공식 가이드의 Explore → Plan → Implement → Commit 워크플로우.
Google OAuth 통합해줘.
# 1단계: 분석 (Shift+Tab으로 Plan Mode)
@src/auth/session.ts 읽고 현재
JWT 흐름을 설명해줘.
# 2단계: 계획
- 콜백 엔드포인트 위치
- 토큰 매핑 방식
- 필요 환경변수
- DB 스키마 변경
# 3단계: 구현 (Shift+Tab으로 Default Mode)
계획대로 구현 + 테스트
# 4단계: 검증 후 PR 생성
Plan Mode 사용 시점
| Plan Mode 사용 (하나만 해당돼도) | 건너뛰기 가능 (모두 해당) |
|---|---|
| 5+ 파일 수정 DB 스키마 변경 아키텍처 패턴 변경 처음 보는 코드베이스 |
단일 파일 수정 논리 단순 (오타, 이름 변경) 테스트 있음 잘 아는 코드베이스 |
13-4. 역할 부여 ⭐⭐
코드 리뷰해줘.
senior backend engineer로서
@src/api/users/create.ts 를 리뷰해줘.
체크 포인트:
- 보안 (SQL injection, XSS, CSRF)
- 성능 (N+1 쿼리, 무거운 작업)
- 에러 처리 (누락 케이스)
- 테스트 가능성
각 이슈마다 코드 위치와 수정 방법 명시.
역할 선택 가이드
| 역할 | 포커스 |
|---|---|
senior engineer |
아키텍처, 패턴, 최적화 |
security expert |
취약점, 인증, 암호화 |
performance engineer |
속도, 메모리, DB |
QA engineer |
엣지 케이스, 커버리지 |
technical writer |
명확성, 예시, 구조 |
13-5. 출력 형식 제어 ⭐⭐
TypeScript로 구현. 다음 스타일:
코드 스타일:
- ES2024 modules
- strict 타입 (any 금지)
- 함수형 (mutable 최소화)
- 2칸 들여쓰기, 80자 라인
이름 규칙:
- 함수: camelCase
- 상수: UPPER_SNAKE_CASE
- 클래스/인터페이스: PascalCase
에러:
- 예외 throw (undefined 반환 금지)
- @src/errors의 커스텀 에러 클래스 사용
13-6. TDD 스타일 프롬프팅 ⭐⭐
processPayment()를 TDD로 구현해줘.
1단계: @tests/payment.test.ts에 테스트 작성
- ✅ 정상: amount, currency → 성공
- ❌ 잔액 부족 → PaymentInsufficientError
- ❌ 미지원 통화 → PaymentCurrencyError
- ❌ 부정 거래 → PaymentSuspiciousError
- ⚠️ 네트워크 3회 실패 → 롤백
2단계: 테스트 통과하는 코드 구현
- 각 테스트 먼저 실행 (실패 확인)
- 통과시키는 최소 구현
- 진행 보고: "X/7 통과"
3단계: 전체 테스트 실행
4단계: PR 생성
13-7. 반복 개선 패턴 ⭐⭐
1차: "로그인 함수 구현해줘"
→ 기본 구현 완료
2차: "DB 쿼리 관점에서 개선점 찾아줘"
→ N+1 쿼리 발견 → 수정
3차: "보안 문제 찾아줘 (입력 검증, 토큰)"
→ XSS 취약점 발견 → 수정
4차: "엣지 케이스 테스트 추가"
→ 테스트 보강
5차: /simplify + JSDoc 추가
13-8. 컨텍스트 관리 ⭐⭐⭐
- 이전 지시사항 무시하기 시작
- 같은 실수 반복
- "컨텍스트 거의 가득" 경고
# 완전히 다른 작업 시작
/clear
# 같은 작업 계속하되 정리
/compact "최신 auth 구현과 테스트 결과 보존"
# 특정 시점부터 정리
Esc Esc → Summarize 선택
/clear를 실행하세요.
13-9. 흔한 실수 패턴 (Anti-patterns)
너무 모호한 요청
더 좋게 만들어줘
다음 관점에서 개선:
1. 성능: 쿼리 최적화
2. 보안: 입력 검증
3. 테스트: 엣지 케이스
한 번에 너무 많이 요구
1. 인증
2. 대시보드
3. 결제
4. 이메일
5. 모바일앱
먼저 1번 인증만 구현
→ 완료/검증 후
→ 2번 대시보드 시작
검증 기준 부재
검색 기능 만들어줘
검색 + 검증:
1. 단위 테스트
2. 성능: 100만 레코드 < 100ms
3. UI: 실시간 결과 + 로딩
컨텍스트 없는 프롬프트
(새 세션) "이 함수 개선해줘"
@src/payment.ts 의 N+1 쿼리
문제 해결해줘
13-10. 고급 기법 중급+
Extended Thinking (복잡한 알고리즘)
키: Option+T (맥) / Alt+T로 토글
다음 문제 알고리즘 설계 (깊은 사고 단계 포함):
문제: 100만 주문 데이터에서 사기 거래 실시간 탐지
- 지연 < 100ms
- 메모리 < 500MB
- 오탐지율 < 1%
- 온라인 학습 지원
다양한 접근법 검토 → 장단점 분석 → 최선 솔루션 구현
Sub-agent로 병렬 조사
sub-agent로 @src/ 디렉토리를 탐색해줘.
주요 구조, 의존성, 데이터 흐름 파악 후 요약 보고.
# → 메인 컨텍스트 보존, 별도 컨텍스트에서 탐색
스크린샷/이미지 활용 (UI 작업)
[스크린샷 붙여넣기]
이 디자인을 React 컴포넌트로 구현해줘.
- Tailwind CSS
- 반응형 + 호버/포커스 상태
- 구현 후 스크린샷 찍어서 비교
맥 스크린샷: Cmd+Shift+4 → 영역 선택 → Claude Code에서 Ctrl+V
13-11. 언어/프레임워크별 팁
Python
Python 3.11+ 환경:
- poetry로 의존성 관리
- 사용 가능: requests, pandas, numpy, pydantic
- 테스트: pytest
스타일:
- PEP 8 준수
- Type hints 필수 (from typing import ...)
- Docstring: Google 스타일
TypeScript/React
타입 안정성:
- strict mode (tsconfig.json)
- any 금지
- React.FC 사용 X, 함수 + interface Props
- 제네릭은 extends로 제약
컴포넌트 구조:
UserList/
├── UserList.tsx (컨테이너)
├── UserListItem.tsx
├── UserDetailModal.tsx
└── useUserList.ts (훅)
상태: @src/store의 Zustand
Node.js/Express (API 명세)
POST /api/payments
요청:
{
"userId": "uuid",
"amount": number (센트),
"currency": "USD" | "EUR" | "KRW",
"idempotencyKey": "string"
}
응답 (200):
{
"transactionId": "uuid",
"status": "completed"
}
에러:
- 400: 형식 오류
- 402: 결제 거절
- 409: idempotencyKey 중복 → 이전 결과
- 503: 결제 서버 장애 + Retry-After
13-12. 코드 품질 향상 프롬프트 모음 ⭐⭐⭐
리팩토링 요청
다음 원칙으로 리팩토링:
1. DRY: 중복 로직 추출
2. SOLID:
- 단일 책임 (한 함수 = 한 일)
- 개방-폐쇄
- 인터페이스 분리
3. 가독성:
- 변수명 명확
- 함수 길이 < 20줄
- 중첩 < 3단계
리팩토링 후:
- 기존 테스트 모두 통과 확인
- Before/After 요약
성능 최적화
@src/features/search/search.ts 최적화:
측정 항목:
1. 응답 시간 목표 < 100ms
2. 메모리 사용
3. DB 쿼리 (N+1, 인덱스)
기법:
- 쿼리 배치 처리
- 캐싱 (Redis)
- 인덱싱 전략
- 알고리즘 개선
결과:
1. 벤치마크 전/후 비교
2. 메모리 프로파일
3. 쿼리 최적화 설명
보안 검토
보안 전문가로서 검토:
1. 입력 검증 (SQL injection, XSS, CSRF)
2. 인증/인가 (JWT, 권한, 세션)
3. 데이터 보호 (암호화, 로그)
4. API 보안 (rate limit, CORS)
결과:
- 심각도 (High/Medium/Low)
- 수정 방법 (코드 예시)
코드 리뷰
@src/auth/login.ts PR 리뷰:
항목:
1. 정확성
2. 테스트 커버리지
3. 성능 (병목)
4. 보안 (취약점)
5. 스타일 일관성
6. 문서화
결과:
[ ] 승인 가능
[ ] 변경 필요
[ ] 변경 + 재검토
각 항목별 구체적 피드백 + 코드 예시
14. 세션 운영 & 멀티세션 복원 활용
여러 작업을 위해 Claude 세션을 동시에 여러 개 띄워두고 쓰다 보면 "컴퓨터를 껐다 켜면 그 세션들을 전부 다시 띄우는 게 번거롭다"는 문제에 부딪힌다. 결론부터 말하면 — 세션을 계속 켜둘 필요가 없다. 모든 세션은 디스크에 저장되므로, 이 문제는 "유지"가 아니라 "복원"으로 풀면 된다.
14-1. 세션은 이미 저장되어 있다 — resume
~/.claude/projects/<프로젝트 경로>/<세션ID>.jsonl
그래서 재부팅 후엔 세션을 다시 만드는 게 아니라 이어서 여는 것이다.
# 그 작업을 하던 프로젝트 폴더로 이동해서
cd ~/projects/my-app
claude -c # --continue : 이 폴더의 "가장 최근 세션"을 바로 이어서 열기
claude -r # --resume : 이 폴더의 세션 목록에서 골라 열기
claude -r <세션ID> # 특정 세션을 ID로 직접 지정해 열기
/resume 으로도 다른 세션으로 갈아탈 수 있다. 재부팅은 세션을 지우지 않는다 — 복원만 편하게 만들면 문제 끝.
14-2. 한 번에 복원하기 — 런처
프로젝트마다 cd → claude -c 를 손으로 반복하는 대신, 부팅 후 명령 하나(또는 더블클릭)로 모든 세션을 한꺼번에 여는 방법이다. 세 가지 접근이 있다.
| 방법 | 특징 | 재부팅 생존 |
|---|---|---|
| 셸 스크립트 + 터미널 탭 ( osascript) |
macOS에서 Terminal/iTerm 탭을 여러 개 자동으로 열고 각 탭에서 cd … && claude -c 실행. 가장 직관적. |
스크립트만 다시 실행하면 됨 |
| tmux (터미널 멀티플렉서) | 여러 세션을 한 창의 분할/창으로 묶어 관리. 터미널을 닫아도 detach로 살아있음. |
기본은 X. tmux-resurrect/continuum 플러그인으로 레이아웃 복원 가능 |
| 셸 함수/별칭 | ~/.zshrc 에 claude-work 같은 함수 하나 정의해 자주 쓰는 세트를 한 단어로 호출. |
함수만 다시 호출 |
# 세션 하나에 프로젝트별 window를 만들고 각각 claude -c 실행
tmux new-session -d -s work -c ~/projects/app-a # 창1
tmux send-keys -t work 'claude -c' C-m
tmux new-window -t work -c ~/projects/app-b # 창2
tmux send-keys -t work 'claude -c' C-m
tmux attach -t work # 한 화면에서 창 전환하며 사용
# 각 프로젝트를 새 Terminal 탭에서 이어서 열기 (osascript)
for dir in ~/projects/app-a ~/projects/app-b ~/projects/api; do
osascript -e "tell application \"Terminal\" to do script \"cd $dir && claude -c\""
done
LaunchAgent 에 걸면 부팅 후 자동으로 열린다. 다만 대화형 TUI라 "부팅 시 자동 시작"보다 "더블클릭/한 단어 호출"이 더 안전하다 — 의도치 않은 작업 재개를 막을 수 있다.
14-3. 애초에 세션 수를 줄이기 — 서브에이전트로 컨텍스트 분리
세션을 여러 개로 나눈 이유가 순수하게 "컨텍스트 오염 방지"라면, 세션을 늘리는 대신 서브에이전트로 푸는 게 더 깔끔하다.
- 관리할 터미널/세션 수가 줄어든다 → 복원 부담도 함께 감소
- 탐색·검토·제작 같은 작업은 멀티에이전트 파이프라인으로 한 세션 안에서 처리
- 정말로 독립적인 "진행 중 대화"만 별도 세션으로 남기면 된다
14-4. 컴퓨터를 꺼도 되는 경우 — 클라우드 예약 실행
작업이 반복적이거나 자동화 가능하다면(예: 매일 아침 PR 점검, 야간 테스트 수선, 정기 리포트), 내 컴퓨터에 세션을 띄워둘 이유가 없다. cron 기반 원격 에이전트로 옮기면 컴퓨터가 꺼져 있어도 클라우드에서 실행된다.
/schedule류의 예약 실행(routine) — 정해진 시각/주기에 원격에서 에이전트 실행- 로컬에서 길게 도는 작업은
/loop(주기 반복) ·/background(백그라운드 태스크)와 조합 - 핵심: "사람이 지켜봐야 하는 대화"는 로컬 세션, "스스로 돌아도 되는 일"은 클라우드 예약으로 분리
14-5. 어떤 방법을 고를까
| 상황 | 추천 방법 |
|---|---|
| 독립적인 진행 중 대화가 여럿 꼭 필요하다 | 14-2 런처 — 부팅 후 한 명령으로 claude -c 일괄 복원 |
| 세션을 나눈 이유가 컨텍스트 분리뿐이다 | 14-3 서브에이전트 — 1세션으로 통합, 복원 대상 자체를 줄임 |
| 그 작업들이 반복적/자동화 가능하다 | 14-4 클라우드 예약 — 컴퓨터를 꺼도 실행 |
| 대부분의 현실적인 경우 | 조합 — 불필요한 세션은 14-3로 줄이고, 남은 건 14-2로 빠르게 복원 |
.jsonl로 보존되어 claude -c/-r로 그대로 돌아온다. 진짜 비용은 "띄워둔 세션 개수만큼의 메모리·주의력"이므로, 세션 수를 줄이고 복원을 자동화하는 쪽이 거의 항상 낫다.
15. ultra 키워드 & 스킬·메모리 — 무엇을 언제 쓰나 활용
"항상 자연어 프롬프트로만" 작업하던 사람이 자주 듣는 단어들 — ultrathink, /ultraplan, Superpowers — 의 정체와 진위를 정리하고, 스킬·메모리·프롬프트 중 무엇을 언제 쓰면 좋은지 의사결정 기준을 제시합니다.
ultrathink는 정확도가 필요할 때 가볍게 한 단어, /ultraplan·Superpowers는 선택이다.
15-1. ultra 계열 키워드 — 실재 여부와 사용법
| 키워드 | 실재 / 종류 | 어떻게 쓰나 · 무엇을 하나 |
|---|---|---|
ultrathink |
✅ 네이티브 매직 키워드 | 프롬프트 아무 곳에나 ultrathink라고 적으면 그 턴 한 번만 추론을 깊게 한다. 슬래시 명령이 아니다. ("think / think hard" 같은 단계 사다리는 현재 공식 보장 X — ultrathink 하나만 확실) |
/ultraplan |
✅ 네이티브 슬래시 명령 | 클라우드 기반 계획 세션을 만들고 브라우저에서 계획을 검토한 뒤 실행/터미널 복귀. 로컬·읽기전용인 Plan Mode(Shift+Tab)와는 다르다. |
ultracode |
✅ 네이티브 설정 | 추론을 xhigh로 올리고 워크플로(멀티에이전트) 자동 오케스트레이션을 켠다. 큰 작업용. |
| effort levels | ✅ 별도 개념 | low · medium · high · xhigh · max. 세션 전체의 추론 강도. (위 키워드들과 다른 축) |
# 광학 수차 다이어그램의 물리 검수처럼 틀리면 안 되는 작업
ultrathink 비점수차 그림에서 자오/구결 초점선 방향이 표준과 맞는지 검증해줘
# 평범한 작업엔 굳이 붙일 필요 없다 (지연·토큰만 늘어남)
central_bank.html 맨 아래에 page-tools 블록 추가해줘
15-2. Superpowers — 서드파티 플러그인
Superpowers는 Jesse Vincent(obra)가 만든 서드파티 Claude Code 플러그인입니다. Anthropic 공식이 아니므로 공식 마켓플레이스 검색에는 잡히지 않습니다(= "없는 기능"이 아니라 "공식이 아님"). 브레인스토밍·계획·TDD·git 워크플로 등 스킬 묶음을 제공하며, 소프트웨어 개발 지향이 강합니다.
# 1) obra 마켓플레이스 등록
/plugin marketplace add obra/superpowers-marketplace
# 2) 플러그인 설치
/plugin install superpowers
# 설치 후 /plugin 으로 포함된 스킬·명령 확인
15-3. 프롬프트 vs 스킬 vs 메모리 — 무엇이 다른가
| 방식 | 무엇 | 언제 강한가 |
|---|---|---|
| 자연어 프롬프트 | 매번 직접 지시 | 일회성·탐색적 작업. 매번 "어떻게"를 다시 설명해야 함 |
| 메모리 ( CLAUDE.md / MEMORY.md) |
세션을 넘어 유지되는 규칙·맥락 | 매번 같은 규칙을 다시 말하기 싫을 때. 작성 컨벤션·폴더 구조·선호(다이어그램 우선 등)를 한 번 박아두면 매 세션 자동 적용 |
| 스킬 ( /my-skill) |
반복 절차를 한 명령으로 고정 | 같은 다단계 작업을 반복할 때. 문단짜리 지시를 명령 하나로 압축·공유 |
15-4. 추천 우선순위 (반복 작업이 많은 경우)
| 순위 | 무엇 | 왜 / 예시 |
|---|---|---|
| ① | 메모리 / CLAUDE.md | 가장 ROI 큼. 반복 규칙(컴포넌트 클래스·index 등록 형식·팔레트·다크모드)을 프로젝트 CLAUDE.md에 고정 → 매 세션 재설명 불필요 |
| ② | 스킬 1~2개 | 가장 반복적인 기계적 작업을 명령화. 예: /new-page <주제>(골격+목차+등록 스캐폴딩), /add-diagram(겹침 방지 규칙 자동 적용) |
| ③ | ultrathink |
상황용. 정확도가 중요한 순간에만 단어 하나(검수·까다로운 계산·다중 파일 동기화) |
| ④ | /ultraplan |
가끔. 새 대주제 통째 추가·여러 파일 개편 같은 큰 작업 전. 점진적 섹션 추가엔 과함 |
| ⑤ | Superpowers | 선택. 개발(TDD·git) 지향이라 문서 사이트엔 효용 작음 — 보류 또는 아이디어만 차용 |
16. 체크리스트 & 요약
프롬프트 작성 체크리스트
시작 전
- CLAUDE.md 작성/업데이트
- 필요한 파일 식별 (@ 문법)
- 요구사항 명확히 정의
- 제약 조건 명시
프롬프트 작성 시
- 구체적 표현 (함수명, 파일명)
- 입력/출력 예시 제공
- 엣지 케이스 명시
- 검증 기준 제공 (테스트, 스크린샷, 메트릭)
- 필요시 역할 지정
실행 중
- 복잡 작업은 Plan Mode부터 시작
- 작업을 단계별로 분해
- 컨텍스트 윈도우 모니터링 (
/context) - 필요시
/clear또는/compact
완료 후
- 검증 기준 통과 확인
- 테스트 실행/통과
/review또는/simplify로 마무리- 커밋 및 PR 생성
핵심 한 줄 요약
- Shift+Tab(모드 전환) + @파일 + /clear — 이 세 가지만 익혀도 Claude Code 작업이 달라집니다.
- 좋은 프롬프트 = 컨텍스트 + 명세 + 검증 기준. 3박자가 맞으면 한 번에 끝납니다.
- 반복 규칙은 CLAUDE.md에. 매번 프롬프트에 쓰지 마세요.
- 한 세션 = 한 작업. 끝나면
/clear. - 모호하면 Plan Mode로 시작. 계획 검토 → 자신 있으면 Auto-Accept로 실행.
실전 워크플로우 시나리오 모음
1. 새 세션 시작
claude
2. 작업 이름 부여
/rename feature-google-oauth
3. Plan Mode 진입
Shift+Tab (Default → Plan)
4. 분석 및 계획
@src/auth/session.ts 와 @docs/oauth-spec.md 를 보고
Google OAuth를 추가하는 계획을 세워줘.
- 수정할 파일 목록
- 필요한 환경변수
- 새 테스트 케이스
- 배포 시 주의사항
5. 계획 검토 (Ctrl+G로 에디터에서 편집)
6. 실행 모드로 전환
Shift+Tab (Plan → Default)
7. 구현 진행
계획대로 구현해줘. 각 단계마다 테스트 통과 확인.
8. 코드 정리
/simplify
9. 보안 검토 (인증 코드라서)
/security-review
10. 최종 리뷰
/review
11. 커밋 & PR
! git commit -am "feat: Google OAuth 추가"
! gh pr create --fill
1. 에러 재현
! python app.py
# → 에러 출력
2. 원인 분석 (관련 파일 제시)
위 에러의 원인을 @src/api/payment.ts 에서 찾아줘.
스택 트레이스 기준으로 정확한 위치 짚어줘.
3. 재현 테스트 먼저 작성
이 버그를 재현하는 테스트를 @tests/payment.test.ts 에
추가해줘 (실패하는 상태로).
4. 테스트 실행 (실패 확인)
! pytest tests/test_payment.py::test_bug_repro -v
5. 수정 진행
이제 버그를 수정해서 위 테스트가 통과하도록 해줘.
6. 전체 테스트 실행
! pytest
7. 커밋
! git commit -am "fix: 결제 실패 시 트랜잭션 롤백 안 되던 버그"
1. 변경 사항 확인
! git diff main..HEAD --stat
! git diff main..HEAD
2. 종합 리뷰
/review
3. 도메인별 추가 리뷰
security-reviewer 서브에이전트로 검토해줘.
performance-engineer 관점에서
@src/api/search.ts 의 쿼리 최적화 포인트를 찾아줘.
4. 테스트 커버리지 점검
QA engineer로서 @src/api/search.ts 의 엣지 케이스
중 테스트가 누락된 것을 찾아줘.
5. 문서 점검
technical writer로서 @docs/api.md 가
@src/api 의 변경사항과 동기화되어 있는지 확인해줘.
1. 백업
! git checkout -b refactor/callback-to-async
2. Plan Mode로 영향 분석
Shift+Tab → Plan Mode
Explore 서브에이전트로 @src 에서 콜백 패턴을
사용하는 모든 파일을 찾아줘. 다음 정보를 표로:
- 파일 경로
- 콜백 사용 함수
- 외부에서 호출하는 위치
- async/await 마이그레이션 난이도 (상/중/하)
3. 단계 분해
위 결과를 바탕으로 의존성 없는 leaf부터
순서대로 마이그레이션할 계획을 세워줘.
한 PR에 묶을 단위도 나눠줘.
4. 단계별 구현 (각 PR마다)
Shift+Tab → Default Mode
1단계 PR: @src/utils 폴더만 마이그레이션해줘.
기존 테스트가 모두 통과하는지 확인.
5. 검증 후 PR 생성
/review
! gh pr create --fill
6. 다음 단계로 (/clear 후 새 세션)
/clear
1. /init으로 CLAUDE.md 생성
/init
2. Plan Mode로 전체 구조 탐색
Shift+Tab → Plan Mode
이 프로젝트의 아키텍처를 파악해줘:
- 사용 언어/프레임워크
- 디렉토리 구조와 각 폴더의 역할
- 진입점(entry point)과 라우팅
- 데이터베이스 모델
- 인증 흐름
- 외부 의존성
3. 핵심 흐름 다이어그램
사용자가 회원가입을 하면 어떤 순서로 어떤
파일들이 호출되는지 시퀀스 다이어그램으로 그려줘.
4. README 보충
위 분석 결과를 바탕으로 @README.md 의 빠진
부분을 보충해줘 (특히 신규 개발자 온보딩 섹션).
5. CLAUDE.md 업데이트
/memory
# 발견한 패턴, 주의사항, 명령어를 CLAUDE.md에 저장
학습 추천 순서 (초보자용)
/init으로 현재 프로젝트에 CLAUDE.md 생성Shift+Tab으로 모드 전환 연습@파일경로참조 연습!Shell mode로 빠른 명령 실행 익히기/review,/simplify빌트인 명령어 써보기- 자주 하는 작업을 스킬로 만들기 (
.claude/skills/) - 필요시 MCP 서버 추가 (GitHub, Notion)
- 자동화는 훅으로 (
.claude/settings.json)