스킬 구조
Claude Code 스킬은 표준화된 디렉토리 구조를 따릅니다. 스킬의 핵심은 `skill.yaml` 파일로, 이 파일이 스킬의 메타데이터, 명령어, 프롬프트 등을 정의합니다. 올바른 구조를 따르면 스킬이 Claude Code에 자동으로 인식되고, 사용자가 쉽게 설치하고 사용할 수 있습니다. 기본 구조는 간단하지만, 필요에 따라 확장 가능하며, 스크립트, 템플릿, 설정 파일 등을 추가할 수 있습니다. 모든 스킬은 독립적으로 동작하며, 다른 스킬이나 시스템에 의존하지 않아야 합니다.
# 기본 스킬 구조
my-skill/
├── skill.yaml # 스킬 정의 파일 (필수)
├── README.md # 스킬 문서 (권장)
├── .gitignore # Git 설정
├── prompts/ # 프롬프트 템플릿
│ ├── main.txt
│ └── examples.txt
├── scripts/ # 실행 스크립트
│ ├── setup.sh
│ └── validate.py
├── templates/ # 코드 템플릿
│ └── component.tsx
└── tests/ # 테스트 파일
└── test_skill.py# skill.yaml 기본 구조
name: my-skill
version: 1.0.0
description: "간단한 설명"
author: "Your Name <email@example.com>"
# 스킬이 제공하는 명령어
commands:
generate:
description: "코드 생성"
prompt: "prompts/main.txt"
args:
- name: component
description: "컴포넌트 이름"
required: true
- name: type
description: "컴포넌트 타입"
default: "functional"
# 환경 변수 정의
env:
- name: API_KEY
description: "API 키"
required: false
# 의존성
dependencies:
- git: "https://github.com/user/another-skill"
version: ">=1.0.0"- skill.yaml 필수 - 모든 스킬의 핵심 정의 파일
- 프롬프트 분리 - prompts/ 디렉토리에 템플릿 관리
- 명령어 정의 - commands 섹션에서 사용자 명령 정의
- 독립적 실행 - 외부 의존성 최소화
스킬 개발
스킬 개발은 간단한 프롬프트 작성부터 시작합니다. Claude Code CLI의 `skill create` 명령어를 사용하면 기본 구조를 자동으로 생성해주므로 빠르게 시작할 수 있습니다. 개발 과정에서는 반복적인 테스트와 개선이 중요합니다. 로컬에서 스킬을 테스트하고, 프롬프트를 다듬으며, 다양한 입력 케이스에 대해 동작을 확인하세요. 스킬이 완성되면 버전 관리를 시작하고, 변경사항을 추적하며, 사용자 피드백을 반영하여 지속적으로 개선합니다.
# 새 스킬 생성
claude skill create my-awesome-skill
# 대화형 설정
? Skill name: my-awesome-skill
? Description: React 컴포넌트 생성 도구
? Author: Your Name <email@example.com>
? Version: 1.0.0
? Command name: generate
? Does this command need arguments? Yes
✓ Created skill structure
✓ Generated skill.yaml
✓ Created README.md template# 프롬프트 템플릿 작성 (prompts/generate.txt)
당신은 React 컴포넌트 전문가입니다.
다음 요구사항에 맞는 컴포넌트를 생성해주세요:
컴포넌트 이름: {{component_name}}
타입: {{component_type}}
스타일: {{style_framework}}
요구사항:
- TypeScript 사용
- 함수형 컴포넌트
- PropTypes 정의
- 기본 스타일 포함
- 접근성 고려
템플릿을 사용하여 깔끔하고 재사용 가능한 코드를 생성하세요.# 로컬 테스트
cd my-awesome-skill
# 스킬 로드
claude skill install . --local
# 테스트 실행
claude my-awesome-skill generate \
--component-name "UserCard" \
--component-type "functional" \
--style-framework "tailwind"
# 로그 확인
claude skill logs my-awesome-skill --tail 20- 빠른 시작 - CLI 도구로 자동 구조 생성
- 프롬프트 중심 - 효과적인 프롬프트 작성이 핵심
- 반복 테스트 - 로컬에서 즉시 테스트하고 개선
- 변수 활용 - {{variable}} 문법으로 동적 프롬프트
스킬 테스트
스킬 테스트는 신뢰성 있는 스킬을 만드는 핵심입니다. Claude Code는 내장 테스트 프레임워크를 제공하여 스킬의 동작을 자동으로 검증할 수 있습니다. 단위 테스트로 개별 명령어를 검증하고, 통합 테스트로 전체 워크플로우를 확인하세요. 테스트 케이스는 다양한 입력 조합과 엣지 케이스를 포함해야 하며, 실패 시나리오도 반드시 테스트해야 합니다. CI/CD 파이프라인에 테스트를 통합하면 변경사항이 기존 기능을 손상시키지 않는지 자동으로 확인할 수 있습니다.
# 테스트 디렉토리 구조
my-skill/
└── tests/
├── test_commands.py # 명령어 테스트
├── test_prompts.py # 프롬프트 검증
├── test_integration.py # 통합 테스트
└── fixtures/ # 테스트 데이터
└── sample_input.json
# 테스트 실행
claude skill test my-skill
# 특정 테스트만 실행
claude skill test my-skill --filter "test_generate*"
# 커버리지 리포트
claude skill test my-skill --coverage# test_commands.py 예제
import pytest
from claude_skill_test import SkillTester
class TestGenerateCommand:
def setup_method(self):
self.tester = SkillTester("my-skill")
def test_basic_generation(self):
"""기본 컴포넌트 생성 테스트"""
result = self.tester.run_command(
"generate",
args={"component_name": "Button", "type": "functional"}
)
assert result.success
assert "export const Button" in result.output
assert "React.FC" in result.output
def test_missing_required_arg(self):
"""필수 인자 누락 테스트"""
result = self.tester.run_command("generate", args={})
assert not result.success
assert "component_name is required" in result.error
def test_invalid_type(self):
"""잘못된 타입 처리"""
result = self.tester.run_command(
"generate",
args={"component_name": "Test", "type": "invalid"}
)
assert not result.success
assert "Invalid component type" in result.error# skill.yaml에 테스트 설정 추가
testing:
framework: pytest
timeout: 30
# 환경 변수
env:
TEST_MODE: "true"
MOCK_API: "true"
# 테스트 전 실행할 스크립트
setup: "scripts/test_setup.sh"
# 최소 커버리지
coverage:
min: 80
exclude:
- "*/tests/*"
- "*/examples/*"- 자동화된 테스트 - 내장 프레임워크로 쉬운 테스트 작성
- 다양한 케이스 - 정상/오류 시나리오 모두 검증
- 커버리지 추적 - 코드 커버리지 측정 및 리포트
- CI/CD 통합 - 자동 배포 전 테스트 실행
스킬 문서화
훌륭한 문서는 스킬 채택률을 크게 높입니다. README.md는 사용자가 가장 먼저 보는 문서이므로 명확하고 포괄적이어야 합니다. 스킬의 목적, 설치 방법, 사용 예제, 설정 옵션을 포함하세요. 실제 사용 사례와 스크린샷을 추가하면 이해도가 높아집니다. API 문서는 모든 명령어와 인자를 상세히 설명해야 하며, 변경 이력은 CHANGELOG.md에 기록하여 버전별 차이를 명확히 하세요. 기여 가이드라인도 포함하면 커뮤니티 참여를 촉진할 수 있습니다.
# README.md 기본 구조
# My Awesome Skill
> React 컴포넌트를 빠르게 생성하는 Claude Code 스킬
## 개요
이 스킬은 TypeScript, Tailwind CSS, 접근성을 고려한
React 함수형 컴포넌트를 자동으로 생성합니다.
## 설치
```bash
claude skill install my-awesome-skill
```
## 사용법
### 기본 사용
```bash
claude my-awesome-skill generate \
--component-name "Button" \
--type "functional"
```
### 고급 옵션
```bash
claude my-awesome-skill generate \
--component-name "UserCard" \
--type "functional" \
--style-framework "tailwind" \
--with-tests
```
## 명령어
| 명령어 | 설명 | 필수 인자 |
|--------|------|-----------|
| generate | 컴포넌트 생성 | component-name |
| update | 기존 컴포넌트 업데이트 | component-name |
## 설정
`skill.yaml`에서 기본값을 커스터마이즈할 수 있습니다:
```yaml
defaults:
type: functional
style-framework: tailwind
with-tests: true
```# CHANGELOG.md
## [1.2.0] - 2024-01-15
### Added
- 클래스 컴포넌트 지원 추가
- Styled Components 템플릿 추가
- 자동 테스트 파일 생성 옵션
### Changed
- TypeScript 타입 정의 개선
- 프롬프트 최적화로 생성 속도 향상
### Fixed
- 특수 문자 포함 컴포넌트명 처리 버그 수정
- PropTypes 중복 생성 문제 해결
## [1.1.0] - 2024-01-01
### Added
- Material-UI 템플릿 추가
- 커스텀 훅 생성 명령어
### Fixed
- 경로 처리 오류 수정# 자동 문서 생성
claude skill docs generate
# API 레퍼런스 생성
claude skill docs api --format markdown
# 문서 검증
claude skill docs validate
# 예제 추출
claude skill docs examples --output examples/- 명확한 README - 설치부터 사용까지 모든 정보 포함
- 실용적 예제 - 실제 사용 사례로 이해도 향상
- 변경 이력 - CHANGELOG로 버전별 차이 명확히
- API 문서 - 모든 명령어와 옵션 상세 설명
스킬 배포
스킬을 완성했다면 Claude Code 스킬 허브에 배포하여 전 세계 개발자들과 공유할 수 있습니다. 배포 전에는 반드시 모든 테스트를 통과하고, 문서가 완성되었는지 확인하세요. 스킬 허브는 자동으로 버전 관리를 수행하며, 시맨틱 버저닝을 따릅니다. 배포 후에는 사용자 피드백을 적극적으로 수집하고, 정기적으로 업데이트를 제공하세요. 라이선스를 명확히 하고, 보안 이슈에 신속히 대응하는 것도 중요합니다.
# 배포 전 체크리스트
claude skill validate
# 검증 항목:
✓ skill.yaml 문법 검사
✓ 모든 테스트 통과
✓ README.md 존재
✓ CHANGELOG.md 최신화
✓ 라이선스 파일 존재
✓ 민감한 정보 제거
✓ 버전 번호 확인
# 배포 (스킬 허브)
claude skill publish
# 대화형 배포
? Skill name: my-awesome-skill
? Version: 1.0.0
? Category: code-generation
? Tags: react, typescript, components
? Public repository: https://github.com/user/my-awesome-skill
? License: MIT
Publishing to Claude Code Skill Hub...
✓ Validated skill structure
✓ Ran tests successfully
✓ Uploaded to hub
✓ Published: my-awesome-skill@1.0.0# 버전 업데이트 배포
# Patch 업데이트 (1.0.0 -> 1.0.1)
claude skill publish --bump patch
# Minor 업데이트 (1.0.0 -> 1.1.0)
claude skill publish --bump minor
# Major 업데이트 (1.0.0 -> 2.0.0)
claude skill publish --bump major
# 특정 버전 지정
claude skill publish --version 1.2.0
# 릴리스 노트 포함
claude skill publish --bump minor \
--release-notes "Added support for Vue.js templates"
# 베타 버전 배포
claude skill publish --version 2.0.0-beta.1 --tag beta# GitHub Actions 자동 배포 설정
# .github/workflows/publish.yml
name: Publish Skill
on:
push:
tags:
- 'v*'
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Claude CLI
run: npm install -g @anthropic/claude-cli
- name: Authenticate
run: claude auth login
env:
CLAUDE_API_KEY: ${{ secrets.CLAUDE_API_KEY }}
- name: Run tests
run: claude skill test .
- name: Publish to Hub
run: claude skill publish --ci
env:
SKILL_HUB_TOKEN: ${{ secrets.SKILL_HUB_TOKEN }}- 자동 검증 - 배포 전 자동으로 품질 체크
- 버전 관리 - 시맨틱 버저닝 자동 처리
- CI/CD 통합 - GitHub Actions로 자동 배포
- 롤백 지원 - 문제 발생 시 이전 버전으로 복구
스킬 예제
실제 스킬 예제를 통해 스킬 개발의 다양한 패턴을 학습할 수 있습니다. 간단한 코드 생성 스킬부터 복잡한 워크플로우 자동화까지, 각 예제는 실제 프로젝트에서 바로 사용할 수 있도록 설계되었습니다. 예제를 참고하여 자신만의 스킬을 만들어보세요. 각 예제는 완전한 스킬 구조를 포함하며, 주석으로 상세한 설명을 제공합니다. 커뮤니티에서 공유된 인기 스킬들도 훌륭한 학습 자료가 됩니다.
# 예제 1: React 컴포넌트 생성기
# skill.yaml
name: react-component-generator
version: 1.0.0
description: "TypeScript React 컴포넌트를 빠르게 생성"
commands:
generate:
description: "새 컴포넌트 생성"
prompt: |
TypeScript React 함수형 컴포넌트를 생성해주세요:
컴포넌트명: {{name}}
Props: {{props}}
요구사항:
- TypeScript 인터페이스 정의
- JSDoc 주석 포함
- 기본 export
- 간단한 예제 사용법 주석
파일: src/components/{{name}}.tsx
args:
- name: name
description: "컴포넌트 이름 (PascalCase)"
required: true
- name: props
description: "Props 정의"
default: "{ children: React.ReactNode }"# 예제 2: API 엔드포인트 생성기
# skill.yaml
name: api-endpoint-generator
version: 1.0.0
description: "Express.js API 엔드포인트 자동 생성"
commands:
create:
description: "새 API 엔드포인트 생성"
prompt: "prompts/create-endpoint.txt"
args:
- name: resource
description: "리소스 이름 (예: users, posts)"
required: true
- name: methods
description: "HTTP 메소드 (쉼표로 구분)"
default: "GET,POST,PUT,DELETE"
# 생성 후 자동 실행할 스크립트
post_generate:
- "scripts/add-route.sh {{resource}}"
- "npm run format"
env:
- name: DB_TYPE
description: "데이터베이스 타입"
default: "postgres"# 예제 3: 테스트 생성기
# prompts/generate-test.txt
당신은 테스트 코드 전문가입니다.
다음 함수에 대한 포괄적인 테스트를 작성해주세요:
함수 이름: {{function_name}}
파일 위치: {{file_path}}
테스트 프레임워크: {{test_framework}}
다음을 포함하세요:
1. 정상 케이스 테스트 (최소 3개)
2. 엣지 케이스 테스트 (경계값, null, undefined)
3. 에러 케이스 테스트
4. Mock이 필요한 경우 적절히 사용
5. 각 테스트에 명확한 설명 추가
테스트 파일: {{file_path}}.test.{{extension}}# 예제 사용법
# React 컴포넌트 생성
claude react-component-generator generate \
--name "UserProfile" \
--props "{ user: User; onEdit: () => void }"
# API 엔드포인트 생성
claude api-endpoint-generator create \
--resource "products" \
--methods "GET,POST,PUT,DELETE"
# 테스트 생성
claude test-generator generate \
--function-name "calculateTotal" \
--file-path "src/utils/math.ts" \
--test-framework "jest"- 실용적 예제 - 실제 프로젝트에서 바로 사용 가능
- 다양한 패턴 - 코드 생성부터 자동화까지
- 상세한 주석 - 각 부분의 역할 명확히 설명
- 커스터마이징 - 프로젝트에 맞게 쉽게 수정
anthropics/claude-skills-examples에서 더 많은 고급 예제와 베스트 프랙티스를 확인하세요.