Anthropic 의 에이전트형 코딩 도구입니다. 터미널(및 IDE·데스크톱·웹)에서 파일을 읽고, 명령을 실행하고, 코드를 고치고, 스스로 결과를 확인하며 작업을 진행합니다. 이 문서는 사용 팁 모음이 아니라 작업 방식을 파일(CLAUDE.md·스킬·서브에이전트·훅)로 코드화해 반복 가능한 개발 시스템을 만드는 실전 가이드입니다.
| 조작 | 기능 |
|---|---|
/init | 코드베이스를 분석해 시작용 CLAUDE.md 생성 |
/clear | 대화 컨텍스트 초기화 — 관련 없는 작업 사이마다 |
/compact <지시> | 대화를 요약해 컨텍스트 확보 |
/context | 컨텍스트 사용량과 로드된 메모리 파일 확인 |
/memory | CLAUDE.md·자동 메모리 파일 열기 |
/rewind (또는 Esc 두 번) | 이전 체크포인트로 대화·코드 되돌리기 |
Esc | 진행 중인 작업 중단 (컨텍스트는 유지) |
Shift+Tab | 권한 모드 전환 (plan mode 포함) |
@파일경로 | 파일을 직접 참조 |
| 기능 | 위치 | 언제 로드되나 | 강제력 | 용도 |
|---|---|---|---|---|
| CLAUDE.md | ./CLAUDE.md, ~/.claude/CLAUDE.md | 매 세션 시작 | 없음 (지침) | 명령어, 규칙, 구조 |
| Rules | .claude/rules/*.md | 시작 시 또는 paths 일치 파일을 읽을 때 | 없음 | 파일 종류별 규칙 |
| Skills | .claude/skills/<이름>/SKILL.md | 설명만 상주, 호출 시 본문 로드 | 없음 | 반복 워크플로, 도메인 지식 |
| Subagents | .claude/agents/<이름>.md | 위임할 때 별도 컨텍스트로 | 도구 제한은 강제 | 조사·리뷰 등 격리 작업 |
| Hooks | .claude/settings.json 의 hooks | 라이프사이클 이벤트마다 | 강제 (결정적) | 포맷, 린트, 위험 명령 차단 |
| MCP | .mcp.json, claude mcp add | 세션 시작 시 연결 | 권한 규칙 적용 | 외부 도구·데이터 연결 |
| Plugins | 마켓플레이스 / --plugin-dir | 활성화 시 | 구성 요소에 따름 | 위 기능을 묶어 팀에 배포 |
| Headless / Actions | claude -p, GitHub Actions | 스크립트·CI 실행 시 | 권한 플래그로 제한 | 자동화 |
⚠️ 함정: CLAUDE.md·스킬·규칙은 컨텍스트일 뿐 강제 설정이 아닙니다. "절대 main 에 push 하지 마"를 적어도 모델은 어길 수 있습니다. 반드시 지켜야 하는 것은 훅(
PreToolUse)이나 권한 규칙(permissions.deny) 으로 막으세요. → Rule
목표: 불완전해도 좋으니 아이디어 → 동작하는 결과물 → 실행까지 한 번 끝냅니다. 도구에 대한 감을 잡는 가장 빠른 방법입니다.
공식 권장 흐름은 탐색(Explore) → 계획(Plan) → 구현(Implement) → 커밋(Commit) 입니다.
원칙:
체크리스트:
⚠️ 함정: 수정 한 줄짜리 작업까지 plan mode 를 거치면 오버헤드만 늘어납니다. 변경 내용을 한 문장으로 설명할 수 있으면 계획을 건너뛰세요. 계획은 접근 방법이 불확실하거나, 여러 파일을 건드리거나, 낯선 코드일 때 가치가 있습니다.
목표: 초기 설정과 자주 쓰는 명령을 매번 설명하지 않고, 파일로 재현 가능하게 만듭니다.
/init 으로 시작용 CLAUDE.md 를 생성하고, 모델이 스스로 알 수 없는 것만 남기고 다듬습니다.CLAUDE.md 맨 위 "명령어" 섹션에 둡니다./이름 으로 호출합니다.⚠️ 함정: 예전의
.claude/commands/*.md커스텀 슬래시 커맨드는 스킬로 통합됐습니다. 기존 파일은 계속 동작하지만, 새로 만든다면 보조 파일·호출 제어를 지원하는.claude/skills/<이름>/SKILL.md를 쓰세요. 또/init,/clear처럼 내장 명령과 같은 이름으로 만들면 헷갈리니 피하세요.
구현 전에 명세를 먼저 씁니다. 모델은 모호함을 추측으로 채우기 때문입니다.
작성 규칙:
큰 기능은 Claude 에게 인터뷰를 시켜 명세를 만드는 것이 효과적입니다.
명세가 완성되면 새 세션을 열어 구현합니다. 인터뷰 과정이 빠진 깨끗한 컨텍스트에서 명세만 보고 작업하게 하기 위해서입니다. 프롬프트 작성 원칙은 프롬프트 엔지니어링을 참고하세요.
처음부터 완벽한 설계를 하지 않습니다(No Big Design Up Front).
사이클:
패턴과 기술 포인트:
HotDogWidget.tsx 의 패턴을 따라 달력 위젯을 만들어줘")Claude Code 에서의 운영 요령:
Esc 로 멈추고 바로잡습니다./clear 후 배운 점을 반영한 더 나은 프롬프트로 다시 시작합니다. 실패한 시도가 쌓인 긴 세션보다 깨끗한 세션이 거의 항상 낫습니다./rewind 로 되돌립니다.⚠️ 함정: 체크포인트는 Claude 의 파일 편집 도구로 바꾼 내용만 추적합니다. Bash 명령(
rm, 마이그레이션 실행, 외부 API 호출)의 효과는 되돌리지 못합니다. git 커밋을 대체하지 않습니다.
반복 작업을 "사람의 기억"이 아니라 스킬로 승격합니다. 스킬은 설명(description)만 항상 컨텍스트에 있고, 호출될 때 본문이 로드됩니다. 그래서 CLAUDE.md 에 넣기엔 길거나 가끔만 필요한 절차에 적합합니다. 작성법·템플릿은 Skill 문서에 있습니다.
대상:
| 위치 | 범위 |
|---|---|
~/.claude/skills/<이름>/SKILL.md | 내 모든 프로젝트 |
.claude/skills/<이름>/SKILL.md | 이 저장소 (팀 공유) |
<plugin>/skills/<이름>/SKILL.md | 플러그인 활성화 시 /플러그인:이름 |
| frontmatter | 효과 |
|---|---|
| (기본) | 사용자 /이름 호출 + 모델이 설명을 보고 자동 호출 |
disable-model-invocation: true | 사용자만 호출. 커밋·배포처럼 부수효과가 있는 절차에 |
user-invocable: false | / 메뉴에서 숨기고 모델만 사용. 배경 지식용 |
allowed-tools | 스킬 실행 동안 해당 도구를 승인 없이 사용 |
context: fork | 격리된 서브에이전트에서 실행 |
효과: 품질 편차 감소, 온보딩 비용 감소, 절차 변경 시 한 곳만 수정.
⚠️ 함정: 스킬 본문은 호출되면 이후 턴에도 컨텍스트에 남아 계속 토큰을 씁니다. 한 줄 한 줄이 반복 비용이니 짧게 유지하고, 긴 참고 자료는 같은 디렉터리의 별도 파일로 빼서 필요할 때 읽게 하세요. 또
description이 모호하면 자동 호출이 안 되거나 엉뚱할 때 호출됩니다.
매 세션은 빈 컨텍스트로 시작합니다. 매번 설명하지 않도록 기억을 구조화합니다. 컨텍스트 창은 가장 중요한 자원이고, 채워질수록 성능이 떨어진다는 점이 모든 설계의 전제입니다.
| 범위 | 위치 | 공유 |
|---|---|---|
| 조직 정책 | 관리형 정책 경로 (예: macOS /Library/Application Support/ClaudeCode/CLAUDE.md) | 조직 전체 |
| 사용자 | ~/.claude/CLAUDE.md, ~/.claude/rules/ | 나만 (모든 프로젝트) |
| 프로젝트 | ./CLAUDE.md 또는 ./.claude/CLAUDE.md, .claude/rules/ | 팀 (git) |
| 로컬 | ./CLAUDE.local.md | 나만 (이 프로젝트, gitignore) |
| 자동 메모리 | ~/.claude/projects/<project>/memory/MEMORY.md | 나만 (Claude 가 직접 기록) |
포함할 것 / 뺄 것:
| 포함 | 제외 |
|---|---|
| 모델이 추측할 수 없는 Bash 명령 | 코드를 읽으면 알 수 있는 것 |
| 기본값과 다른 코드 스타일 | 언어의 표준 관례 |
| 테스트 방법, 선호 테스트 러너 | 상세 API 문서 (링크로 대체) |
| 브랜치·PR 규칙 | 자주 바뀌는 정보 |
| 이 프로젝트 고유의 설계 결정과 함정 | "깨끗한 코드를 쓴다" 같은 자명한 말 |
운영 전략:
@docs/architecture.md 처럼 import 합니다. (단, import 한 파일도 시작 시 로드되므로 토큰이 줄지는 않습니다.)paths frontmatter 를 단 .claude/rules/ 로 옮겨, 해당 파일을 다룰 때만 로드되게 합니다.AGENTS.md 가 이미 있으면 CLAUDE.md 에 @AGENTS.md 한 줄로 공유합니다.CLAUDE.md 를 처음부터 만들어 주는 프롬프트는 CLAUDE.md 생성 프롬프트에, 좋은 규칙의 조건은 Rule에 있습니다.
⚠️ 함정: 규칙이 지켜지지 않으면 먼저
/context로 파일이 실제로 로드됐는지 확인하세요. 서브디렉터리의 CLAUDE.md 와paths규칙은 해당 파일을 읽을 때 로드되므로, 세션 시작 직후엔 없을 수 있습니다. 서로 모순된 규칙이 있으면 모델은 경고 없이 하나를 임의로 고릅니다.
훅은 라이프사이클 이벤트에서 셸 명령(또는 HTTP, 프롬프트 등)을 결정적으로 실행합니다. CLAUDE.md 가 "부탁"이라면 훅은 "보장"입니다.
| 이벤트 | 시점 | 대표 용도 |
|---|---|---|
SessionStart | 세션 시작 | 환경 정보 주입 |
UserPromptSubmit | 프롬프트 제출 시 | 프롬프트 검사, 컨텍스트 추가 |
PreToolUse | 도구 실행 전 | 위험 명령·보호 경로 차단 |
PostToolUse | 도구 실행 후 | 편집 후 포맷·린트 |
Stop | 응답 종료 시 | 테스트 통과 전까지 종료 막기 |
SubagentStop | 서브에이전트 종료 시 | 결과 검증 |
PreCompact | 컨텍스트 압축 전 | 보존할 정보 기록 |
Notification | 알림 발생 시 | 데스크톱 알림 |
tool_name, tool_input 등)을 받습니다.PreToolUse 에서 2로 끝내면 도구 호출이 막히고, Stop 에서 2로 끝내면 Claude 가 멈추지 않고 계속 작업합니다. PostToolUse 는 이미 실행된 뒤라 막을 수 없습니다.~/.claude/settings.json(사용자), .claude/settings.json(프로젝트 공유), .claude/settings.local.json(개인). /hooks 로 확인합니다.⚠️ 함정: 훅은 사용자 권한으로 임의의 명령을 실행합니다. 남이 만든 저장소의
.claude/settings.json훅도 실행 대상이며, 특히claude -p비대화형 실행은 신뢰 확인 창 없이 프로젝트 훅과.mcp.json서버를 로드합니다. CI·스크립트에서는--bare로 자동 탐색을 끄고 필요한 설정만 플래그로 넘기세요.
| 스코프 | 저장 위치 | 공유 |
|---|---|---|
local (기본) | ~/.claude.json (프로젝트별) | 나만 |
project | .mcp.json | 팀 (git) |
user | ~/.claude.json | 나만 (모든 프로젝트) |
MCP 도구는 mcp__<서버>__<도구> 이름으로 노출되어 권한 규칙·훅 matcher 에 그대로 쓸 수 있습니다. 개념은 MCP 문서를 참고하세요.
원칙:
gh, aws 같은 CLI 가 있으면 CLI 가 가장 컨텍스트 효율적입니다. MCP 는 CLI 가 없거나 인증·구조화된 조회가 필요할 때.서브에이전트는 자기만의 컨텍스트, 시스템 프롬프트, 허용 도구로 실행되고 결과 요약만 돌려줍니다. 파일을 많이 읽는 조사·리뷰를 맡기면 메인 대화가 깨끗하게 유지됩니다.
.claude/agents/(프로젝트), ~/.claude/agents/(사용자). /agents 로 관리합니다.name, description 이고, tools(허용 목록), model, permissionMode, skills, mcpServers, hooks 등을 지정할 수 있습니다.@ 멘션으로 지정합니다.패턴:
⚠️ 함정: 구조 없이 에이전트 수만 늘리면 복잡도와 토큰 비용이 폭증합니다. 또 "허점을 찾아라"라고 시킨 리뷰어는 코드가 멀쩡해도 뭔가를 찾아냅니다. 정확성·요구사항에 영향을 주는 문제만 보고하라고 범위를 정하지 않으면 과잉 설계로 이어집니다. 여러 세션을 자동 조율하는 Agent teams 는 실험 기능입니다.
claude -p 는 같은 에이전트 루프를 비대화형으로 실행합니다. CI, pre-commit, 대량 마이그레이션에 씁니다. 같은 기능을 Python/TypeScript 코드로 제어하려면 Claude Agent SDK 를 씁니다.
| 플래그 | 용도 |
|---|---|
--output-format text | json | stream-json | 출력 형식 (json 은 result, session_id, 비용 포함) |
--json-schema '<schema>' | 스키마에 맞는 structured_output 반환 |
--allowedTools | 승인 없이 쓸 도구 (Bash(git diff *) 처럼 접두사 매칭) |
--permission-mode | acceptEdits, dontAsk, plan 등 |
--continue / --resume <id> | 이전 대화 이어서 |
--append-system-prompt | 기본 시스템 프롬프트에 지시 추가 |
--max-turns | 반복 횟수 제한 |
GitHub Actions — Claude Code 에서 /install-github-app 을 실행하면 GitHub App 설치, 시크릿 등록, 워크플로 PR 생성까지 안내합니다. 이후 이슈·PR 에서 @claude 로 멘션하면 동작합니다.
⚠️ 함정: 무인 실행은 권한을 좁히는 것이 핵심입니다.
--allowedTools없이 넓은 권한 모드로 돌리면 프롬프트 인젝션이 담긴 이슈 본문 하나로 원치 않는 명령이 실행될 수 있습니다. API 키는 반드시 시크릿으로 두고,--max-turns와 워크플로 타임아웃으로 비용 폭주를 막으세요.
플러그인은 스킬, 서브에이전트, 훅, MCP 서버를 한 단위로 묶어 마켓플레이스로 배포합니다. 한 프로젝트의 .claude/ 에서 다듬은 구성을 여러 저장소·팀원에게 그대로 퍼뜨릴 때 씁니다.
| 구성 | 담당 |
|---|---|
| Memory (CLAUDE.md, rules) | 무엇을 알아야 하는가 |
| Skills | 어떻게 반복 작업을 하는가 |
| Subagents | 누구에게 맡기는가 |
| Hooks · 권한 | 무엇을 반드시 지키는가 |
| MCP · CLI | 무엇과 연결되는가 |
| Headless · Actions · Plugins | 사람 없이 어떻게 돌고, 어떻게 퍼뜨리는가 |
이 가이드가 목표로 하는 변화:
"잘 쓰는 개발자"가 아니라 "재현 가능한 개발 시스템을 가진 엔지니어"