Part 2: Hands-On Guide

2.4 Agent Skills

정의

Skills are folders of instructions that extend your agent's capabilities with specialized knowledge. Modular capabilities that extend Claude's functionality. An open standard which means they have a standardized format that work with any skills compatible agent.

지침, 메타데이터 및 선택적 리소스(스크립트, 템플릿)를 패키징. Claude는 관련이 있을 때 이를 사용. Claude의 기능을 확장하는 모듈식 기능.

프롬프트 엔지니어링 vs. 컨텍스트 엔지니어링

  • 프롬프트 엔지니어링: 효과적인 지시사항을 작성하는 기술. 정적 컨텍스트
  • 컨텍스트 엔지니어링: 모델에게 무엇을 보여주고 보여주지 않을지 결정하는 기술. 동적 컨텍스트

시스템 프롬프트(CLAUDE.md) vs. Skills

로드 시점
시스템 프롬프트 (회사 매뉴얼): 모든 대화 시작 시 항상 로드
Claude Skills (전문 도구 상자): 필요할 때만 동적으로 로드 (점진적 공개)
컨텍스트 효율
시스템 프롬프트 (회사 매뉴얼): 항상 자리 차지 → 비효율
Claude Skills (전문 도구 상자): 필요 시에만 → 토큰 절약
수십 개의 Skills를 설치해도 컨텍스트 창 과부하 X
Claude가 현재 작업에 맞는 Skill만 지능적으로 선택해 로드
확장성
시스템 프롬프트 (회사 매뉴얼): 길이 제한 명확
Claude Skills (전문 도구 상자): 파일 시스템 기반 → 사실상 무제한
목적
시스템 프롬프트 (회사 매뉴얼): 기본 페르소나 및 전반적 행동 지침
Claude Skills (전문 도구 상자): 특정 워크플로우 · 전문 지식 · 도구 사용법 교육
구성
시스템 프롬프트 (회사 매뉴얼): 단일 텍스트 블록
Claude Skills (전문 도구 상자): SKILL.md + scripts/ + references/ + templates/

Skills 예시

SKILL.md 예시: email-composer

SKILL.md
---
name: email-composer
description: 사용자의 어조와 스타일에 맞춰 전문적인 이메일을 작성합니다. 비즈니스 커뮤니케이션에 최적화.
---

# Email Composer Skill

## 목적 및 페르소나
당신은 사용자의 개인 비서로서, 사용자의 지시에 따라 전문적이고 효과적인 이메일을 작성합니다.

## 워크플로우
1. **정보 수집**: 목적, 수신자, 관계, 어조, 핵심 메시지 등을 질문해 수집
2. **초안 작성**: 간결한 제목 → 명확한 서론 → 핵심 메시지 → CTA → 마무리
3. **검토**: 수동태 최소화 / 군더더기 제거 / `references/brand_voice.md` 준수

## 제약 사항
- 문단은 2~3문장 이내로
- 기업용 전문 용어(corporate speak) 금지

## 금지 문구
- "I hope this finds you well"
- "Just circling back"

보고서 작성 스킬

"이메일에서 주요 내용을 추출하고, 이 데이터를 바탕으로 주간 보고서 초안을 작성해줘. 보고서 형식은 templates/weekly_report.md를 참고하고, 최신 시장 동향은 references/market_trends.pdf를 분석해서 포함해줘."와 같이 지시할 수 있습니다.

고객 응대 스킬

"새로운 고객 문의가 들어오면, scripts/check_faq.py를 실행해서 FAQ를 먼저 확인하고, 답변이 없으면 templates/escalation_email.md 형식으로 담당자에게 이메일을 보내줘."와 같이 자동화할 수 있습니다.

name/description 규칙

  • name: 소문자, 숫자, 하이픈만 사용, 최대 64자
  • description: 최대 1024자. "무엇을 하는가" + "언제 쓰는가" 두 가지를 반드시 포함 → Claude가 스킬을 선택하는 핵심 기준
  • 명명 규칙: 동명사 형태 권장 (content-writing, code-reviewing)

작동 원리: 점진적 공개 (Progressive Disclosure)

도서관 비유: Claude는 책을 한꺼번에 다 읽지 않습니다.

  • Level 1: 도서 목록 확인 (메타데이터 로드)
    시스템 시작 시 모든 Skills의 namedescription만 미리 로드 (~100토큰). 어떤 스킬이 관련 있는지 빠르게 판단합니다.
  • Level 2: 목차/서문 읽기 (SKILL.md 본문 로드)
    관련성이 높다고 판단되면 SKILL.md 전체를 컨텍스트에 로드 (최대 ~5,000토큰). 핵심 지침/단계/고려사항을 포함합니다.
  • Level 3: 특정 장 펼치기 (추가 파일/스크립트 로드)
    scripts/, references/, templates/ 내 파일은 Claude가 실제로 필요하다고 판단할 때만 로드합니다.

Skills 구조

저장 위치

Personal Skills
경로: ~/.claude/skills/{스킬명}/
용도: 전역 워크플로우, 실험 중인 스킬, 개인 생산성 도구
Project Skills
경로: .claude/skills/{스킬명}/
용도: 프로젝트 전용 지식, git으로 자동 배포 (팀 공유)
Plugin Skills
경로: 플러그인 설치 시 자동 제공
용도: /plugin으로 설치한 플러그인에 번들된 스킬

폴더 구조

yaml
my-skill/
    ├── SKILL.md          # 메타데이터(YAML) + 핵심 지침  ← 필수
    ├── reference.md      # 추가 문서 (선택)
    ├── examples.md       # 예시 모음 (선택)
    ├── scripts/          # 실행 가능한 코드 (Python, Bash 등)
    │   └── helper.py
    └── templates/        # 출력 형식 정의 파일 (JSON, Markdown 등)
        └── template.txt
  • SKILL.md: 스킬의 두뇌. 목적/페르소나/단계별 워크플로우/제약사항/입출력 형식 정의
  • 추가 파일들은 SKILL.md에서 링크로 참조 → Claude가 필요할 때만 로드 (점진적 공개)
  • 길이 관리: SKILL.md가 500줄에 가까워지면 여러 파일로 분할

allowed-tools로 도구 접근 제한

SKILL.md
---
name: safe-code-reviewer
description: 코드를 읽기 전용으로 리뷰합니다. 파일 수정 없이 코드 품질을 검토할 때 사용.
allowed-tools: Read, Grep, Glob
---

# Safe Code Reviewer
파일을 읽고 분석만 합니다. 어떤 파일도 수정하지 않습니다.
  • 스킬이 활성화된 동안 Claude가 사용할 수 있는 도구를 명시적으로 제한
  • 지정된 도구는 별도 권한 요청 없이 바로 사용 가능
  • 지정하지 않으면 기존 권한 모델대로 매번 허가 요청
  • 활용 시나리오: 읽기 전용 분석 스킬 / 보안 민감 워크플로우 / 범위 제한이 필요한 작업

SKILL.md 실전 예시 3종

단순 스킬 (파일 1개): generating-commit-messages

SKILL.md
---
name: generating-commit-messages
description: git diff를 보고 명확한 커밋 메시지를 생성합니다. 커밋 작성이나 staged 변경사항 검토 시 사용.
---

# Generating Commit Messages

## Instructions
1. `git diff --staged`로 변경사항 확인
2. 커밋 메시지 제안:
   - 50자 이내 요약
   - 상세 설명
   - 영향받은 컴포넌트

## Best practices
- 현재 시제 사용
- what/why를 설명, how는 생략

도구 권한 제한 스킬: code-reviewer

SKILL.md
---
name: code-reviewer
description: 코드 품질·보안·구조를 리뷰합니다. PR 검토, 코드 품질 분석 시 사용.
allowed-tools: Read, Grep, Glob
---

# Code Reviewer

## Review checklist
1. 코드 구조 및 구성
2. 에러 핸들링
3. 성능 고려사항
4. 보안 취약점
5. 테스트 커버리지

멀티파일 스킬: pdf-processing

yaml
pdf-processing/
        ├── SKILL.md
        ├── FORMS.md       ← 양식 작성 전용 문서
        ├── REFERENCE.md   ← API 레퍼런스
        └── scripts/
            ├── fill_form.py
            └── validate.py
SKILL.md
---
name: pdf-processing
description: PDF 텍스트 추출, 양식 작성, 병합. PDF 파일·양식·문서 추출 작업 시 사용. pypdf, pdfplumber 패키지 필요.
---

# PDF Processing

## Quick start
텍스트 추출은 바로 실행 가능.
양식 작성은 [FORMS.md](FORMS.md) 참조.
상세 API는 [REFERENCE.md](REFERENCE.md) 참조.

## Requirements
pip install pypdf pdfplumber

추가 파일(FORMS.md, REFERENCE.md)은 Claude가 실제로 필요할 때만 자동 로드됩니다.

MASTER 프레임워크 (Skills 개발 6단계)

M
이름: Manual Run-through
핵심 행동: 스킬로 만들 워크플로우를 Claude와 단일 채팅에서 처음부터 끝까지 수동 실행
A
이름: Analyze & Feedback
핵심 행동: 각 단계 결과를 분석하고 즉각 피드백 ("어조를 더 대화체로", "항목 순서 변경")
S
이름: Systematize
핵심 행동: 성공한 대화를 Claude에게 SKILL.md 초안으로 변환 요청
T
이름: Test & Iterate
핵심 행동: 실제 업무에 적용 → 오류 발견 → 지침 업데이트 반복
E
이름: Expand with Assets
핵심 행동: 스크립트/참조 문서/템플릿 등 자산 추가로 기능 확장
R
이름: Refine Metadata
핵심 행동: namedescription 최적화 → Claude가 정확한 타이밍에 스킬을 트리거하도록

Skills 트러블슈팅

Claude가 스킬을 안 씀
원인: description이 너무 모호
해결: "언제 쓰는가"를 구체적 키워드로 명시
Claude가 스킬을 안 씀
원인: YAML 문법 오류
해결: cat SKILL.md | head -n 10으로 프론트매터 확인
Claude가 스킬을 안 씀
원인: 파일 경로 틀림
해결: ls ~/.claude/skills/*/SKILL.md로 경로 확인
스킬은 로드되나 오작동
원인: 스크립트 실행 권한 없음
해결: chmod +x scripts/*.py
스킬은 로드되나 오작동
원인: 경로 구분자 오류
해결: Windows 스타일(\) → Unix 스타일(/) 변경
여러 스킬이 충돌
원인: description이 겹침
해결: 각 스킬의 트리거 키워드를 명확히 구분
💡 디버그 모드

스킬 로딩 에러를 확인하려면 디버그 모드를 사용하세요.

bash
claude --debug
💡 명시적 호출

Claude가 자동으로 스킬을 로드하지 않으면 "[스킬명] 스킬을 사용해서 [작업]해줘"로 직접 지정하세요.

Hook으로 강제 주입

  • 문제: Skills는 model-invoked. description에 키워드를 아무리 써도 Claude가 스스로 스킬을 로드하지 않는 경우가 빈번
  • 원인: Claude가 현재 요청과 스킬의 연관성을 판단 못하거나, 판단 자체를 건너뜀
  • 해결: UserPromptSubmit hook을 활용해 Claude가 프롬프트를 읽기 전에 관련 스킬을 컨텍스트에 주입

settings.json

.claude/settings.json
// .claude/settings.json
{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "python3 .claude/hooks/skill_activator.py"
          }
        ]
      }
    ]
  }
}

skill_activator.py

skill_activator.py
#!/usr/bin/env python3
import json
import sys

# stdin 읽기 (훅 프로토콜상 필요)
hook_data = json.load(sys.stdin)

# 키워드 분석 없이 항상 같은 지시문 주입
instruction = """
INSTRUCTION: MANDATORY SKILL ACTIVATION
작업 구현 전 <available_skills>를 확인하세요.
관련 스킬이 있으면: Skill() 도구로 활성화 후 진행
관련 스킬이 없으면: 바로 진행
"""

print(instruction)
sys.exit(0)
ℹ️ UserPromptSubmit hook의 특별한 점

UserPromptSubmit hook의 stdout은 Claude의 컨텍스트에 직접 주입됩니다 (다른 hook과 다른 특별 케이스).

스크립트에서 프롬프트 내 키워드를 분석 → 관련 스킬명을 stdout으로 출력 → Claude가 해당 스킬을 인지하고 로드합니다.

예: "백엔드 API 만들어줘" 입력 → hook이 "backend-dev-guidelines 스킬을 사용하세요"를 컨텍스트에 추가 → Claude가 스킬 로드

Stop hook으로 응답 완료 후 빌드 체크, 에러 핸들링 자가검토 등도 추가 가능합니다.

⚠️ Prettier 자동 포매팅 hook은 피할 것

파일 수정이 system-reminder를 유발해 컨텍스트 토큰을 대량 소비합니다. 세션 3회만에 160k 토큰이 소모된 사례가 있습니다. 포매팅은 세션 외부에서 수동으로 실행을 권장합니다.

활용 팁

  • 모듈식 조합: 거대한 단일 스킬보다 작고 집중된 스킬 여러 개를 조합 (예: my-business-context + brand-voice + research-workflow)
  • 컨텍스트 절약: Claude가 이미 아는 내용은 SKILL.md에 쓰지 않는다. 모든 토큰은 비용
  • 보안 주의: 신뢰할 수 없는 출처의 Skills는 설치 전 파일 내용을 반드시 검토
  • 버전 기록: SKILL.md 내에 ## Version History 섹션을 추가해 변경 이력 관리
  • 팀 테스트: 스킬 배포 전 팀원에게 실제로 사용하게 하고 피드백 수집

실전 활용 사례

비즈니스
스킬 예시: 주간 보고서 자동화, 이메일 작성, 미팅 준비
효과: 몇 시간 → 10분
콘텐츠
스킬 예시: 블로그→SNS 변환, 브랜드 보이스 유지, 리서치/팩트체크
효과: 제작 시간 80% 단축
개발
스킬 예시: 코드 리뷰, 테스트 케이스 생성, 기술 문서 초안
효과: 코드 품질 향상, 배포 주기 단축
개인 생산성
스킬 예시: 학습 가이드, 요약, 아이디어 브레인스토밍
효과: 정보 습득 속도 향상

샘플 스킬 만들어보기

1
Step 1 / 6

스킬 디렉토리 생성

bash
mkdir -p ~/.claude/skills/my-first-skill
2
Step 2 / 6

SKILL.md 작성

기본 SKILL.md 파일을 작성합니다.

bash
cat > ~/.claude/skills/my-first-skill/SKILL.md << 'EOF'
---
name: my-first-skill
description: 간단한 코드 리뷰를 수행합니다. 코드 품질 검토나 리뷰 요청 시 사용.
allowed-tools: Read, Grep, Glob
---

# My First Skill

## Instructions
1. 대상 파일을 읽습니다
2. 코드 구조, 에러 핸들링, 네이밍을 검토합니다
3. 개선 사항을 제안합니다
EOF
3
Step 3 / 6

스킬 동작 확인

Claude Code에서 스킬이 인식되는지 확인합니다.

bash
claude
# 세션 내에서: "my-first-skill 스킬을 사용해서 이 파일을 리뷰해줘"
4
Step 4 / 6

디버그 모드로 확인

bash
claude --debug

스킬 로딩 과정을 확인하고 문제가 있으면 수정합니다.

5
Step 5 / 6

MASTER 프레임워크 적용

Manual Run-through → Analyze → Systematize → Test → Expand → Refine 순서로 스킬을 발전시킵니다.

6
Step 6 / 6

description 최적화

namedescription을 최적화하여 Claude가 정확한 타이밍에 스킬을 트리거하도록 합니다.