1.3 Skills 실전 예제
커밋 자동화, 보안 감사, PR 생성 등 바로 사용 가능한 Skills 예제 6가지를 플랫폼별 적용 방법과 함께 제공한다. 업데이트: 2026-03-08
핵심 요약
| 구분 | 내용 |
|---|---|
| 📖 정의 | SKILL.md 내용은 세 플랫폼에서 동일하게 사용 가능하며, 저장 위치와 호출 방법만 다르다 |
| 💡 핵심 | 반복 작업, 팀 표준 적용, 품질 점검, 파일 생성, 문서화 등 다양한 영역에 Skills를 활용할 수 있다 |
| 🎯 대상 | Skills를 실무에 즉시 적용하려는 개발자 |
| ⚠️ 주의 | 배포, 커밋 등 부작용이 있는 스킬은 disable-model-invocation: true를 반드시 설정한다 |
문서 탐색
목차
- 예제: 커밋 메시지 자동 작성기
- 예제: 코드 보안 감사기
- 예제: PR 설명 자동 생성기
- 예제: 컴포넌트 스캐폴딩 (React)
- 예제: 배포 전 최종 점검
- 예제: 팀 컨벤션 가이드 (배경 지식형)
- 예제: 실시간 PR 요약 (동적 컨텍스트 주입)
- 예제: 코드 리뷰 체크리스트
- 예제: GitHub 이슈 자동 수정
- 예제: 심층 코드 탐색 (fork 격리 실행)
- 예제: 프레임워크 마이그레이션 (다중 변수)
- 예제: 코드 설명 (비유 + 다이어그램)
- 고급 SKILL.md 기능
- 어떤 작업에 Skills를 활용하면 좋을까?
업데이트: 2026-03-12 — 예제 6개 추가 (7~12번), 고급 기능 섹션 신설
아래 예제의 SKILL.md 내용은 세 플랫폼 모두 동일하게 사용할 수 있다. 저장 위치와 호출 방법만 플랫폼별로 다르게 적용한다.
| 플랫폼 | 저장 경로 | 호출 방법 |
|---|---|---|
| Claude Code | .claude/skills/스킬명/ | /스킬명 |
| Gemini CLI | .gemini/skills/스킬명/ | 자동 호출 |
| OpenAI Codex | .codex/skills/스킬명/ | $스킬명 |
1. 예제: 커밋 메시지 자동 작성기
사용 시점: 매번 커밋 메시지 형식 맞추기 번거로울 때
.claude/skills/smart-commit/
└── SKILL.md
---
name: smart-commit
description: "변경된 파일을 분석해서 의미 있는 커밋 메시지를 생성하고 커밋한다"
disable-model-invocation: true
---
## 커밋 절차
1. `git diff --staged`로 스테이징된 변경사항 확인
2. 변경 내용을 분석해서 아래 형식으로 커밋 메시지 초안 작성:타입(범위): 제목 (50자 이내)
- 변경사항 1
- 변경사항 2
타입: feat / fix / refactor / docs / test / chore
3. 사용자에게 초안 보여주고 수정 여부 확인
4. 승인 시 커밋 실행
| 플랫폼 | 호출 | 비고 |
|---|---|---|
| Claude Code | /smart-commit | disable-model-invocation으로 자동 실행 방지 |
| Gemini CLI | 자동 ("커밋해줘" 발화 시) | disable-model-invocation 무시됨 — 주의 필요 |
| OpenAI Codex | $smart-commit | — |
2. 예제: 코드 보안 감사기
사용 시점: PR 올리기 전에 보안 취약점을 빠르게 점검하고 싶을 때
---
name: security-audit
description: "코드에서 보안 취약점을 스캔하고 PASS/WARN/FAIL로 결과를 보고한다"
disable-model-invocation: true
---
## 보안 점검 항목
다음 항목을 점검하고 각각 PASS / WARN / FAIL로 표시한다:
### 입력 검증
- [ ] SQL Injection 가능성
- [ ] XSS (Cross-Site Scripting) 취약점
- [ ] 명령어 인젝션 (Command Injection)
### 인증/인가
- [ ] 하드코딩된 비밀번호나 API 키
- [ ] 취약한 세션 관리
- [ ] 권한 검사 누락
### 데이터 처리
- [ ] 민감 정보가 로그에 출력되는지
- [ ] 암호화 없이 민감 데이터 저장
## 결과 형식
| 항목 | 결과 | 설명 |
|------|------|------|
| SQL Injection | PASS/WARN/FAIL | 이유 |
FAIL 항목은 구체적인 수정 방법을 함께 제시한다.사용법: /security-audit (Claude Code) · $security-audit (Codex) · 자동 호출 (Gemini CLI)
3. 예제: PR 설명 자동 생성기
사용 시점: PR 작성할 때 무엇을 써야 할지 막막할 때
---
name: generate-pr
description: "변경사항을 분석해서 GitHub PR 설명을 자동으로 작성한다"
disable-model-invocation: true
---
## PR 생성 절차
1. `git log main..HEAD --oneline`으로 커밋 목록 확인
2. `git diff main...HEAD`로 전체 변경사항 분석
3. 아래 템플릿으로 PR 설명 작성:
## 변경 사항 요약
[한두 줄로 이 PR이 무엇을 하는지]
## 변경 이유
[왜 이 변경이 필요한지]
## 주요 변경 내용
-
## 테스트 방법
1.
## 체크리스트
- [ ] 테스트 작성/업데이트
- [ ] 문서 업데이트
- [ ] 브레이킹 체인지 없음
4. 사용자에게 보여주고 수정 요청 받기사용법: /generate-pr (Claude Code) · $generate-pr (Codex)
4. 예제: 컴포넌트 스캐폴딩 (React)
사용 시점: 새 React 컴포넌트 만들 때 파일 구조 잡기 번거로울 때
.claude/skills/new-component/
├── SKILL.md
└── templates/
├── component.tsx.template
├── component.test.tsx.template
└── component.css.template
---
name: new-component
description: "React 컴포넌트 이름을 받아서 컴포넌트, 테스트, 스타일 파일을 생성한다"
---
## 컴포넌트 생성 절차
1. 사용자에게 컴포넌트 이름을 물어본다 (예: UserCard)
2. 다음 파일들을 생성한다:
- `src/components/컴포넌트명/index.tsx`
- `src/components/컴포넌트명/컴포넌트명.test.tsx`
- `src/components/컴포넌트명/컴포넌트명.module.css`
3. `templates/` 안의 템플릿 파일을 참고해서 내용 채우기
4. 컴포넌트에 props 타입 정의 포함 (TypeScript)
5. 생성된 파일 경로 목록 출력사용법: /new-component (Claude Code) · $new-component (Codex) · 자동 (Gemini CLI)
5. 예제: 배포 전 최종 점검
사용 시점: 프로덕션 배포 전에 빠짐없이 체크하고 싶을 때
---
name: pre-deploy-check
description: "배포 전 필수 항목을 점검하고 통과 여부를 보고한다"
disable-model-invocation: true
---
## 배포 전 점검 체크리스트
### 코드 품질
- [ ] `npm run test` 실행 → 모든 테스트 통과 확인
- [ ] `npm run lint` 실행 → 오류 없음 확인
- [ ] `npm run build` 실행 → 빌드 성공 확인
### 환경 설정
- [ ] `.env.production`에 필요한 환경변수 모두 있는지 확인
- [ ] 하드코딩된 localhost URL 없는지 확인
### 의존성
- [ ] `package.json` 버전 업데이트 여부 확인
- [ ] `npm audit` 실행 → 보안 취약점 없음 확인
## 결과 보고
각 항목 완료 후 요약 표 출력:
| 항목 | 상태 | 비고 |
|------|------|------|
하나라도 실패하면 배포를 중단하고 사용자에게 보고한다.사용법: /pre-deploy-check (Claude Code) · $pre-deploy-check (Codex)
6. 예제: 팀 컨벤션 가이드 (배경 지식형)
사용 시점: AI가 코드 작성할 때 항상 팀 규칙을 따라야 할 때
---
name: team-conventions
description: "이 프로젝트의 코딩 컨벤션, 네이밍 규칙, 아키텍처 패턴"
user-invocable: false
---
## 코딩 컨벤션
### 파일 네이밍
- 컴포넌트: PascalCase (예: UserProfile.tsx)
- 훅: camelCase, use 접두어 (예: useUserData.ts)
- 상수: UPPER_SNAKE_CASE
### 함수 작성 규칙
- 한 함수는 하나의 역할만
- 라인 수 50줄 이하 권장
### 금지 사항
- any 타입 사용 금지
- console.log를 프로덕션 코드에 남기기 금지📌
user-invocable: false는 Claude Code 전용 옵션이다. Gemini CLI·Codex에서는 description에 “배경 지식으로만 참고”라고 명시하는 방식으로 유사하게 구현 가능하다.
사용법: 직접 호출 없음. AI가 코드 작성 시 자동 참조.
7. 예제: 실시간 PR 요약 (동적 컨텍스트 주입)
사용 시점: PR 리뷰 전에 변경 내용을 빠르게 파악하고 싶을 때
핵심 패턴:
!`명령어`문법으로 스킬 실행 시 shell 명령 결과를 실시간 주입
---
name: pr-summary
description: "Summarize changes in a pull request using live GitHub data. Use when reviewing a PR, asked to summarize changes, or before a code review."
context: fork
agent: Explore
allowed-tools: Bash(gh *)
---
## Pull request context
- PR diff: !`gh pr diff`
- PR comments: !`gh pr view --comments`
- Changed files: !`gh pr diff --name-only`
- PR description: !`gh pr view`
## Task
위 실시간 데이터를 바탕으로 아래 항목을 요약한다:
1. **무엇을 해결하는가?** — 이 PR의 목적과 배경
2. **어떤 접근 방식을 택했는가?** — 구현 방법 요약
3. **주요 리뷰 포인트** — 집중해서 봐야 할 코드 영역
4. **테스트·문서 누락 여부** — 빠진 것이 있으면 명시| 플랫폼 | 호출 | 비고 |
|---|---|---|
| Claude Code | /pr-summary | context: fork으로 격리 실행 |
| Gemini CLI | 자동 (PR 관련 발화 시) | — |
| OpenAI Codex | $pr-summary | — |
8. 예제: 코드 리뷰 체크리스트
사용 시점: PR 올리기 전 또는 동료 코드를 검토할 때 구조화된 보고서가 필요할 때
---
name: code-review
description: "Perform thorough code review with structured report. Use when reviewing code changes, pull requests, or when asked for a code review."
---
## 코드 리뷰 체크리스트
### 정확성
- 엣지 케이스 처리 여부
- 에러 경로 처리 여부
### 보안
- 사용자 입력 검증/살균 여부
- SQL Injection, XSS, CSRF 위험 없음
- 하드코딩된 시크릿 없음
### 성능
- 불필요한 DB 쿼리 없음
- O(n²) 이상 루프 없음
### 유지보수성
- 명확한 네이밍
- DRY 원칙 준수
### 테스트
- 신규 코드에 테스트 있음
- 엣지 케이스 커버
## 출력 형식
- **Summary**: 전체 평가 한 줄
- **Critical Issues**: 머지 전 필수 수정 항목
- **Warnings**: 권고 수정 항목
- **Suggestions**: 개선 제안
- **승인 여부**: ✅ APPROVED / ❌ CHANGES REQUIRED / ⚠️ APPROVED WITH CONDITIONS사용법: /code-review (Claude Code) · $code-review (Codex)
9. 예제: GitHub 이슈 자동 수정
사용 시점: 이슈 번호 하나로 분석 → 구현 → 커밋까지 한 번에 처리하고 싶을 때
핵심 패턴:
$ARGUMENTS로 사용자 입력값을 스킬 본문에 전달
---
name: fix-issue
description: "Fix a GitHub issue end-to-end. Use when assigned an issue, asked to resolve a bug report, or given an issue number to fix."
disable-model-invocation: true
---
GitHub 이슈 **#$ARGUMENTS** 를 아래 순서로 처리한다.
1. `gh issue view $ARGUMENTS` 로 이슈 내용 확인
2. 요구사항과 재현 조건 파악
3. 관련 코드 탐색 (Glob, Grep 활용)
4. 수정 구현 (기존 코드 스타일 유지)
5. 테스트 작성 또는 업데이트
6. 커밋 메시지에 `Closes #$ARGUMENTS` 포함사용법: /fix-issue 42 (Claude Code) — 42번 이슈를 자동 처리
10. 예제: 심층 코드 탐색 (fork 격리 실행)
사용 시점: 대형 코드베이스에서 특정 주제를 깊게 조사해야 할 때
핵심 패턴:
context: fork+agent: Explore로 별도 subagent 격리 실행 메인 컨텍스트를 오염시키지 않고 대규모 탐색 수행 가능
---
name: deep-research
description: "Deeply research a topic within the codebase. Use when exploring how a feature works, investigating a bug, or mapping out module dependencies."
context: fork
agent: Explore
allowed-tools: Read, Grep, Glob
---
**조사 주제**: $ARGUMENTS
다음 순서로 철저히 조사한다:
1. Glob으로 관련 파일 목록 수집
2. Grep으로 핵심 함수·클래스·변수 검색
3. Read로 주요 파일 내용 분석
4. 의존성 흐름과 호출 관계 정리
5. 조사 결과를 아래 형식으로 요약:
- 관련 파일 목록 (경로 포함)
- 핵심 함수/클래스 목록
- 동작 방식 설명
- 주의해야 할 부분사용법: /deep-research 인증 흐름 (Claude Code)
11. 예제: 프레임워크 마이그레이션 (다중 변수)
사용 시점: 컴포넌트를 다른 프레임워크로 이전할 때
핵심 패턴:
$0,$1,$2로 위치 기반 다중 인수 처리
---
name: migrate-component
description: "Migrate a UI component from one framework to another while preserving all behavior. Use when converting components between React/Vue/Svelte/Angular."
---
**대상 컴포넌트**: $0
**원본 프레임워크**: $1
**대상 프레임워크**: $2
마이그레이션 절차:
1. `$0` 컴포넌트의 현재 구현 분석
2. Props, State, 이벤트 핸들러, 생명주기 메서드 파악
3. `$2` 문법으로 동일 동작 구현
4. 기존 테스트 모두 통과하는지 확인
5. 마이그레이션 전후 동작 차이 보고사용법: /migrate-component SearchBar React Vue (Claude Code)
→ $0=SearchBar, $1=React, $2=Vue 로 치환
12. 예제: 코드 설명 (비유 + 다이어그램)
사용 시점: 복잡한 코드를 팀원이나 주니어에게 설명해야 할 때
---
name: explain-code
description: "Explain code with analogies, ASCII diagrams and step-by-step walkthrough. Use when explaining how code works, onboarding team members, or when asked 'how does this work?'"
---
코드를 설명할 때 반드시 아래 4가지를 포함한다:
1. **비유로 시작**: 일상 생활 속 사물/상황에 빗대어 설명
2. **다이어그램 그리기**: ASCII art로 흐름·구조·관계 시각화[입력] → [처리A] → [처리B] → [출력] ↓ [사이드이펙트]
3. **코드 단계별 설명**: 줄 단위 또는 블록 단위로 순서대로 설명
4. **함정 포인트**: 흔히 오해하거나 실수하는 부분 명시
설명은 대화체로 작성하고, 복잡한 개념일수록 비유를 여러 개 사용한다.
사용법: 선택한 코드 블록 하이라이트 후 /explain-code (Claude Code)
13. 고급 SKILL.md 기능
실전에서 유용한 고급 frontmatter 옵션과 패턴 모음.
변수 치환
| 변수 | 설명 | 예시 |
|---|---|---|
$ARGUMENTS | 사용자가 입력한 전체 인수 문자열 | /fix-issue 42 → "42" |
$0, $1, $2 | 공백 구분 위치 인수 | /migrate SearchBar React Vue |
${CLAUDE_SESSION_ID} | 현재 세션 고유 ID | 로그 파일명에 활용 |
${CLAUDE_SKILL_DIR} | 현재 스킬 디렉토리 절대 경로 | 템플릿 파일 참조 시 |
동적 컨텍스트 주입
스킬 본문 안에서 !`shell 명령어` 문법을 사용하면 스킬 실행 시점에 명령 결과가 주입된다.
## 현재 상태
- git 상태: !`git status --short`
- 최근 커밋: !`git log --oneline -5`
- PR diff: !`gh pr diff`격리 실행 (fork)
context: fork # 별도 subagent에서 실행 (메인 컨텍스트 보호)
agent: Explore # 사용할 subagent 유형대규모 탐색 작업, 무거운 분석 등 메인 컨텍스트를 오염시키고 싶지 않을 때 사용.
핵심 판단 기준
| 상황 | 설정 |
|---|---|
| 커밋·배포 등 side effect 있는 스킬 | disable-model-invocation: true |
| 팀 컨벤션 등 배경 지식만 제공 | user-invocable: false |
| 대규모 코드 탐색·분석 | context: fork + agent: Explore |
| 실시간 외부 데이터 필요 | !`gh pr diff` 동적 주입 |
| 도구 접근 제한 필요 | allowed-tools: Read, Grep, Glob |
14. 어떤 작업에 Skills를 활용하면 좋을까?
| 작업 유형 | Skills 효과 | 예시 |
|---|---|---|
| 반복 워크플로 | 매번 설명 없이 사용 가능 | 커밋, 배포, PR |
| 팀 표준 적용 | 모두가 같은 방식으로 | 컨벤션, 코드 스타일 |
| 품질 점검 | 빠짐없이 체크 | 보안 감사, 배포 전 점검 |
| 파일 생성 | 일관된 보일러플레이트 | 컴포넌트, API, 테스트 |
| 문서화 | 자동 생성 | PR 설명, 변경 이력 |
문서 탐색
참고 자료
- Extend Claude with skills - Claude Code Docs (공식)
- GitHub - anthropics/skills (Anthropic 공식)
- GitHub - openai/skills (OpenAI 공식)
- 37 Claude Skills Examples to Transform How You Work
- A Deep Dive into Agent Skills in Gemini CLI
- Top 8 Claude Skills for Developers - Snyk
- GitHub - hesreallyhim/awesome-claude-code
- GitHub - wshobson/commands
- GitHub - agamm/claude-code-owasp
- GitHub - angakh/claude-skills-starter