CLAUDE.md가 "프로젝트 전체에 적용되는 규칙"이라면, 스킬은 "특정 작업을 위한 실행 규칙"입니다.
특정 작업이 필요한 시점에만 불러와 쓸 수 있습니다 (게임으로 치면 액티브 스킬 느낌).
| CLAUDE.md | Skill | |
|---|---|---|
| 적용 범위 | 항상 전체 컨텍스트에 로드 | 필요할 때만 호출/자동 트리거 |
| 용도 | 프로젝트 전반 컨벤션, 항상 알아야 할 것 | 특정 반복 작업의 절차/체크리스트 |
| 토큰 비용 | 매 대화마다 부담 | 안 쓰면 0 |
~/.claude/skills/<skill-name>/SKILL.md — 모든 프로젝트에서 사용.claude/skills/<skill-name>/SKILL.md — 해당 repo에서만 사용, git으로 팀과 공유 가능같은 작업 반복이 팀 전체의 컨벤션이면 프로젝트 스킬로 만들어서 커밋하는 게 좋습니다.
---
name: explain-code
description: 코드를 시각적 다이어그램과 비유로 설명합니다. "어떻게 동작해?"라고 물을 때 사용합니다.
---
코드를 설명할 때 항상 다음을 포함하세요:
1. **비유로 시작**: 코드를 일상생활의 무언가와 비교
2. **다이어그램 그리기**: ASCII 아트로 흐름, 구조, 관계 표시
3. **코드 워크스루**: 단계별로 무슨 일이 일어나는지 설명
4. **주의사항**: 흔한 실수나 오해 강조
name: 스킬 리스팅에 표시되는 표시 이름. 슬래시 명령어 이름은 name이 아니라 디렉토리명에서 자동 결정됨description: 스킬의 용도와 사용 시점을 설명. Claude가 이 설명만 보고 자동 로드 여부를 판단하므로 가장 중요한 필드allowed-tools: 이 스킬 실행 중 사용 가능한 도구를 제한 (예: 읽기만 허용하고 싶으면 쓰기/실행 도구 제외). 비워두면 제한 없음references/ 서브디렉토리에 별도 파일로 두고 필요할 때만 Claude가 읽게 함scripts/ 서브디렉토리에 두고 스킬 본문에서는 호출만 안내/스킬명 으로 직접 호출특정 작업이 반복적으로 일어나지만, 매번 전체 프로젝트 컨텍스트(CLAUDE.md)에 넣어둘 필요는 없을 때 적합합니다.
예시: 프로젝트에서 API를 추가할 때의 플로우
이 작업은 순서가 고정되어 있고 반복적으로 발생하기 때문에 스킬로 만들기 좋은 케이스입니다.
"백엔드에 추가된 API 연결해줘" 같은 요청을 예로 들면:
스킬 없이
스킬 있을 때
→ "탐색에 드는 가변 비용"(보통 더 크고 예측 불가능) vs "스킬 로드의 고정 비용"(예측 가능, 보통 더 작음)의 트레이드오프인데, 대체로 스킬 쪽이 순절감입니다. 거기에 더해 컨벤션 일관성 보장(잘못된 토스트 함수, 빠뜨린 invalidate 같은 실수 방지)이라는 부수 효과가 토큰 절감보다 더 큰 이득인 경우가 많습니다.
이름: frontend-api-query-hook
트리거: "OOO API 추가해줘", "쿼리훅 만들어줘" 같은 요청
역할: API 하나 추가할 때 아래 4곳을 한 번에 같이 생성/수정 — 하나라도 빠지면 캐시 무효화가 깨지거나 타입이 어긋나서, 그 순서와 규칙을 스킬에 박아둠.
_lib/apis/<domain>.ts) — 동사는 get/insert/update/delete만, async/await 전용, 항상 res.data만 반환, 타입은 공통 패키지의 XxxAPIInput/XxxAPIResult에서 가져옴_lib/constants/queryKeys.ts) — 도메인별 계층 구조로 상위 키를 펼쳐서 확장, 끝에 항상 as const, 무효화 레벨을 미리 결정_lib/hooks/react-query/use<Domain>.ts) — query/mutation 패턴 고정(파라미터는 { params }로 래핑, onSuccess에 관련 키 모두 invalidate, onError는 console.error 패턴)→ 반복되는 4단계 작업 순서와 각 단계의 세부 컨벤션을 매번 설명하지 않아도 되는 게 핵심 효용.
context-feedback스킬이 꼭 "코드/파일을 만드는" 용도일 필요는 없습니다. 현재 대화를 분석해서 사용자 본인의 대화 태도·질문 방식·문제 정의 능력을 피드백 받는 용도로도 쓸 수 있습니다.
allowed-tools: [] — 도구를 전혀 안 쓰고 컨텍스트에 남아있는 대화 내용만으로 분석. 화면에 출력만 하고 파일/메모리에 저장하지 않음→ 반복 작업 자동화뿐 아니라, "매번 같은 기준으로 같은 형식의 회고를 받고 싶을 때"도 스킬이 적합한 케이스라는 걸 보여주는 예시.
.claude/skills/에 두고 git에 커밋하면 팀원 모두가 같은 스킬을 공유하게 됨 — 온보딩 문서 대신으로도 활용 가능