TechFeedTechFeed
Claude Code 가이드

Claude Code 가이드 #11 — Skills 완벽 가이드

슬래시 명령어를 직접 만드는 Skills 시스템 완전 해설. 파일 구조, user-invoked vs auto 트리거, 실전 예시까지.

Claude Code 가이드 #11 — Claude Code에 슬래시 명령어(/commit, /review-pr 등)를 직접 만들 수 있다는 걸 알고 있었나요? Skills 시스템을 사용하면 반복 작업을 단 한 줄 명령으로 처리할 수 있습니다. 이 편에서는 Skills의 구조, 생성 방법, 사용자 호출 방식, 그리고 실전에서 쓸 수 있는 예시까지 완전 정리합니다.

※ 이 글은 2026년 3월 기준, Claude Code 공식 Skills 문서 기반으로 작성됐습니다.

Skills란 무엇인가?

Skills는 Claude Code에서 사용자가 직접 정의한 슬래시 명령어입니다. 마크다운 파일(.md)로 작성하며, frontmatter로 이름·설명·트리거 조건을 지정합니다.

Skills를 쓰면 다음과 같은 작업을 슬래시 명령으로 단축할 수 있습니다:

  • PR 커밋 메시지 자동 생성 (/commit)
  • 코드 리뷰 요청 (/review-pr)
  • 포스팅 초안 생성 (/post)
  • 사이트맵 갱신 (/update-sitemap)

Skills 파일은 두 가지 방식으로 저장할 수 있습니다:

저장 위치적용 범위용도
~/.claude/skills/모든 프로젝트 (글로벌)공통 작업 자동화
.claude/skills/현재 프로젝트만프로젝트 전용 커스텀 명령
Skills 파일 구조와 슬래시 명령어 등록 개요
Claude Code 가이드 #11 — Skills 완벽 가이드 — Skills .md 파일 구조와 슬래시 명령어 등록 흐름 (출처: 공식 문서 기반)

Skill 파일 구조 — frontmatter 완전 해설

Skill 파일은 YAML frontmatter와 마크다운 본문으로 구성됩니다. frontmatter에는 슬래시 명령어 이름, 설명, 트리거 조건 등을 지정합니다.

Skills란 무엇인가? — CLI 실행 화면과 출력 결과
Claude Code 가이드 #11 — Skills 완벽 가이드 — CLI 실행 화면과 출력 결과 (출처: 공식 문서 및 벤치마크 데이터 기반)
기본 Skill 파일 구조 (.md)
--- name: commit description: 스테이징된 변경사항을 분석해 커밋 메시지를 생성하고 커밋합니다 trigger: user-invoked args: - name: message description: 커밋 메시지 힌트 (선택사항) required: false --- # 커밋 생성 스테이징된 변경사항(`git diff --staged`)을 읽고 다음을 수행합니다: 1. 변경된 파일 목록과 내용을 분석합니다 2. 변경 목적에 맞는 커밋 메시지를 작성합니다 3. 형식: `[type]: description` (type: feat, fix, docs, refactor, test, chore) 4. `git commit -m "..."` 으로 커밋합니다 {{#if message}} 사용자 힌트: {{message}} {{/if}}

frontmatter 필드 설명:

필드타입설명
namestring슬래시 명령어 이름 (/commit)
descriptionstring/help 에서 보이는 설명
triggerenumuser-invoked 또는 auto
argsarray명령어 인수 정의 (선택)
whenstringauto 트리거 조건 (선택)
⚠️ 막히는 케이스: /skillname 을 입력했는데 "알 수 없는 명령어"라고 나오는 경우 — Skills 파일 저장 위치를 확인하세요. 글로벌은 ~/.claude/skills/, 프로젝트는 .claude/skills/ 에 있어야 합니다. 파일 확장자가 .md 인지, frontmatter의 name 필드가 정확한지도 확인하세요.

user-invoked vs auto — 두 가지 트리거 모드

Skills에는 두 가지 트리거 방식이 있습니다.

user-invoked (수동 호출)

사용자가 직접 /skillname 을 입력할 때만 실행됩니다. 가장 일반적인 방식입니다.

auto (자동 트리거)

특정 조건이 충족될 때 Claude Code가 자동으로 실행합니다. when 필드에 트리거 조건을 작성합니다.

auto 트리거 Skill 예시 — 파일 저장 시 자동 lint
--- name: auto-lint description: JS/TS 파일이 수정될 때 자동으로 lint를 실행합니다 trigger: auto when: 사용자가 JavaScript 또는 TypeScript 파일을 수정할 때 --- # 자동 Lint 실행 수정된 JS/TS 파일에 대해 다음을 실행합니다: ```bash npx eslint {{modified_files}} --fix ``` lint 결과에서 자동 수정 불가 에러가 있으면 사용자에게 보고합니다.

auto 트리거는 강력하지만 주의가 필요합니다. 의도하지 않은 상황에서 실행되면 흐름을 방해할 수 있습니다. 자주 사용하는 패턴:

  • 파일 저장 시 포맷터 실행
  • 테스트 파일 수정 시 해당 테스트 자동 실행
  • README 수정 시 문서 검증 실행
⚠️ 막히는 케이스: auto 트리거 Skill이 너무 자주 실행돼 작업을 방해하는 경우 — when 조건을 더 구체적으로 작성하거나, trigger: user-invoked 로 변경해서 수동 호출로 전환하세요. 또는 해당 Skill 파일을 임시로 .claude/skills/disabled/ 폴더로 이동하면 비활성화됩니다.

커스텀 Skill 만들기 — 단계별 실습

실제로 유용한 Skill을 만들어 봅니다. 여기서는 PR 리뷰 요청 Skill을 예시로 사용합니다.

Step 1 — Skill 파일 생성
# 프로젝트 전용 skill 디렉토리 생성 mkdir -p .claude/skills # skill 파일 생성 touch .claude/skills/review-pr.md
Step 2 — review-pr.md 내용 작성
--- name: review-pr description: 현재 브랜치의 변경사항을 main과 비교해 코드 리뷰를 수행합니다 trigger: user-invoked args: - name: focus description: 리뷰 집중 영역 (예: security, performance, style) required: false --- # PR 코드 리뷰 다음 순서로 코드 리뷰를 수행합니다: 1. `git diff main...HEAD` 로 변경사항 확인 2. 변경된 파일 목록과 라인 수 요약 3. 아래 항목으로 리뷰: - 버그 가능성 (로직 오류, 엣지 케이스) - 보안 취약점 (SQL injection, XSS, 인증 누락) - 성능 이슈 (불필요한 루프, N+1 쿼리) - 코드 품질 (중복 코드, 명명 규칙) 4. 이슈는 심각도별로 분류: CRITICAL / WARNING / SUGGESTION {{#if focus}} 특히 {{focus}} 영역에 집중해서 리뷰합니다. {{/if}}

이제 Claude Code 세션에서 다음과 같이 사용할 수 있습니다:

  • /review-pr — 전체 리뷰
  • /review-pr security — 보안에 집중한 리뷰
  • /review-pr performance — 성능에 집중한 리뷰
커스텀 Skill 생성 단계와 슬래시 명령어 실행 화면
Claude Code 가이드 #11 — Skills 완벽 가이드 — 커스텀 Skill 파일 생성과 /review-pr 실행 흐름 (출처: 공식 문서 기반)

실전에서 바로 쓰는 Skill 예시 모음

실무에서 자주 쓰는 Skill 패턴들입니다. 그대로 복사하거나 변형해서 사용할 수 있습니다.

패턴 1: 포스팅 초안 생성 (콘텐츠 사이트용)

post.md — 포스팅 초안 생성 Skill
--- name: post description: 주제를 받아 포스팅 초안을 생성합니다 trigger: user-invoked args: - name: topic description: 포스팅 주제 required: true - name: id description: 포스트 ID (예: 3051) required: true --- # 포스팅 초안 생성 1. `data/posts.js` 의 기존 포스트 구조를 참고합니다 2. `CLAUDE.md` 의 포스트 구조 표준을 따릅니다 3. `posts/{{id}}.js` 파일을 생성합니다 4. `data/posts.js` 에 메타데이터를 추가합니다 주제: {{topic}} 포스트 ID: {{id}}

패턴 2: 사이트맵 갱신

update-sitemap.md — 사이트맵 자동 갱신 Skill
--- name: update-sitemap description: posts.js 기준으로 sitemap.xml을 재생성합니다 trigger: user-invoked --- # 사이트맵 갱신 다음 명령을 실행합니다: ```bash node scripts/generate-sitemap.js ``` 완료 후 `public/sitemap.xml` 파일이 갱신됐는지 확인하고, 최종 URL 수를 보고합니다.
⚠️ 막히는 케이스: Skill 파일에서 {{args}} 변수가 치환되지 않고 그대로 출력되는 경우 — frontmatter의 args 배열에 해당 변수가 정의돼 있는지 확인하세요. 변수명은 대소문자를 구별합니다. {{topic}}{{Topic}}은 다른 변수입니다.

Skills vs CLAUDE.md — 무엇을 어디에 쓸까?

Skills와 CLAUDE.md는 모두 Claude Code의 동작을 정의하는 파일이지만, 용도가 다릅니다.

항목SkillsCLAUDE.md
역할특정 작업을 슬래시 명령으로 캡슐화프로젝트 전반의 규칙·컨텍스트 제공
실행 방식사용자 호출 또는 자동 트리거세션 시작 시 자동 로드
반복 사용매번 명령어로 호출항상 활성 (상시 컨텍스트)
적합한 것커밋 생성, 리뷰, 특정 파일 생성코딩 스타일, 금지 패턴, 프로젝트 구조

실무 원칙: 반복 실행하는 동작은 Skills로, 항상 유지해야 할 규칙은 CLAUDE.md로 분리하세요.

Skills + Hooks 조합 — 더 강력한 자동화

Skills는 Hooks(가이드 #12)와 조합하면 더욱 강력해집니다. Skill이 특정 작업을 정의하고, Hook이 그 작업의 전/후 처리를 담당합니다.

예를 들어:

  • /commit Skill 실행 → PostToolUse Hook이 커밋 후 자동으로 node --check 검증 실행
  • /post Skill 실행 → PostToolUse Hook이 파일 생성 후 lint 자동 실행

Hooks와의 연동 방법은 가이드 #12 — Hooks로 워크플로우 자동화에서 자세히 다룹니다.

💡 팁: Skills 파일은 팀원들과 Git으로 공유할 수 있습니다. .claude/skills/ 폴더를 레포에 커밋하면, 팀 전체가 같은 슬래시 명령어를 사용할 수 있습니다. 팀 공통 작업(PR 리뷰, 릴리즈 노트 생성 등)은 이 방식으로 표준화하세요.
Skills와 Hooks 조합 — 자동화 워크플로우 다이어그램
Claude Code 가이드 #11 — Skills 완벽 가이드 — Skills + Hooks 조합으로 만드는 자동화 워크플로우 (출처: 공식 문서 기반)

Skills 트러블슈팅

Skills 사용 중 자주 발생하는 문제와 해결법입니다.

⚠️ 막히는 케이스: /help에서 내가 만든 Skill이 보이지 않는 경우 — Claude Code 세션을 재시작해야 합니다. Skill 파일은 세션 시작 시 로드됩니다. 현재 세션에서 생성한 Skill 파일은 다음 세션부터 인식됩니다. exit 후 다시 claude를 실행하세요.
⚠️ 막히는 케이스: required 인수를 넣지 않았는데 에러 없이 실행되는 경우 — required: true 로 설정했더라도 Claude Code가 인수 누락을 항상 차단하지는 않습니다. Skill 본문에서 {{#if argname}} 조건으로 직접 처리하거나, 본문 첫 줄에 "{{argname}}이 없으면 사용자에게 다시 입력을 요청하라" 고 명시하는 것이 더 안전합니다.

요약 및 관련 편

정리하면:

  • Skills는 .md 파일로 정의하는 사용자 정의 슬래시 명령어입니다
  • ~/.claude/skills/ (글로벌) 또는 .claude/skills/ (프로젝트)에 저장합니다
  • trigger: user-invoked는 수동 호출, trigger: auto는 조건부 자동 실행입니다
  • Skills 파일을 Git으로 공유하면 팀 전체가 같은 명령어를 사용할 수 있습니다
  • Hooks와 조합하면 더 강력한 자동화 워크플로우를 구성할 수 있습니다

관련 가이드:

참고: Skills 공식 문서 | Claude Code 개요 | Claude Code GitHub

claude-code클로드 코드skills슬래시명령어자동화워크플로우

관련 도구

관련 포스트

Claude Code 가이드 #12 — Hooks로 워크플로우 자동화2026-03-23Claude Code 가이드 #2 — CLAUDE.md 완벽 가이드2026-01-20Claude Code 가이드 #8 — 실전 바이브코딩 워크플로우2026-01-30Claude Code 가이드 #15 — Code Review 자동화2026-03-23