Skills란 무엇인가
Agent Skills는 Claude의 기능을 모듈화된 폴더 형태로 확장하는 시스템입니다. 각 Skill은 필수 파일인 SKILL.md와 선택적 지원 파일들(스크립트, 템플릿 등)로 구성됩니다.
핵심 특징: Model-Invoked
Skills의 가장 중요한 특징은 Model-Invoked 방식입니다. 사용자가 명시적으로 호출하지 않아도, Claude가 작업 맥락을 분석해 자동으로 적절한 Skill을 활성화합니다. 이는 Slash Commands와의 가장 큰 차이점입니다.
Skills vs Slash Commands
| 구분 | Skills | Slash Commands |
|---|---|---|
| 복잡도 | 복잡한 워크플로우 | 간단한 프롬프트 |
| 구조 | 디렉토리 + 다중 파일 | 단일 .md 파일 |
| 활성화 방식 | 자동 (컨텍스트 기반) | 수동 (/명령어) |
| 파일 구성 | SKILL.md + 스크립트 + 템플릿 | 하나의 파일만 |
| 적용 범위 | Personal / Project / Plugin | Personal / Project |
| 사용 사례 | 복잡한 자동화, 팀 표준 | 반복 프롬프트, 간단한 템플릿 |
언제 Skills를 사용하나:
– Claude가 자동으로 인식해야 하는 복잡한 워크플로우
– 다중 파일과 스크립트가 필요한 작업
– 검증 절차가 포함된 복잡한 프로세스
– 팀 전체가 공유하는 표준화된 가이드
언제 Slash Commands를 사용하나:
– 같은 프롬프트를 반복 실행
– 단일 파일로 충분한 간단한 작업
– 명시적인 수동 실행이 필요한 경우
Skills의 종류와 적용 범위
Claude Code의 Skills는 3가지 범위로 관리됩니다.
1. Personal Skills (~/.claude/skills/)
목적: 개인 워크플로우와 실험적 도구
특징:
– 홈 디렉토리에 저장
– 모든 프로젝트에서 접근 가능
– Git 버전 관리 불필요
– 개인 개발 환경에 특화
사용 예시:
~/.claude/skills/
├── my-code-review/ # 개인 코드 리뷰 스타일
├── debug-helper/ # 자주 사용하는 디버깅 워크플로우
└── quick-refactor/ # 개인용 리팩토링 패턴
2. Project Skills (.claude/skills/)
목적: 프로젝트/팀 공유 전문 지식
특징:
– 프로젝트 루트의 .claude/skills/에 저장
– Git으로 팀원과 공유
– 프로젝트별 표준과 가이드라인
– 특정 프로젝트에만 적용
사용 예시:
project-root/
└── .claude/
└── skills/
├── blog-posting-style/ # 블로그 스타일 가이드
├── api-design-guide/ # API 설계 표준
└── test-automation/ # 프로젝트별 테스트 자동화
3. Plugin Skills
목적: 플러그인이 제공하는 번들 기능
특징:
– 플러그인 설치 시 자동 제공
– 플러그인 개발자가 관리
– 범용적인 도구와 워크플로우
– 설치만으로 사용 가능
적용 범위 비교표
| 항목 | Personal Skills | Project Skills | Plugin Skills |
|---|---|---|---|
| 위치 | ~/.claude/skills/ |
.claude/skills/ |
플러그인 내장 |
| 범위 | 모든 프로젝트 | 특정 프로젝트만 | 플러그인 설치 시 |
| Git 관리 | 불필요 | 필수 (팀 공유) | 플러그인이 관리 |
| 사용자 | 개인 | 팀 전체 | 플러그인 사용자 |
| 목적 | 개인 워크플로우 | 프로젝트 표준 | 범용 도구 |
Skills 사용 방법
자동 활성화 (권장)
Claude는 다음 3곳에서 Skills를 자동으로 발견합니다:
# 1. Personal Skills
~/.claude/skills/
# 2. Project Skills (현재 프로젝트)
/path/to/project/.claude/skills/
# 3. Plugin Skills (설치된 플러그인)
사용자가 요청할 때, Claude는 각 Skill의 description 필드를 분석해 가장 적합한 Skill을 자동으로 활성화합니다.
예시:
# 사용자 요청
"블로그 포스팅 초안 작성해줘"
# Claude의 동작
1. 사용 가능한 Skills 확인
2. description에서 "블로그", "포스팅" 키워드 발견
3. blog-posting-style Skill 자동 활성화
4. Skill 가이드라인에 따라 작성
사용 가능한 Skills 확인
# Claude Code에서 실행
claude "What Skills are available?"
명시적 호출 (선택적)
특정 Skill을 강제로 사용하려면:
# Skill 도구 명시
claude "blog-posting-style skill을 사용해서 경험 기록형 포스팅 작성해줘"
Skills 만들기 – 실전 가이드
디렉토리 구조
my-skill/
├── SKILL.md # 필수: Skill 정의와 지침
├── reference.md # 선택: 추가 참고 자료
├── scripts/ # 선택: 실행 스크립트
│ └── validate.sh
└── templates/ # 선택: 템플릿 파일
└── template.yaml
SKILL.md 작성법
필수 구성 요소:
- YAML 프론트매터 (필수)
- 상세 지침 (필수)
- 예시와 템플릿 (권장)
전체 예시:
---
name: blog-posting-style
description: 블로그 포스팅 작성 스타일 가이드. 정보 정리형과 경험 기록형 두 가지 모드 지원. 블로그, 포스팅, 글쓰기 작업 시 자동 적용.
allowed-tools: [Read, Write, Edit, WebFetch]
---
# 블로그 포스팅 스타일 가이드
## 목적
ShowMeTheTime 블로그의 표준 작성 스타일을 정의합니다.
## 모드 구분
### 정보 정리형
- 공식 문서 기반 객관적 정보
- "~입니다", "~합니다" 체
- 코드 예시와 비교표 중심
### 경험 기록형
- 실제 경험과 시행착오 기록
- 구어체 사용
- 솔직한 감정 표현
## 작성 원칙
### 코드 예시
- 반드시 주석 추가
- 동작하는 코드만 제시
```yaml
# 좋은 예시
apiVersion: v1
kind: ConfigMap
metadata:
name: app-config # ConfigMap 이름
data:
LOG_LEVEL: "info" # 로그 레벨 설정
구조화
- 짧은 문단 (2-4줄)
- 불렛 포인트 적극 활용
- 비교는 표로 정리
참고 자료
### YAML 프론트매터 필드
#### name (필수)
**규칙:**
- 소문자, 숫자, 하이픈만 사용
- 최대 64자
- 고유해야 함
```yaml
# ✅ 올바른 예시
name: blog-posting-style
name: api-design-guide
name: test-automation-v2
# ❌ 잘못된 예시
name: Blog Posting Style # 공백 불가
name: api_design_guide # 언더스코어 불가
name: API-Design-Guide # 대문자 불가
description (필수)
중요: description은 Claude가 Skill을 발견하는 핵심입니다.
작성 원칙:
– 무엇을 하는 Skill인지 명확히
– 언제 Claude가 사용해야 하는지 구체적으로
– 사용자가 언급할 트리거 키워드 포함
– 최대 1024자
# ❌ 나쁜 예시: 너무 모호함
description: 문서 작업을 돕습니다.
# ✅ 좋은 예시: 구체적이고 트리거 키워드 포함
description: 블로그 포스팅 작성 스타일 가이드. 정보 정리형과 경험 기록형 두 가지 모드 지원. 블로그, 포스팅, 글쓰기, 기술 블로그 작업 시 자동 적용.
트리거 키워드 예시:
| Skill 목적 | 포함할 키워드 |
|---|---|
| 블로그 작성 | 블로그, 포스팅, 글쓰기, 기술 블로그 |
| 코드 리뷰 | 코드 리뷰, PR, pull request, 검토 |
| API 설계 | API, 엔드포인트, REST, GraphQL, 설계 |
| 테스트 자동화 | 테스트, 자동화, TDD, 단위 테스트 |
allowed-tools (선택)
특정 도구만 허용해 보안과 읽기 전용 워크플로우를 구현합니다.
---
name: security-audit
description: 보안 감사를 위한 읽기 전용 Skill. 코드 수정 불가.
allowed-tools: [Read, Grep, Glob, Bash]
---
주요 도구:
– Read: 파일 읽기
– Write: 파일 쓰기
– Edit: 파일 수정
– Bash: 쉘 명령 실행
– Grep: 코드 검색
– Glob: 파일 검색
– WebFetch: 웹 페이지 가져오기
선택적 파일들
reference.md
추가 참고 자료와 긴 문서를 분리합니다.
# reference.md
## 추가 참고 자료
### 관련 문서
- [공식 가이드](https://example.com)
### 상세 예시
...
scripts/
검증 스크립트나 자동화 도구를 포함합니다.
# scripts/validate.sh
#!/bin/bash
# 포스팅 형식 검증 스크립트
echo "Validating blog post format..."
# 검증 로직
templates/
재사용 가능한 템플릿 파일을 저장합니다.
# templates/api-template.yaml
openapi: 3.0.0
info:
title: API Name
version: 1.0.0
paths:
/resource:
get:
summary: Get resource
고급 기능
Progressive Disclosure (점진적 컨텍스트 로딩)
Claude는 필요한 시점에만 지원 파일을 로드해 컨텍스트를 효율적으로 관리합니다.
동작 방식:
1. 초기에는 SKILL.md만 로드
2. 추가 정보 필요 시 reference.md 로드
3. 스크립트 실행 필요 시 scripts/ 로드
이점:
– 토큰 사용량 최적화
– 빠른 응답 시간
– 필요한 정보만 로드
보안 중심 워크플로우
allowed-tools로 읽기 전용 Skill을 만들 수 있습니다.
예시: 보안 감사 Skill
---
name: security-audit
description: 코드베이스 보안 취약점 검사. 읽기 전용으로 동작하며 코드 수정 불가.
allowed-tools: [Read, Grep, Glob, Bash]
---
# 보안 감사 Skill
## 검사 항목
- SQL Injection 취약점
- XSS 취약점
- 하드코딩된 시크릿
- 안전하지 않은 의존성
## 검사 방법
```bash
# 하드코딩된 API 키 검색
grep -r "API_KEY\s*=\s*['\"]" .
# SQL Injection 취약 패턴
grep -r "execute.*\+.*request\." .
보고서 형식
- 발견된 취약점 목록
- 심각도 평가
- 수정 권장사항
### 팀 표준화
Project Skills로 팀 전체의 작업 방식을 표준화합니다.
**예시: API 설계 표준**
```bash
project-api/
└── .claude/
└── skills/
└── api-design-standard/
├── SKILL.md
├── naming-conventions.md
├── templates/
│ ├── rest-api.yaml
│ └── graphql-schema.graphql
└── scripts/
└── validate-api.sh
베스트 프랙티스
1. 효과적인 description 작성
핵심 원칙:
– 구체적인 트리거 키워드 포함
– 사용 시점 명확히 설명
– 간결하지만 충분한 정보
비교 예시:
# ❌ 모호한 description
description: 문서 작업 도구
# ✅ 효과적인 description
description: PDF에서 텍스트 추출. PDF, 문서, 텍스트 추출 작업 시 사용.
# ❌ 너무 일반적
description: 코드 리뷰를 돕습니다.
# ✅ 구체적이고 명확
description: Pull Request 코드 리뷰 자동화. PR, 코드 리뷰, 검토 요청 시 자동으로 코드 품질, 보안, 스타일 검사 수행.
2. 하나의 Skill = 하나의 기능
각 Skill은 단일 목적에 집중해야 합니다.
# ❌ 나쁜 예시: 너무 많은 기능
general-helper/
└── SKILL.md # 블로그 작성 + 코드 리뷰 + API 설계
# ✅ 좋은 예시: 명확한 분리
skills/
├── blog-posting/ # 블로그 작성만
├── code-review/ # 코드 리뷰만
└── api-design/ # API 설계만
3. 팀과 함께 테스트
Project Skills는 팀원들과 함께 테스트해야 합니다.
테스트 프로세스:
1. Skill 작성 및 커밋
2. 팀원들에게 다양한 요청으로 테스트 요청
3. 활성화 빈도와 정확도 확인
4. description 개선 및 재배포
예시:
# 팀원 A: "API 엔드포인트 설계해줘"
# → api-design Skill 활성화됨 ✅
# 팀원 B: "REST API 만들어줘"
# → api-design Skill 활성화 안 됨 ❌
# → description에 "REST" 키워드 추가 필요
4. 버전 관리와 문서화
SKILL.md 내에 버전 히스토리를 포함합니다.
---
name: blog-posting-style
description: 블로그 포스팅 스타일 가이드
---
# 블로그 포스팅 스타일 가이드
## 버전 히스토리
### v2.0.0 (2025-10-27)
- 경험 기록형 모드 추가
- SEO 최적화 가이드 추가
### v1.0.0 (2025-10-01)
- 초기 버전 (정보 정리형만)
5. Unix 스타일 경로 사용
파일 경로는 항상 Forward Slash(/)를 사용합니다.
# ✅ 올바른 경로
참고: scripts/validate.sh
템플릿: templates/api.yaml
# ❌ 잘못된 경로 (Windows 스타일)
참고: scripts\validate.sh
문제 해결
Skill이 활성화되지 않을 때
원인 1: 모호한 description
# 문제
description: 코드 작업 도구
# 해결
description: Python 코드 리팩토링 자동화. 리팩토링, 코드 정리, Python, 클린 코드 작업 시 사용.
원인 2: YAML 문법 오류
# 문제: 콜론 뒤 공백 누락
description:블로그 작성 도구
# 해결
description: 블로그 작성 도구
원인 3: 잘못된 파일 경로
# 문제
참고: ./reference.md # 상대 경로 사용
# 해결
참고: reference.md # 직접 파일명만
원인 4: 누락된 의존성
스크립트가 외부 도구를 사용하는 경우, SKILL.md에 명시합니다.
## 사전 요구사항
- Node.js 18+
- `jq` (JSON 처리)
- `yq` (YAML 처리)
설치 방법:
```bash
brew install jq yq
## 실제 사용 예시
### 예시 1: 블로그 포스팅 자동화
**Skill 구조:**
```bash
.claude/skills/blog-posting-style/
├── SKILL.md
├── templates/
│ ├── info-post.md # 정보 정리형 템플릿
│ └── experience-post.md # 경험 기록형 템플릿
└── scripts/
└── seo-check.sh # SEO 검증 스크립트
SKILL.md:
---
name: blog-posting-style
description: 기술 블로그 포스팅 자동 작성. 블로그, 포스팅, 글쓰기, 기술 블로그 작업 시 정보 정리형/경험 기록형 중 적절한 템플릿 적용.
allowed-tools: [Read, Write, Edit, WebFetch]
---
# 기술 블로그 포스팅 스타일
## 모드 선택
사용자 요청 분석:
- "공식 문서 정리", "비교 분석", "설치 가이드" → 정보 정리형
- "삽질", "트러블슈팅", "회고", "경험" → 경험 기록형
## 정보 정리형 작성
### 구조
```markdown
# [기술명] 개념 및 사용 가이드
## 개요
- 정의와 목적
- 주요 특징
## 상세 설명
- 비교표
- 코드 예시 (주석 포함)
## 참고 자료
- 공식 문서 링크
스타일
- 객관적이고 명확한 설명
- “~입니다”, “~합니다” 체
- 공식 문서 기반
경험 기록형 작성
구조
# [경험 제목]
## 문제 상황
- 배경과 동기
## 시행착오
- 실패 과정 솔직하게
- 에러 로그 전체 포함
## 해결 과정
- 최종 해결 방법
## 고민했던 포인트
- 의사결정 과정
## 느낀 점
- 배운 점과 교훈
스타일
- 솔직하고 개인적인 표현
- 구어체 사용
- 감정 표현 OK
SEO 최적화
스크립트 실행:
./scripts/seo-check.sh draft.md
체크 항목:
– 제목 40-60자
– 메타 설명 120-160자
– 헤딩 구조 (H2, H3)
– 내부 링크 포함
**사용 시나리오:**
```bash
# 사용자 요청
"Docker Compose 설치 가이드 작성해줘"
# Claude의 동작
1. "설치 가이드" 키워드 감지
2. blog-posting-style Skill 활성화
3. 정보 정리형 모드 선택
4. templates/info-post.md 템플릿 사용
5. 공식 문서 리서치 (WebFetch)
6. 포스팅 작성
7. scripts/seo-check.sh 실행
예시 2: 코드 리뷰 자동화
Skill 구조:
.claude/skills/code-review/
├── SKILL.md
├── checklists/
│ ├── backend.md
│ ├── frontend.md
│ └── security.md
└── scripts/
└── lint-check.sh
SKILL.md:
---
name: code-review-automation
description: Pull Request 코드 리뷰 자동화. PR, 코드 리뷰, 검토, pull request 작업 시 코드 품질, 보안, 스타일 검사 자동 수행.
allowed-tools: [Read, Grep, Glob, Bash]
---
# 코드 리뷰 자동화
## 리뷰 프로세스
### 1단계: 변경 파일 분석
```bash
git diff --name-only origin/main
2단계: 타입별 체크리스트 선택
*.ts,*.tsx→ frontend.md*.py,*.go→ backend.md- 모든 파일 → security.md
3단계: 자동 검사
./scripts/lint-check.sh
4단계: 수동 리뷰 포인트
코드 품질
- [ ] 중복 코드 없음
- [ ] 명확한 변수명
- [ ] 적절한 주석
- [ ] 에러 처리 완료
보안
- [ ] 입력 검증
- [ ] SQL Injection 방어
- [ ] XSS 방어
- [ ] 하드코딩된 시크릿 없음
성능
- [ ] N+1 쿼리 없음
- [ ] 적절한 인덱스
- [ ] 캐싱 고려
5단계: 리뷰 코멘트 작성
형식:
## 요약
- 변경 파일: X개
- 주요 변경: [설명]
- 전체 평가: ✅ 승인 / ⚠️ 수정 필요 / ❌ 재작업 필요
## 상세 리뷰
### 긍정적인 부분
- ...
### 개선 필요
1. [파일명:줄번호] 문제 설명
- 권장: 개선 방법
### 질문
- ...
**사용 시나리오:**
```bash
# 사용자 요청
"PR #123 코드 리뷰해줘"
# Claude의 동작
1. "코드 리뷰", "PR" 키워드 감지
2. code-review-automation Skill 활성화
3. git diff로 변경 파일 확인
4. 파일 타입별 체크리스트 선택
5. scripts/lint-check.sh 실행
6. 수동 리뷰 포인트 확인
7. 구조화된 리뷰 코멘트 작성
예시 3: 프로젝트별 문서 생성
Skill 구조:
.claude/skills/doc-generator/
├── SKILL.md
├── templates/
│ ├── README.md
│ ├── API.md
│ ├── CONTRIBUTING.md
│ └── CHANGELOG.md
└── scripts/
└── generate-api-docs.sh
SKILL.md:
---
name: project-doc-generator
description: 프로젝트 문서 자동 생성. README, API 문서, CONTRIBUTING, CHANGELOG 생성 및 업데이트. 문서, 문서화, docs 작업 시 사용.
allowed-tools: [Read, Write, Grep, Glob, Bash]
---
# 프로젝트 문서 생성 Skill
## 지원 문서 타입
### README.md
- 프로젝트 개요
- 설치 방법
- 사용 예시
- 라이선스
자동 수집 정보:
- `package.json`에서 의존성
- `scripts/`에서 사용 가능한 명령어
- 테스트 파일에서 예시 코드
### API.md
스크립트 실행:
```bash
./scripts/generate-api-docs.sh src/
포함 내용:
– 엔드포인트 목록
– 요청/응답 스키마
– 인증 방법
– 에러 코드
CONTRIBUTING.md
- Git 워크플로우
- 브랜치 전략
- PR 템플릿
- 코드 스타일 가이드
CHANGELOG.md
- 버전별 변경사항
- Git 커밋 히스토리 분석
- Semantic Versioning 준수
문서 생성 프로세스
1. 프로젝트 분석
# 프로젝트 타입 감지
ls package.json 2>/dev/null && echo "Node.js"
ls requirements.txt 2>/dev/null && echo "Python"
ls go.mod 2>/dev/null && echo "Go"
2. 템플릿 선택
프로젝트 타입에 맞는 템플릿 선택
3. 정보 수집
- Git 로그 분석
- 코드 구조 파악
- 의존성 목록 추출
4. 문서 생성
템플릿에 수집 정보 삽입
5. 검증
- 링크 유효성 확인
- 코드 예시 문법 검사
- 목차 구조 검증
**사용 시나리오:**
```bash
# 사용자 요청
"프로젝트 README 생성해줘"
# Claude의 동작
1. "README", "문서" 키워드 감지
2. project-doc-generator Skill 활성화
3. 프로젝트 타입 감지 (package.json → Node.js)
4. templates/README.md 템플릿 로드
5. package.json 파싱 (의존성, 스크립트)
6. src/ 디렉토리 분석 (주요 파일)
7. README.md 생성
참고 자료
공식 문서
관련 리소스
작성 일자: 2025-10-27
공식 문서 버전: Claude Code 최신 버전 기준
카테고리: Development Tools
태그: Claude, Claude Code, AI, Development, Automation, Skills, Developer Tools, Productivity