Claude Code 사용법 & 프롬프트 팁

자연어 프롬프트만 쓰던 사람을 위한 전체 기능 가이드 + 좋은 코드를 생성하는 프롬프트 작성법

읽는 방법
각 챕터 상단에 가장 자주 쓰는 항목을 먼저 배치했고, 표시로 빈도를 나타냈습니다.
  • ⭐⭐⭐ — 매일 쓰는 필수 기능
  • ⭐⭐ — 주 단위로 자주 씀
  • — 특정 상황에서 유용

⭐ 가장 자주 쓰는 것 (3개만 익혀도 작업이 달라짐)

처음 시작한다면 이 세 가지만 먼저 익히세요. 가장 효과가 빠릅니다.

Shift+Tab
권한 모드 순환 (Default → Plan → Auto-accept). 작업 성격에 따라 모드를 바꾸는 것이 가장 큰 차이를 만듭니다.
@파일경로
파일/폴더를 프롬프트에 첨부. @app.py처럼 입력하면 Claude가 그 파일을 읽고 응답합니다. Tab으로 자동완성됨.
Plan Mode (Shift+Tab)
읽기 전용 계획 모드. Shift+Tab을 한 번 누르면 진입. 큰 작업 시작 전에 먼저 계획을 세우고 검토받으면 실수가 크게 줄어듭니다.
/clear
컨텍스트 초기화. 다른 작업으로 넘어갈 때 무조건 실행. 안 하면 이전 대화가 새 작업에 간섭합니다.
!명령어
셸 명령 직접 실행. ! npm test, ! git status — Claude를 안 거치고 빠르게 출력 확인.
/init
프로젝트에 한 번만 실행. CLAUDE.md를 자동 생성해서 프로젝트 규칙을 영구 저장합니다.
핵심 워크플로우
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 활용 (보존할 정보 명시)
# 좋은 예시 — 무엇을 보존할지 구체적으로
/compact 현재 진행 중인 OAuth 구현 코드와
        @src/auth/oauth.ts 의 최신 버전을 보존하고
        나머지 토론 내용은 요약해줘

# 나쁜 예시 — 막연한 지시
/compact 정리해줘  ← 중요 정보가 사라질 수 있음
사용 예시 — /btw 활용
# Claude가 큰 작업을 하는 중에...

/btw package.json의 react 버전이 뭐야?
# → 빠르게 확인하고 메인 작업으로 복귀
#   히스토리에 남지 않아서 컨텍스트가 깨끗

/btw 방금 만든 함수 이름이 뭐였지?

2-3. 실행 모드 / 모델

참고
Plan Mode 진입은 슬래시 명령어가 아니라 Shift+Tab 키보드 단축키로 합니다. 자세한 내용은 7. 모드 섹션 참고.
빈도 명령어 용도
⭐⭐ /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 기반 예약 실행.
사용 예시 — /loop로 반복 실행
# 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가 매 턴마다 사용자의 새 프롬프트 없이도 스스로 다음 턴을 이어가며 그 조건이 충족될 때까지 작업한다. 기존 "한 번 시키고 → 답 받고 → 다시 시키는" 턴 기반 흐름을 장시간 자율 에이전트 흐름으로 바꿔주는 명령어.

한 줄 개념
매 턴 종료 후 별도의 검증 모델(기본 Haiku)이 대화 전체를 읽고 "완료 조건이 충족됐는가?" 만 판단한다.
  • 아니오 → 그 이유를 다음 턴의 지침으로 전달 + 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의 회귀 버그를 수정"
좋은 완료 조건의 3요소
  1. 측정 가능한 종료 상태 — 테스트 결과, 빌드 exit code, lint 0 warnings
  2. 검증 방법 명시 — "npm test가 exit 0", "tsc --noEmit 에러 없음"
  3. 지켜야 할 제약 — "공개 API는 변경하지 말 것", "DB 스키마는 그대로"
실전 예시 — 좋은 /goal
/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
⚠️ 절대 피해야 할 패턴 (Anti-patterns)
  • /goal 코드를 더 좋게 만들어줘 — 검증 불가, 무한 루프 위험
  • /goal 사용자 경험을 개선 — 평가 모델이 대화만 보고 판단 못 함
  • /goal 멋진 디자인으로 리팩토링 — 주관적 종료 조건 → 토큰 무한 소모
평가 모델은 대화 기록(transcript)에서만 판단한다 — 외부 사실에 의존하는 조건은 영영 "no"가 떠서 무한히 돌아간다.
잘 맞는 활용 시나리오
  • 코드 마이그레이션 — "모든 .js → .ts 변환, tsc 통과까지"
  • 테스트 커버리지 끌어올리기 — "coverage 80% 달성, 모든 테스트 green"
  • 리팩토링 — 완료 기준을 객관 지표로 묶을 수 있을 때
  • 야간 / 주말 자율 실행 — 가드레일을 명확히 걸어둔 경우
  • 회귀 버그 추적 — "이 테스트 케이스가 통과할 때까지"

턴 진행 중 표시되는 정보

실전 흐름 예제 — 턴이 자동으로 이어지는 모습
# 목표 설정
/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 + 서브에이전트 결합
자율 루프 안에서 무거운 조사는 서브에이전트에 위임하면, 메인 세션 컨텍스트가 30턴 동안 오염되지 않는다.
/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은 계획이 아니라 종료 조건을 미리 못박아두는 것.
참고 — 출시 맥락
OpenAI Codex CLI가 2026-04-30에 먼저 /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)

실전 활용 예시

상황 1 — 버그 수정
@src/api/payment.ts 에서 결제 실패 시 트랜잭션이
롤백되지 않는 버그가 있어. @tests/payment.test.ts 의
테스트 패턴 참고해서 재현 테스트 작성하고 수정해줘.
상황 2 — 새 기능 추가
@src/components/Button.tsx 와 동일한 스타일 패턴으로
@src/components/IconButton.tsx 컴포넌트를 만들어줘.
Props는 @types/icon.ts 의 IconName을 사용.
상황 3 — 코드 이해
@src/utils/auth.ts 의 refreshToken 함수가
@src/middleware/session.ts 의 어떤 흐름에서 호출되는지
순서대로 설명해줘. 다이어그램으로 그려도 좋아.
상황 4 — 패턴 따라 만들기
@src/api/users.ts 의 CRUD 패턴을 그대로 따라서
@src/api/products.ts 를 만들어줘. 다만 products는
재고(stock) 필드가 추가로 필요해.
상황 5 — 설정 파일 참조
@.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 — 에러 메시지 분석
# 1. 에러를 직접 실행
! python app.py

# 2. (에러 출력이 컨텍스트에 추가됨)
# 3. Claude에게 분석 요청
위 에러의 원인이 뭐야? 어떻게 고쳐?
시나리오 2 — 테스트 결과 분석
! pytest tests/test_auth.py -v
# → 실패한 테스트 출력

실패한 테스트 케이스만 골라서
원인을 분석하고 수정 방안을 제시해줘.
시나리오 3 — 의존성 확인
! pip list | grep -i flask
! npm ls react

# 버전 확인 후
이 버전들로 호환 가능한 OAuth 라이브러리 추천해줘.
시나리오 4 — 빠른 파일 작업
! cat .env.example
! find . -name "*.log" -mtime -1
! du -sh node_modules
! git log --oneline -10
시나리오 5 — DB / API 빠른 확인
! 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 (다음 작업 준비)

모드별 실전 시나리오

Default Mode가 적합한 경우
# 예시 1: 처음 보는 코드를 신중하게 수정
@legacy/billing.py 의 calculate_tax 함수
버그 수정해줘. 각 변경마다 보여줘.

# 예시 2: 프로덕션 코드 수정
@src/payment 의 결제 로직을 수정해야 해.
변경 전후를 확인하면서 진행해줘.
Plan Mode가 적합한 경우
# 예시 1: 큰 리팩토링 (수정 전 분석만)
Shift+Tab → Plan Mode
@src 전체에서 사용 중인 콜백 패턴을
async/await로 마이그레이션하려고 해.
영향받는 파일 목록과 변경 순서를 계획해줘.

# 예시 2: 처음 보는 코드베이스 파악
Shift+Tab → Plan Mode
이 프로젝트의 인증 흐름을 파악해줘.
관련 파일 목록과 각 파일의 역할,
요청 흐름을 다이어그램으로 정리해줘.
Auto-Accept Mode가 적합한 경우
# 예시 1: 단순 반복 작업
Shift+Tab 두 번 → Auto-Accept
@src/components 의 모든 .jsx 파일을
.tsx로 변환하고 타입 추가해줘.

# 예시 2: 검증된 계획 실행
# (Plan Mode에서 이미 계획 승인됨)
Shift+Tab 두 번 → Auto-Accept
방금 검토한 계획대로 구현해줘.
중간에 멈추지 말고 끝까지.
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.mdsecurity-reviewer).
description 가장 중요한 필드. Claude가 "언제 이 에이전트를 자동으로 부를지" 판단하는 근거다. 구체적으로 쓸수록 자동 위임이 잘 된다. PROACTIVELY, MUST BE USED 같은 표현을 넣으면 더 적극적으로 위임한다.
tools 선택 공백 또는 쉼표로 구분. 생략하면 메인 세션의 모든 도구를 상속한다. 검토용 에이전트라면 Read Grep Glob처럼 최소 권한으로 좁히는 게 안전하다.
model 선택 opus / sonnet / haiku / inherit. 단순 탐색은 haiku(빠르고 저렴), 정밀 검토는 opus처럼 작업 난이도에 맞춘다.
💡 description이 "자동 위임"을 좌우한다
Claude는 매 요청마다 등록된 에이전트들의 description만 훑어보고 "이 작업에 딱 맞는 전문 에이전트가 있나?"를 판단한다. 본문(프롬프트)이 아무리 좋아도 description이 모호하면 영영 자동으로 안 불린다.
# 나쁜 예 — 언제 써야 할지 모름
description: 코드를 검토합니다

# 좋은 예 — 트리거 상황이 분명함
description: 보안 취약점 검토 전문가. 인증/인가 코드, API 엔드포인트,
  사용자 입력 처리부를 수정하거나 추가한 직후 PROACTIVELY 호출할 것.
호출 방법
security-reviewer 서브에이전트로 @src/auth 코드를 검토해줘
# 또는
/agents
# → security-reviewer 선택
예제 2 — 테스트 작성 전문 에이전트 (.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. 프로덕션 코드는 수정하지 않는다 — 버그를 발견하면 테스트로 드러내고 보고만 한다.

서브에이전트 활용 시나리오

시나리오 1 — 큰 코드베이스 탐색 (Explore)
# 메인 컨텍스트를 보존하면서 조사
Explore 서브에이전트로 이 프로젝트의 데이터베이스
모델 구조를 파악해줘. 모든 모델 파일을 찾고,
각 모델의 필드와 관계를 표로 정리해줘.

# → 서브에이전트가 별도 컨텍스트에서 탐색
# → 결과 요약만 메인 세션에 반환
# → 메인 세션 컨텍스트는 깨끗하게 유지
시나리오 2 — 병렬 작업
# 한 번에 여러 조사를 병렬로
다음을 병렬로 진행해줘:
1. Explore 에이전트로 @src/api 의 모든 엔드포인트 목록 수집
2. Explore 에이전트로 @tests 의 테스트 커버리지 분석
3. 위 두 결과를 비교해서 테스트 없는 엔드포인트 찾기
시나리오 3 — 도메인별 전문 에이전트
# 보안 검토
security-reviewer로 @src/auth 검토해줘

# 성능 분석
performance-engineer로 @src/api/search 의
N+1 쿼리 문제를 찾아줘

# 테스트 작성
test-writer로 @src/utils/parser.ts 의
엣지 케이스 테스트를 추가해줘
시나리오 4 — 호출부터 결과 반환까지 (전체 흐름)
# 메인 세션에서 한 줄로 위임
> 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명의 전문가가 분업해 처리하는 파이프라인이 된다.

⚠️ 먼저 알아야 할 작동 원리 — "지휘자는 메인 세션"
서브에이전트는 서로를 직접 호출하지 못한다 (기본 도구 집합에 다른 에이전트를 부르는 권한이 없음). 4개를 잇는 지휘자(orchestrator)는 메인 Claude 세션이다.
  • 메인 세션이 researcher를 부르고 → 그 출력을 받아
  • fact-checker의 입력으로 넘기고 → 통과한 자료를
  • builder에게 주고 → 산출물을
  • qa-verifier로 검증한다.
그래서 각 .mddescription"무엇을 입력받아 무엇을 돌려주는지"를 분명히 적어두면 메인 세션이 더 잘 엮는다.
🧑‍✈️ 메인 세션 = 오케스트레이터 (각 단계 출력을 다음 단계 입력으로 전달)
1
🔍 탐색
researcher.md
자료·코드·문서를 출처와 함께 수집
2
🔎 검토
fact-checker.md
수집 자료의 정확성·최신성 교차검증
3
🔧 제작
builder.md
검증된 자료로만 실제 구현
4
✅ 검증
qa-verifier.md
테스트·요구사항 충족 확인

아래는 "결제(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로 이 파이프라인을 "자동 반복"시키기
검증 통과를 완료 조건으로 걸면, 사람이 매 단계를 챙기지 않아도 4단계 루프가 스스로 돈다 (/goal + 서브에이전트).
/goal payment 모듈이 qa-verifier 검증을 통과할 것.
      검증: `npm test`가 exit 0 + 요구사항 체크리스트 전부 OK.
      방법: researcher→fact-checker→builder→qa-verifier 순으로 진행하고,
            검증 실패 시 builder 단계로 돌아가 반복.
      상한: 25턴 또는 60분.
왜 한 에이전트가 다 하지 않고 4개로 쪼개나
  • 역할 분리 = 품질 — "만드는 자(builder)"와 "검사하는 자(qa-verifier)"를 분리해야 자기 결과를 무비판적으로 통과시키는 일을 막는다.
  • 컨텍스트 격리 — 탐색 단계의 방대한 원자료가 제작 단계 컨텍스트를 오염시키지 않는다. 각 단계는 요약만 다음으로 넘긴다.
  • 모델 최적화 — 탐색·검증은 sonnet, 정밀한 검토·제작은 opus처럼 단계별로 비용/성능을 맞출 수 있다.
  • 재사용 — 한 번 만든 researcher.md·qa-verifier.md는 다른 작업에도 그대로 재활용된다.

9. 훅 (Hooks) 고급

중요한 차이점
CLAUDE.md는 권장사항이지만 훅은 확정적입니다. Claude가 무시할 수 없습니다.

생명주기 이벤트에 자동 실행되는 셸 명령. .claude/settings.json에 설정합니다.

주요 이벤트

이벤트 타이밍 활용 예
PreToolUse 도구 실행 전 위험 명령 차단
PostToolUse 도구 실행 후 파일 저장 후 lint 자동 실행
Stop Claude 대기 상태 완료 알림
SessionStart 세션 시작 초기 설정
사용 예시 — 파일 저장 후 자동 lint + 알림
{
  "hooks": {
    "PostToolUse": [{
      "matcher": "Write|Edit",
      "hooks": [{
        "type": "command",
        "command": "npm run lint:fix"
      }]
    }],
    "Stop": [{
      "hooks": [{
        "type": "command",
        "command": "osascript -e 'display notification \"Claude 대기 중\"'"
      }]
    }]
  }
}
사용 예시 — Python 자동 포맷 (Black + isort)
{
  "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
사용 예시 — GitHub 통합
# 이슈 자동 구현
이슈 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` 사용
CLAUDE.md 작성 원칙
  • 포함: 빌드/테스트 명령어, 코드 스타일, 자주 하는 실수, 아키텍처 결정
  • 제외: 코드를 보면 알 수 있는 것, 자주 변하는 정보
  • 길이: 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. 프롬프트 작성 팁

좋은 프롬프트의 3대 요소
  1. 컨텍스트: @ 문법으로 관련 파일 명시 + 제약 조건
  2. 명세: 입력/출력 예시 + 엣지 케이스 + 검증 기준
  3. 단계 분해: Plan → Implement → Verify 사이클

13-1. 명확한 컨텍스트 제공 ⭐⭐⭐ 가장 중요

@ 멘션으로 관련 파일 지정

❌ BAD
로그인 기능 구현해줘.
이전 코드 패턴이랑 맞춰서 JWT 사용해야 해.
✅ GOOD
@src/auth/session.ts 의 기존 JWT 흐름을 유지하면서
@docs/auth-architecture.md 의 Google OAuth 흐름을 추가해줘.

참고:
- @src/auth/middleware.ts (미들웨어 패턴)
- @src/config/env.example (환경변수)
- @tests/auth.test.ts (테스트 스타일)

제약 조건 명시

❌ BAD
대시보드 만들어줘.
✅ GOOD
대시보드 구현. 제약 조건:
- 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)

❌ BAD
이메일 유효성 검사 함수 만들어줘.
✅ GOOD
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

검증 기준 제공

공식 문서 핵심 원칙
"Claude performs dramatically better when it can verify its own work."
→ 테스트, 스크린샷, 메트릭으로 완성 기준을 측정 가능하게 만들어주세요.
UI 작업 검증 예시
@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 워크플로우.

❌ BAD
Google OAuth 통합해줘.
✅ GOOD
# 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. 역할 부여 ⭐⭐

❌ BAD
코드 리뷰해줘.
✅ GOOD
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 선택
한 세션, 한 작업 원칙
한 세션에서 로그인, 대시보드, 마이그레이션을 모두 다루면 컨텍스트가 폭발합니다. 작업별로 worktree를 분리하거나, 작업 사이마다 /clear를 실행하세요.

13-9. 흔한 실수 패턴 (Anti-patterns)

너무 모호한 요청

❌ BAD
더 좋게 만들어줘
✅ GOOD
다음 관점에서 개선:
1. 성능: 쿼리 최적화
2. 보안: 입력 검증
3. 테스트: 엣지 케이스

한 번에 너무 많이 요구

❌ BAD
1. 인증
2. 대시보드
3. 결제
4. 이메일
5. 모바일앱
✅ GOOD
먼저 1번 인증만 구현
→ 완료/검증 후
→ 2번 대시보드 시작

검증 기준 부재

❌ BAD
검색 기능 만들어줘
✅ GOOD
검색 + 검증:
1. 단위 테스트
2. 성능: 100만 레코드 < 100ms
3. UI: 실시간 결과 + 로딩

컨텍스트 없는 프롬프트

❌ BAD
(새 세션) "이 함수 개선해줘"
✅ GOOD
@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 플러그인으로 레이아웃 복원 가능
셸 함수/별칭 ~/.zshrcclaude-work 같은 함수 하나 정의해 자주 쓰는 세트를 한 단어로 호출. 함수만 다시 호출
개념 예시 — tmux로 프로젝트별 창을 한 번에 띄우기
# 세션 하나에 프로젝트별 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                          # 한 화면에서 창 전환하며 사용
개념 예시 — macOS 터미널 탭을 자동으로 여러 개 열기
# 각 프로젝트를 새 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
자동 실행까지 원하면
위 스크립트를 macOS 로그인 항목(Login Items) 이나 LaunchAgent 에 걸면 부팅 후 자동으로 열린다. 다만 대화형 TUI라 "부팅 시 자동 시작"보다 "더블클릭/한 단어 호출"이 더 안전하다 — 의도치 않은 작업 재개를 막을 수 있다.

14-3. 애초에 세션 수를 줄이기 — 서브에이전트로 컨텍스트 분리

세션을 여러 개로 나눈 이유가 순수하게 "컨텍스트 오염 방지"라면, 세션을 늘리는 대신 서브에이전트로 푸는 게 더 깔끔하다.

관점 전환
여러 세션 = 컨텍스트 격리 라고 생각했지만, 1개 세션 + 서브에이전트 로도 같은 격리를 얻는다. 서브에이전트는 자기만의 컨텍스트에서 일하고 요약만 돌려주기 때문이다.
  • 관리할 터미널/세션 수가 줄어든다 → 복원 부담도 함께 감소
  • 탐색·검토·제작 같은 작업은 멀티에이전트 파이프라인으로 한 세션 안에서 처리
  • 정말로 독립적인 "진행 중 대화"만 별도 세션으로 남기면 된다

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 — 의 정체와 진위를 정리하고, 스킬·메모리·프롬프트 중 무엇을 언제 쓰면 좋은지 의사결정 기준을 제시합니다.

핵심 한 줄
반복 작업이 많다면 메모리(규칙 고정) + 스킬 1~2개(절차 자동화) 가 가장 남는 장사다. 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는 "정확도가 필요한 순간"에만
# 광학 수차 다이어그램의 물리 검수처럼 틀리면 안 되는 작업
ultrathink 비점수차 그림에서 자오/구결 초점선 방향이 표준과 맞는지 검증해줘

# 평범한 작업엔 굳이 붙일 필요 없다 (지연·토큰만 늘어남)
central_bank.html 맨 아래에 page-tools 블록 추가해줘

15-2. Superpowers — 서드파티 플러그인

Superpowers는 Jesse Vincent(obra)가 만든 서드파티 Claude Code 플러그인입니다. Anthropic 공식이 아니므로 공식 마켓플레이스 검색에는 잡히지 않습니다(= "없는 기능"이 아니라 "공식이 아님"). 브레인스토밍·계획·TDD·git 워크플로 등 스킬 묶음을 제공하며, 소프트웨어 개발 지향이 강합니다.

설치 (obra 자체 마켓플레이스)
# 1) obra 마켓플레이스 등록
/plugin marketplace add obra/superpowers-marketplace
# 2) 플러그인 설치
/plugin install superpowers
# 설치 후 /plugin 으로 포함된 스킬·명령 확인
⚠️ 정적 HTML 학습 사이트라면
Superpowers는 TDD·git 중심이라 문서/HTML 위주 작업엔 효용이 작습니다. 쓸 만한 부분(브레인스토밍·계획 스킬)은 직접 만든 작은 스킬로 대체하는 편이 더 깔끔합니다.

15-3. 프롬프트 vs 스킬 vs 메모리 — 무엇이 다른가

방식 무엇 언제 강한가
자연어 프롬프트 매번 직접 지시 일회성·탐색적 작업. 매번 "어떻게"를 다시 설명해야 함
메모리
(CLAUDE.md / MEMORY.md)
세션을 넘어 유지되는 규칙·맥락 매번 같은 규칙을 다시 말하기 싫을 때. 작성 컨벤션·폴더 구조·선호(다이어그램 우선 등)를 한 번 박아두면 매 세션 자동 적용
스킬
(/my-skill)
반복 절차를 한 명령으로 고정 같은 다단계 작업을 반복할 때. 문단짜리 지시를 명령 하나로 압축·공유
에이전트 vs 스킬 vs 메모리 한 줄 구분
에이전트 = "누가(분리된 일꾼)" · 스킬 = "절차를 고정" · 메모리 = "규칙·맥락을 기억". 셋은 경쟁이 아니라 이다.

15-4. 추천 우선순위 (반복 작업이 많은 경우)

순위 무엇 왜 / 예시
메모리 / CLAUDE.md 가장 ROI 큼. 반복 규칙(컴포넌트 클래스·index 등록 형식·팔레트·다크모드)을 프로젝트 CLAUDE.md에 고정 → 매 세션 재설명 불필요
스킬 1~2개 가장 반복적인 기계적 작업을 명령화. 예: /new-page <주제>(골격+목차+등록 스캐폴딩), /add-diagram(겹침 방지 규칙 자동 적용)
ultrathink 상황용. 정확도가 중요한 순간에만 단어 하나(검수·까다로운 계산·다중 파일 동기화)
/ultraplan 가끔. 새 대주제 통째 추가·여러 파일 개편 같은 큰 작업 전. 점진적 섹션 추가엔 과함
Superpowers 선택. 개발(TDD·git) 지향이라 문서 사이트엔 효용 작음 — 보류 또는 아이디어만 차용

16. 체크리스트 & 요약

프롬프트 작성 체크리스트

시작 전

프롬프트 작성 시

실행 중

완료 후

핵심 한 줄 요약

  • Shift+Tab(모드 전환) + @파일 + /clear — 이 세 가지만 익혀도 Claude Code 작업이 달라집니다.
  • 좋은 프롬프트 = 컨텍스트 + 명세 + 검증 기준. 3박자가 맞으면 한 번에 끝납니다.
  • 반복 규칙은 CLAUDE.md에. 매번 프롬프트에 쓰지 마세요.
  • 한 세션 = 한 작업. 끝나면 /clear.
  • 모호하면 Plan Mode로 시작. 계획 검토 → 자신 있으면 Auto-Accept로 실행.

실전 워크플로우 시나리오 모음

시나리오 A — 새 기능 구현 (정석 코스)
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
시나리오 B — 버그 수정 (빠른 코스)
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: 결제 실패 시 트랜잭션 롤백 안 되던 버그"
시나리오 C — 코드 리뷰 받기 (전문가 관점)
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 의 변경사항과 동기화되어 있는지 확인해줘.
시나리오 D — 큰 리팩토링 (안전한 코스)
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
시나리오 E — 처음 보는 코드베이스 파악
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에 저장

학습 추천 순서 (초보자용)

  1. /init으로 현재 프로젝트에 CLAUDE.md 생성
  2. Shift+Tab으로 모드 전환 연습
  3. @파일경로 참조 연습
  4. ! Shell mode로 빠른 명령 실행 익히기
  5. /review, /simplify 빌트인 명령어 써보기
  6. 자주 하는 작업을 스킬로 만들기 (.claude/skills/)
  7. 필요시 MCP 서버 추가 (GitHub, Notion)
  8. 자동화는 훅으로 (.claude/settings.json)