- Claude Code์ ๊ธฐ๋ฅ์ ํ์ฅํ๋ ์ปค์คํ ๋ช ๋ น์ด ์์คํ
SKILL.mdํ์ผ์ ์ง์์ฌํญ์ ์์ฑํ๋ฉด, Claude๊ฐ ์๋์ผ๋ก ๋๊ตฌ๋ก ์ธ์- ์ํฉ์ ๋ง๊ฒ Claude๊ฐ ์๋ ํธ์ถํ๊ฑฐ๋, ์ฌ์ฉ์๊ฐ
/skill-name์ผ๋ก ์ง์ ํธ์ถ - Agent Skills ์คํ ์คํ ๋ค๋๋ฅผ ๋ฐ๋ฅด๋ฉฐ, ์ฌ๋ฌ AI ๋๊ตฌ์์ ํธํ
ํด๋น ๊ฐ๋ ์ด ํ์ํ ์ด์
- ๋ฐ๋ณต ์์ ์๋ํ: ์ปค๋ฐ, ๋ฐฐํฌ, PR ์์ฑ ๋ฑ ๋ฐ๋ณต์ ์ธ ์ํฌํ๋ก์ฐ๋ฅผ ํ ๋ฒ ์ ์ํ๊ณ ์ฌ์ฌ์ฉ
- ํ ์ปจ๋ฒค์ ๊ณต์ : ํ๋ก์ ํธ ์คํฌ์ Git์ ์ปค๋ฐํ๋ฉด ํ ์ ์ฒด๊ฐ ๋์ผํ ์ํฌํ๋ก์ฐ ์ฌ์ฉ
- Claude์ ๋งฅ๋ฝ ํ์ฅ: ๋๋ฉ์ธ ์ง์, API ํจํด, ์ฝ๋ฉ ๊ท์น ๋ฑ์ ์คํฌ๋ก ์ ์ํ์ฌ Claude๊ฐ ์๋์ผ๋ก ์ฐธ์กฐ
- ์์ ํ ์คํ ์ ์ด: ๋๊ฐ ์ธ์ ์คํฌ์ ํธ์ถํ ์ ์๋์ง ์ธ๋ฐํ๊ฒ ์ ์ด ๊ฐ๋ฅ
AS-IS
# ๋งค๋ฒ ์๋์ผ๋ก ๋์ผํ ์ง์๋ฅผ ๋ฐ๋ณต ์
๋ ฅ
User: "์ด PR ๋ฆฌ๋ทฐํด์ค. ์ฝ๋ ์คํ์ผ ํ์ธํ๊ณ ,
๋ณด์ ์ทจ์ฝ์ ์ฒดํฌํ๊ณ , ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ ๋ด์ค.
๊ฒฐ๊ณผ๋ ์ฒดํฌ๋ฆฌ์คํธ ํํ๋ก..."
# ๋ค์ ๋ฒ์๋ ๋์ผํ ๋ด์ฉ์ ๋ ์
๋ ฅ
User: "์ด PR ๋ฆฌ๋ทฐํด์ค. ์ฝ๋ ์คํ์ผ ํ์ธํ๊ณ ..."
TO-BE
# .claude/skills/review-pr/SKILL.md (ํ ๋ฒ๋ง ์ ์)
---
name: review-pr
description: PR์ ์ฝ๋ ์คํ์ผ, ๋ณด์, ํ
์คํธ ๊ด์ ์์ ๋ฆฌ๋ทฐ
---
PR $ARGUMENTS๋ฅผ ๋ค์ ๊ด์ ์์ ๋ฆฌ๋ทฐํ๋ผ:
1. ์ฝ๋ ์คํ์ผ ๋ฐ ์ปจ๋ฒค์
2. ๋ณด์ ์ทจ์ฝ์
3. ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง
๊ฒฐ๊ณผ๋ ์ฒดํฌ๋ฆฌ์คํธ ํํ๋ก ์ถ๋ ฅ.# ์ดํ์๋ ํ ์ค์ด๋ฉด ๋
/review-pr 123์คํฌ ํ์ผ ๊ตฌ์กฐ
๋ชจ๋ ์คํฌ์ ๋๋ ํ ๋ฆฌ ๋จ์๋ก ๊ตฌ์ฑ๋๋ฉฐ, SKILL.md๊ฐ ์ง์
์ (entrypoint)์ด๋ค:
my-skill/
โโโ SKILL.md # ๋ฉ์ธ ์ง์์ฌํญ (ํ์)
โโโ template.md # Claude๊ฐ ์ฑ์ธ ํ
ํ๋ฆฟ
โโโ examples/
โ โโโ sample.md # ๊ธฐ๋ ์ถ๋ ฅ ์์
โโโ references/
โ โโโ api-docs.md # ์์ธ ์ฐธ์กฐ ๋ฌธ์
โโโ scripts/
โโโ helper.py # Claude๊ฐ ์คํํ ์คํฌ๋ฆฝํธ
SKILL.md๋ 500์ค ์ดํ๋ฅผ ๊ถ์ฅํ๋ฉฐ, ์์ธ ๋ด์ฉ์ ๋ณ๋ ํ์ผ๋ก ๋ถ๋ฆฌํ๋ค.
SKILL.md ์์ฑ๋ฒ
SKILL.md๋ ๋ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค:
- YAML Frontmatter (
---์ฌ์ด): ์คํฌ์ ๋ฉํ๋ฐ์ดํฐ์ ๋์ ์ค์ - Markdown Content: Claude๊ฐ ๋ฐ๋ฅผ ์ง์์ฌํญ
---
name: fix-issue
description: GitHub ์ด์๋ฅผ ์์ ํ๋ค
disable-model-invocation: true
allowed-tools: Read, Grep, Bash
---
GitHub ์ด์ $ARGUMENTS๋ฅผ ์์ ํ๋ผ:
1. ์ด์ ์ค๋ช
์ฝ๊ธฐ
2. ์๊ตฌ์ฌํญ ํ์
3. ์์ ๊ตฌํ
4. ํ
์คํธ ์์ฑ
5. ์ปค๋ฐ ์์ฑFrontmatter ํ๋ ๋ ํผ๋ฐ์ค
| ํ๋ | ํ์ | ์ค๋ช | |
|---|---|---|---|
name | No | ์คํฌ ์ด๋ฆ (= slash command๋ช ). ์๋ต ์ ๋๋ ํ ๋ฆฌ๋ช ์ฌ์ฉ | |
description | ๊ถ์ฅ | ์คํฌ ์ฉ๋. Claude๊ฐ ์๋ ํธ์ถ ํ๋จ์ ์ฌ์ฉ | |
argument-hint | No | ์๋์์ฑ ์ ํ์ํ ์ธ์ ํํธ (์: [issue-number]) | |
disable-model-invocation | No | true: Claude ์๋ ํธ์ถ ์ฐจ๋จ, ์ฌ์ฉ์๋ง /name์ผ๋ก ํธ์ถ | |
user-invocable | No | false: / ๋ฉ๋ด์์ ์จ๊น. Claude๋ง ์๋ ํธ์ถ ๊ฐ๋ฅ | |
allowed-tools | No | ์คํฌ ํ์ฑ ์ ์น์ธ ์์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ ๋ชฉ๋ก | |
model | No | ์คํฌ ์คํ ์ ์ฌ์ฉํ ๋ชจ๋ธ | |
context | No | fork: ๊ฒฉ๋ฆฌ๋ subagent ์ปจํ
์คํธ์์ ์คํ | |
agent | No | context: fork ์ ์ฌ์ฉํ subagent ์ ํ | |
| Hooks | No | ์คํฌ ๋ผ์ดํ์ฌ์ดํด์ ์ค์ฝํ๋ ํ |
์คํฌ ์ ์ฅ ์์น์ ์ ์ฉ ๋ฒ์
| ์์น | ๊ฒฝ๋ก | ์ ์ฉ ๋ฒ์ |
|---|---|---|
| Enterprise | Managed settings | ์กฐ์ง ์ ์ฒด |
| Personal | ~/.claude/skills/<name>/SKILL.md | ๋ด ๋ชจ๋ ํ๋ก์ ํธ |
| Project | .claude/skills/<name>/SKILL.md | ํด๋น ํ๋ก์ ํธ๋ง |
| Plugins | <plugin>/skills/<name>/SKILL.md | ํ๋ฌ๊ทธ์ธ ํ์ฑํ๋ ๊ณณ |
์ฐ์ ์์: Enterprise > Personal > Project. ๋๋ช ์คํฌ์ ์์๊ฐ ์ฐ์ .
๋ชจ๋
ธ๋ ํฌ์์๋ ํ์ ๋๋ ํ ๋ฆฌ์ .claude/skills/๋ ์๋ ํ์๋๋ค.
ํธ์ถ ์ ์ด ๋งคํธ๋ฆญ์ค
| Frontmatter ์ค์ | ์ฌ์ฉ์ ํธ์ถ | Claude ์๋ ํธ์ถ | ์ปจํ ์คํธ ๋ก๋ฉ |
|---|---|---|---|
| (๊ธฐ๋ณธ๊ฐ) | O | O | description ํญ์ ๋ก๋, ํธ์ถ ์ ์ ์ฒด ๋ก๋ |
disable-model-invocation: true | O | X | ์ปจํ ์คํธ์ ๋ฏธํฌํจ |
user-invocable: false | X | O | description ํญ์ ๋ก๋, ํธ์ถ ์ ์ ์ฒด ๋ก๋ |
์คํฌ ์ฝํ ์ธ ์ ๋ ๊ฐ์ง ์ ํ
Reference ์คํฌ (์ง์ ์ฃผ์ ํ)
ํ์ฌ ์์ ์ ์ ์ฉํ ์ง์์ ์ ๊ณตํ๋ค. ์ปจ๋ฒค์ , ํจํด, ์คํ์ผ ๊ฐ์ด๋ ๋ฑ.
---
name: api-conventions
description: ์ด ์ฝ๋๋ฒ ์ด์ค์ API ์ค๊ณ ํจํด
---
API ์๋ํฌ์ธํธ ์์ฑ ์:
- RESTful ๋ค์ด๋ฐ ๊ท์น ์ฌ์ฉ
- ์ผ๊ด๋ ์๋ฌ ํ์ ๋ฐํ
- ์์ฒญ ์ ํจ์ฑ ๊ฒ์ฌ ํฌํจTask ์คํฌ (์์ ์คํํ)
ํน์ ์์ ์ ๋จ๊ณ๋ณ ์ง์์ฌํญ์ ์ ๊ณตํ๋ค. ๋ฐฐํฌ, ์ปค๋ฐ, ์ฝ๋ ์์ฑ ๋ฑ.
---
name: deploy
description: ํ๋ก๋์
๋ฐฐํฌ
disable-model-invocation: true
context: fork
---
๋ฐฐํฌ ์ํ:
1. ํ
์คํธ ์ค์ํธ ์คํ
2. ์ ํ๋ฆฌ์ผ์ด์
๋น๋
3. ๋ฐฐํฌ ํ๊ฒ์ ํธ์๋ฌธ์์ด ์นํ (String Substitution)
์คํฌ ๋ด์ฉ์์ ๋์ ๊ฐ์ ์ฌ์ฉํ ์ ์๋ค:
| ๋ณ์ | ์ค๋ช |
|---|---|
$ARGUMENTS | ํธ์ถ ์ ์ ๋ฌ๋ ๋ชจ๋ ์ธ์ |
$ARGUMENTS[N] | N๋ฒ์งธ ์ธ์ (0-based) |
$N | $ARGUMENTS[N]์ ์ถ์ฝํ |
${CLAUDE_SESSION_ID} | ํ์ฌ ์ธ์ ID |
---
name: migrate-component
description: ์ปดํฌ๋ํธ๋ฅผ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ก ๋ง์ด๊ทธ๋ ์ด์
---
$0 ์ปดํฌ๋ํธ๋ฅผ $1์์ $2๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ผ./migrate-component SearchBar React Vue
# โ "SearchBar ์ปดํฌ๋ํธ๋ฅผ React์์ Vue๋ก ๋ง์ด๊ทธ๋ ์ด์
ํ๋ผ."๋์ ์ปจํ
์คํธ ์ฃผ์
(!commandโ)
์ ธ ๋ช ๋ น์ ์ถ๋ ฅ์ ์คํฌ ์ฝํ ์ธ ์ ์ฝ์ ํ๋ ์ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ด๋ค. Claude๊ฐ ๋ณด๊ธฐ ์ ์ ๋ช ๋ น์ด ์คํ๋์ด ๊ฒฐ๊ณผ๋ก ๋์ฒด๋๋ค.
---
name: pr-summary
description: PR ๋ณ๊ฒฝ์ฌํญ ์์ฝ
context: fork
agent: Explore
---
## PR ์ปจํ
์คํธ
- PR diff: !`gh pr diff`
- PR ์ฝ๋ฉํธ: !`gh pr view --comments`
- ๋ณ๊ฒฝ ํ์ผ: !`gh pr diff --name-only`
## ์์
์ด PR์ ์์ฝํ๋ผ...์คํ ํ๋ฆ:
- ๊ฐ
!`command`๊ฐ ์ฆ์ ์คํ๋จ - ์ถ๋ ฅ์ด ์คํฌ ์ฝํ ์ธ ์ ํด๋น ์์น๋ฅผ ๋์ฒด
- Claude๋ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ฝ์ ๋ ์ต์ข ํ๋กฌํํธ๋ฅผ ์์
Subagent์์ ์คํ (context: fork)
context: fork๋ฅผ ์ค์ ํ๋ฉด ์คํฌ์ด **๊ฒฉ๋ฆฌ๋ subagent**์์ ์คํ๋๋ค. ๋ฉ์ธ ๋ํ ํ์คํ ๋ฆฌ์ ์ ๊ทผํ์ง ์์ผ๋ฉฐ, ์คํฌ ์ฝํ
์ธ ๊ฐ subagent์ ํ๋กฌํํธ๊ฐ ๋๋ค.
---
name: deep-research
description: ์ฃผ์ ๋ฅผ ๊น์ด ์กฐ์ฌ
context: fork
agent: Explore
---
$ARGUMENTS๋ฅผ ์ฒ ์ ํ ์กฐ์ฌํ๋ผ:
1. Glob๊ณผ Grep์ผ๋ก ๊ด๋ จ ํ์ผ ํ์
2. ์ฝ๋ ๋ถ์
3. ํ์ผ ์ฐธ์กฐ์ ํจ๊ป ์์ฝagent ํ๋์ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ: Explore, Plan, general-purpose, ๋๋ .claude/agents/์ ์ปค์คํ
์์ด์ ํธ.
๊ถํ ์ ์ด
์คํฌ์ ๋ํ ์ ๊ทผ์ 3๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ ์ดํ ์ ์๋ค:
# 1. ๋ชจ๋ ์คํฌ ๋นํ์ฑํ (/permissions์ deny rules)
Skill
# 2. ํน์ ์คํฌ๋ง ํ์ฉ/์ฐจ๋จ
Skill(commit) # ์ ํํ 'commit'๋ง ํ์ฉ
Skill(review-pr *) # 'review-pr'๋ก ์์ํ๋ ๊ฒ ํ์ฉ
Skill(deploy *) # 'deploy'๋ก ์์ํ๋ ๊ฒ ์ฐจ๋จ
# 3. ๊ฐ๋ณ ์คํฌ์ disable-model-invocation: true ์ค์ ํธ๋ฌ๋ธ์ํ
| ๋ฌธ์ | ํด๊ฒฐ ๋ฐฉ๋ฒ |
|---|---|
| ์คํฌ์ด ํธ๋ฆฌ๊ฑฐ๋์ง ์์ | description์ ์ฌ์ฉ์๊ฐ ์์ฐ์ค๋ฝ๊ฒ ๋งํ ํค์๋ ํฌํจ. /skill-name์ผ๋ก ์ง์ ํธ์ถ ์๋ |
| ์คํฌ์ด ๋๋ฌด ์์ฃผ ํธ๋ฆฌ๊ฑฐ๋จ | description์ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์์ . disable-model-invocation: true ์ค์ |
| Claude๊ฐ ๋ชจ๋ ์คํฌ์ ์ธ์ ๋ชปํจ | ์คํฌ์ด ๋ง์ผ๋ฉด character budget ์ด๊ณผ ๊ฐ๋ฅ. /context๋ก ํ์ธ. SLASH_COMMAND_TOOL_CHAR_BUDGET ํ๊ฒฝ๋ณ์๋ก ํ๋ ์กฐ์ |
์ฐธ๊ณ ๋ฌธ์
- Claude Code Skills ๊ณต์ ๋ฌธ์
- Subagents - ์์ ์ ์์ํ๋ ํ์ ์์ด์ ํธ
- Plugins - ์คํฌ/์์ด์ ํธ/ํ ์ ํจํค์งํ์ฌ ๋ฐฐํฌ
- Hooks - ๋๊ตฌ ์ด๋ฒคํธ์ ๋ฐ์ํ๋ ์๋ํ
- Memory (CLAUDE.md) - ์๊ตฌ ์ปจํ ์คํธ ๊ด๋ฆฌ
- Permissions - ๋๊ตฌ ๋ฐ ์คํฌ ์ ๊ทผ ์ ์ด