13. Skills 만들기 - SOP 문서 하나면 끝

claude code skills
claude code skills

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분에 분석한다.

실제 사례를 보자.

Subscribe to 비개발자를 위한 Claude Code | 일을 잘하기 위한 AI Workspace

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
[email protected]
Subscribe