아래 글은 built-in tools이 아닌 extension layer(CLAUDE.md, Skills, subagents, hooks, MCP, plugins)의 사용에 대한 글이다.
CLAUDE.md - 클로드가 모든 세션에서 참고하는 persistent context
Skills - 재사용 가능한 지식과 호출 가능한 워크플로우
MCP - 외부 서비스와 연결
Subagents - isolated context로 각자 실행하고, 요약을 반환
Hooks - agentic loop 바깥에서 결정론적 스크립트 실행
Plugins & marketplace - 이 기능들을 패키징하고 배포하는 것
Skills는 가장 유연한 방식이다.
스킬은 지식, workflows, instructions들을 담은 markdown 파일이다.
스킬은 슬래시 명령어로 직접 호출할 수도 있고, 상황이 맞다고 판단하면 Claude 가 자동으로 로드할 수도 있다.
그리고 현재 대화에서 사용할 수도 있고, subagent의 격리된 환경에서도 사용할 수 있다.
(여기서 말하는 features는 extension layer의 기능들을 말한다.)
기능들은 매 세션마다 Claude가 항상 보는 context 부터 필요할 때 쓰는 on-demand, 그리고 특정 event에서만 자동으로 호출되는 것까지 다양한 범위를 가진다.
| 기능 | 역할 | 사용하면 좋은 경우 | 예시 |
|---|---|---|---|
| CLAUDE.md | 매 대화마다 로드되는 영구 컨텍스트 | 프로젝트 규칙, “항상 지켜야 하는” 규칙 | “npm이 아니라 pnpm을 사용한다. 커밋 전에 테스트를 실행한다.” |
| Skill | Claude가 사용할 수 있는 지침, 지식, 워크플로우 | 재사용 가능한 내용, 참고 문서, 반복 작업 | /review로 코드 리뷰 체크리스트 실행; 엔드포인트 패턴을 담은 API 문서 스킬 |
| Subagent | 요약 결과만 반환하는 격리된 실행 컨텍스트 | 컨텍스트 분리, 병렬 작업, 전문 작업자 | 여러 파일을 읽고 핵심 내용만 요약하는 리서치 작업 |
| MCP | 외부 서비스와 연결 | 외부 데이터 접근 또는 실제 동작 수행 | 데이터베이스 조회, Slack에 메시지 전송, 브라우저 제어 |
| Hook | 이벤트에 의해 실행되는 결정론적 스크립트 | 예측 가능한 자동화, LLM 개입 불필요 | 파일 수정 시마다 ESLint 실행 |
Plugins 같은 경우는 스킬, 훅, MCP 서버를 하나로 묶은 설치 가능한 단위이다.
만약 여러 repo에서 같은 설정을 재사용하고 싶거나, 다른 사람에게 배포하고 싶을 때 플러그인을 사용하면 된다.
Skill
Subagent
subagent는 리서치 할 때 필요함. 왜냐하면 많은 양의 문서를 읽어야하고 실제 main context는 리서치하는 과정은 필요 없고 결과만 필요하기 때문
CLAUDE.md
Skill
Rule of thunmb
CLAUDE.md는 500줄 이하로 유지하고, 그게 더 커지기 시작한다면 reference content를 스킬로 옮길 것!
MCP는 외부 서비스와 연결하고 Skill은 클로드의 지식을 확장시켜주는 역할이라 아예 다르다.
같이 쓰는 방식
MCP - DB에 연결
Skill - 스키마 설명, 자주 쓰는 쿼리 패턴 등 저장
feature들은 여러 level로 정의 될 수 있다.
사용자 전역(user-wide)
→ 내 계정 전체에 적용
프로젝트 단위(per-project)
→ 특정 레포에서만 적용
플러그인(via plugins)
→ 재사용/배포용 패키지
관리 정책(managed policies)
→ 조직/관리자가 강제 적용
gpt가 말하는 calude.md 사용법
그래서 실전에서는 이렇게 쓴다 (중요)
🔹 홈 디렉터리 CLAUDE.md
• 전역 원칙
• 습관
• 안전 규칙
예:
• “항상 변경 전에 요약을 먼저 제시”
• “파괴적 명령은 반드시 확인 요청”
⸻
🔹 레포 루트 CLAUDE.md
• 프로젝트 규칙
• 스택
• 빌드/테스트 방식
⸻
🔹 서브디렉터리 CLAUDE.md
• 모듈/도메인 특화 규칙
• API 계약
• 레거시 주의사항
feature들은 모두 각기 다른 문제를 풀기 때문에 조합해서 사용하는 것이 좋다
| 패턴 | 동작 방식 | 예시 |
|---|---|---|
| Skill + MCP | MCP가 외부 시스템과의 연결을 제공하고, Skill이 그 연결을 어떻게 잘 사용하는지를 Claude에게 알려준다 | MCP로 데이터베이스에 연결하고, Skill에 스키마와 쿼리 패턴을 문서화 |
| Skill + Subagent | Skill이 여러 Subagent를 생성해 병렬 작업을 수행하게 한다 | /review 스킬이 보안, 성능, 스타일 서브에이전트를 각각 격리된 컨텍스트에서 실행 |
| CLAUDE.md + Skills | CLAUDE.md에는 항상 적용되는 규칙을 두고, Skill에는 필요할 때 로드되는 참고 자료를 둔다 | CLAUDE.md에는 “우리 API 규칙을 따를 것”을 명시하고, Skill에는 전체 API 스타일 가이드를 포함 |
| Hook + MCP | Hook이 이벤트를 감지해 MCP를 통해 외부 동작을 트리거한다 | Claude가 중요 파일을 수정하면 post-edit Hook이 Slack 알림을 전송 |
모든 feature는 결국 claude를 통해서 실행되기 때문에 context를 사용한다.
너무 많이 추가하면 context가 금방 가득 차고, 노이즈가 늘어나 성능이 떨어지기도 한다.
(스킬이 잘못 써지거나, claude가 컨벤션을 잃거나...)
이런 상황을 방지하기 위해 feature 별 cost를 이해해야 한다.
| 기능 | 로드 시점 | 로드되는 내용 | 컨텍스트 비용 |
|---|---|---|---|
| CLAUDE.md | 세션 시작 | 전체 내용 | 모든 요청마다 |
| Skill | 세션 시작 + 사용 시 | 시작 시에는 설명만, 사용 시 전체 내용 | 낮음 (설명만 매 요청마다 로드)* |
| MCP 서버 | 세션 시작 | 모든 도구 정의와 스키마 | 모든 요청마다 |
| Subagent | 생성될 때 | 지정된 스킬을 포함한 새로운 컨텍스트 | 메인 세션과 격리됨 |
| Hook | 트리거될 때 | 없음 (외부에서 실행) | 없음 (단, 훅이 추가 컨텍스트를 반환하면 예외) |
스킬의 기본은 세션 시작 시 설명을 불러오는 거지만,
스킬의 frontmatter에 disable-model-invocation: true를 설정하면, 사용자가 수동으로 호출하기 전까지 Claude에게 그 스킬을 완전히 숨길 수 있다.
즉, context cost를 0으로 만드는 것이다.

로드 시점 (When)
• 세션 시작 시
로드되는 내용 (What loads)
• 모든 CLAUDE.md 파일의 전체 내용
(관리 정책, 사용자 레벨, 프로젝트 레벨 포함)
상속 / 탐색 방식 (Inheritance)
• Claude는 현재 작업 디렉터리부터 루트 디렉터리까지의 CLAUDE.md를 모두 읽는다.
• 작업 중 하위 디렉터리에 접근하면, 그 안에 있는 CLAUDE.md도 추가로 발견하여 로드한다.
• 자세한 동작은 How Claude looks up memories 문서를 참고.
권장 사항
• CLAUDE.md는 약 500줄 이하로 유지하는 것이 좋다.
• 참고용 자료나 자주 필요하지 않은 내용은 Skill로 옮겨라. (Skill은 필요할 때만 로드됨)
개념
로드 시점 (When)
로드되는 내용 (What loads)
Claude가 스킬을 선택하는 방식
컨텍스트 비용 (Context cost)
서브에이전트에서의 동작
권장 사항
로드 시점 (When)
로드되는 내용 (What loads)
컨텍스트 비용 (Context cost)
신뢰성 관련 주의사항
운영 팁
로드 시점 (When)
로드되는 내용 (What loads)
컨텍스트 비용 (Context cost)
권장 사용처
Hooks
로드 시점 (When)
로드되는 내용 (What loads)
컨텍스트 비용 (Context cost)
권장 사용처