Claude Code 확장하기
Claude Code는 코드를 추론하는 모델과 파일 작업, 검색, 실행 및 웹 접근을 위한 내장 도구를 결합합니다. 내장 도구는 대부분의 코딩 작업을 다룹니다. 이 가이드는 확장 계층을 다룹니다. Claude가 알아야 할 내용을 사용자 정의하고, 외부 서비스에 연결하고, 워크플로우를 자동화하기 위해 추가하는 기능입니다.
핵심 에이전트 루프가 어떻게 작동하는지 알아보려면 Claude Code 작동 방식을 참조하세요.
Claude Code를 처음 사용하시나요? 프로젝트 규칙을 위해 CLAUDE.md로 시작하세요. 필요에 따라 다른 확장을 추가하세요.
개요
확장은 에이전트 루프의 다양한 부분에 연결됩니다.
- CLAUDE.md: Claude가 모든 세션에서 보는 지속적인 컨텍스트를 추가합니다.
- Skills: 재사용 가능한 지식과 호출 가능한 워크플로우를 추가합니다.
- MCP: Claude를 외부 서비스 및 도구에 연결합니다.
- Subagents: 격리된 컨텍스트에서 자신의 루프를 실행하고 요약을 반환합니다.
- Agent teams: 공유 작업 및 피어 투 피어 메시징으로 여러 독립적인 세션을 조정합니다.
- Hooks: 라이프사이클 이벤트에서 실행되며 스크립트, HTTP 요청, 프롬프트 또는 subagent를 실행할 수 있습니다.
- Plugins 및 marketplaces: 이러한 기능을 패키징하고 배포합니다.
Skills는 가장 유연한 확장입니다. Skill은 지식, 워크플로우 또는 지침을 포함하는 마크다운 파일입니다. /deploy와 같은 명령으로 skill을 호출하거나, Claude가 관련이 있을 때 자동으로 로드할 수 있습니다. Skill은 현재 대화에서 실행되거나 subagents를 통해 격리된 컨텍스트에서 실행될 수 있습니다.
환경 구성하기
몇 가지 설정 단계를 통해 Claude Code를 모든 세션에서 훨씬 더 효과적으로 만들 수 있습니다. CLAUDE.md로 시작하고, 반복되는 작업이나 외부 연결이 나타날 때 필요한 확장을 추가하세요.
시간이 지남에 따라 설정 구축하기
모든 것을 미리 구성할 필요는 없습니다. 각 기능에는 인식 가능한 트리거가 있으며, 대부분의 팀은 대략 이 순서로 추가합니다.
| 트리거 | 추가 |
|---|---|
| Claude가 규칙이나 명령을 두 번 잘못 수행 | CLAUDE.md에 추가 |
| 작업을 시작하기 위해 동일한 프롬프트를 계속 입력 | 사용자 호출 가능 skill로 저장 |
| 동일한 플레이북이나 다단계 절차를 세 번째로 채팅에 붙여넣기 | skill로 캡처 |
| Claude가 볼 수 없는 브라우저 탭에서 계속 데이터 복사 | 해당 시스템을 MCP 서버로 연결 |
| 부작용 작업이 다시 참조하지 않을 출력으로 대화 범람 | subagent를 통해 라우팅 |
| 요청하지 않고 매번 무언가가 발생하기를 원함 | hook 작성 |
| 두 번째 저장소가 동일한 설정 필요 | plugin으로 패키징 |
동일한 트리거는 이미 가진 것을 업데이트할 시기를 알려줍니다. 반복된 실수나 반복되는 검토 의견은 채팅의 일회성 수정이 아니라 CLAUDE.md 편집입니다. 계속 손으로 조정하는 워크플로우는 다른 수정이 필요한 skill입니다.
효과적인 CLAUDE.md 작성하기
/init을 실행하여 현재 프로젝트 구조를 기반으로 시작 CLAUDE.md 파일을 생성한 다음 시간이 지남에 따라 개선하십시오.
CLAUDE.md는 Claude가 모든 대화의 시작 부분에서 읽는 특수 파일입니다. Bash 명령, 코드 스타일 및 워크플로우 규칙을 포함하십시오. 이는 Claude에게 코드만으로는 추론할 수 없는 지속적인 컨텍스트를 제공합니다.
/init 명령은 코드베이스를 분석하여 빌드 시스템, 테스트 프레임워크 및 코드 패턴을 감지하여 개선할 수 있는 견고한 기초를 제공합니다.
CLAUDE.md 파일에 필수 형식은 없지만 짧고 인간이 읽을 수 있도록 유지하십시오. 예를 들어:
# 코드 스타일
- ES 모듈(import/export) 구문을 사용하고, CommonJS(require)는 사용하지 마세요
- 가능하면 import를 구조 분해하세요 (예: import { foo } from 'bar')
# 워크플로우
- 일련의 코드 변경을 완료했을 때 타입 체크를 확인하세요
- 성능상 이유로 전체 테스트 스위트가 아닌 단일 테스트를 실행하는 것을 선호하세요
CLAUDE.md는 모든 세션에서 로드되므로 광범위하게 적용되는 것만 포함하십시오. 도메인 지식이나 때때만 관련된 워크플로우의 경우 대신 skills를 사용하십시오. Claude는 필요에 따라 로드하므로 모든 대화를 복잡하게 하지 않습니다.
간결하게 유지하십시오. 각 줄에 대해 다음을 물어보십시오: "이것을 제거하면 Claude가 실수를 할까?" 그렇지 않으면 삭제하십시오. 부풀려진 CLAUDE.md 파일은 Claude가 실제 지시사항을 무시하게 합니다!
| ✅ 포함 | ❌ 제외 |
|---|---|
| Claude가 추측할 수 없는 Bash 명령 | Claude가 코드를 읽어서 파악할 수 있는 것 |
| 기본값과 다른 코드 스타일 규칙 | Claude가 이미 알고 있는 표준 언어 규칙 |
| 테스트 지시사항 및 선호하는 테스트 러너 | 상세한 API 문서(대신 문서 링크) |
| 저장소 에티켓(분기 이름 지정, PR 규칙) | 자주 변경되는 정보 |
| 프로젝트에 특정한 아키텍처 결정 | 긴 설명 또는 튜토리얼 |
| 개발자 환경 특이성(필수 환경 변수) | 자명한 관행(예: "깨끗한 코드 작성") |
| 일반적인 함정 또는 명백하지 않은 동작 | 파일별 코드베이스 설명 |
Claude가 규칙에도 불구하고 계속 원하지 않는 작업을 수행하면 파일이 너무 길어서 규칙이 손실되고 있을 가능성이 있습니다. Claude가 CLAUDE.md에서 답변된 질문을 하면 표현이 모호할 수 있습니다. CLAUDE.md를 코드처럼 취급하십시오: 문제가 발생하면 검토하고, 정기적으로 정리하고, 변경 사항을 관찰하여 Claude의 동작이 실제로 변경되는지 테스트하십시오.
강조(예: "IMPORTANT" 또는 "YOU MUST")를 추가하여 지시사항을 조정하면 준수를 개선할 수 있습니다. CLAUDE.md를 git에 체크인하여 팀이 기여할 수 있도록 하십시오. 파일은 시간이 지남에 따라 가치가 증가합니다.
CLAUDE.md 파일은 @path/to/import 구문을 사용하여 추가 파일을 가져올 수 있습니다:
프로젝트 개요는 @README.md를 참조하고 사용 가능한 npm 명령은 @package.json을 참조하세요.
# 추가 지시사항
- Git 워크플로우: @docs/git-instructions.md
- 개인 재정의: @~/.claude/my-project-instructions.md
CLAUDE.md 파일을 여러 위치에 배치할 수 있습니다:
- 홈 폴더(
~/.claude/CLAUDE.md): 모든 Claude 세션에 적용됨 - 프로젝트 루트(
./CLAUDE.md): git에 체크인하여 팀과 공유 - 프로젝트 루트(
./CLAUDE.local.md): 개인 프로젝트 특정 노트; 팀과 공유되지 않도록.gitignore에 이 파일을 추가하십시오 - 상위 디렉토리: 모노레포에 유용하며,
root/CLAUDE.md와root/foo/CLAUDE.md모두 자동으로 가져와집니다 - 하위 디렉토리: Claude는 해당 디렉토리의 파일로 작업할 때 필요에 따라 하위 CLAUDE.md 파일을 가져옵니다
권한 구성하기
auto mode를 사용하여 분류기가 승인을 처리하도록 하거나, /permissions를 사용하여 특정 명령을 허용 목록에 추가하거나, /sandbox를 사용하여 OS 수준 격리를 수행하십시오. 각각은 제어를 유지하면서 중단을 줄입니다.
기본적으로 Claude Code는 시스템을 수정할 수 있는 작업에 대한 권한을 요청합니다: 파일 쓰기, Bash 명령, MCP 도구 등. 이는 안전하지만 번거롭습니다. 10번째 승인 후에는 실제로 검토하지 않고 클릭만 하고 있습니다. 이러한 중단을 줄이는 세 가지 방법이 있습니다:
- Auto mode: 별도의 분류기 모델이 명령을 검토하고 위험해 보이는 것만 차단합니다: 범위 확대, 알 수 없는 인프라, 또는 적대적 콘텐츠 기반 작업. 작업의 일반적인 방향을 신뢰하지만 모든 단계를 클릭하고 싶지 않을 때 최고입니다
- 권한 허용 목록: 안전하다고 알고 있는 특정 도구 허용(예:
npm run lint또는git commit) - 샌드박싱: Claude가 정의된 경계 내에서 더 자유롭게 작동할 수 있도록 하는 OS 수준 격리를 활성화하여 파일 시스템 및 네트워크 액세스를 제한합니다
권한 모드, 권한 규칙, 샌드박싱에 대해 자세히 읽어보십시오.
CLI 도구 사용하기
Claude Code에 gh, aws, gcloud, sentry-cli와 같은 CLI 도구를 사용하여 외부 서비스와 상호 작용하도록 하십시오.
CLI 도구는 외부 서비스와 상호 작용하는 가장 context 효율적인 방법입니다. GitHub를 사용하면 gh CLI를 설치하십시오. Claude는 이슈 생성, pull 요청 열기, 댓글 읽기에 사용하는 방법을 알고 있습니다. gh 없으면 Claude는 여전히 GitHub API를 사용할 수 있지만 인증되지 않은 요청은 종종 속도 제한에 도달합니다.
Claude는 또한 아직 알지 못하는 CLI 도구를 배우는 데 효과적입니다. Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.와 같은 프롬프트를 시도해보십시오.
MCP 서버 연결하기
claude mcp add를 실행하여 Notion, Figma 또는 데이터베이스와 같은 외부 도구를 연결하십시오.
MCP 서버를 사용하면 이슈 추적기에서 기능을 구현하고, 데이터베이스를 쿼리하고, 모니터링 데이터를 분석하고, Figma에서 디자인을 통합하고, 워크플로우를 자동화하도록 Claude에게 요청할 수 있습니다.
hooks 설정하기
예외 없이 매번 발생해야 하는 작업에 hooks를 사용하십시오.
Hooks는 Claude의 워크플로우의 특정 지점에서 자동으로 스크립트를 실행합니다. 권고적인 CLAUDE.md 지시사항과 달리 hooks는 결정론적이며 작업이 발생함을 보장합니다.
Claude가 hooks를 작성할 수 있습니다. "모든 파일 편집 후 eslint를 실행하는 hook 작성" 또는 *"마이그레이션 폴더에 대한 쓰기를 차단하는 hook 작성"*과 같은 프롬프트를 시도해보십시오. .claude/settings.json을 직접 편집하여 hooks를 구성하고, /hooks를 실행하여 구성된 것을 탐색하십시오.
skills 생성하기
.claude/skills/에 SKILL.md 파일을 생성하여 Claude에게 도메인 지식과 재사용 가능한 워크플로우를 제공하십시오.
Skills는 프로젝트, 팀 또는 도메인에 특정한 정보로 Claude의 지식을 확장합니다. Claude는 관련이 있을 때 자동으로 적용하거나 /skill-name으로 직접 호출할 수 있습니다.
.claude/skills/에 SKILL.md가 있는 디렉토리를 추가하여 skill을 생성하십시오:
---
name: api-conventions
description: 우리 서비스의 REST API 설계 규칙
---
# API 규칙
- URL 경로에 kebab-case 사용
- JSON 속성에 camelCase 사용
- 항상 목록 엔드포인트에 페이지 매김 포함
- URL 경로에서 API 버전 지정 (/v1/, /v2/)
Skills는 또한 직접 호출하는 반복 가능한 워크플로우를 정의할 수 있습니다:
---
name: fix-issue
description: GitHub 이슈 수정
disable-model-invocation: true
---
GitHub 이슈를 분석하고 수정하세요: $ARGUMENTS.
1. `gh issue view`를 사용하여 이슈 세부 정보 가져오기
2. 이슈에 설명된 문제 이해
3. 관련 파일에 대한 코드베이스 검색
4. 이슈를 수정하기 위해 필요한 변경 사항 구현
5. 수정을 확인하기 위해 테스트 작성 및 실행
6. 코드가 linting 및 타입 체크를 통과하는지 확인
7. 설명적인 커밋 메시지 생성
8. 푸시 및 PR 생성
/fix-issue 1234를 실행하여 호출하십시오. 부작용이 있는 워크플로우의 경우 disable-model-invocation: true를 사용하여 수동으로 트리거하려고 합니다.
사용자 정의 subagents 생성하기
.claude/agents/에서 전문화된 어시스턴트를 정의하여 Claude가 격리된 작업에 위임할 수 있도록 하십시오.
Subagents는 자신의 context와 자신의 허용된 도구 집합으로 실행됩니다. 많은 파일을 읽거나 주요 대화를 복잡하게 하지 않고 전문화된 초점이 필요한 작업에 유용합니다.
---
name: security-reviewer
description: 보안 취약점에 대한 코드 검토
tools: Read, Grep, Glob, Bash
model: opus
---
당신은 선임 보안 엔지니어입니다. 다음에 대해 코드를 검토하세요:
- 주입 취약점(SQL, XSS, 명령 주입)
- 인증 및 권한 부여 결함
- 코드의 비밀 또는 자격 증명
- 안전하지 않은 데이터 처리
특정 줄 참조 및 제안된 수정 사항을 제공하세요.
Claude에게 명시적으로 subagents를 사용하도록 하십시오: "subagent를 사용하여 이 코드를 보안 문제에 대해 검토하세요."
plugins 설치하기
/plugin을 실행하여 마켓플레이스를 탐색하십시오. Plugins는 구성 없이 skills, tools, integrations를 추가합니다.
Plugins는 커뮤니티 및 Anthropic의 마켓플레이스에서 설치 가능한 단일 단위로 skills, hooks, subagents, MCP 서버를 번들로 제공합니다. 타입이 지정된 언어로 작업하면 코드 인텔리전스 plugin을 설치하여 Claude에게 정확한 기호 탐색 및 편집 후 자동 오류 감지를 제공하십시오.
기능을 목표에 맞추기
기능은 Claude가 모든 세션에서 보는 항상 켜진 컨텍스트부터 사용자나 Claude가 호출할 수 있는 온디맨드 기능, 특정 이벤트에서 실행되는 백그라운드 자동화까지 다양합니다. 아래 표는 사용 가능한 기능과 각 기능이 언제 적절한지 보여줍니다.
| 기능 | 수행 작업 | 사용 시기 | 예시 |
|---|---|---|---|
| CLAUDE.md | 모든 대화에서 로드되는 지속적인 컨텍스트 | 프로젝트 규칙, "항상 X를 수행" 규칙 | "npm이 아닌 pnpm을 사용하세요. 커밋하기 전에 테스트를 실행하세요." |
| Skill | Claude가 사용할 수 있는 지침, 지식 및 워크플로우 | 재사용 가능한 콘텐츠, 참조 문서, 반복 가능한 작업 | /deploy는 배포 체크리스트를 실행합니다. 엔드포인트 패턴이 있는 API 문서 skill |
| Subagent | 요약된 결과를 반환하는 격리된 실행 컨텍스트 | 컨텍스트 격리, 병렬 작업, 특화된 워커 | 많은 파일을 읽지만 주요 결과만 반환하는 연구 작업 |
| Agent teams | 여러 독립적인 Claude Code 세션 조정 | 병렬 연구, 새로운 기능 개발, 경쟁하는 가설로 디버깅 | 보안, 성능 및 테스트를 동시에 확인하는 검토자 생성 |
| MCP | 외부 서비스에 연결 | 외부 데이터 또는 작업 | 데이터베이스 쿼리, Slack에 게시, 브라우저 제어 |
| Hook | 이벤트에서 실행되는 스크립트, HTTP 요청, 프롬프트 또는 subagent | 모든 일치하는 이벤트에서 실행되어야 하는 자동화 | 모든 파일 편집 후 ESLint 실행 |
Plugins 는 패키징 계층입니다. 플러그인은 skill, hook, subagent 및 MCP 서버를 단일 설치 가능한 단위로 번들합니다. 플러그인 skill은 네임스페이스됩니다(예: /my-plugin:review). 따라서 여러 플러그인이 공존할 수 있습니다. 여러 저장소에서 동일한 설정을 재사용하거나 marketplace 를 통해 다른 사용자에게 배포하려는 경우 플러그인을 사용하세요.
유사한 기능 비교
일부 기능은 유사해 보일 수 있습니다. 구별하는 방법은 다음과 같습니다.
Skill vs Subagent
Skill과 subagent는 다양한 문제를 해결합니다.
- Skills 는 모든 컨텍스트에 로드할 수 있는 재사용 가능한 콘텐츠입니다.
- Subagents 는 주 대화와 별도로 실행되는 격리된 워커입니다.
| 측면 | Skill | Subagent |
|---|---|---|
| 정의 | 재사용 가능한 지침, 지식 또는 워크플로우 | 자신의 컨텍스트를 가진 격리된 워커 |
| 주요 이점 | 컨텍스트 간 콘텐츠 공유 | 컨텍스트 격리. 작업은 별도로 발생하고 요약만 반환됩니다. |
| 컨텍스트 윈도우 영향 | 주 윈도우에 추가 | 자신의 입력 및 출력 토큰이 있는 별도의 윈도우 사용 |
| 최적 용도 | 참조 자료, 호출 가능한 워크플로우 | 많은 파일을 읽는 작업, 병렬 작업, 특화된 워커 |
Skill은 참조 또는 작업일 수 있습니다. 참조 skill은 Claude가 세션 전체에서 사용하는 지식을 제공합니다(API 스타일 가이드처럼). 작업 skill은 Claude에게 특정 작업을 수행하도록 지시합니다(배포 워크플로우를 실행하는 /deploy처럼).
컨텍스트 격리가 필요하거나 컨텍스트 윈도우가 가득 찰 때 subagent를 사용하세요. Subagent는 수십 개의 파일을 읽거나 광범위한 검색을 실행할 수 있지만, 주 대화는 요약만 받습니다. Subagent 작업이 주 컨텍스트를 소비하지 않으므로, 중간 작업이 표시되어야 할 필요가 없을 때도 유용합니다. 사용자 정의 subagent는 자신의 지침을 가질 수 있고 skill을 미리 로드할 수 있습니다.
결합할 수 있습니다. Subagent는 특정 skill을 미리 로드할 수 있습니다(skills: 필드). Skill은 context: fork를 사용하여 격리된 컨텍스트에서 실행될 수 있습니다. 자세한 내용은 Skills를 참조하세요.
CLAUDE.md vs Skill
둘 다 지침을 저장하지만 로드 방식과 목적이 다릅니다.
| 측면 | CLAUDE.md | Skill |
|---|---|---|
| 로드 | 모든 세션, 자동으로 | 온디맨드 |
| 파일 포함 가능 | 예, @path 가져오기 사용 | 예, @path 가져오기 사용 |
| 워크플로우 트리거 가능 | 아니요 | 예, /<name> 사용 |
| 최적 용도 | "항상 X를 수행" 규칙 | 참조 자료, 호출 가능한 워크플로우 |
CLAUDE.md에 넣으세요. Claude가 항상 알아야 할 경우: 코딩 규칙, 빌드 명령, 프로젝트 구조, "X를 하지 마세요" 규칙.
Skill에 넣으세요. 참조 자료인 경우 Claude가 때때로 필요합니다(API 문서, 스타일 가이드) 또는 /<name>으로 트리거하는 워크플로우입니다(배포, 검토, 릴리스).
경험 법칙: CLAUDE.md를 200줄 이하로 유지하세요. 증가하면 참조 콘텐츠를 skill로 이동하거나 .claude/rules/ 파일로 분할하세요.
CLAUDE.md vs Rules vs Skills
세 가지 모두 지침을 저장하지만 로드 방식이 다릅니다.
| 측면 | CLAUDE.md | .claude/rules/ | Skill |
|---|---|---|---|
| 로드 | 모든 세션 | 모든 세션, 또는 일치하는 파일이 열릴 때 | 온디맨드, 호출되거나 관련이 있을 때 |
| 범위 | 전체 프로젝트 | 파일 경로로 범위 지정 가능 | 작업별 |
| 최적 용도 | 핵심 규칙 및 빌드 명령 | 언어별 또는 디렉토리별 가이드라인 | 참조 자료, 반복 가능한 워크플로우 |
CLAUDE.md를 사용하세요. 모든 세션이 필요한 지침: 빌드 명령, 테스트 규칙, 프로젝트 아키텍처.
규칙을 사용하세요. CLAUDE.md를 집중시키기 위해. paths frontmatter가 있는 규칙은 Claude가 일치하는 파일로 작업할 때만 로드되어 컨텍스트를 절약합니다.
Skill을 사용하세요. Claude가 때때로만 필요한 콘텐츠, API 문서 또는 /<name>으로 트리거하는 배포 체크리스트.
Subagent vs Agent team
둘 다 작업을 병렬화하지만 아키텍처가 다릅니다.
- Subagents 는 세션 내에서 실행되고 결과를 주 컨텍스트에 보고합니다.
- Agent teams 는 서로 통신하는 독립적인 Claude Code 세션입니다.
| 측면 | Subagent | Agent team |
|---|---|---|
| 컨텍스트 | 자신의 컨텍스트 윈도우; 결과는 호출자에게 반환됨 | 자신의 컨텍스트 윈도우; 완전히 독립적 |
| 통신 | 주 에이전트에게만 결과 보고 | 팀원이 서로 직접 메시지 |
| 조정 | 주 에이전트가 모든 작업 관리 | 공유 작업 목록과 자체 조정 |
| 최적 용도 | 결과만 중요한 집중된 작업 | 논의 및 협력이 필요한 복잡한 작업 |
| 토큰 비용 | 낮음: 결과가 주 컨텍스트로 요약됨 | 높음: 각 팀원은 별도의 Claude 인스턴스 |
빠르고 집중된 워커가 필요할 때 subagent를 사용하세요. 질문을 연구하고, 주장을 확인하고, 파일을 검토하세요. Subagent는 작업을 수행하고 요약을 반환합니다. 주 대화는 깔끔하게 유지됩니다.
팀원이 결과를 공유하고, 서로 도전하고, 독립적으로 조정해야 할 때 agent team을 사용하세요. Agent team은 경쟁하는 가설이 있는 연구, 병렬 코드 검토, 각 팀원이 별도의 부분을 소유하는 새로운 기능 개발에 최적입니다.
전환점: 병렬 subagent를 실행하지만 컨텍스트 제한에 도달하거나, subagent가 서로 통신해야 할 경우, agent team이 자연스러운 다음 단계입니다.
Agent team은 실험적이며 기본적으로 비활성화됩니다. 설정 및 현재 제한 사항은 agent teams를 참조하세요.
MCP vs Skill
MCP는 Claude를 외부 서비스에 연결합니다. Skill은 Claude가 알아야 할 내용을 확장하며, 이러한 서비스를 효과적으로 사용하는 방법도 포함합니다.
| 측면 | MCP | Skill |
|---|---|---|
| 정의 | 외부 서비스 연결 프로토콜 | 지식, 워크플로우 및 참조 자료 |
| 제공 | 도구 및 데이터 접근 | 지식, 워크플로우, 참조 자료 |
| 예시 | Slack 통합, 데이터베이스 쿼리, 브라우저 제어 | 코드 검토 체크리스트, 배포 워크플로우, API 스타일 가이드 |
이들은 다양한 문제를 해결하며 함께 잘 작동합니다.
MCP 는 Claude에게 외부 시스템과 상호 작용할 수 있는 능력을 제공합니다. MCP 없이는 Claude가 데이터베이스를 쿼리하거나 Slack에 게시할 수 없습니다.
Skill 은 Claude에게 이러한 도구를 효과적으로 사용하는 방법에 대한 지식을 제공하며, /<name>으로 트리거할 수 있는 워크플로우도 포함합니다. Skill에는 팀의 데이터베이스 스키마 및 쿼리 패턴, 또는 팀의 메시지 형식 규칙이 있는 /post-to-slack 워크플로우가 포함될 수 있습니다.
예: MCP 서버는 Claude를 데이터베이스에 연결합니다. Skill은 Claude에게 데이터 모델, 일반적인 쿼리 패턴, 다양한 작업에 사용할 테이블을 가르칩니다.
Hook vs Skill
Hook은 라이프사이클 이벤트에서 실행됩니다. Skill은 Claude의 컨텍스트에 로드됩니다.
| 측면 | Hook | Skill |
|---|---|---|
| 실행 | 셸 명령, HTTP 요청, LLM 프롬프트 또는 subagent | Claude가 읽고 따르는 지침 |
| 트리거 | 라이프사이클 이벤트 예: PostToolUse 또는 SessionStart | /<name>을 입력하거나, Claude가 설명을 작업과 일치시킬 때 |
| 결정론성 | 이벤트에서 항상 실행; 트리거가 보장됨 | Claude가 지침을 해석; 결과는 다양할 수 있음 |
| 컨텍스트 비용 | 0, hook이 출력을 반환하지 않는 한 | 설명은 모든 세션에 로드; 전체 콘텐츠는 사용 시 로드 |
| 최적 용도 | 매번 동일한 방식으로 실행되고 Claude가 생각할 필요가 없는 작업 | Claude가 단계를 적용하는 방법을 결정해야 하거나 콘텐츠가 지식인 워크플로우 |
작업이 매번 동일한 방식으로 실행되고 Claude가 생각할 필요가 없을 때 hook을 사용하세요. 예: 저장 시 형식 지정, rm -rf / 거부, 세션 종료 시 Slack 메시지 게시.
Claude가 단계를 적용하는 방법을 결정해야 하거나 콘텐츠가 지식일 때 skill을 사용하세요. 예: /release 체크리스트, API 스타일 가이드, 디버깅 플레이북.
Hook에 가드레일을 넣으세요. CLAUDE.md 또는 skill의 ".env를 편집하지 마세요"와 같은 지침은 요청이지 보장이 아닙니다. 편집을 차단하는 PreToolUse hook은 강제입니다. 규칙이 매번 유지되어야 하면, 프롬프트 지침이 아니라 hook으로 만드세요.
Hook 출력이 컨텍스트에 들어갑니다. PostToolUse hook이 린터를 실행하면 결과가 Claude가 읽는 텍스트로 피드백됩니다. /fix-lint skill은 Claude에게 해결 방법을 알려줍니다.
기능이 어떻게 계층화되는지 이해하기
기능은 여러 수준에서 정의될 수 있습니다. 사용자 전체, 프로젝트별, 플러그인을 통해, 또는 관리 정책을 통해. 또한 CLAUDE.md 파일을 하위 디렉토리에 중첩하거나 monorepo의 특정 패키지에 skill을 배치할 수 있습니다. 동일한 기능이 여러 수준에 존재할 때, 계층화 방식은 다음과 같습니다.
- CLAUDE.md 파일 은 추가적입니다. 모든 수준이 동시에 Claude의 컨텍스트에 콘텐츠를 제공합니다. 작업 디렉토리 및 위의 파일은 시작 시 로드되고, 하위 디렉토리는 작업할 때 로드됩니다. 지침이 충돌할 때, Claude는 판단을 사용하여 조정하며, 더 구체적인 지침이 일반적으로 우선합니다. CLAUDE.md 파일이 로드되는 방식을 참조하세요.
- Skill과 subagent 는 이름으로 재정의됩니다. 동일한 이름이 여러 수준에 존재할 때, 우선순위에 따라 하나의 정의가 승리합니다(skill의 경우 관리 > 사용자 > 프로젝트; subagent의 경우 관리 > CLI 플래그 > 프로젝트 > 사용자 > 플러그인). 플러그인 skill은 네임스페이스됩니다. 충돌을 피하기 위해. Skill 검색 및 subagent 범위를 참조하세요.
- MCP 서버 는 이름으로 재정의됩니다. 로컬 > 프로젝트 > 사용자. MCP 범위를 참조하세요.
- Hooks 는 병합됩니다. 모든 등록된 hook은 소스에 관계없이 일치하는 이벤트에 대해 실행됩니다. Hooks를 참조하세요.
기능 결합하기
각 확장은 다양한 문제를 해결합니다. CLAUDE.md는 항상 켜진 컨텍스트를 처리하고, skill은 온디맨드 지식과 워크플로우를 처리하고, MCP는 외부 연결을 처리하고, subagent는 격리를 처리하고, hook은 자동화를 처리합니다. 실제 설정은 워크플로우에 따라 이들을 결합합니다.
예를 들어, CLAUDE.md를 프로젝트 규칙에 사용하고, skill을 배포 워크플로우에 사용하고, MCP를 데이터베이스에 연결하고, hook을 모든 편집 후 린팅을 실행하는 데 사용할 수 있습니다. 각 기능은 최적의 작업을 처리합니다.
| 패턴 | 작동 방식 | 예시 |
|---|---|---|
| Skill + MCP | MCP는 연결을 제공하고, skill은 Claude에게 잘 사용하는 방법을 가르칩니다. | MCP는 데이터베이스에 연결하고, skill은 스키마 및 쿼리 패턴을 문서화합니다. |
| Skill + Subagent | Skill은 병렬 작업을 위해 subagent를 생성합니다. | /audit skill은 보안, 성능 및 스타일 subagent를 시작하여 격리된 컨텍스트에서 작동합니다. |
| CLAUDE.md + Skill | CLAUDE.md는 항상 켜진 규칙을 보유하고, skill은 온디맨드로 로드되는 참조 자료를 보유합니다. | CLAUDE.md는 "API 규칙을 따르세요"라고 말하고, skill은 전체 API 스타일 가이드를 포함합니다. |
| Hook + MCP | Hook은 MCP를 통해 외부 작업을 트리거합니다. | 편집 후 hook은 Claude가 중요한 파일을 수정할 때 Slack 알림을 보냅니다. |
컨텍스트 비용 이해하기
추가하는 모든 기능은 Claude의 컨텍스트를 소비합니다. 너무 많으면 컨텍스트 윈도우를 채울 수 있지만, 노이즈를 추가하여 Claude를 덜 효과적으로 만들 수도 있습니다. Skill이 올바르게 트리거되지 않거나 Claude가 규칙을 잃을 수 있습니다. 이러한 트레이드오프를 이해하면 효과적인 설정을 구축하는 데 도움이 됩니다. 실행 중인 세션에서 이러한 기능이 어떻게 결합되는지 대화형으로 보려면 컨텍스트 윈도우 탐색을 참조하세요.
기능별 컨텍스트 비용
각 기능은 다양한 로딩 전략과 컨텍스트 비용을 가집니다.
| 기능 | 로드 시기 | 로드되는 내용 | 컨텍스트 비용 |
|---|---|---|---|
| CLAUDE.md | 세션 시작 | 전체 콘텐츠 | 모든 요청 |
| Skills | 세션 시작 + 사용 시 | 시작 시 설명, 사용 시 전체 콘텐츠 | 낮음(모든 요청마다 설명)* |
| MCP 서버 | 세션 시작 | 도구 이름; 필요 시 전체 스키마 | 도구 사용 시까지 낮음 |
| Subagents | 생성 시 | 지정된 skill이 있는 신선한 컨텍스트 | 주 세션에서 격리됨 |
| Hooks | 트리거 시 | 없음(외부에서 실행) | 0, hook이 추가 컨텍스트를 반환하지 않는 한 |
*기본적으로 skill 설명은 세션 시작 시 로드되므로 Claude가 사용할 시기를 결정할 수 있습니다. Skill의 frontmatter에서 disable-model-invocation: true를 설정하여 수동으로 호출할 때까지 Claude에서 완전히 숨깁니다. 이는 skill의 컨텍스트 비용을 0으로 줄입니다. 작성하지 않은 skill의 경우, 파일을 편집하지 않고도 동일한 작업을 수행하도록 설정에서 skillOverrides를 설정하세요.
기능이 어떻게 로드되는지 이해하기
각 기능은 세션의 다양한 지점에서 로드됩니다. 아래 탭은 각 기능이 언제 로드되고 무엇이 컨텍스트에 들어가는지 설명합니다.
CLAUDE.md
시기: 세션 시작
로드되는 내용: 모든 CLAUDE.md 파일의 전체 콘텐츠(관리, 사용자 및 프로젝트 수준).
상속: Claude는 작업 디렉토리에서 루트까지 CLAUDE.md 파일을 읽고, 해당 파일에 접근할 때 하위 디렉토리에서 중첩된 파일을 검색합니다. 자세한 내용은 CLAUDE.md 파일이 로드되는 방식을 참조하세요.
CLAUDE.md를 200줄 이하로 유지하세요. 참조 자료를 skill로 이동하면 온디맨드로 로드됩니다.
Skills
Skill은 Claude의 도구 키트에 있는 추가 기능입니다. 참조 자료(API 스타일 가이드처럼) 또는 /<name>으로 트리거하는 호출 가능한 워크플로우(배포처럼)일 수 있습니다. Claude Code는 기본적으로 작동하는 /simplify, /batch, /debug와 같은 번들 skill과 함께 제공됩니다. 자신의 것을 만들 수도 있습니다. Claude는 적절할 때 skill을 사용하거나 직접 호출할 수 있습니다.
시기: Skill의 구성에 따라 다릅니다. 기본적으로 설명은 세션 시작 시 로드되고 전체 콘텐츠는 사용 시 로드됩니다. 사용자 전용 skill(disable-model-invocation: true)의 경우, 호출할 때까지 아무것도 로드되지 않습니다.
로드되는 내용: 모델 호출 가능 skill의 경우, Claude는 모든 요청에서 이름과 설명을 봅니다. /<name>으로 skill을 호출하거나 Claude가 자동으로 로드할 때, 전체 콘텐츠가 대화에 로드됩니다.
Claude가 skill을 선택하는 방식: Claude는 작업을 skill 설명과 비교하여 관련성이 있는지 결정합니다. 설명이 모호하거나 겹치면, Claude가 잘못된 skill을 로드하거나 도움이 될 skill을 놓칠 수 있습니다. Claude에게 특정 skill을 사용하도록 지시하려면 /<name>으로 호출하세요. disable-model-invocation: true가 있는 Skill은 호출할 때까지 Claude에게 보이지 않습니다.
컨텍스트 비용: 사용할 때까지 낮음. 사용자 전용 skill은 호출할 때까지 0 비용입니다.
Subagent에서: Skill은 subagent에서 다르게 작동합니다. 온디맨드 로딩 대신, subagent의 skills 필드에 나열된 skill은 시작 시 컨텍스트에 완전히 미리 로드됩니다. Subagent는 여전히 Skill 도구를 통해 나열되지 않은 프로젝트, 사용자 및 플러그인 skill을 검색하고 호출할 수 있습니다.
부작용이 있는 skill에 disable-model-invocation: true를 사용하세요. 이는 컨텍스트를 절약하고 오직 사용자만 트리거하도록 보장합니다.
MCP servers
시기: 세션 시작.
로드되는 내용: 연결된 서버의 도구 이름. 전체 JSON 스키마는 Claude가 특정 도구가 필요할 때까지 연기됩니다.
컨텍스트 비용: 도구 검색은 기본적으로 활성화되므로, 유휴 MCP 도구는 최소한의 컨텍스트를 소비합니다.
신뢰성 참고: MCP 연결은 세션 중간에 조용히 실패할 수 있습니다. 서버가 연결 해제되면 도구가 경고 없이 사라집니다. Claude가 이전에 접근할 수 있었던 MCP 도구를 사용하지 못하는 경우, /mcp로 연결을 확인하세요.
서버당 토큰 비용을 보려면 /mcp를 실행하세요. 적극적으로 사용하지 않는 서버를 연결 해제하세요.
Subagents
시기: 온디맨드, 작업을 위해 사용자나 Claude가 생성할 때.
로드되는 내용: 신선한, 격리된 컨텍스트 포함:
- 시스템 프롬프트(캐시 효율성을 위해 부모와 공유)
- 에이전트의
skills:필드에 나열된 skill의 전체 콘텐츠 - CLAUDE.md 및 git 상태(부모에서 상속)
- 리드 에이전트가 프롬프트에서 전달하는 모든 컨텍스트
컨텍스트 비용: 주 세션에서 격리됨. Subagent는 대화 기록이나 호출된 skill을 상속하지 않습니다.
전체 대화 컨텍스트가 필요하지 않은 작업에 subagent를 사용하세요. 격리는 주 세션이 부풀어지는 것을 방지합니다.
Hooks
시기: 트리거 시. Hook은 도구 실행, 세션 경계, 프롬프트 제출, 권한 요청 및 압축과 같은 특정 라이프사이클 이벤트에서 실행됩니다. 전체 목록은 Hooks를 참조하세요.
로드되는 내용: 기본적으로 없음. Hook은 외부에서 실행됩니다.
컨텍스트 비용: 0, hook이 대화에 메시지로 추가되는 출력을 반환하지 않는 한.
Hook은 Claude의 컨텍스트에 영향을 주지 않아야 하는 부작용(린팅, 로깅)에 이상적입니다.