본문으로 건너뛰기

스킬 (Skills)

공식 문서: https://code.claude.com/docs/ko/skills

스킬이란?

스킬(Skills)은 Claude Code에 새로운 능력을 가르치거나 자주 쓰는 워크플로우를 패키징한 재사용 가능한 확장 기능입니다. /스킬이름으로 직접 실행하거나, Claude가 상황에 맞게 자동으로 실행할 수 있습니다.

CLAUDE.md가 "항상 적용되는 일반 규칙"이라면, 스킬은 **"필요할 때만 불러오는 전문 도구"**에 가깝습니다.


스킬 구성 요소 (SKILL.md 해부)
🏷️
이름 (name)
name: deploy
호출 시 사용할 슬래시 명령어 이름. /deploy 형태로 실행됩니다.
📝
설명 (description)
description: 배포 실행
Claude가 언제 이 스킬을 자동 호출할지 판단하는 기준이 됩니다.
실행 옵션 (context)
context: fork
fork — 유효한 유일한 값. 격리된 서브에이전트 컨텍스트에서 실행합니다. 생략 시 인라인(기본) 실행됩니다.
📋
지침 (prompt body)
1. 테스트 실행
2. 빌드
3. 배포
frontmatter 아래의 마크다운 본문. Claude에게 전달되는 단계별 작업 지침입니다.

파일 위치: .claude/skills/deploy/SKILL.md  →  /deploy 로 호출


오픈 스탠다드

Claude Code 스킬은 Agent Skills 오픈 스탠다드를 따릅니다. 다른 AI 도구에서도 사용할 수 있는 범용 표준입니다.

기본 제공 스킬 빠른 참조

스킬명령어용도실행 방식
Batch/batch대규모 병렬 코드 변경 (50+ 파일)병렬 워크트리 에이전트
Claude API/claude-apiClaude API/SDK 레퍼런스 로딩인라인 참조
Debug/debug디버그 로깅 활성화 및 분석인라인
Loop/loop프롬프트 주기적 반복 실행크론 작업
Simplify/simplify코드 품질 자동 개선 (3개 병렬 리뷰)병렬 에이전트

CLAUDE.md와의 차이

구분CLAUDE.md스킬
로딩 시점매 세션 시작 시 항상필요할 때만 (온디맨드)
구성단일 파일디렉토리 (메인 파일 + 보조 파일)
호출 방식자동/이름 또는 Claude 자동 판단
용도프로젝트 전반 규칙특정 작업 워크플로우
컨텍스트항상 컨텍스트에 포함호출 시에만 로딩

스킬의 두 가지 유형

스킬 내용은 크게 두 가지 성격으로 나뉩니다:

참조 콘텐츠(Reference Content) - Claude가 현재 작업에 참고하는 지식입니다. 코딩 컨벤션, 아키텍처 패턴, 스타일 가이드 등이 해당됩니다. 인라인으로 실행되어 대화 컨텍스트와 함께 사용됩니다.

---
name: api-conventions
description: 이 코드베이스의 API 설계 패턴
---

API 엔드포인트 작성 시:
- RESTful 네이밍 규칙 사용
- 일관된 에러 형식 반환
- 요청 유효성 검사 포함

태스크 콘텐츠(Task Content) - Claude에게 단계별 작업 지침을 제공합니다. 배포, 커밋, 코드 생성 등 구체적인 행동을 지시합니다. 보통 /skill-name으로 직접 호출하며, disable-model-invocation: true로 자동 호출을 방지합니다.

---
name: deploy
description: 프로덕션에 애플리케이션 배포
context: fork
disable-model-invocation: true
---

애플리케이션을 배포합니다:
1. 테스트 스위트 실행
2. 애플리케이션 빌드
3. 배포 타겟에 푸시

기본 제공 스킬 (Bundled Skills)

Claude Code에는 5개의 프롬프트 기반 스킬이 기본 내장되어 있습니다. 고정 로직으로 동작하는 내장 명령어(/help, /compact, /init 등)와 달리, 이 스킬들은 Claude에게 상세한 플레이북을 제공하여 병렬 에이전트를 띄우고, 파일을 읽고, 코드베이스에 맞게 유연하게 작업합니다.

/batch - 대규모 병렬 코드 변경

용도: 코드베이스 전체에 걸친 대규모 변경을 병렬로 처리합니다.

동작 방식:

  1. 코드베이스를 분석하여 작업을 5~30개 독립 단위로 분해
  2. 분해 계획을 사용자에게 보여주고 승인 요청
  3. 승인 후 각 단위마다 **별도의 Git 워크트리(Worktree)**에서 백그라운드 에이전트 실행
  4. 각 에이전트가 구현 → 테스트 → PR 생성까지 자동 수행
요구사항

/batch는 Git 저장소에서만 작동합니다. 각 작업 단위가 격리된 워크트리에서 실행되므로 Git이 필수입니다.

실전 활용 예시:

# 프레임워크 마이그레이션
/batch src/ 전체를 Solid에서 React로 마이그레이션

# 테스트 프레임워크 전환
/batch tests/ 디렉토리의 모든 테스트를 Jest에서 Vitest로 변환

# 일괄 리팩토링
/batch src/api/ 의 모든 엔드포인트에 Zod 스키마 유효성 검사 추가

# 다국어 지원
/batch src/ 의 모든 하드코딩된 문자열을 i18n 키로 교체

# 의존성 업데이트
/batch 모든 컴포넌트에서 deprecated된 lodash 함수를 ES2024 네이티브 메서드로 교체

# 접근성 개선
/batch src/components/ 의 모든 UI 컴포넌트에 ARIA 속성과 키보드 내비게이션 추가

: /batch는 각 작업이 독립적일 때 가장 효과적입니다. 서로 의존성이 있는 변경 사항은 하나의 단위로 묶거나 수동으로 처리하세요.

/claude-api - Claude API/SDK 레퍼런스 로딩

용도: Claude API 사용법, SDK 레퍼런스, Agent SDK 문서를 세션에 로딩합니다.

자동 활성화: 코드에서 anthropic, @anthropic-ai/sdk, claude_agent_sdk를 import하면 자동으로 활성화됩니다.

지원 언어: Python, TypeScript, Java, Go, Ruby, C#, PHP, cURL

포함 내용:

  • 도구 사용(Tool Use) 패턴
  • 스트리밍(Streaming) 구현
  • 배치(Batch) 처리
  • 구조화된 출력(Structured Output)
  • 흔한 실수와 해결법

실전 활용 예시:

# TypeScript SDK 레퍼런스 로딩
/claude-api typescript

# Python으로 Tool Use 구현할 때
/claude-api python
# 이후: "Tool Use로 날씨 API를 호출하는 에이전트를 만들어줘"

# Agent SDK 사용
/claude-api
# 이후: "Agent SDK로 멀티스텝 워크플로우를 구현해줘"

: /claude-api를 먼저 실행한 후 구체적인 질문을 하면, Claude가 정확한 SDK 문법과 패턴으로 코드를 작성합니다. import문에 anthropic이 포함된 파일을 편집할 때는 자동으로 레퍼런스가 로딩됩니다.

/debug - 디버그 로깅 및 분석

용도: 세션의 디버그 로깅을 활성화하고, 로그를 분석하여 문제를 진단합니다.

동작 방식:

  • 기본적으로 디버그 로깅은 꺼져 있음 (claude --debug로 시작하지 않는 한)
  • /debug 실행 시점부터 로그 캡처 시작
  • 선택적으로 이슈 설명을 전달하면 해당 문제에 집중하여 분석

실전 활용 예시:

# 디버그 모드 활성화
/debug

# 특정 문제 분석을 위해 활성화
/debug MCP 서버 연결이 자꾸 끊기는 문제

# 성능 문제 진단
/debug 파일 검색이 비정상적으로 느림

# 도구 실행 오류 추적
/debug Bash 도구가 타임아웃 되는 이유 분석

: 문제가 간헐적으로 발생할 때 /debug를 먼저 실행해두고, 문제가 재현되면 로그를 기반으로 분석할 수 있습니다.

/loop - 주기적 프롬프트 반복 실행

용도: 프롬프트를 정해진 간격으로 반복 실행합니다. 배포 모니터링, PR 관찰, 주기적 검사에 유용합니다.

문법: /loop [간격] <프롬프트> (간격 생략 시 모델이 자율 조정)

간격 형식: 5m (5분), 30s (30초), 1h (1시간)

실전 활용 예시:

# 배포 상태 모니터링 (5분마다)
/loop 5m 배포가 완료되었는지 확인하고 결과를 알려줘

# PR CI 상태 감시 (3분마다)
/loop 3m gh pr checks를 확인하고 실패한 것이 있으면 알려줘

# 서버 헬스체크 (1분마다)
/loop 1m curl로 https://api.example.com/health 를 확인하고 200이 아니면 경고

# 빌드 로그 모니터링
/loop 2m 빌드 로그에서 새로운 에러가 있는지 확인

# 테스트 결과 폴링
/loop 5m pytest 결과 파일을 확인하고 실패한 테스트가 있으면 보고

: 세션이 열려 있는 동안만 동작합니다. 세션을 닫으면 루프도 종료됩니다. 장기 실행이 필요하면 스케줄 작업을 사용하세요.

/simplify - 코드 품질 자동 개선

용도: 최근 변경된 파일을 3개의 리뷰 에이전트가 병렬로 검토하고 개선합니다.

검토 영역:

  1. 코드 재사용: 중복 코드, 공통 로직 추출 가능성
  2. 코드 품질: 가독성, 네이밍, 복잡도
  3. 효율성: 불필요한 연산, 메모리 사용, 알고리즘 최적화

실전 활용 예시:

# 전체 품질 검토
/simplify

# 특정 관점에 집중
/simplify 메모리 효율에 집중

# 성능 최적화 관점
/simplify 렌더링 성능과 불필요한 re-render에 집중

# 보안 관점
/simplify 입력 유효성 검사와 SQL 인젝션 방어에 집중

# 타입 안전성 관점
/simplify TypeScript 타입 추론과 any 사용 제거에 집중

: 기능 구현 후 커밋하기 전에 /simplify를 실행하면 코드 리뷰에서 지적받을 사항을 미리 잡을 수 있습니다.

내장 명령어와 스킬의 차이

/help, /compact, /init, /memory, /config 등은 고정 로직으로 동작하는 내장 명령어입니다. 위의 5개는 프롬프트 기반 스킬로, Claude가 지침을 따라 병렬 에이전트를 띄우고 유연하게 작업합니다. 내장 명령어 목록은 CLI 레퍼런스를 참고하세요.

첫 번째 스킬 만들기

1단계: 디렉토리 생성

# 개인 스킬 (모든 프로젝트에서 사용)
mkdir -p ~/.claude/skills/explain-code

# 프로젝트 스킬 (이 프로젝트에서만 사용)
mkdir -p .claude/skills/explain-code

2단계: SKILL.md 작성

모든 스킬은 SKILL.md 파일이 필요합니다. 두 부분으로 구성됩니다:

  1. YAML 프론트매터(Frontmatter): --- 마커 사이에 스킬 설정 (이름, 설명 등)
  2. 마크다운 본문: Claude에게 전달할 지침

예시: 코드 설명 스킬

---
name: explain-code
description: 코드를 비유와 다이어그램으로 설명합니다. "이 코드가 어떻게 동작해?"라는 질문에 사용합니다.
---

코드를 설명할 때 다음 순서를 따르세요:

1. **비유로 시작**: 일상생활의 무언가에 비유하여 개념을 소개
2. **다이어그램 그리기**: ASCII 아트로 흐름/구조를 시각화
3. **코드 따라가기**: 단계별로 무슨 일이 일어나는지 설명
4. **주의할 점**: 흔히 하는 실수나 오해 언급

설명은 대화하듯 자연스럽게 작성하세요.

3단계: 사용하기

# 직접 호출
/explain-code src/auth/login.ts

# Claude가 자동으로 호출 (description에 매칭되는 질문을 하면)
> 이 코드가 어떻게 동작하는지 설명해줘

두 가지 방법 모두 Claude가 비유와 ASCII 다이어그램을 포함한 설명을 제공합니다.

스킬 저장 위치

스킬을 어디에 저장하느냐에 따라 사용 범위가 결정됩니다:

위치경로사용 범위우선순위
조직(관리)관리 설정으로 배포조직 전체1순위 (최우선)
개인~/.claude/skills/이름/모든 프로젝트2순위
프로젝트.claude/skills/이름/현재 프로젝트만3순위
플러그인플러그인/skills/이름/플러그인 활성화 시네임스페이스 구분
추가 디렉토리--add-dir 경로 내해당 디렉토리예외적 로딩

같은 이름의 스킬이 여러 위치에 있으면, 우선순위가 높은 쪽이 사용됩니다. 개인 스킬이 프로젝트 스킬보다 우선순위가 높습니다. 플러그인 스킬은 plugin-name:skill-name 네임스페이스를 사용하므로 충돌하지 않습니다.

모노레포 지원

하위 디렉토리의 .claude/skills/도 자동 발견됩니다. 예를 들어 packages/frontend/.claude/skills/에 프론트엔드 전용 스킬을 둘 수 있습니다.

기존 commands 호환

.claude/commands/ 경로의 기존 커맨드 파일도 계속 작동합니다. 같은 이름의 skill과 command가 있으면 skill이 우선됩니다. Skills는 보조 파일, 프론트매터 호출 제어, Claude 자동 로딩 등 추가 기능을 지원합니다.

스킬 디렉토리 구조

각 스킬은 SKILL.md를 포함하는 디렉토리입니다:

my-skill/
├── SKILL.md # 메인 지침 (필수, 500줄 이내 권장)
├── template.md # Claude가 채울 템플릿
├── examples/
│ └── sample.md # 기대하는 출력 형식 예시
└── scripts/
└── validate.sh # Claude가 실행할 수 있는 스크립트

프론트매터 전체 레퍼런스

스킬의 동작을 세밀하게 제어하는 15개 설정 필드입니다. 모든 필드는 선택사항이며, description만 권장됩니다:

필드설명예시
name스킬 이름 (/name으로 호출). 소문자, 숫자, 하이픈. 최대 64자. 미지정 시 디렉토리명 사용fix-issue
description스킬 설명 (Claude 자동 호출 판단에 사용). descriptionwhen_to_use를 합산한 텍스트가 1,536자로 잘리므로 핵심 용도를 앞에 배치GitHub 이슈를 분석하고 수정합니다
when_to_useClaude가 이 스킬을 자동으로 호출할 시점 설명. description을 보완하는 상세 트리거 조건사용자가 이슈 번호를 언급하면 실행
argument-hint자동완성에 표시되는 인자 힌트[이슈번호], [파일명] [형식]
disable-model-invocationtrue면 사용자만 호출 가능 (Claude 자동 호출 불가)true
user-invocablefalse/ 메뉴에서 숨김 (Claude만 호출 가능)false
allowed-tools자동 승인할 도구 목록 (공백 구분 또는 YAML 리스트)Bash Read Grep
model이 스킬에서 사용할 모델 (세션 모델 오버라이드)sonnet, opus
effort노력 수준 (세션 설정 오버라이드)low, medium, high, xhigh
contextfork 설정 시 격리된 서브에이전트에서 실행fork
agentcontext: fork 시 사용할 에이전트 유형Explore, Plan, general-purpose
hooks스킬 라이프사이클에 스코프된 훅아래 예시 참고
paths이 글로브 패턴 파일 작업 시만 자동 활성화 (콤마 구분 또는 YAML 리스트)src/**/*.ts, *.py
shell인라인 셸 명령어 실행 시 사용할 셸. Windows에서 PowerShell 사용 시 CLAUDE_CODE_USE_POWERSHELL_TOOL=1 환경변수도 설정bash (기본값), powershell
preload⚠️ 비공식 필드 — 세션 시작 시 스킬 미리 로드 여부. 공식 문서에 명시되지 않은 확장 필드true
arguments이름이 있는 위치 인자 정의 (배열). $0, $1 대신 설명적 이름 제공[issue_number, priority]

프론트매터 전체 예시:

---
name: deploy
description: 프로덕션 배포를 수행합니다
argument-hint: "[환경]"
disable-model-invocation: true
allowed-tools: Bash(npm *) Bash(git *)
model: sonnet
effort: xhigh
context: fork
agent: general-purpose
paths: "src/**,deploy/**"
shell: bash
hooks:
PreToolUse:
- matcher: "Bash"
hooks:
- type: command
command: "./scripts/security-check.sh"
---

호출 제어 매트릭스

설정사용자 호출Claude 자동 호출설명이 컨텍스트에 로딩전체 스킬 로드 시점
기본값 (설정 없음)✅ (항상)호출 시
disable-model-invocation: true❌ (컨텍스트에 없음)사용자가 호출할 때만
user-invocable: false✅ (항상)호출 시

언제 무엇을 쓸까?

사용 시나리오추천 설정이유
범용 스킬 (코드 리뷰, 설명 등)기본값사용자와 Claude 모두 자유롭게 사용
부작용이 있는 작업 (배포, 커밋, Slack 메시지 전송)disable-model-invocation: trueClaude가 함부로 배포하는 것을 방지
배경 지식 제공 (레거시 시스템 문맥, 도메인 지식)user-invocable: false/legacy-context는 의미 있는 액션이 아님

인자 (Arguments) 사용

스킬에 인자를 전달할 수 있습니다. Claude가 스킬 내용을 읽기 전에 변수가 치환됩니다.

인자 변수

변수설명예시
$ARGUMENTS전체 인자 문자열/fix-issue 42 urgent42 urgent
$ARGUMENTS[0], $ARGUMENTS[1]인덱스로 접근/fix-issue 42$ARGUMENTS[0] = 42
$0, $1, $2위치별 단축 표기/migrate Button React Vue$0=Button, $1=React, $2=Vue

특수 변수

변수설명용도
${CLAUDE_SESSION_ID}현재 세션 ID세션별 로그 파일, 추적
${CLAUDE_SKILL_DIR}스킬의 SKILL.md가 있는 디렉토리 경로번들된 스크립트/파일 참조
${CLAUDE_EFFORT}현재 노력 수준: low, medium, high, xhigh노력 수준에 따라 스킬 동작 분기

인자 예시

---
name: fix-issue
description: GitHub 이슈를 수정합니다
argument-hint: "[이슈번호]"
disable-model-invocation: true
---

GitHub 이슈 $ARGUMENTS를 수정하세요.

1. 이슈 설명을 읽고 이해
2. 관련 코드 찾기
3. 수정 구현
4. 테스트 실행
5. 커밋 생성

사용:

/fix-issue 42
# Claude는 "GitHub 이슈 42를 수정하세요."로 해석
$ARGUMENTS가 없을 때

스킬 내용에 $ARGUMENTS가 포함되어 있지 않아도, 인자를 전달하면 Claude Code가 자동으로 ARGUMENTS: <값>을 스킬 끝에 추가합니다.

위치 인자 예시:

---
name: migrate-component
description: 컴포넌트를 다른 프레임워크로 마이그레이션합니다
---

$0 컴포넌트를 $1에서 $2로 마이그레이션하세요.
기존의 모든 동작과 테스트를 유지하세요.
/migrate-component SearchBar React Vue
# $0=SearchBar, $1=React, $2=Vue

보조 파일 추가

SKILL.md에 모든 내용을 넣지 않고, 상세 내용은 별도 파일로 분리할 수 있습니다:

my-skill/
├── SKILL.md # 메인 지침 (필수, 500줄 이내 권장)
├── reference.md # 상세 API 문서 (필요 시 로딩)
├── examples.md # 사용 예시 (필요 시 로딩)
├── template.md # 생성 템플릿
└── scripts/
└── helper.sh # 유틸리티 스크립트 (실행 대상)

보조 파일은 온디맨드(On-demand)로 로딩됩니다. 대용량 레퍼런스 문서, API 스펙, 예시 컬렉션은 매번 로딩할 필요 없이 필요할 때만 불러옵니다.

SKILL.md에서 참조하여 Claude가 필요할 때 로딩하도록 안내:

## 추가 리소스

- 상세 API 문서는 [reference.md](reference.md)를 참고하세요.
- 사용 예시는 [examples.md](examples.md)를 참고하세요.

라이브 변경 감지

Claude Code는 스킬 디렉토리의 파일 변경을 자동으로 감시합니다. ~/.claude/skills/, 프로젝트 .claude/skills/, 또는 --add-dir 디렉토리 내의 .claude/skills/ 아래에서 스킬을 추가·편집·제거하면 Claude Code를 재시작하지 않고도 현재 세션 내에서 즉시 반영됩니다.

재시작이 필요한 경우

세션이 시작되었을 때 존재하지 않았던 최상위 skills 디렉토리를 새로 생성하는 경우에는 Claude Code를 재시작해야 새 디렉토리를 감시할 수 있습니다.

스킬 콘텐츠 자동 재첨부

/compact나 자동 압축으로 대화가 요약될 때, Claude Code는 요약 후 각 스킬의 가장 최근 호출을 자동으로 재첨부합니다. 재첨부된 스킬은 처음 5,000토큰을 유지하며, 모든 재첨부 스킬이 25,000토큰의 결합 예산을 공유합니다.

컨텍스트 포크 (서브에이전트 실행)

context: fork를 설정하면 스킬이 **격리된 서브에이전트(Sub-agent)**에서 실행됩니다. 스킬 내용이 서브에이전트의 프롬프트가 됩니다.

일반 스킬 vs 포크된 스킬

항목일반 스킬 (인라인)포크된 스킬 (context: fork)
대화 히스토리접근 가능접근 불가
컨텍스트 윈도우메인 세션과 공유별도의 새 컨텍스트
결과 전달직접 대화에 포함요약되어 반환
적합한 작업가이드라인, 참조대규모 리서치, 탐색, 배포
---
name: deep-research
description: 주제를 깊이 조사합니다
context: fork
agent: Explore
---

$ARGUMENTS에 대해 철저히 조사하세요:
1. Glob과 Grep으로 관련 파일 찾기
2. 코드 읽고 분석
3. 구체적인 파일 참조와 함께 결과 요약
context: fork 주의사항

context: fork명확한 작업 지시가 있는 스킬에서만 사용하세요. "이런 API 컨벤션을 따르세요" 같은 가이드라인만 포함된 스킬을 포크하면, 서브에이전트가 할 일을 찾지 못해 의미 없는 결과를 반환합니다.

사용 가능한 에이전트 유형

에이전트설명사용 사례
general-purpose (기본값)전체 도구 접근코드 수정, 명령어 실행, 파일 생성
Explore읽기 전용 도구만코드베이스 탐색, 리서치, 분석
Plan분석/계획 도구설계, 아키텍처 검토, 구현 계획
커스텀 에이전트.claude/agents/에서 정의프로젝트별 특화 에이전트

스킬과 서브에이전트의 관계

접근 방식시스템 프롬프트태스크추가 로딩
스킬 + context: fork에이전트 유형에서 제공SKILL.md 내용CLAUDE.md
서브에이전트 + skills 필드서브에이전트의 마크다운 본문Claude의 위임 메시지프리로드된 스킬 + CLAUDE.md

동적 컨텍스트 주입

스킬 내용에 !`명령어` 문법을 사용하면, Claude가 스킬을 읽기 전에 셸 명령어를 실행하여 그 결과를 스킬에 삽입합니다. 이것은 **전처리(Preprocessing)**이며, Claude가 실행하는 것이 아닙니다.

인라인 명령어

---
name: pr-review
description: 현재 PR을 리뷰합니다
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---

## 현재 PR 정보
- PR diff: !`gh pr diff`
- PR 코멘트: !`gh pr view --comments`
- 변경된 파일: !`gh pr diff --name-only`

## 리뷰 지침
위 PR 정보를 바탕으로 다음을 검토하세요:
1. 보안 이슈
2. 성능 문제
3. 코딩 컨벤션 준수

멀티라인 명령어

여러 줄의 명령어는 ```! 코드 블록을 사용합니다:

## 환경 정보
```!
node --version
npm --version
git status --short
```
Extended Thinking 활성화

스킬 내용에 "ultrathink"이라는 단어를 포함하면 해당 스킬에서 Extended Thinking(사고 모드)이 활성화됩니다.

셸 실행 비활성화

보안 정책으로 동적 컨텍스트 주입을 비활성화하려면 설정에서 "disableSkillShellExecution": true를 설정합니다. 각 명령어가 [shell command execution disabled by policy]로 대체됩니다. 번들(기본 제공) 스킬과 관리(조직) 스킬은 영향받지 않습니다.

시각적 출력 생성

스킬은 번들된 스크립트를 실행할 수 있어, 단순한 프롬프트를 넘어선 강력한 기능을 구현할 수 있습니다. 대표적인 패턴이 인터랙티브 HTML 파일을 생성하여 브라우저에서 데이터를 탐색하는 것입니다.

예시: 코드베이스 시각화 스킬

디렉토리 트리를 인터랙티브 HTML로 시각화하는 스킬입니다:

1. 디렉토리 생성:

mkdir -p ~/.claude/skills/codebase-visualizer/scripts

2. SKILL.md 작성 (~/.claude/skills/codebase-visualizer/SKILL.md):

---
name: codebase-visualizer
description: 코드베이스의 인터랙티브 트리 시각화를 생성합니다. 새 레포 탐색, 프로젝트 구조 파악, 대용량 파일 식별에 사용합니다.
allowed-tools: Bash(python *)
---

# 코드베이스 시각화

프로젝트 루트에서 시각화 스크립트를 실행하세요:

```bash
python ~/.claude/skills/codebase-visualizer/scripts/visualize.py .

현재 디렉토리에 codebase-map.html이 생성되고 브라우저에서 열립니다.


**3. Python 스크립트 작성** (`scripts/visualize.py`): 디렉토리를 스캔하여 접을 수 있는 트리, 파일 크기, 타입별 색상이 포함된 HTML 파일을 생성합니다.

**사용법**:

```bash
# Claude에게 자연어로 요청
> 이 코드베이스를 시각화해줘

# 또는 직접 호출
/codebase-visualizer

이 패턴은 의존성 그래프, 테스트 커버리지 리포트, API 문서, DB 스키마 시각화 등 다양한 시각적 출력에 적용할 수 있습니다.

스킬 접근 제한

도구 접근 제한

allowed-tools 필드로 스킬 실행 중 사용할 수 있는 도구를 제한합니다:

---
name: safe-reader
description: 파일을 읽기만 하고 수정하지 않습니다
allowed-tools: Read Grep Glob
---

코드를 탐색하되 수정하지 마세요.

Claude의 스킬 접근 제어

Claude가 스킬을 호출하는 것을 세 가지 방법으로 제어할 수 있습니다:

1. 모든 스킬 비활성화 - /permissions에서 Skill 도구를 deny:

# deny 규칙에 추가:
Skill

2. 특정 스킬만 허용/차단 - 권한 규칙 사용:

# 특정 스킬만 허용
Skill(commit)
Skill(review-pr *)

# 특정 스킬 차단
Skill(deploy *)

권한 문법: Skill(이름) 정확히 일치, Skill(이름 *) 접두사 일치 + 모든 인자.

3. 개별 스킬 숨기기 - 프론트매터에 disable-model-invocation: true 설정.

설명 문자 예산

스킬 설명은 Claude가 사용 가능한 스킬을 파악할 수 있도록 컨텍스트에 로딩됩니다. 스킬이 많으면 설명이 축약될 수 있습니다. 예산은 컨텍스트 윈도우의 1% (폴백 8,000자)로 동적 설정됩니다.

예산을 늘리려면 환경 변수를 설정하세요:

export SLASH_COMMAND_TOOL_CHAR_BUDGET=16000

각 스킬의 descriptionwhen_to_use를 합산한 텍스트는 1,536자로 잘리므로, 핵심 용도를 설명 앞부분에 배치하세요.

스킬 콘텐츠 생명주기

활성화된 스킬의 전체 콘텐츠(SKILL.md 내용)는 다음 규칙에 따라 컨텍스트에 유지됩니다:

구분설명
전체 콘텐츠 유지 예산최대 25,000 토큰. 이 이하이면 전체 스킬 콘텐츠가 컨텍스트에 포함됩니다.
보존 예산/compact 또는 컨텍스트 압축 후에는 핵심 내용 5,000 토큰이 보존됩니다.
재로딩/compact 후 스킬 콘텐츠가 25,000 토큰 이내이면 전체가 다시 컨텍스트에 첨부됩니다.

이를 통해 컨텍스트 압축(compact) 이후에도 중요한 스킬 내용이 유지됩니다.

실시간 스킬 변경 감지

개발 중에 SKILL.md를 수정하면 즉시 반영됩니다. Claude Code는 스킬 파일의 변경을 감지하여 세션을 재시작하지 않아도 최신 내용을 읽습니다. 새 스킬 디렉토리를 추가하면 자동으로 발견됩니다.

스킬 내 훅(Hook)

스킬의 라이프사이클에 스코프된 훅(Hook)을 정의할 수 있습니다. 스킬이 활성화된 동안만 실행되고, 완료 시 자동 정리됩니다:

---
name: secure-deploy
description: 보안 검사 후 배포
hooks:
PreToolUse:
- matcher: "Bash"
hooks:
- type: command
command: "./scripts/security-check.sh"
---

배포 전 보안 검사를 수행합니다...

플러그인과 스킬

플러그인(Plugin)은 스킬을 패키징하여 배포하는 시스템입니다.

플러그인 구조

my-plugin/
├── .claude-plugin/
│ └── plugin.json # 플러그인 매니페스트
├── skills/ # 스킬 디렉토리
│ ├── review/
│ │ └── SKILL.md
│ └── deploy/
│ └── SKILL.md
└── .mcp.json # 선택: MCP 서버 설정

플러그인 스킬 vs 독립 스킬

항목독립 스킬플러그인 스킬
경로.claude/skills/플러그인/skills/
호출/skill-name/plugin-name:skill-name
배포Git 직접 공유마켓플레이스
버전 관리없음시맨틱 버저닝
MCP 번들별도 설정.mcp.json 자동 로딩

플러그인과 스킬의 통합

플러그인은 스킬뿐 아니라 MCP 서버, CLAUDE.md 오버라이드 등을 함께 패키징할 수 있습니다:

aws-plugin/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ ├── deploy-lambda/ # Lambda 배포 스킬
│ │ └── SKILL.md
│ ├── query-dynamodb/ # DynamoDB 쿼리 스킬
│ │ └── SKILL.md
│ └── monitor-cloudwatch/ # CloudWatch 모니터링 스킬
│ └── SKILL.md
├── .mcp.json # AWS MCP 서버 자동 설정
└── CLAUDE.md # AWS 관련 프로젝트 규칙

이 플러그인을 설치하면 /aws-plugin:deploy-lambda, /aws-plugin:query-dynamodb 등의 스킬과 AWS MCP 도구가 함께 활성화됩니다.

스킬 마켓플레이스

플러그인 스킬은 마켓플레이스를 통해 배포할 수 있습니다. 다른 개발자가 만든 스킬을 설치하여 사용하거나, 직접 만든 스킬을 공유할 수 있습니다. 마켓플레이스는 현재 확장 중이며, 향후 더 많은 플러그인이 등록될 예정입니다.

팀에서 스킬 공유하기

Git으로 프로젝트 스킬 공유

가장 간단한 방법은 .claude/skills/를 Git에 커밋하는 것입니다:

# 스킬 생성
mkdir -p .claude/skills/team-review
# SKILL.md 작성 후
git add .claude/skills/team-review/
git commit -m "feat: 팀 코드 리뷰 스킬 추가"
git push

팀원이 저장소를 pull하면 자동으로 스킬을 사용할 수 있습니다.

심링크로 개인 스킬 공유

여러 프로젝트에서 같은 스킬을 사용하려면 심링크를 활용합니다:

# 공통 스킬을 별도 저장소에 관리
git clone https://github.com/team/shared-skills.git ~/shared-skills

# 각 프로젝트에 심링크
ln -s ~/shared-skills/review .claude/skills/review
ln -s ~/shared-skills/deploy .claude/skills/deploy

Git 서브모듈로 관리

팀 공통 스킬을 서브모듈로 관리하면 버전 관리가 더 체계적입니다:

# 공유 스킬 저장소를 서브모듈로 추가
git submodule add https://github.com/team/shared-skills.git .claude/shared-skills

# 심링크로 연결
ln -s ../shared-skills/review .claude/skills/review
# 팀원이 저장소 클론 시
git clone --recurse-submodules https://github.com/team/project.git

# 또는 기존 클론에서
git submodule update --init

실전 스킬 예시 모음

코드 리뷰 스킬

---
name: review
description: 현재 브랜치의 변경 사항을 리뷰합니다
---

현재 브랜치의 diff를 리뷰하세요.

## 검토 항목
1. **보안**: SQL 인젝션(Injection), XSS, 인증 우회 등
2. **성능**: N+1 쿼리, 불필요한 렌더링, 메모리 누수
3. **코딩 컨벤션**: 프로젝트 규칙 준수 여부
4. **테스트**: 누락된 테스트 케이스

## 출력 형식
각 이슈에 대해:
- 파일명:라인번호
- 심각도 (Critical/Warning/Info)
- 설명과 개선 제안

세션 로거 스킬 (특수 변수 활용)

---
name: session-logger
description: 이 세션의 활동을 로그에 기록합니다
---

다음 내용을 logs/${CLAUDE_SESSION_ID}.log에 기록하세요:

$ARGUMENTS

읽기 전용 보안 감사 스킬

---
name: audit
description: 코드베이스의 보안 감사를 수행합니다
allowed-tools: Read Grep Glob
context: fork
agent: Explore
---

코드베이스의 보안 이슈를 감사하세요:
1. 하드코딩된 시크릿(Secret), API 키
2. SQL 인젝션 가능성
3. XSS 취약점
4. 인증/인가 우회 가능성
5. 안전하지 않은 의존성

PR 요약 스킬 (동적 컨텍스트 활용)

---
name: pr-summary
description: Pull Request를 요약합니다
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---

## Pull Request 컨텍스트
- PR diff: !`gh pr diff`
- PR 코멘트: !`gh pr view --comments`
- 변경된 파일: !`gh pr diff --name-only`

## 작업
이 Pull Request를 다음 형식으로 요약하세요:
1. 변경 목적 (한 줄)
2. 주요 변경 사항 (불릿 포인트)
3. 리스크 분석 (잠재적 문제점)

파일 패턴 기반 자동 활성화 스킬

---
name: react-patterns
description: React 컴포넌트 작성 시 프로젝트 패턴을 적용합니다
paths: "src/components/**/*.tsx,src/pages/**/*.tsx"
user-invocable: false
---

React 컴포넌트 작성 시 다음 패턴을 따르세요:
- 함수형 컴포넌트만 사용
- Props 타입을 별도 interface로 정의
- useCallback/useMemo는 성능 프로파일링 후에만 적용
- 테스트는 Testing Library 사용

이 스킬은 src/components/ 또는 src/pages/ 내의 .tsx 파일을 작업할 때 Claude가 자동으로 로딩합니다. user-invocable: false이므로 / 메뉴에는 표시되지 않습니다.

실전 예시: 팀 전용 코드 리뷰 스킬 만들기

팀에서 공통으로 사용할 코드 리뷰 스킬을 처음부터 끝까지 만들어 봅시다.

1단계: 요구사항 정리

팀의 코드 리뷰 기준을 정리합니다:

  • TypeScript 프로젝트, React + Express 스택
  • 보안, 성능, 접근성을 중점적으로 검토
  • 한국어 리뷰 코멘트
  • GitHub PR에 직접 리뷰 코멘트 작성

2단계: 스킬 유형 결정

  • 사용자가 직접 /review-pr로 호출 → disable-model-invocation: true
  • 읽기 전용 + GitHub CLI만 사용 → context: fork, agent: Explore
  • 인자로 PR 번호를 받음 → argument-hint 설정

3단계: 디렉토리 및 파일 생성

mkdir -p .claude/skills/review-pr

SKILL.md (.claude/skills/review-pr/SKILL.md):

---
name: review-pr
description: 현재 브랜치의 PR을 팀 컨벤션에 맞게 리뷰합니다. 보안, 성능, 접근성을 중점 검토합니다.
disable-model-invocation: true
context: fork
agent: Explore
allowed-tools: Bash(gh *) Read Grep Glob
argument-hint: "[PR번호 또는 빈칸=현재 브랜치]"
---

## PR 컨텍스트 수집
- PR diff: !`gh pr diff`
- PR 정보: !`gh pr view --json title,body,labels`
- 변경 파일: !`gh pr diff --name-only`

## 리뷰 체크리스트

### 필수 검토 (Critical)
1. **보안**: SQL 인젝션, XSS, CSRF, 하드코딩된 시크릿
2. **에러 처리**: try-catch 누락, 에러 무시, 사용자에게 내부 에러 노출
3. **타입 안전성**: `any` 사용, 타입 단언(assertion) 남용, 런타임 타입 불일치

### 권장 검토 (Warning)
4. **성능**: N+1 쿼리, 불필요한 re-render, 큰 번들 사이즈
5. **접근성**: alt 텍스트, aria 속성, 키보드 내비게이션
6. **테스트**: 새 기능에 테스트 포함 여부, 엣지 케이스 커버리지

### 참고 사항 (Info)
7. **네이밍**: 변수명, 함수명이 의도를 잘 설명하는지
8. **일관성**: 기존 코드 패턴과 일치 여부
9. **문서**: API 변경 시 문서 업데이트 여부

## 출력 형식
파일별로 그룹화하여 한국어로 보고:

### 📁 파일명
| 라인 | 심각도 | 설명 |
|------|--------|------|
| 42 | 🔴 Critical | 설명 |
| 78 | 🟡 Warning | 설명 |
| 120 | 🔵 Info | 설명 |

## 최종 판정
- 🔴 Critical이 1건 이상: **Request Changes** 권장
- 🟡 Warning만: **Approve with comments** 권장
- 🔵 Info만: **Approve** 권장

4단계: 테스트

# Claude Code 세션에서
> 사용 가능한 스킬이 뭐야?
# review-pr가 목록에 있는지 확인

# 직접 호출 테스트
/review-pr

# PR 번호 지정 테스트
/review-pr 42

5단계: Git에 커밋하여 팀 공유

git add .claude/skills/review-pr/SKILL.md
git commit -m "feat: 팀 PR 리뷰 스킬 추가"
git push

이제 팀원 모두가 /review-pr로 동일한 기준의 코드 리뷰를 받을 수 있습니다.

실전 예시: 프레임워크 마이그레이션 스킬

대규모 프레임워크 마이그레이션을 체계적으로 수행하는 복합 스킬 예시입니다.

스킬 구조

.claude/skills/migrate-framework/
├── SKILL.md # 메인 지침
├── patterns/
│ ├── react-to-vue.md # React → Vue 패턴
│ ├── jest-to-vitest.md # Jest → Vitest 패턴
│ └── express-to-fastify.md # Express → Fastify 패턴
└── scripts/
└── validate-migration.sh # 마이그레이션 검증 스크립트

SKILL.md

---
name: migrate-framework
description: 프레임워크 마이그레이션을 체계적으로 수행합니다. 패턴 매핑, 호환성 검증, 점진적 전환을 지원합니다.
argument-hint: "[소스프레임워크] [타겟프레임워크] [대상경로]"
disable-model-invocation: true
context: fork
agent: general-purpose
allowed-tools: Bash Read Grep Glob Edit Write
effort: high
---

# 프레임워크 마이그레이션

## 입력
- 소스 프레임워크: $0
- 타겟 프레임워크: $1
- 대상 경로: $2 (미지정 시 src/)

## 마이그레이션 절차

### Phase 1: 분석
1. 대상 경로의 모든 파일 스캔
2. 소스 프레임워크 패턴 식별 (import, API 사용, 설정 파일)
3. 의존성 그래프 분석
4. 마이그레이션 난이도 평가 (파일별 복잡도)
5. 분석 결과를 migration-plan.md로 출력

### Phase 2: 환경 준비
1. 타겟 프레임워크 의존성 설치
2. 설정 파일 변환 (tsconfig, 빌드 설정 등)
3. 호환 레이어 설정 (필요 시)

### Phase 3: 파일별 변환
1. 복잡도가 낮은 파일부터 시작
2. 패턴 매핑 적용 (${CLAUDE_SKILL_DIR}/patterns/ 참고)
3. 각 파일 변환 후 타입 체크 실행
4. 변환이 어려운 파일은 TODO 주석으로 마킹

### Phase 4: 검증
1. 전체 빌드 실행
2. 기존 테스트 실행 (실패 항목 기록)
3. 타입 에러 수정
4. 검증 스크립트 실행: `bash ${CLAUDE_SKILL_DIR}/scripts/validate-migration.sh`

## 패턴 참조
마이그레이션 패턴은 [patterns/](patterns/) 디렉토리를 참고하세요.

사용법

# React → Vue 마이그레이션
/migrate-framework React Vue src/components/

# Jest → Vitest 전환
/migrate-framework Jest Vitest tests/

# Express → Fastify 마이그레이션
/migrate-framework Express Fastify src/api/

스킬 테스트 및 검증 전략

스킬이 작동하는지 확인하기

새로 만든 스킬을 테스트하는 3단계 방법입니다:

1단계: 스킬 목록에서 확인

# Claude Code 세션에서
> 사용 가능한 스킬이 뭐야?

스킬이 목록에 나타나면 Claude가 description을 정상적으로 읽은 것입니다. 목록에 없다면:

  • 파일 경로 확인: ~/.claude/skills/이름/SKILL.md 또는 .claude/skills/이름/SKILL.md
  • 파일명이 정확히 SKILL.md인지 확인 (대소문자 구분)
  • YAML 프론트매터의 --- 마커가 올바른지 확인

2단계: 직접 호출 테스트

# 슬래시 명령으로 직접 호출
/my-skill 테스트 인자

# Claude 응답에서 스킬이 로드되었는지 확인

3단계: 자동 호출 테스트

# description에 매칭되는 자연어로 질문
> 이 코드가 어떻게 동작하는지 설명해줘
# → explain-code 스킬이 자동 로드되는지 확인

검증 체크리스트

스킬을 팀에 배포하기 전 확인할 항목입니다:

항목확인 방법
SKILL.md 문법YAML 프론트매터 --- 마커, 유효한 YAML
description 길이description+when_to_use 합산 1,536자 이내, 핵심 용도가 앞에
인자 치환$ARGUMENTS, $0 등이 올바르게 치환되는지
도구 제한allowed-tools가 필요한 도구만 포함하는지
보조 파일 참조${CLAUDE_SKILL_DIR}로 올바르게 참조하는지
동적 컨텍스트!`명령어`가 정상 실행되는지
포크 동작context: fork 시 명확한 작업 지시가 있는지
에지 케이스인자 없이 호출, 잘못된 인자, 빈 결과 처리

스킬 디버깅 체크리스트

증상확인사항해결
스킬이 목록에 안 나옴SKILL.md 경로/이름정확한 디렉토리에 SKILL.md 배치
자동 호출이 안 됨description 키워드사용자가 쓸 법한 표현 포함
인자가 전달 안 됨$ARGUMENTS 사용 여부SKILL.md 내용에 $ARGUMENTS 추가
보조 파일을 못 찾음파일 참조 방식${CLAUDE_SKILL_DIR} 경로 사용
셸 명령어 실행 안 됨정책 설정disableSkillShellExecution 확인
포크된 스킬이 빈 결과context: fork + 가이드라인만명확한 작업 지시를 스킬에 포함

내장 스킬 선택 가이드

어떤 내장 스킬을 사용해야 할지 헷갈릴 때:

상황추천 스킬이유
대규모 코드 변경 (50+ 파일)/batch병렬 워크트리로 안전하게 분산 처리
Claude API/SDK 코드 작성/claude-api정확한 SDK 문법과 패턴 로딩
문제 원인을 모를 때/debug디버그 로그로 근본 원인 추적
배포/CI 상태 대기/loop주기적 폴링으로 상태 자동 확인
코드 품질 마무리/simplify3개 병렬 리뷰로 빠르게 개선
커스텀 반복 작업직접 스킬 생성/스킬이름으로 팀 공유

모범 사례

  1. 설명은 1,536자 이내: description+when_to_use 합산 1,536자로 잘리므로 핵심 용도를 앞에 배치
  2. 하나의 스킬 = 하나의 작업: 대규모 워크플로우는 여러 스킬로 분리
  3. SKILL.md는 500줄 이내: 상세 내용은 보조 파일로 분리
  4. 부작용 있는 작업: disable-model-invocation: true 설정 필수
  5. $ARGUMENTS 포함: 인자를 받는 스킬은 $ARGUMENTS 변수 사용
  6. argument-hint 추가: 사용자에게 기대하는 인자를 안내
  7. 테스트: 자연어 질문과 /스킬이름 직접 호출 모두 테스트
  8. 공유할 스킬: Git에 .claude/skills/를 커밋하여 팀원과 공유

문제 해결

문제원인해결
스킬이 자동 호출되지 않음description이 사용자 질문과 매칭되지 않음description에 사용자가 쓸 법한 키워드 포함
스킬이 너무 자주 호출됨description이 너무 포괄적더 구체적으로 작성하거나 disable-model-invocation: true
보조 파일을 찾지 못함경로 문제${CLAUDE_SKILL_DIR} 사용
설명이 잘림description+when_to_use 합산 1,536자 초과핵심 내용을 앞에 배치
스킬 메뉴에 표시 안 됨user-invocable: false 설정의도된 동작이거나, 설정 제거
"사용 가능한 스킬은?"에 없음description 예산 초과SLASH_COMMAND_TOOL_CHAR_BUDGET 환경 변수 증가
Windows에서 셸 스크립트 실행 안 됨PowerShell 도구 미활성화CLAUDE_CODE_USE_POWERSHELL_TOOL=1 환경변수 설정

연계 기능

스킬과 함께 활용하면 강력한 기능들
📜 규칙 (Rules / CLAUDE.md)
CLAUDE.md에 항상 적용할 규칙을, 스킬에 특정 상황의 워크플로우를 분리하면 컨텍스트를 효율적으로 관리할 수 있습니다.
규칙 가이드 →
⚙️ MCP 서버
MCP 도구 호출을 스킬의 프롬프트에 포함하면 외부 서비스(GitHub, DB 등)와 연동된 복합 워크플로우를 단일 명령으로 실행할 수 있습니다.
MCP 가이드 →
💻 CLI 레퍼런스
스킬을 헤드리스 모드(-p 플래그)와 결합하면 CI/CD 파이프라인에서 자동으로 워크플로우를 실행할 수 있습니다.
CLI 레퍼런스 →

장점, 단점과 한계점

장점

  • 워크플로우 재사용: 자주 수행하는 작업(코드 리뷰, 커밋, 배포 등)을 SKILL.md로 정의하면 /명령어로 간편하게 반복 실행할 수 있습니다.
  • 팀 공유 가능: .claude/skills/ 디렉토리를 Git에 커밋하면 팀 전체가 동일한 스킬을 사용할 수 있어 워크플로우를 표준화할 수 있습니다.
  • 프론트매터로 세밀한 제어: allowed-tools, disallowed-tools, paths 등 YAML 프론트매터로 스킬의 권한, 적용 범위, 모델 등을 세밀하게 제어할 수 있습니다.
  • 내장 스킬 5개 즉시 사용: /batch, /claude-api, /debug, /loop, /simplify 등 기본 제공 스킬을 설치 없이 바로 사용할 수 있어 빠르게 생산성을 높일 수 있습니다.
  • 컨텍스트 포크로 독립 실행: 스킬은 독립된 컨텍스트에서 실행되어 현재 대화의 컨텍스트를 오염시키지 않으며, 결과만 깔끔하게 반환됩니다.

단점과 한계점

  • SKILL.md 작성 학습 필요: 프론트매터 문법, 변수(${ARGUMENTS}, ${CLAUDE_SKILL_DIR}), 보조 파일 구조 등을 이해해야 효과적인 스킬을 만들 수 있습니다.
  • 프론트매터 오류 시 무시됨: YAML 프론트매터에 문법 오류가 있으면 에러 메시지 없이 기본값으로 동작하여, 의도한 제한이 적용되지 않을 수 있습니다.
  • 복잡한 스킬 디버깅 어려움: 스킬이 예상대로 동작하지 않을 때 프론트매터 설정, 보조 파일 경로, 도구 권한 등 여러 요인을 확인해야 하며, 디버깅 도구가 제한적입니다.
  • 스킬 간 의존성 관리 없음: 스킬 A가 스킬 B의 결과에 의존하는 경우를 자동으로 관리하는 메커니즘이 없어, 복잡한 파이프라인 구성이 어렵습니다.
  • 스킬 버전 관리가 수동: 스킬 파일의 변경 이력은 Git에 의존하며, 스킬 자체의 버전 관리나 롤백 메커니즘이 별도로 제공되지 않습니다.
활용 팁

스킬 작성 시 먼저 내장 스킬(/batch, /debug, /simplify)의 구조를 참고하세요. 프론트매터 오류를 방지하려면 YAML 린터로 검증하거나, 간단한 스킬부터 시작하여 점진적으로 복잡도를 높이는 것이 좋습니다.

다음 단계

  • MCP 서버 - 외부 도구 연동으로 스킬의 능력 확장
  • 규칙 - CLAUDE.md로 프로젝트 전반 규칙 설정
  • 스케줄 - 스킬을 주기적으로 자동 실행
  • 기능 비교 - Remote Control, Dispatch, Channels 등 비교