13. Skills 만들기 - SOP 문서 하나면 끝
Skills의 비밀
지난 글에서 google-calendar Skill을 배웠다.
궁금했을 것이다. "이거 어떻게 만들었을까?"
정답: ~/.claude/skills/ 폴더 안에 SKILL.md 파일 하나다.
~/.claude/skills/google-calendar/
└── skill.md ← SOP 문서 하나
더 놀라운 점:
- 직접 안 만들어도 됨
- Claude에게 "이런 SOP 가르쳐줘" 요청
- 공식 문서 참조해서 Claude가 작성
- 저장하면 바로 사용 가능
Before / After
Before (Skill 없을 때)
일정 확인할 때마다:
나: "오늘 일정 뭐 있어?"
Claude: "죄송하지만 캘린더에 접근할 수 없습니다"
나: [캘린더 앱 열기]
[일정 확인]
[다시 Claude Code]
→ 컨텍스트 잃음
매번 반복. 앱 전환. 컨텍스트 손실.
After (Skill 사용)
일정 확인:
나: "오늘 일정 뭐 있어?"
Claude: [google-calendar Skill 자동 실행]
"19:30 GPTers 스터디"
3초 완료. 앱 전환 없음.
실전 예제: google-calendar Skill
실제로 사용하는 Skill을 보자.
상황 판단 자동화
사용법:
나: "오늘 일정 뭐 있어?"
→ [google-calendar Skill 자동 실행]
나: "내일 오후 2시에 강릉 미팅 잡아줘"
→ [google-calendar Skill 자동 실행]
자동으로:
- "일정", "스케줄", "캘린더" 키워드 감지
- 상황 판단 (조회 vs 추가)
- 적절한 SOP 실행
- 결과 반환
결과:
오늘 일정:
- 19:30 GPTers 19기 스터디장 OT 모임
일정 추가 완료:
11월 6일 (수) 14:00 - 강릉 프로젝트 미팅
Daily Note 자동 통합
사용법:
/daily-note
자동으로:
1. Daily Note 파일 생성
2. google-calendar Skill 자동 실행
3. 오늘 일정 자동 삽입
4. 완성
추가 명령 불필요.
어떻게 만들었을까? Claude에게 시키세요
실제 워크플로우
1. SOP 정의
나: google-calendar Skill 만들어줘.
Google Calendar 일정을 조회하고 추가하는 Skill이야.
상황 1: 일정 조회
- "오늘 일정", "이번 주 일정" 같은 말 들으면
- gcalcli 사용해서 조회
- Markdown으로 정리해서 반환
상황 2: 일정 추가
- "미팅 잡아줘", "일정 추가" 같은 말 들으면
- add_event.py 스크립트 실행
- 날짜, 시간, 제목 파라미터 전달
공식 문서 참조해서 작성해줘.
2. Claude가 작성
Claude가 공식 문서를 참조해서:
- ~/.claude/skills/google-calendar/ 폴더 생성
- skill.md 파일 생성
- YAML frontmatter 작성 (name, description, allowed-tools)
- SOP 절차 작성
- 저장
3. 바로 사용
나: "오늘 일정 뭐 있어?"
→ [자동 실행]
끝이다.
핵심 포인트
직접 만들 필요 없음:
- Claude에게 "이런 SOP 가르쳐줘" 요청
- "공식 문서 참조해서" 명시
- Claude가 알아서 작성
당신이 할 일:
1. 어떤 SOP가 필요한지 설명
2. Claude에게 만들어 달라고 요청
3. 테스트
4. 필요하면 수정 요청
이게 전부다.
Skills 구조 이해하기
SKILL.md 기본 구조
---
name: google-calendar
description: "오늘 일정", "이번 주 일정", "미팅 잡아줘" 등 언급 시 자동 실행
allowed-tools: Bash, Read
---
# Google Calendar SOP
## 상황 1: 일정 조회
사용자가 "일정", "스케줄", "캘린더" 언급 시:
1. gcalcli 사용하여 Google Calendar 조회
2. Markdown 형식으로 정리
3. 결과 반환
## 상황 2: 일정 추가
사용자가 "미팅 잡아줘", "일정 추가" 언급 시:
1. add_event.py 스크립트 실행
2. 날짜, 시간, 제목 파라미터 전달
3. 추가 완료 확인
3가지 핵심 요소
1. name
- Skill 고유 이름
- 소문자, 하이픈 사용
- 예: google-calendar, web-crawler-ocr
2. description (가장 중요!)
Model-invoked 방식:
- Claude가 description만 보고 실행 여부 판단
- 사용자가 실제로 말할 법한 표현 포함 필수
- 기능 설명 + 트리거 키워드 조합
좋은 예 1 (공식 문서):
"Analyze Excel spreadsheets, generate pivot tables, create charts.
Use when working with Excel files, .xlsx, .xls, pivot tables, charts, data analysis."
좋은 예 2 (실전):
"오늘 일정", "이번 주 일정", "미팅 잡아줘" 등 언급 시 자동 실행
나쁜 예:
"Calendar management"
"Analyze Excel spreadsheets" (트리거 키워드 없음)
→ AI가 언제 실행할지 판단 불가능
핵심:
- 기능 설명: "Analyze Excel spreadsheets, generate pivot tables"
- 트리거 키워드: "Excel files, .xlsx, pivot tables, charts"
- 두 가지 모두 포함해야 정확한 상황 판단
3. allowed-tools (선택, 보안용)
Skill이 사용할 수 있는 도구 제한:
읽기 전용 Skills:
allowed-tools: Read, Grep, Glob
- 코드 분석, 문서 검색
- 파일 수정 불가 (안전)
쓰기 가능 Skills:
allowed-tools: Read, Write, Edit, Bash
- 파일 생성/수정
- 스크립트 실행
외부 서비스 연결:
allowed-tools: Bash, Read, Write
- API 호출 (gcalcli, curl)
- 결과 저장
MCP 도구 사용:
allowed-tools: Read, mcp__filesystem__*, mcp__database__*
- MCP 서버 도구 활용
- 특정 MCP만 선택적 허용
생략 시:
- 모든 도구 사용 가능
- 개인 Skill은 괜찮음
- 팀 공유 시 명시 권장
SOP 절차 작성
카페 직원 교육하듯이 작성한다:
## 상황: 손님이 메뉴 추천 요청
절차:
1. 선호도 질문 ("진하신 거 좋아하세요?")
2. 메뉴 3개 추천
3. 시음 제안
AI도 같은 방식:
## 상황: 일정 조회 요청
절차:
1. gcalcli로 Calendar 조회
2. Markdown 포맷팅
3. 결과 반환
더 많은 예제
web-crawler-ocr - 웹사이트 분석
SOP 정의:
나: web-crawler-ocr Skill 만들어줘.
웹사이트 URL을 분석하는 Skill이야.
상황: URL 언급
- URL (https://...) 감지
- 또는 "이 사이트 분석해줘" 같은 말
절차:
1. Firecrawl로 텍스트 추출
2. Gemini OCR로 이미지 분석
3. Markdown 파일로 저장
Claude 5MB 제한 우회용이야.
사용:
나: "https://competitor.com 분석해줘"
Claude: [web-crawler-ocr Skill 자동 실행]
[5분 후 마크다운 파일 생성]
효과: 3시간 수작업 → 5분 자동화
transcript-organizer - 강의 녹음 정리
SOP 정의:
나: transcript-organizer Skill 만들어줘.
강의 녹음 파일을 정리하는 Skill이야.
상황: 녹음 파일 언급
- .mp3, .m4a, .wav 파일 언급
- "녹음 파일 정리해줘" 같은 말
절차:
1. Whisper로 자막 추출
2. 타임스탬프 추가
3. 핵심 포인트 5개 추출
4. Markdown 정리
사용:
나: "gpters-lecture-01.m4a 정리해줘"
Claude: [transcript-organizer Skill 자동 실행]
[10분 후 구조화된 노트 생성]
효과: 3시간 타이핑 → 10분 자동화
Skills 활용 범위
1. 외부 서비스 SOP
- Calendar 조회/추가
- Notion 업데이트
- Slack 알림
- GitHub Issue 생성
2. 파일 처리 SOP
- PDF 분석
- Excel 차트 생성
- 이미지 OCR
- 영상 자막 추출
3. 워크플로우 SOP
- 데이터 변환
- 리포트 생성
- 배포 체크리스트
- 품질 검증
SOP가 있으면 Skills로 만들 수 있다.
실전 팁
1. description이 80%다
핵심:
- 사용자가 실제로 말할 법한 표현 포함
- 구체적인 키워드 명시
- 여러 변형 포함
description: "오늘 일정", "이번 주 일정", "미팅 잡아줘", "스케줄 확인", "캘린더 보여줘" 등 언급 시 자동 실행
2. 작게 시작하라
처음:
- 조회만 (간단한 SOP)
이후:
- 추가 기능 확장 (점진적)
나중:
- 수정, 삭제 추가 (완성)
3. Claude에게 테스트 시키기
나: 테스트해줘.
"오늘 일정 뭐 있어?" 라고 하면
google-calendar Skill 실행되는지 확인
Claude가 직접 테스트하고 피드백한다.
4. 수정도 Claude에게
na: google-calendar Skill 수정해줘.
"다음 주 일정" 도 인식하도록
description에 추가해줘
Claude가 알아서 수정한다.
슬래시 커맨드 vs Skills
언제 슬래시 커맨드?
명시적 호출 필요:
- /daily-note (매일 아침 루틴)
- /idea (아이디어 저장)
- 사용자가 직접 트리거
언제 Skills?
자연스러운 대화:
- "오늘 일정 뭐 있어?" (Calendar)
- "이 URL 분석해줘" (Web Crawler)
- AI가 상황 판단하고 자동 실행
조합 사용
/daily-note 실행
→ google-calendar Skill 자동 실행
→ 일정 포함된 Daily Note 생성
명령 + SOP 자동화 = 완성
핵심 정리
Skills = SOP 문서
카페 직원 교육:
1. SOP 작성 (손님이 X 하면 → Y 실행)
2. 신입 교육
3. 알아서 실행
AI Skills:
1. SKILL.md 작성 (사용자가 X 말하면 → Y 실행)
2. Claude에게 가르침
3. 알아서 실행
만드는 법
1. SOP 정의 (상황 + 절차)
2. Claude에게 "Skills 만들어줘"
3. 테스트
4. 필요하면 수정 요청
→ 10분이면 완성
핵심은 description
좋은 description:
"오늘 일정", "이번 주 일정", "미팅 잡아줘"
→ AI가 상황 판단 가능
나쁜 description:
"Calendar management"
→ AI가 상황 판단 불가능
직접 안 만들어도 됨
나: "이런 Skill 만들어줘"
[SOP 설명]
Claude: [skill.md 생성]
[저장]
나: [바로 사용]
다음 편 예고
Skills 만드는 법을 배웠다.
이제 실제로 어떻게 쓰는지 보자.
다음 편:
- web-crawler-ocr Skill 실전
- 경쟁사 웹사이트 분석
- 3시간 수작업 → 5분 자동화
- Firecrawl + Gemini Vision
- Claude 5MB 제한 우회
경쟁사 웹사이트를 3시간이 아니라 5분에 분석한다.
실제 사례를 보자.