SpyBara
Go Premium

skills.md 2026-07-09 23:58 UTC to 2026-07-10 17:00 UTC

13 added, 5 removed.

2026
Tue 21 01:57 Mon 20 23:01 Sat 18 16:02 Fri 17 22:57 Thu 16 22:59 Wed 15 22:00 Tue 14 23:01 Mon 13 23:57 Sat 11 19:03 Fri 10 17:00 Thu 9 23:58 Wed 8 16:02 Tue 7 16:02 Mon 6 23:57 Sat 4 03:01 Fri 3 23:00 Thu 2 23:59 Wed 1 21:01

Claude๋ฅผ skills๋กœ ํ™•์žฅํ•˜๊ธฐ

Claude Code์—์„œ skills๋ฅผ ์ƒ์„ฑ, ๊ด€๋ฆฌ, ๊ณต์œ ํ•˜์—ฌ Claude์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜ ๋ช…๋ น์–ด์™€ ๋ฒˆ๋“ค skills๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

Skills๋Š” Claude๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. SKILL.md ํŒŒ์ผ์„ ์ง€์นจ๊ณผ ํ•จ๊ป˜ ์ƒ์„ฑํ•˜๋ฉด Claude๊ฐ€ ์ด๋ฅผ ์ž์‹ ์˜ ๋„๊ตฌ ๋ชจ์Œ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. Claude๋Š” ๊ด€๋ จ์ด ์žˆ์„ ๋•Œ skills๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ /skill-name์œผ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ™์€ ์ง€์นจ, ์ฒดํฌ๋ฆฌ์ŠคํŠธ ๋˜๋Š” ๋‹ค๋‹จ๊ณ„ ์ ˆ์ฐจ๋ฅผ ๊ณ„์† ์ฑ„ํŒ…์— ๋ถ™์—ฌ๋„ฃ๊ฑฐ๋‚˜, CLAUDE.md์˜ ์„น์…˜์ด ์‚ฌ์‹ค์ด ์•„๋‹Œ ์ ˆ์ฐจ๋กœ ์„ฑ์žฅํ–ˆ์„ ๋•Œ skill์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. CLAUDE.md ์ฝ˜ํ…์ธ ์™€ ๋‹ฌ๋ฆฌ, skill์˜ ๋ณธ๋ฌธ์€ ์‚ฌ์šฉํ•  ๋•Œ๋งŒ ๋กœ๋“œ๋˜๋ฏ€๋กœ ๊ธด ์ฐธ์กฐ ์ž๋ฃŒ๋Š” ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ๊ฑฐ์˜ ๋น„์šฉ์ด ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Claude Code skills๋Š” Agent Skills ๊ฐœ๋ฐฉํ˜• ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋ฉฐ, ์ด๋Š” ์—ฌ๋Ÿฌ AI ๋„๊ตฌ์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. Claude Code๋Š” ํ˜ธ์ถœ ์ œ์–ด, subagent ์‹คํ–‰, ๋™์  ์ปจํ…์ŠคํŠธ ์ฃผ์ž…๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์œผ๋กœ ํ‘œ์ค€์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ฒˆ๋“ค skills

Claude Code์—๋Š” ๋ชจ๋“  ์„ธ์…˜์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฒˆ๋“ค skills ์„ธํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ, disableBundledSkills ์„ค์ •์œผ๋กœ ๋น„ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š๋Š” ํ•œ /doctor, /code-review, /batch, /debug, /loop, /claude-api๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค. ๊ณ ์ • ๋กœ์ง์„ ์ง์ ‘ ์‹คํ–‰ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ ๊ธฐ๋ณธ ์ œ๊ณต ๋ช…๋ น์–ด์™€ ๋‹ฌ๋ฆฌ, ๋ฒˆ๋“ค skills๋Š” ํ”„๋กฌํ”„ํŠธ ๊ธฐ๋ฐ˜์ž…๋‹ˆ๋‹ค: Claude์— ์ƒ์„ธํ•œ ์ง€์‹œ์‚ฌํ•ญ์„ ์ œ๊ณตํ•˜๊ณ  ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์กฐ์œจํ•˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ skill๊ณผ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค: / ๋‹ค์Œ์— skill ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

/doctor ์„ค์ • ์ ๊ฒ€์€ Claude Code v2.1.205 ์ด์ƒ์—์„œ disableBundledSkills์˜ ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค: ์„ค์ •์ด ์ผœ์ ธ ์žˆ์„ ๋•Œ๋„ ์ž…๋ ฅ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆจ๊ธฐ๋ ค๋ฉด DISABLE_DOCTOR_COMMAND ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ skillOverrides ํ•ญ๋ชฉ์—์„œ "doctor": "off"๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. v2.1.205 ์ด์ „์—๋Š” /doctor๊ฐ€ ๋ฒˆ๋“ค skill์ด ์•„๋‹Œ ๊ธฐ๋ณธ ์ œ๊ณต ๋ช…๋ น์–ด์˜€์Šต๋‹ˆ๋‹ค.

๋ฒˆ๋“ค skills๋Š” ๋ช…๋ น์–ด ์ฐธ์กฐ์— ๋‚˜์—ด๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ชฉ์  ์—ด์— Skill๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์•ฑ ์‹คํ–‰ ๋ฐ ํ™•์ธ

์„ธ ๊ฐ€์ง€ ๋ฒˆ๋“ค skills๋Š” ํ•จ๊ป˜ ์ž‘๋™ํ•˜์—ฌ ์•ฑ์„ ์‹œ์ž‘ํ•˜๊ณ  ํ…Œ์ŠคํŠธ๋งŒ์ด ์•„๋‹Œ ์‹คํ–‰ ์ค‘์ธ ์•ฑ์— ๋Œ€ํ•ด ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค:

Skill ๋ชฉ์ 
/run ์•ฑ์„ ์‹œ์ž‘ํ•˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์•ฑ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค
/verify ์•ฑ์„ ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ํ•˜์—ฌ ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ฉฐ, ํ…Œ์ŠคํŠธ๋‚˜ ํƒ€์ž… ์ฒดํฌ๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š์Šต๋‹ˆ๋‹ค
/run-skill-generator /run๊ณผ /verify์— ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฐ€๋ฅด์นฉ๋‹ˆ๋‹ค

{/* min-version: 2.1.145 */}์„ธ ๊ฐ€์ง€ skills ๋ชจ๋‘ Claude Code v2.1.145 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

/run๊ณผ /verify๋Š” ์„ค์ • ์—†์ด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์œ ํ˜•(CLI, ์„œ๋ฒ„, TUI, ๋ธŒ๋ผ์šฐ์ € ๊ธฐ๋ฐ˜)๊ณผ README, package.json ๋˜๋Š” Makefile์˜ ๋‚ด์šฉ์œผ๋กœ๋ถ€ํ„ฐ ์‹œ์ž‘์„ ์ถ”๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ถ”๋ก ์€ ํ‘œ์ค€ ์‹œ์ž‘ ์ด์ƒ์˜ ๊ฒƒ์ด ํ•„์š”ํ•œ ํ”„๋กœ์ ํŠธ(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, env ํŒŒ์ผ, ๊ทธ๋ž˜ํ”ฝ ์„ธ์…˜, ๋‹ค๋‹จ๊ณ„ ๋นŒ๋“œ)์— ๋Œ€ํ•ด์„œ๋Š” ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

/run-skill-generator๋Š” ๋Œ€์‹  ๋ ˆ์‹œํ”ผ๋ฅผ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๊นจ๋—ํ•œ ํ™˜๊ฒฝ์—์„œ ์•ฑ์„ ์‹คํ–‰ํ•˜๊ณ , ์ž‘๋™ํ•œ ๊ฒƒ(์„ค์น˜ ๋ช…๋ น์–ด, env ๋ณ€์ˆ˜, ์‹œ์ž‘ ์Šคํฌ๋ฆฝํŠธ)์„ ์บก์ฒ˜ํ•˜๊ณ , ํ”„๋กœ์ ํŠธ๋ณ„ skill๋กœ .claude/skills/run-<name>/์— ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ํ›„ /run, /verify ๋ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์˜ ๋‹ค๋ฅธ ๋ชจ๋“  ์—์ด์ „ํŠธ๋Š” ๋ ˆ์‹œํ”ผ๋ฅผ ๋‹ค์‹œ ๋ฐœ๊ฒฌํ•˜๋Š” ๋Œ€์‹  ๊ธฐ๋ก๋œ ๋ ˆ์‹œํ”ผ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋‹น ํ•œ ๋ฒˆ /run-skill-generator๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ๋นŒ๋“œ ๋˜๋Š” ์‹œ์ž‘ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋‹ค์‹œ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์‹œ์ž‘ํ•˜๊ธฐ

์ฒซ ๋ฒˆ์งธ skill ์ƒ์„ฑ

์ด ์˜ˆ์ œ๋Š” git ์ €์žฅ์†Œ์˜ ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์š”์•ฝํ•˜๊ณ  ์œ„ํ—˜ํ•œ ํ•ญ๋ชฉ์„ ํ‘œ์‹œํ•˜๋Š” skill์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ diff๋ฅผ Claude๊ฐ€ ์ฝ๊ธฐ ์ „์— ํ”„๋กฌํ”„ํŠธ๋กœ ๊ฐ€์ ธ์˜ค๋ฏ€๋กœ, ์‘๋‹ต์€ Claude๊ฐ€ ์—ด๋ฆฐ ํŒŒ์ผ์—์„œ ์ถ”์ธกํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์‹ค์ œ ์ž‘์—… ํŠธ๋ฆฌ์— ๊ธฐ๋ฐ˜ํ•ฉ๋‹ˆ๋‹ค. Claude๋Š” ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ๋ฌผ์–ด๋ณผ ๋•Œ ์ž๋™์œผ๋กœ skill์„ ๋กœ๋“œํ•˜๊ฑฐ๋‚˜ /summarize-changes๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1

skill ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ

๊ฐœ์ธ skills ํด๋”์— skill์„ ์œ„ํ•œ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ skills๋Š” ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

mkdir -p ~/.claude/skills/summarize-changes
2

SKILL.md ์ž‘์„ฑ

๋ชจ๋“  skill์—๋Š” ๋‘ ๋ถ€๋ถ„์ด ์žˆ๋Š” SKILL.md ํŒŒ์ผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค: Claude์—๊ฒŒ skill์„ ์–ธ์ œ ์‚ฌ์šฉํ• ์ง€ ์•Œ๋ ค์ฃผ๋Š” YAML frontmatter (--- ๋งˆ์ปค ์‚ฌ์ด)์™€ skill์ด ์‹คํ–‰๋  ๋•Œ Claude๊ฐ€ ๋”ฐ๋ฅด๋Š” ์ง€์นจ์ด ์žˆ๋Š” markdown ์ฝ˜ํ…์ธ ์ž…๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์ด ์ž…๋ ฅํ•˜๋Š” ๋ช…๋ น์–ด๊ฐ€ ๋˜๊ณ , description์€ Claude๊ฐ€ ์ž๋™์œผ๋กœ skill์„ ๋กœ๋“œํ•  ์‹œ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ~/.claude/skills/summarize-changes/SKILL.md์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค:

---
description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.
---

## Current changes

!`git diff HEAD`

## Instructions

Summarize the changes above in two or three bullet points, then list any risks you notice such as missing error handling, hardcoded values, or tests that need updating. If the diff is empty, say there are no uncommitted changes.

!`git diff HEAD` ์ค„์€ ๋™์  ์ปจํ…์ŠคํŠธ ์ฃผ์ž…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค: Claude Code๋Š” ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  Claude๊ฐ€ skill ์ฝ˜ํ…์ธ ๋ฅผ ๋ณด๊ธฐ ์ „์— ์ค„์„ ์ถœ๋ ฅ์œผ๋กœ ๋ฐ”๊พธ๋ฏ€๋กœ, ์ง€์นจ์€ ํ˜„์žฌ diff๊ฐ€ ์ด๋ฏธ ์ธ๋ผ์ธ๋œ ์ƒํƒœ๋กœ ๋„์ฐฉํ•ฉ๋‹ˆ๋‹ค.

3

skill ํ…Œ์ŠคํŠธ

git ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด๊ณ , ํŒŒ์ผ์„ ์•ฝ๊ฐ„ ํŽธ์ง‘ํ•œ ํ›„, claude๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Claude Code๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ skill์„ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Claude๊ฐ€ ์ž๋™์œผ๋กœ ํ˜ธ์ถœํ•˜๋„๋ก ํ•˜๊ธฐ - ์„ค๋ช…๊ณผ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์„ ๋ฌผ์–ด๋ด…๋‹ˆ๋‹ค:

What did I change?

๋˜๋Š” skill ์ด๋ฆ„์œผ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๊ธฐ:

/summarize-changes

์–ด๋А ์ชฝ์ด๋“  Claude๋Š” ํŽธ์ง‘์˜ ์งง์€ ์š”์•ฝ๊ณผ ์œ„ํ—˜ ๋ชฉ๋ก์œผ๋กœ ์‘๋‹ตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Skills๊ฐ€ ์žˆ๋Š” ์œ„์น˜

skill์„ ์ €์žฅํ•˜๋Š” ์œ„์น˜์— ๋”ฐ๋ผ ๋ˆ„๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€๊ฐ€ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค:

์œ„์น˜ ๊ฒฝ๋กœ ์ ์šฉ ๋Œ€์ƒ
Enterprise ๊ด€๋ฆฌ ์„ค์ • ์ฐธ์กฐ ์กฐ์ง์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž
Personal ~/.claude/skills/<skill-name>/SKILL.md ๋ชจ๋“  ํ”„๋กœ์ ํŠธ
Project .claude/skills/<skill-name>/SKILL.md ์ด ํ”„๋กœ์ ํŠธ๋งŒ
Plugin <plugin>/skills/<skill-name>/SKILL.md ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ™œ์„ฑํ™”๋œ ์œ„์น˜

skills๊ฐ€ ์—ฌ๋Ÿฌ ์ˆ˜์ค€์—์„œ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ณต์œ ํ•  ๋•Œ, enterprise๊ฐ€ personal์„ ์žฌ์ •์˜ํ•˜๊ณ , personal์ด project๋ฅผ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ์ ํŠธ์˜ .claude/skills/์— ์žˆ๋Š” code-review skill์€ ๋ฒˆ๋“ค๋œ /code-review๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. Plugin skills๋Š” plugin-name:skill-name ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋‹ค๋ฅธ ์ˆ˜์ค€๊ณผ ์ถฉ๋Œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. .claude/commands/์— ํŒŒ์ผ์ด ์žˆ์œผ๋ฉด ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜์ง€๋งŒ, skill๊ณผ ๋ช…๋ น์–ด๊ฐ€ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ณต์œ ํ•˜๋ฉด skill์ด ์šฐ์„ ํ•ฉ๋‹ˆ๋‹ค.

Skills๋Š” ๋˜ํ•œ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์˜ ์ค‘์ฒฉ๋œ .claude/skills/ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. Claude๊ฐ€ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ํŽธ์ง‘ํ•  ๋•Œ, ํ•ด๋‹น ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์˜ .claude/skills/์— ์žˆ๋Š” skills๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด monorepo ํŒจํ‚ค์ง€๊ฐ€ ์ž์‹ ์˜ skills๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„ธ์…˜์ด ์ €์žฅ์†Œ ๋ฃจํŠธ์—์„œ ์‹œ์ž‘๋˜์—ˆ๋”๋ผ๋„ ํ•ด๋‹น ํŒจํ‚ค์ง€์—์„œ ์ž‘์—…ํ•  ๋•Œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ค‘์ฒฉ๋œ skill์ด ๋‹ค๋ฅธ skill๊ณผ ๊ฐ™์€ ์ด๋ฆ„์„ ๊ณต์œ ํ•˜๋ฉด, ๋‘˜ ๋‹ค ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— deploy skill์ด ์žˆ๊ณ  apps/web/.claude/skills/์— ๋‹ค๋ฅธ skill์ด ์žˆ๋Š” ๊ฒฝ์šฐ:

  • ์ค‘์ฒฉ๋œ skill์€ ๋””๋ ‰ํ† ๋ฆฌ ํ•œ์ • ์ด๋ฆ„ apps/web:deploy ์•„๋ž˜์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.
  • ํ•ด๋‹น ์„ค๋ช…์€ ์–ด๋А ๋””๋ ‰ํ† ๋ฆฌ์— ์ ์šฉ๋˜๋Š”์ง€ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
  • Claude๋Š” ์ž‘์—… ์ค‘์ธ ํŒŒ์ผ๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ณ€ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

/deploy๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ skill์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ค‘์ฒฉ๋œ ๋ณ€ํ˜•์„ ๋ช…์‹œ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋ ค๋ฉด ํ•œ์ •๋œ ์ด๋ฆ„ /apps/web:deploy๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

ํ•œ์ •๋˜์ง€ ์•Š์€ ์ด๋ฆ„์„ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ Claude๊ฐ€ ํ˜ธ์ถœํ•  ๋•Œ, ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ skill์ด ๋กœ๋“œ๋˜๊ณ , Claude Code๋Š” ๋””๋ ‰ํ† ๋ฆฌ ํ•œ์ • ๋ณ€ํ˜• ๋ชฉ๋ก์„ ํ•ด๋‹น ์ฝ˜ํ…์ธ ์— ์ถ”๊ฐ€ํ•˜๋ฉฐ, Claude๊ฐ€ ์ž‘์—… ์ค‘์ธ ํŒŒ์ผ์„ ๋ณด์œ ํ•œ ๋ณ€ํ˜•๋„ ํ˜ธ์ถœํ•˜๋„๋ก ์ง€์‹œํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ค‘์ฒฉ๋œ skill์€ ํ•œ์ •๋˜์ง€ ์•Š์€ ์ด๋ฆ„๋งŒ ํ˜ธ์ถœํ•  ๋•Œ๋„ ํ•ด๋‹น ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ž‘์—…์— ๊ณ„์† ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. Claude Code v2.1.203 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

<skill-name> ํ•ญ๋ชฉ์ด enterprise, personal ๋˜๋Š” project ์œ„์น˜์— ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋””์Šคํฌ์˜ ๋‹ค๋ฅธ ๊ณณ์— ์žˆ๋Š” ๋””๋ ‰ํ† ๋ฆฌ๋กœ์˜ symlink์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Claude Code๋Š” symlink๋ฅผ ๋”ฐ๋ผ๊ฐ€๊ณ  ๋Œ€์ƒ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ SKILL.md๋ฅผ ์ฝ์œผ๋ฉฐ, ๊ฐ™์€ ๋Œ€์ƒ์— ๋‘˜ ์ด์ƒ์˜ ์œ„์น˜์—์„œ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉด Claude Code๋Š” skill์„ ํ•œ ๋ฒˆ๋งŒ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. Plugin skills๋Š” symlinks๋ฅผ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ๋‚ด์—์„œ symlinks๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ ๊ณต์œ ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ผ์ด๋ธŒ ๋ณ€๊ฒฝ ๊ฐ์ง€

Claude Code๋Š” skill ๋””๋ ‰ํ† ๋ฆฌ์˜ ํŒŒ์ผ ๋ณ€๊ฒฝ์„ ๊ฐ์‹œํ•ฉ๋‹ˆ๋‹ค. ~/.claude/skills/, ํ”„๋กœ์ ํŠธ .claude/skills/, ๋˜๋Š” --add-dir ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์˜ .claude/skills/ ์•„๋ž˜์—์„œ skill์„ ์ถ”๊ฐ€, ํŽธ์ง‘ ๋˜๋Š” ์ œ๊ฑฐํ•˜๋ฉด Claude Code๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์ง€ ์•Š๊ณ ๋„ ํ˜„์žฌ ์„ธ์…˜ ๋‚ด์—์„œ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์„ธ์…˜์ด ์‹œ์ž‘๋˜์—ˆ์„ ๋•Œ ์กด์žฌํ•˜์ง€ ์•Š์•˜๋˜ ์ตœ์ƒ์œ„ skills ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๋ ค๋ฉด Claude Code๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•ด์•ผ ์ƒˆ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ฐ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์œ„ ๋ฐ ์ค‘์ฒฉ๋œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ž๋™ ๊ฒ€์ƒ‰

ํ”„๋กœ์ ํŠธ skills๋Š” ์‹œ์ž‘ ๋””๋ ‰ํ† ๋ฆฌ์˜ .claude/skills/์™€ ์ €์žฅ์†Œ ๋ฃจํŠธ๊นŒ์ง€์˜ ๋ชจ๋“  ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋กœ๋“œ๋˜๋ฏ€๋กœ, ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ Claude๋ฅผ ์‹œ์ž‘ํ•ด๋„ ๋ฃจํŠธ์—์„œ ์ •์˜๋œ skills๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์‹œ์ž‘ ๋””๋ ‰ํ† ๋ฆฌ ์•„๋ž˜์˜ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ๋กœ ์ž‘์—…ํ•  ๋•Œ, Claude Code๋Š” ํ•„์š”์— ๋”ฐ๋ผ ์ค‘์ฒฉ๋œ .claude/skills/ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ skills๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, packages/frontend/์˜ ํŒŒ์ผ์„ ํŽธ์ง‘ํ•˜๋Š” ๊ฒฝ์šฐ, Claude Code๋Š” packages/frontend/.claude/skills/์—์„œ๋„ skills๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ํŒจํ‚ค์ง€๊ฐ€ ์ž์‹ ์˜ skills๋ฅผ ๊ฐ€์ง„ monorepo ์„ค์ •์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ skill์€ SKILL.md๋ฅผ ์ง„์ž…์ ์œผ๋กœ ํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค:

my-skill/
โ”œโ”€โ”€ SKILL.md           # ์ฃผ์š” ์ง€์นจ (ํ•„์ˆ˜)
โ”œโ”€โ”€ template.md        # Claude๊ฐ€ ์ฑ„์šธ ํ…œํ”Œ๋ฆฟ
โ”œโ”€โ”€ examples/
โ”‚   โ””โ”€โ”€ sample.md      # ์˜ˆ์ƒ ํ˜•์‹์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์ œ ์ถœ๋ ฅ
โ””โ”€โ”€ scripts/
    โ””โ”€โ”€ validate.sh    # Claude๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ

SKILL.md๋Š” ์ฃผ์š” ์ง€์นจ์„ ํฌํ•จํ•˜๋ฉฐ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํŒŒ์ผ์€ ์„ ํƒ์ ์ด๋ฉฐ ๋” ๊ฐ•๋ ฅํ•œ skills๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: Claude๊ฐ€ ์ฑ„์šธ ํ…œํ”Œ๋ฆฟ, ์˜ˆ์ƒ ํ˜•์‹์„ ๋ณด์—ฌ์ฃผ๋Š” ์˜ˆ์ œ ์ถœ๋ ฅ, Claude๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ์ƒ์„ธํ•œ ์ฐธ์กฐ ๋ฌธ์„œ. SKILL.md์—์„œ ์ด๋Ÿฌํ•œ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์—ฌ Claude๊ฐ€ ๊ฐ ํŒŒ์ผ์˜ ๋‚ด์šฉ๊ณผ ๋กœ๋“œ ์‹œ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ง€์› ํŒŒ์ผ ์ถ”๊ฐ€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ถ”๊ฐ€ ๋””๋ ‰ํ† ๋ฆฌ์˜ Skills

--add-dir ํ”Œ๋ž˜๊ทธ์™€ /add-dir ๋ช…๋ น์–ด๋Š” ํŒŒ์ผ ์•ก์„ธ์Šค๋ฅผ ๋ถ€์—ฌํ•˜์ง€๋งŒ ๊ตฌ์„ฑ ๊ฒ€์ƒ‰์€ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ skills๋Š” ์˜ˆ์™ธ์ž…๋‹ˆ๋‹ค: ์ถ”๊ฐ€๋œ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์˜ .claude/skills/๋Š” ์ž๋™์œผ๋กœ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์™ธ๋Š” --add-dir๊ณผ /add-dir์—๋งŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. settings.json์˜ permissions.additionalDirectories ์„ค์ •์€ ํŒŒ์ผ ์•ก์„ธ์Šค๋งŒ ๋ถ€์—ฌํ•˜๋ฉฐ skills๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ ๋ณ€๊ฒฝ ๊ฐ์ง€๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ์„ธ์…˜ ์ค‘์— ํŽธ์ง‘์ด ์–ด๋–ป๊ฒŒ ์„ ํƒ๋˜๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”.

๋‹ค๋ฅธ .claude/ ๊ตฌ์„ฑ(์˜ˆ: ๋ช…๋ น์–ด ๋ฐ ์ถœ๋ ฅ ์Šคํƒ€์ผ)์€ ์ถ”๊ฐ€ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ๋กœ๋“œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋กœ๋“œ๋˜๋Š” ํ•ญ๋ชฉ๊ณผ ๋กœ๋“œ๋˜์ง€ ์•Š๋Š” ํ•ญ๋ชฉ์˜ ์ „์ฒด ๋ชฉ๋ก๊ณผ ํ”„๋กœ์ ํŠธ ๊ฐ„ ๊ตฌ์„ฑ์„ ๊ณต์œ ํ•˜๋Š” ๊ถŒ์žฅ ๋ฐฉ๋ฒ•์€ ์˜ˆ์™ธ ํ‘œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Skills ๊ตฌ์„ฑ

Skills๋Š” SKILL.md ์ƒ๋‹จ์˜ YAML frontmatter์™€ ๊ทธ ๋’ค์˜ markdown ์ฝ˜ํ…์ธ ๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

Skill ์ฝ˜ํ…์ธ  ์œ ํ˜•

Skill ํŒŒ์ผ์€ ๋ชจ๋“  ์ง€์นจ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ˜ธ์ถœ ๋ฐฉ์‹์„ ์ƒ๊ฐํ•˜๋ฉด ํฌํ•จํ•  ๋‚ด์šฉ์„ ์•ˆ๋‚ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค:

์ฐธ์กฐ ์ฝ˜ํ…์ธ ๋Š” Claude๊ฐ€ ํ˜„์žฌ ์ž‘์—…์— ์ ์šฉํ•˜๋Š” ์ง€์‹์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๊ทœ์น™, ํŒจํ„ด, ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ, ๋„๋ฉ”์ธ ์ง€์‹. ์ด ์ฝ˜ํ…์ธ ๋Š” ์ธ๋ผ์ธ์œผ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ Claude๊ฐ€ ๋Œ€ํ™” ์ปจํ…์ŠคํŠธ์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

---
name: api-conventions
description: API design patterns for this codebase
---

When writing API endpoints:
- Use RESTful naming conventions
- Return consistent error formats
- Include request validation

์ž‘์—… ์ฝ˜ํ…์ธ ๋Š” ๋ฐฐํฌ, ์ปค๋ฐ‹ ๋˜๋Š” ์ฝ”๋“œ ์ƒ์„ฑ๊ณผ ๊ฐ™์€ ํŠน์ • ์ž‘์—…์— ๋Œ€ํ•œ ๋‹จ๊ณ„๋ณ„ ์ง€์นจ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Claude๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋„๋ก ํ•˜๊ธฐ๋ณด๋‹ค๋Š” /skill-name์œผ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋ ค๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. disable-model-invocation: true๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ Claude๊ฐ€ ์ž๋™์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค.

---
name: deploy
description: Deploy the application to production
context: fork
disable-model-invocation: true
---

Deploy the application:
1. Run the test suite
2. Build the application
3. Push to the deployment target

SKILL.md๋Š” ๋ชจ๋“  ๊ฒƒ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, skill์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹(์‚ฌ์šฉ์ž, Claude ๋˜๋Š” ๋‘˜ ๋‹ค)๊ณผ ์‹คํ–‰ ์œ„์น˜(์ธ๋ผ์ธ ๋˜๋Š” subagent)๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ํฌํ•จํ•  ๋‚ด์šฉ์„ ์•ˆ๋‚ดํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. ๋ณต์žกํ•œ skills์˜ ๊ฒฝ์šฐ, ์ง€์› ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์ฃผ์š” skill์„ ์ง‘์ค‘์ ์œผ๋กœ ์œ ์ง€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณธ๋ฌธ ์ž์ฒด๋Š” ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. Skill์ด ๋กœ๋“œ๋˜๋ฉด, ๊ทธ ์ฝ˜ํ…์ธ ๋Š” ํ„ด ์ „์ฒด์— ๊ฑธ์ณ ์ปจํ…์ŠคํŠธ์— ์œ ์ง€๋˜๋ฏ€๋กœ, ๋ชจ๋“  ์ค„์ด ๋ฐ˜๋ณต๋˜๋Š” ํ† ํฐ ๋น„์šฉ์ž…๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋˜๋Š” ์™œ์ธ์ง€ ์„ค๋ช…ํ•˜๊ธฐ๋ณด๋‹ค๋Š” ๋ฌด์—‡์„ ํ• ์ง€ ๋ช…์‹œํ•˜๊ณ , CLAUDE.md ์ฝ˜ํ…์ธ ์— ์ ์šฉํ•  ๋™์ผํ•œ ๊ฐ„๊ฒฐ์„ฑ ํ…Œ์ŠคํŠธ๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Frontmatter ์ฐธ์กฐ

markdown ์ฝ˜ํ…์ธ  ์™ธ์—๋„, SKILL.md ํŒŒ์ผ ์ƒ๋‹จ์˜ --- ๋งˆ์ปค ์‚ฌ์ด์˜ YAML frontmatter ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ skill ๋™์ž‘์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

---
name: my-skill
description: What this skill does
disable-model-invocation: true
allowed-tools: Read Grep
---

Your skill instructions here...

๋ชจ๋“  ํ•„๋“œ๋Š” ์„ ํƒ์ ์ž…๋‹ˆ๋‹ค. Claude๊ฐ€ skill์„ ์–ธ์ œ ์‚ฌ์šฉํ• ์ง€ ์•Œ ์ˆ˜ ์žˆ๋„๋ก description๋งŒ ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

ํ•„๋“œ ํ•„์ˆ˜ ์„ค๋ช…
name ์•„๋‹ˆ์˜ค skill ๋ชฉ๋ก์— ํ‘œ์‹œ๋˜๋Š” ํ‘œ์‹œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์œผ๋กœ ๊ธฐ๋ณธ๊ฐ’์ด ์„ค์ •๋ฉ๋‹ˆ๋‹ค. skill์„ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ์ž…๋ ฅํ•˜๋Š” ์ด๋ฆ„๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€๋Š” skill์ด ๋ช…๋ น์–ด ์ด๋ฆ„์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์„ ์ฐธ์กฐํ•˜์„ธ์š”.
description ๊ถŒ์žฅ skill์ด ๋ฌด์—‡์„ ํ•˜๋Š”์ง€, ์–ธ์ œ ์‚ฌ์šฉํ• ์ง€. Claude๋Š” ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ skill์„ ์ž๋™์œผ๋กœ ์ ์šฉํ•  ์‹œ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด markdown ์ฝ˜ํ…์ธ ์˜ ์ฒซ ๋ฒˆ์งธ ๋‹จ๋ฝ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์•ž์— ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค: ๊ฒฐํ•ฉ๋œ description ๋ฐ when_to_use ํ…์ŠคํŠธ๋Š” ์ปจํ…์ŠคํŠธ ์‚ฌ์šฉ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด skill ๋ชฉ๋ก์—์„œ 1,536์ž๋กœ ์ž˜๋ฆฝ๋‹ˆ๋‹ค.
when_to_use ์•„๋‹ˆ์˜ค Claude๊ฐ€ skill์„ ํ˜ธ์ถœํ•ด์•ผ ํ•  ๋•Œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ(์˜ˆ: ํŠธ๋ฆฌ๊ฑฐ ๊ตฌ๋ฌธ ๋˜๋Š” ์˜ˆ์ œ ์š”์ฒญ). skill ๋ชฉ๋ก์—์„œ description์— ์ถ”๊ฐ€๋˜๋ฉฐ 1,536์ž ์ œํ•œ์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
argument-hint ์•„๋‹ˆ์˜ค ์˜ˆ์ƒ ์ธ์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด ์ž๋™ ์™„์„ฑ ์ค‘์— ํ‘œ์‹œ๋˜๋Š” ํžŒํŠธ. ์˜ˆ: [issue-number] ๋˜๋Š” [filename] [format].
arguments ์•„๋‹ˆ์˜ค skill ์ฝ˜ํ…์ธ ์—์„œ $name ์น˜ํ™˜์„ ์œ„ํ•œ ๋ช…๋ช…๋œ ์œ„์น˜ ์ธ์ˆ˜. ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด ๋˜๋Š” YAML ๋ชฉ๋ก์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์ˆœ์„œ๋Œ€๋กœ ์ธ์ˆ˜ ์œ„์น˜์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.
disable-model-invocation ์•„๋‹ˆ์˜ค Claude๊ฐ€ ์ด skill์„ ์ž๋™์œผ๋กœ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด true๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. /name์œผ๋กœ ์ˆ˜๋™์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐํ•˜๋ ค๋Š” ์›Œํฌํ”Œ๋กœ์šฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ skill์ด subagents์— ๋ฏธ๋ฆฌ ๋กœ๋“œ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. v2.1.196๋ถ€ํ„ฐ๋Š” ์˜ˆ์•ฝ๋œ ์ž‘์—…์ด skill์„ ํ”„๋กฌํ”„ํŠธ๋กœ ํ•˜์—ฌ ์‹คํ–‰๋  ๋•Œ skill์ด ์‹คํ–‰๋˜๋Š” ๊ฒƒ๋„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: false.
user-invocable ์•„๋‹ˆ์˜ค / ๋ฉ”๋‰ด์—์„œ ์ˆจ๊ธฐ๋ ค๋ฉด false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ๋ฐฐ๊ฒฝ ์ง€์‹์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: true.
allowed-tools ์•„๋‹ˆ์˜ค ์ด skill์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ Claude๊ฐ€ ๊ถŒํ•œ์„ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ. ๊ณต๋ฐฑ ๋˜๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด ๋˜๋Š” YAML ๋ชฉ๋ก์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
disallowed-tools ์•„๋‹ˆ์˜ค ์ด skill์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ Claude์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ ํ’€์—์„œ ์ œ๊ฑฐ๋˜๋Š” ๋„๊ตฌ. AskUserQuestion๊ณผ ๊ฐ™์ด ๋ฐฐ๊ฒฝ ๋ฃจํ”„์— ๋Œ€ํ•ด ํŠน์ • ๋„๊ตฌ๋ฅผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ์ž์œจ skills์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ณต๋ฐฑ ๋˜๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด ๋˜๋Š” YAML ๋ชฉ๋ก์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ ์ œํ•œ์ด ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค.
model ์•„๋‹ˆ์˜ค ์ด skill์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ ์‚ฌ์šฉํ•  ๋ชจ๋ธ. ์žฌ์ •์˜๋Š” ํ˜„์žฌ ํ„ด์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„์— ์ ์šฉ๋˜๋ฉฐ ์„ค์ •์— ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ํ”„๋กฌํ”„ํŠธ์—์„œ ์„ธ์…˜ ๋ชจ๋ธ์ด ์žฌ๊ฐœ๋ฉ๋‹ˆ๋‹ค. /model๊ณผ ๋™์ผํ•œ ๊ฐ’์„ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ํ™œ์„ฑ ๋ชจ๋ธ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด inherit์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ง์˜ availableModels ํ—ˆ์šฉ ๋ชฉ๋ก์—์„œ ์ œ์™ธ๋œ ๊ฐ’์€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ ์„ธ์…˜์€ ํ˜„์žฌ ๋ชจ๋ธ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
effort ์•„๋‹ˆ์˜ค ๋…ธ๋ ฅ ์ˆ˜์ค€ - ์ด skill์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ. ์„ธ์…˜ ๋…ธ๋ ฅ ์ˆ˜์ค€์„ ์žฌ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ฐ’: ์„ธ์…˜์—์„œ ์ƒ์†. ์˜ต์…˜: low, medium, high, xhigh, max; ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์€ ๋ชจ๋ธ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
context ์•„๋‹ˆ์˜ค forked subagent ์ปจํ…์ŠคํŠธ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด fork๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
agent ์•„๋‹ˆ์˜ค context: fork๊ฐ€ ์„ค์ •๋˜์—ˆ์„ ๋•Œ ์‚ฌ์šฉํ•  subagent ์œ ํ˜•.
hooks ์•„๋‹ˆ์˜ค ์ด skill์˜ ๋ผ์ดํ”„์‚ฌ์ดํด์— ๋ฒ”์œ„๊ฐ€ ์ง€์ •๋œ hooks. ๊ตฌ์„ฑ ํ˜•์‹์€ Skills ๋ฐ agents์˜ Hooks๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
paths ์•„๋‹ˆ์˜ค ์ด skill์ด ํ™œ์„ฑํ™”๋˜๋Š” ์‹œ๊ธฐ๋ฅผ ์ œํ•œํ•˜๋Š” Glob ํŒจํ„ด. ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด ๋˜๋Š” YAML ๋ชฉ๋ก์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์„ค์ •ํ•˜๋ฉด Claude๋Š” ํŒจํ„ด๊ณผ ์ผ์น˜ํ•˜๋Š” ํŒŒ์ผ๋กœ ์ž‘์—…ํ•  ๋•Œ๋งŒ ์ž๋™์œผ๋กœ skill์„ ๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ๋กœ๋ณ„ ๊ทœ์น™๊ณผ ๋™์ผํ•œ ํ˜•์‹์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
shell ์•„๋‹ˆ์˜ค ์ด skill์˜ !`command` ๋ฐ ```! ๋ธ”๋ก์— ์‚ฌ์šฉํ•  shell. bash(๊ธฐ๋ณธ๊ฐ’) ๋˜๋Š” powershell์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. powershell์„ ์„ค์ •ํ•˜๋ฉด Windows์—์„œ PowerShell์„ ํ†ตํ•ด ์ธ๋ผ์ธ shell ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. CLAUDE_CODE_USE_POWERSHELL_TOOL=1์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Skill์ด ๋ช…๋ น์–ด ์ด๋ฆ„์„ ์–ป๋Š” ๋ฐฉ๋ฒ•

skill์„ ํ˜ธ์ถœํ•˜๊ธฐ ์œ„ํ•ด ์ž…๋ ฅํ•˜๋Š” ๋ช…๋ น์–ด๋Š” skill ํŒŒ์ผ์ด ์žˆ๋Š” ์œ„์น˜์—์„œ ๋‚˜์˜ต๋‹ˆ๋‹ค. frontmatter name ํ•„๋“œ๋Š” skill ๋ชฉ๋ก์— ํ‘œ์‹œ๋˜๋Š” ํ‘œ์‹œ ๋ ˆ์ด๋ธ”์„ ์„ค์ •ํ•˜๋ฉฐ, plugin ๋ฃจํŠธ SKILL.md๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” / ๋’ค์— ์ž…๋ ฅํ•˜๋Š” ๋‚ด์šฉ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ํ‘œ๋Š” ๊ฐ ๋ ˆ์ด์•„์›ƒ์— ๋Œ€ํ•ด ๋ช…๋ น์–ด ์ด๋ฆ„์ด ์–ด๋””์—์„œ ๋‚˜์˜ค๋Š”์ง€ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค:

Skill ์œ„์น˜ ๋ช…๋ น์–ด ์ด๋ฆ„ ์†Œ์Šค ์˜ˆ์ œ
~/.claude/skills/ ๋˜๋Š” .claude/skills/ ์•„๋ž˜์˜ Skill ๋””๋ ‰ํ† ๋ฆฌ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„ .claude/skills/deploy-staging/SKILL.md โ†’ /deploy-staging
์ค‘์ฒฉ๋œ .claude/skills/ ๋””๋ ‰ํ† ๋ฆฌ, ๋‹ค๋ฅธ skill๊ณผ ์ด๋ฆ„์ด ์ถฉ๋Œํ•  ๋•Œ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒฝ๋กœ, ๊ทธ ๋‹ค์Œ skill ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„ apps/web/.claude/skills/deploy/SKILL.md โ†’ /apps/web:deploy
.claude/commands/ ์•„๋ž˜์˜ ํŒŒ์ผ ํ™•์žฅ์ž ์—†๋Š” ํŒŒ์ผ ์ด๋ฆ„ .claude/commands/deploy.md โ†’ /deploy
Plugin skills/ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„, plugin์œผ๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋จ my-plugin/skills/review/SKILL.md โ†’ /my-plugin:review
Plugin ๋ฃจํŠธ SKILL.md Frontmatter name, plugin ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์„ ํด๋ฐฑ์œผ๋กœ ์‚ฌ์šฉ my-plugin/SKILL.md์—์„œ name: review โ†’ /my-plugin:review. ๊ฒฝ๋กœ ๋™์ž‘ ๊ทœ์น™ ์ฐธ์กฐ

plugin ๋ฃจํŠธ ๊ฒฝ์šฐ๋Š” name์ด ๋ช…๋ น์–ด ์ด๋ฆ„์„ ์„ค์ •ํ•˜๋Š” ์œ ์ผํ•œ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. skill ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. frontmatter์—์„œ name์ด ์„ค์ •๋˜์ง€ ์•Š์œผ๋ฉด plugin์˜ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋ฆ„์ด ๋Œ€์‹  ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฌธ์ž์—ด ์น˜ํ™˜

Skills๋Š” skill ์ฝ˜ํ…์ธ ์˜ ๋™์  ๊ฐ’์— ๋Œ€ํ•œ ๋ฌธ์ž์—ด ์น˜ํ™˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

๋ณ€์ˆ˜ ์„ค๋ช…
$ARGUMENTS skill์„ ํ˜ธ์ถœํ•  ๋•Œ ์ „๋‹ฌ๋œ ๋ชจ๋“  ์ธ์ˆ˜. $ARGUMENTS๊ฐ€ ์ฝ˜ํ…์ธ ์— ์—†์œผ๋ฉด ์ธ์ˆ˜๊ฐ€ ARGUMENTS: <value>๋กœ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค.
$ARGUMENTS[N] 0 ๊ธฐ๋ฐ˜ ์ธ๋ฑ์Šค๋กœ ํŠน์ • ์ธ์ˆ˜์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: $ARGUMENTS[0]์€ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜).
$N $ARGUMENTS[N]์˜ ์•ฝ์ž(์˜ˆ: $0์€ ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜, $1์€ ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜).
$name arguments frontmatter ๋ชฉ๋ก์—์„œ ์„ ์–ธ๋œ ๋ช…๋ช…๋œ ์ธ์ˆ˜. ์ด๋ฆ„์€ ์ˆœ์„œ๋Œ€๋กœ ์œ„์น˜์— ๋งคํ•‘๋˜๋ฏ€๋กœ, arguments: [issue, branch]๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ”Œ๋ ˆ์ด์Šคํ™€๋” $issue๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ํ™•์žฅ๋˜๊ณ  $branch๋Š” ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.
${CLAUDE_SESSION_ID} ํ˜„์žฌ ์„ธ์…˜ ID. ๋กœ๊น…, ์„ธ์…˜๋ณ„ ํŒŒ์ผ ์ƒ์„ฑ ๋˜๋Š” skill ์ถœ๋ ฅ์„ ์„ธ์…˜๊ณผ ์—ฐ๊ด€์‹œํ‚ค๋Š” ๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.
${CLAUDE_EFFORT} ํ˜„์žฌ ๋…ธ๋ ฅ ์ˆ˜์ค€: low, medium, high, xhigh, ๋˜๋Š” max. Ultracode๋Š” ๋ณ„๊ฐœ์˜ ์ˆ˜์ค€์ด ์•„๋‹ˆ๋ฉฐ xhigh๋กœ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™œ์„ฑ ๋…ธ๋ ฅ ์„ค์ •์— ๋งž๊ฒŒ skill ์ง€์นจ์„ ์กฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
${CLAUDE_SKILL_DIR} skill์˜ SKILL.md ํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ๋””๋ ‰ํ† ๋ฆฌ. plugin skills์˜ ๊ฒฝ์šฐ, ์ด๋Š” plugin ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ plugin ๋‚ด์˜ skill ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ์ž…๋‹ˆ๋‹ค. bash ์ฃผ์ž… ๋ช…๋ น์–ด์—์„œ ํ˜„์žฌ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ์™€ ๊ด€๊ณ„์—†์ด skill๊ณผ ํ•จ๊ป˜ ๋ฒˆ๋“ค๋œ ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
${CLAUDE_PROJECT_DIR} ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ. ์ด๋Š” hooks์™€ MCP ์„œ๋ฒ„๊ฐ€ CLAUDE_PROJECT_DIR๋กœ ๋ฐ›๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ๋กœ์ปฌ ์Šคํฌ๋ฆฝํŠธ ๋˜๋Š” ํŒŒ์ผ(์˜ˆ: ${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh)์„ ์ฐธ์กฐํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜์—ฌ skill์ด ์„ค์น˜๋œ ์œ„์น˜์™€ ๊ด€๊ณ„์—†์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

${CLAUDE_PROJECT_DIR} ์น˜ํ™˜์€ Claude Code v2.1.196 ์ด์ƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. skill ๋ณธ๋ฌธ๊ณผ allowed-tools frontmatter ๋ชจ๋‘์— ์ ์šฉ๋˜๋ฏ€๋กœ, Bash(${CLAUDE_PROJECT_DIR}/scripts/lint.sh *) ๊ฐ™์€ ๊ถŒํ•œ ๊ทœ์น™์€ skill ๋ณธ๋ฌธ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒฝ๋กœ๋กœ ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.

์ธ๋ฑ์‹ฑ๋œ ์ธ์ˆ˜๋Š” shell ์Šคํƒ€์ผ ์ธ์šฉ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋‹ค์ค‘ ๋‹จ์–ด ๊ฐ’์„ ๋”ฐ์˜ดํ‘œ๋กœ ๊ฐ์‹ธ์„œ ๋‹จ์ผ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, /my-skill "hello world" second๋Š” $0์„ hello world๋กœ, $1์„ second๋กœ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. $ARGUMENTS ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋Š” ํ•ญ์ƒ ์ž…๋ ฅํ•œ ์ „์ฒด ์ธ์ˆ˜ ๋ฌธ์ž์—ด๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.

๋ฆฌํ„ฐ๋Ÿด $๋ฅผ ์ˆซ์ž, ARGUMENTS ๋˜๋Š” ์„ ์–ธ๋œ ์ธ์ˆ˜ ์ด๋ฆ„ ์•ž์— ํฌํ•จํ•˜๋ ค๋ฉด(์˜ˆ: ์‚ฐ๋ฌธ์—์„œ $1.00), ๋ฐฑ์Šฌ๋ž˜์‹œ๋กœ ์ด์Šค์ผ€์ดํ”„ํ•ฉ๋‹ˆ๋‹ค: \$1.00. ๋‹ค๋ฅธ $ ์•ž์˜ ๋ฐฑ์Šฌ๋ž˜์‹œ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ† ํฐ ๋ฐ”๋กœ ์•ž์˜ ๋‹จ์ผ ๋ฐฑ์Šฌ๋ž˜์‹œ๋งŒ ์ด์Šค์ผ€์ดํ”„ํ•ฉ๋‹ˆ๋‹ค. \\$1๊ณผ ๊ฐ™์€ ์ด์ค‘ ๋ฐฑ์Šฌ๋ž˜์‹œ๋Š” ๋‘ ๋ฐฑ์Šฌ๋ž˜์‹œ๋ฅผ ์ œ์ž๋ฆฌ์— ๋‘๊ณ , $1์€ ์—ฌ์ „ํžˆ ์ธ์ˆ˜ ๊ฐ’์œผ๋กœ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.

์น˜ํ™˜์„ ์‚ฌ์šฉํ•œ ์˜ˆ์ œ:

---
name: session-logger
description: Log activity for this session
---

Log the following to logs/${CLAUDE_SESSION_ID}.log:

$ARGUMENTS

์ง€์› ํŒŒ์ผ ์ถ”๊ฐ€

Skills๋Š” ๋””๋ ‰ํ† ๋ฆฌ์— ์—ฌ๋Ÿฌ ํŒŒ์ผ์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” SKILL.md๋ฅผ ํ•„์ˆ˜ ํ•ญ๋ชฉ์— ์ง‘์ค‘ํ•˜๊ฒŒ ํ•˜๋ฉด์„œ Claude๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งŒ ์ƒ์„ธํ•œ ์ฐธ์กฐ ์ž๋ฃŒ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ํฐ ์ฐธ์กฐ ๋ฌธ์„œ, API ์‚ฌ์–‘ ๋˜๋Š” ์˜ˆ์ œ ์ปฌ๋ ‰์…˜์€ skill์ด ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ์ปจํ…์ŠคํŠธ์— ๋กœ๋“œ๋  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

my-skill/
โ”œโ”€โ”€ SKILL.md (required - overview and navigation)
โ”œโ”€โ”€ reference.md (detailed API docs - loaded when needed)
โ”œโ”€โ”€ examples.md (usage examples - loaded when needed)
โ””โ”€โ”€ scripts/
    โ””โ”€โ”€ helper.py (utility script - executed, not loaded)

SKILL.md์—์„œ ์ง€์› ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์—ฌ Claude๊ฐ€ ๊ฐ ํŒŒ์ผ์˜ ๋‚ด์šฉ๊ณผ ๋กœ๋“œ ์‹œ๊ธฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค:

## Additional resources

- For complete API details, see [reference.md](/anthropic/claude-code/history/docs/ko/2026-07-09-2358..2026-07-10-1700/reference/)
- For usage examples, see [examples.md](/anthropic/claude-code/history/docs/ko/2026-07-09-2358..2026-07-10-1700/examples/)

Skill์„ ํ˜ธ์ถœํ•˜๋Š” ์‚ฌ๋žŒ ์ œ์–ด

๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž์™€ Claude ๋ชจ๋‘ ๋ชจ๋“  skill์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. /skill-name์„ ์ž…๋ ฅํ•˜์—ฌ ์ง์ ‘ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๊ณ , Claude๋Š” ๋Œ€ํ™”์™€ ๊ด€๋ จ์ด ์žˆ์„ ๋•Œ ์ž๋™์œผ๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‘ frontmatter ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • disable-model-invocation: true: ์‚ฌ์šฉ์ž๋งŒ skill์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ถ€์ž‘์šฉ์ด ์žˆ๊ฑฐ๋‚˜ ํƒ€์ด๋ฐ์„ ์ œ์–ดํ•˜๋ ค๋Š” ์›Œํฌํ”Œ๋กœ์šฐ(์˜ˆ: /commit, /deploy ๋˜๋Š” /send-slack-message)์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Claude๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์ค€๋น„๋œ ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค๊ณ  ํ•ด์„œ ๋ฐฐํฌํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•˜์ง€ ์•Š๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค.

  • user-invocable: false: Claude๋งŒ skill์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ น์–ด๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ๋ฐฐ๊ฒฝ ์ง€์‹์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. legacy-system-context skill์€ ์˜ค๋ž˜๋œ ์‹œ์Šคํ…œ์ด ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Claude๋Š” ๊ด€๋ จ์ด ์žˆ์„ ๋•Œ ์ด๋ฅผ ์•Œ์•„์•ผ ํ•˜์ง€๋งŒ, /legacy-system-context๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ทจํ•  ์˜๋ฏธ ์žˆ๋Š” ์ž‘์—…์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ด ์˜ˆ์ œ๋Š” ์‚ฌ์šฉ์ž๋งŒ ํŠธ๋ฆฌ๊ฑฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฐํฌ skill์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. disable-model-invocation: true ํ•„๋“œ๋Š” Claude๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค:

---
name: deploy
description: Deploy the application to production
disable-model-invocation: true
---

Deploy $ARGUMENTS to production:

1. Run the test suite
2. Build the application
3. Push to the deployment target
4. Verify the deployment succeeded

๋‘ ํ•„๋“œ๊ฐ€ ํ˜ธ์ถœ ๋ฐ ์ปจํ…์ŠคํŠธ ๋กœ๋”ฉ์— ๋ฏธ์น˜๋Š” ์˜ํ–ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

Frontmatter ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ธ์ถœ ๊ฐ€๋Šฅ Claude๊ฐ€ ํ˜ธ์ถœ ๊ฐ€๋Šฅ ์ปจํ…์ŠคํŠธ์— ๋กœ๋“œ๋˜๋Š” ์‹œ๊ธฐ
(๊ธฐ๋ณธ๊ฐ’) ์˜ˆ ์˜ˆ ์„ค๋ช…์€ ํ•ญ์ƒ ์ปจํ…์ŠคํŠธ์— ์žˆ๊ณ , ํ˜ธ์ถœ๋  ๋•Œ ์ „์ฒด skill์ด ๋กœ๋“œ๋จ
disable-model-invocation: true ์˜ˆ ์•„๋‹ˆ์˜ค ์„ค๋ช…์€ ์ปจํ…์ŠคํŠธ์— ์—†๊ณ , ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ธ์ถœํ•  ๋•Œ ์ „์ฒด skill์ด ๋กœ๋“œ๋จ
user-invocable: false ์•„๋‹ˆ์˜ค ์˜ˆ ์„ค๋ช…์€ ํ•ญ์ƒ ์ปจํ…์ŠคํŠธ์— ์žˆ๊ณ , ํ˜ธ์ถœ๋  ๋•Œ ์ „์ฒด skill์ด ๋กœ๋“œ๋จ

Skill ์ฝ˜ํ…์ธ  ๋ผ์ดํ”„์‚ฌ์ดํด

์‚ฌ์šฉ์ž ๋˜๋Š” Claude๊ฐ€ skill์„ ํ˜ธ์ถœํ•˜๋ฉด, ๋ Œ๋”๋ง๋œ SKILL.md ์ฝ˜ํ…์ธ ๋Š” ๋Œ€ํ™”์— ๋‹จ์ผ ๋ฉ”์‹œ์ง€๋กœ ๋“ค์–ด๊ฐ€๊ณ  ์„ธ์…˜์˜ ๋‚˜๋จธ์ง€ ๋ถ€๋ถ„ ๋™์•ˆ ๊ทธ๋Œ€๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. Claude Code๋Š” ๋‚˜์ค‘์˜ ํ„ด์—์„œ skill ํŒŒ์ผ์„ ๋‹ค์‹œ ์ฝ์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ž‘์—… ์ „์ฒด์— ์ ์šฉ๋˜์–ด์•ผ ํ•˜๋Š” ์ง€์นจ์„ ์ผํšŒ์„ฑ ๋‹จ๊ณ„๊ฐ€ ์•„๋‹Œ ์ƒ์‹œ ์ง€์นจ์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

๋ Œ๋”๋ง๋œ ์ฝ˜ํ…์ธ ๊ฐ€ ์ด๋ฏธ ์ปจํ…์ŠคํŠธ์— ์žˆ๋Š” ๋ณต์‚ฌ๋ณธ๊ณผ ๋™์ผํ•œ skill์„ Claude๊ฐ€ ๋‹ค์‹œ ํ˜ธ์ถœํ•  ๋•Œ, Claude Code๋Š” ์ฝ˜ํ…์ธ ์˜ ๋‘ ๋ฒˆ์งธ ๋ณต์‚ฌ๋ณธ ๋Œ€์‹  skill์ด ์ด๋ฏธ ๋กœ๋“œ๋˜์—ˆ๋‹ค๋Š” ์งง์€ ๋ฉ”๋ชจ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ Œ๋”๋ง๋œ ์ฝ˜ํ…์ธ ๊ฐ€ ๋‹ค๋ฅผ ๋•Œ(์ธ์ˆ˜๊ฐ€ ๋ณ€๊ฒฝ๋˜์—ˆ๊ฑฐ๋‚˜ ๋™์  ์ปจํ…์ŠคํŠธ ๋ช…๋ น์–ด๊ฐ€ ์ƒˆ๋กœ์šด ์ถœ๋ ฅ์„ ์ƒ์„ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—), Claude Code๋Š” ์ „์ฒด ์ฝ˜ํ…์ธ ๋ฅผ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. v2.1.202 ์ด์ „์—๋Š” ๋ชจ๋“  ์žฌํ˜ธ์ถœ์ด skill์˜ ์ง€์นจ์˜ ๋˜ ๋‹ค๋ฅธ ์ „์ฒด ๋ณต์‚ฌ๋ณธ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ž๋™ ์••์ถ•์€ ํ† ํฐ ์˜ˆ์‚ฐ ๋‚ด์—์„œ ํ˜ธ์ถœ๋œ skills๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ๋Œ€ํ™”๊ฐ€ ์š”์•ฝ๋˜์–ด ์ปจํ…์ŠคํŠธ๋ฅผ ํ™•๋ณดํ•˜๋ฉด, Claude Code๋Š” ์š”์•ฝ ํ›„ ๊ฐ skill์˜ ๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ์„ ๋‹ค์‹œ ์ฒจ๋ถ€ํ•˜์—ฌ ์ฒ˜์Œ 5,000ํ† ํฐ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ฒจ๋ถ€๋œ skills๋Š” 25,000ํ† ํฐ์˜ ๊ฒฐํ•ฉ ์˜ˆ์‚ฐ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. Claude Code๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ์— ํ˜ธ์ถœ๋œ skill๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์ด ์˜ˆ์‚ฐ์„ ์ฑ„์šฐ๋ฏ€๋กœ, ํ•œ ์„ธ์…˜์—์„œ ๋งŽ์€ skills๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฝ์šฐ ์••์ถ• ํ›„ ์ด์ „ skills๊ฐ€ ์™„์ „ํžˆ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

skill์ด ์ฒซ ๋ฒˆ์งธ ์‘๋‹ต ํ›„ ๋™์ž‘์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด๋ฉด, ์ฝ˜ํ…์ธ ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฌ์ „ํžˆ ์กด์žฌํ•˜๋ฉฐ ๋ชจ๋ธ์ด ๋‹ค๋ฅธ ๋„๊ตฌ๋‚˜ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์„ ํƒํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. skill์˜ description ๋ฐ ์ง€์นจ์„ ๊ฐ•ํ™”ํ•˜์—ฌ ๋ชจ๋ธ์ด ๊ณ„์† ์„ ํ˜ธํ•˜๋„๋ก ํ•˜๊ฑฐ๋‚˜, hooks๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ž‘์„ ๊ฒฐ์ •๋ก ์ ์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. skill์ด ํฌ๊ฑฐ๋‚˜ ๊ทธ ํ›„์— ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ skills๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฝ์šฐ, ์••์ถ• ํ›„ ์ „์ฒด ์ฝ˜ํ…์ธ ๋ฅผ ๋ณต์›ํ•˜๋ ค๋ฉด ๋‹ค์‹œ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

Skill์— ๋Œ€ํ•œ ๋„๊ตฌ ์‚ฌ์ „ ์Šน์ธ

allowed-tools ํ•„๋“œ๋Š” skill์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ ๋‚˜์—ด๋œ ๋„๊ตฌ์— ๋Œ€ํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋ฏ€๋กœ Claude๋Š” ์Šน์ธ์„ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ๋ฅผ ์ œํ•œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค: ๋ชจ๋“  ๋„๊ตฌ๋Š” ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๊ฒŒ ์œ ์ง€๋˜๋ฉฐ, ๊ถŒํ•œ ์„ค์ •์€ ๋‚˜์—ด๋˜์ง€ ์•Š์€ ๋„๊ตฌ์— ๋Œ€ํ•œ ๋„๊ตฌ๋ฅผ ๊ณ„์† ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ์˜ .claude/skills/ ๋””๋ ‰ํ† ๋ฆฌ์— ์ฒดํฌ์ธ๋œ skills์˜ ๊ฒฝ์šฐ, allowed-tools๋Š” ํ•ด๋‹น ํด๋”์— ๋Œ€ํ•œ ์ž‘์—… ๊ณต๊ฐ„ ์‹ ๋ขฐ ๋Œ€ํ™”๋ฅผ ์ˆ˜๋ฝํ•œ ํ›„ ์ ์šฉ๋˜๋ฉฐ, .claude/settings.json์˜ ๊ถŒํ•œ ๊ทœ์น™๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ skills๋ฅผ ์‹ ๋ขฐํ•˜๊ธฐ ์ „์— ๊ฒ€ํ† ํ•˜์„ธ์š”. skill์€ ์ž์‹ ์—๊ฒŒ ๊ด‘๋ฒ”์œ„ํ•œ ๋„๊ตฌ ์•ก์„ธ์Šค ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด skill์€ skill์„ ํ˜ธ์ถœํ•  ๋•Œ๋งˆ๋‹ค Claude๊ฐ€ ์Šน์ธ์„ ์š”์ฒญํ•˜์ง€ ์•Š๊ณ  git ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค:

---
name: commit
description: Stage and commit the current changes
disable-model-invocation: true
allowed-tools: Bash(git add *) Bash(git commit *) Bash(git status *)
---

skill์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ Claude์˜ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ’€์—์„œ ๋„๊ตฌ๋ฅผ ์ œ๊ฑฐํ•˜๋ ค๋ฉด, skill์˜ frontmatter์—์„œ disallowed-tools์— ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ผ ๋•Œ ์ œํ•œ์ด ํ•ด์ œ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  skills ๋ฐ ํ”„๋กฌํ”„ํŠธ์—์„œ ๋„๊ตฌ๋ฅผ ์ฐจ๋‹จํ•˜๋ ค๋ฉด, ๊ถŒํ•œ ์„ค์ •์— ๊ฑฐ๋ถ€ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Skills์— ์ธ์ˆ˜ ์ „๋‹ฌ

์‚ฌ์šฉ์ž์™€ Claude ๋ชจ๋‘ skill์„ ํ˜ธ์ถœํ•  ๋•Œ ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์ˆ˜๋Š” $ARGUMENTS ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ด skill์€ GitHub ์ด์Šˆ๋ฅผ ๋ฒˆํ˜ธ๋กœ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. $ARGUMENTS ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋Š” skill ์ด๋ฆ„ ๋’ค์— ์˜ค๋Š” ๋ชจ๋“  ๊ฒƒ์œผ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค:

---
name: fix-issue
description: Fix a GitHub issue
disable-model-invocation: true
---

Fix GitHub issue $ARGUMENTS following our coding standards.

1. Read the issue description
2. Understand the requirements
3. Implement the fix
4. Write tests
5. Create a commit

/fix-issue 123์„ ์‹คํ–‰ํ•˜๋ฉด Claude๋Š” "Fix GitHub issue 123 following our coding standards..."๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ skill์„ ํ˜ธ์ถœํ•˜์ง€๋งŒ skill์— $ARGUMENTS๊ฐ€ ํฌํ•จ๋˜์ง€ ์•Š์œผ๋ฉด, Claude Code๋Š” ARGUMENTS: <your input>์„ skill ์ฝ˜ํ…์ธ ์˜ ๋์— ์ถ”๊ฐ€ํ•˜๋ฏ€๋กœ Claude๋Š” ์—ฌ์ „ํžˆ ์ž…๋ ฅํ•œ ๋‚ด์šฉ์„ ๋ด…๋‹ˆ๋‹ค.

ํ•œ ๋ฉ”์‹œ์ง€์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์—ฌ๋Ÿฌ skills๋ฅผ ์Šคํƒํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. v2.1.199๋ถ€ํ„ฐ๋Š” /code-review /fix-issue 123์„ ์ž…๋ ฅํ•˜๋ฉด ๋‘ skill์ด ๋ชจ๋‘ ๋กœ๋“œ๋˜๊ณ  ๋’ค๋”ฐ๋ฅด๋Š” ํ…์ŠคํŠธ 123์ด ๊ฐ๊ฐ์— $ARGUMENTS๋กœ ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค. ์ด์ „ ๋ฒ„์ „์—์„œ๋Š” ์ฒซ ๋ฒˆ์งธ skill๋งŒ ๋กœ๋“œ๋˜๊ณ  /fix-issue 123์„ ๋ฆฌํ„ฐ๋Ÿด ์ธ์ˆ˜ ํ…์ŠคํŠธ๋กœ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

Claude Code๋Š” ์ฒซ ๋ฒˆ์งธ skill๊ณผ ๊ทธ ๋’ค์— ์Šคํƒ๋œ ์ตœ๋Œ€ 5๊ฐœ์˜ skill์„ ํ™•์žฅํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ์€ ์ธ๋ผ์ธ ์‚ฌ์šฉ์ž ํ˜ธ์ถœ ๊ฐ€๋Šฅ skill์ด ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ํ† ํฐ์—์„œ ์ค‘์ง€๋˜๋ฏ€๋กœ, forked subagent๋กœ ์‹คํ–‰๋˜๋Š” skill์ด๋‚˜ ์ธ์ˆ˜ ์ž์ฒด๊ฐ€ /loop์™€ ๊ฐ™์€ slash ๋ช…๋ น์–ด๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” skill๋„ ๊ฑฐ๊ธฐ์„œ ๋๋‚˜๊ณ , ๊ทธ ํ† ํฐ๊ณผ ๊ทธ ๋’ค์˜ ๋ชจ๋“  ๊ฒƒ์ด ๋ชจ๋“  ํ™•์žฅ๋œ skill์— ๋Œ€ํ•œ ์ธ์ˆ˜ ํ…์ŠคํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์œ„์น˜๋ณ„๋กœ ๊ฐœ๋ณ„ ์ธ์ˆ˜์— ์•ก์„ธ์Šคํ•˜๋ ค๋ฉด $ARGUMENTS[N] ๋˜๋Š” ๋” ์งง์€ $N์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

---
name: migrate-component
description: Migrate a component from one framework to another
---

Migrate the $ARGUMENTS[0] component from $ARGUMENTS[1] to $ARGUMENTS[2].
Preserve all existing behavior and tests.

/migrate-component SearchBar React Vue๋ฅผ ์‹คํ–‰ํ•˜๋ฉด $ARGUMENTS[0]์„ SearchBar๋กœ, $ARGUMENTS[1]์„ React๋กœ, $ARGUMENTS[2]๋ฅผ Vue๋กœ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค. $N ์•ฝ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์ผํ•œ skill:

---
name: migrate-component
description: Migrate a component from one framework to another
---

Migrate the $0 component from $1 to $2.
Preserve all existing behavior and tests.

๊ณ ๊ธ‰ ํŒจํ„ด

๋™์  ์ปจํ…์ŠคํŠธ ์ฃผ์ž…

!`<command>` ๊ตฌ๋ฌธ์€ skill ์ฝ˜ํ…์ธ ๊ฐ€ Claude๋กœ ์ „์†ก๋˜๊ธฐ ์ „์— shell ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด ์ถœ๋ ฅ์ด ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋ฅผ ๋Œ€์ฒดํ•˜๋ฏ€๋กœ Claude๋Š” ๋ช…๋ น์–ด ์ž์ฒด๊ฐ€ ์•„๋‹Œ ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์ด skill์€ GitHub CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ผ์ด๋ธŒ PR ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ pull request๋ฅผ ์š”์•ฝํ•ฉ๋‹ˆ๋‹ค. !`gh pr diff` ๋ฐ ๊ธฐํƒ€ ๋ช…๋ น์–ด๊ฐ€ ๋จผ์ € ์‹คํ–‰๋˜๊ณ , ์ถœ๋ ฅ์ด ํ”„๋กฌํ”„ํŠธ์— ์‚ฝ์ž…๋ฉ๋‹ˆ๋‹ค:

---
name: pr-summary
description: Summarize changes in a pull request
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`

## Your task
Summarize this pull request...

์ด skill์ด ์‹คํ–‰๋  ๋•Œ:

  1. ๊ฐ !`<command>`๊ฐ€ ์ฆ‰์‹œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค(Claude๊ฐ€ ๋ณด๊ธฐ ์ „์—).
  2. ์ถœ๋ ฅ์ด skill ์ฝ˜ํ…์ธ ์˜ ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋ฅผ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
  3. Claude๋Š” ์‹ค์ œ PR ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์™„์ „ํžˆ ๋ Œ๋”๋ง๋œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์ „์ฒ˜๋ฆฌ์ด๋ฉฐ, Claude๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. Claude๋Š” ์ตœ์ข… ๊ฒฐ๊ณผ๋งŒ ๋ด…๋‹ˆ๋‹ค.

๋Œ€์ฒด๋Š” ์›๋ณธ ํŒŒ์ผ์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๋ช…๋ น์–ด ์ถœ๋ ฅ์€ ์ผ๋ฐ˜ ํ…์ŠคํŠธ๋กœ ์‚ฝ์ž…๋˜๋ฉฐ ์ถ”๊ฐ€ !`<command>` ํ”Œ๋ ˆ์ด์Šคํ™€๋”์— ๋Œ€ํ•ด ๋‹ค์‹œ ์Šค์บ”๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ๋ช…๋ น์–ด๋Š” ๋‚˜์ค‘์˜ ํŒจ์Šค์—์„œ ํ™•์žฅํ•  ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋ฅผ ๋‚ด๋ณด๋‚ผ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ธ๋ผ์ธ ํ˜•์‹์€ !์ด ์ค„์˜ ์‹œ์ž‘ ๋˜๋Š” ๊ณต๋ฐฑ ์งํ›„์— ๋‚˜ํƒ€๋‚  ๋•Œ๋งŒ ์ธ์‹๋ฉ๋‹ˆ๋‹ค. !์ด KEY=!`cmd`์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ๋ฌธ์ž ๋’ค์— ์˜ค๋ฉด, ํ”Œ๋ ˆ์ด์Šคํ™€๋”๋Š” ๋ฆฌํ„ฐ๋Ÿด ํ…์ŠคํŠธ๋กœ ๋‚จ๊ฒจ์ง€๊ณ  ๋ช…๋ น์–ด๋Š” ์‹คํ–‰๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‹ค์ค‘ ๋ผ์ธ ๋ช…๋ น์–ด์˜ ๊ฒฝ์šฐ, ์ธ๋ผ์ธ ํ˜•์‹ ๋Œ€์‹  ```!๋กœ ์—ด๋ฆฐ ํŽœ์Šค ์ฝ”๋“œ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค:

## Environment
```!
node --version
npm --version
git status --short
```

์‚ฌ์šฉ์ž, ํ”„๋กœ์ ํŠธ, ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ์ถ”๊ฐ€ ๋””๋ ‰ํ† ๋ฆฌ ์†Œ์Šค์˜ skills ๋ฐ ์‚ฌ์šฉ์ž ์ •์˜ ๋ช…๋ น์–ด์— ๋Œ€ํ•ด ์ด ๋™์ž‘์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด, ์„ค์ •์—์„œ "disableSkillShellExecution": true๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ๋ช…๋ น์–ด๋Š” ์‹คํ–‰๋˜๋Š” ๋Œ€์‹  [shell command execution disabled by policy]๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. ๋ฒˆ๋“ค ๋ฐ ๊ด€๋ฆฌ skills๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ์„ค์ •์€ ์‚ฌ์šฉ์ž๊ฐ€ ์žฌ์ •์˜ํ•  ์ˆ˜ ์—†๋Š” ๊ด€๋ฆฌ ์„ค์ •์—์„œ ๊ฐ€์žฅ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

Subagent์—์„œ Skills ์‹คํ–‰

skill์„ ๊ฒฉ๋ฆฌ ์ƒํƒœ์—์„œ ์‹คํ–‰ํ•˜๋ ค๋ฉด frontmatter์— context: fork๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. skill ์ฝ˜ํ…์ธ ๋Š” subagent๋ฅผ ๊ตฌ๋™ํ•˜๋Š” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๋Œ€ํ™” ๊ธฐ๋ก์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Skills์™€ subagents๋Š” ๋‘ ๋ฐฉํ–ฅ์œผ๋กœ ํ•จ๊ป˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค:

์ ‘๊ทผ ๋ฐฉ์‹ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ ์ž‘์—… ๋˜ํ•œ ๋กœ๋“œ
context: fork๊ฐ€ ์žˆ๋Š” Skill ์—์ด์ „ํŠธ ์œ ํ˜•์—์„œ SKILL.md ์ฝ˜ํ…์ธ  CLAUDE.md, ์—์ด์ „ํŠธ๊ฐ€ Explore ๋˜๋Š” Plan์ธ ๊ฒฝ์šฐ ์ œ์™ธ
skills ํ•„๋“œ๊ฐ€ ์žˆ๋Š” Subagent Subagent์˜ markdown ๋ณธ๋ฌธ Claude์˜ ์œ„์ž„ ๋ฉ”์‹œ์ง€ ๋ฏธ๋ฆฌ ๋กœ๋“œ๋œ skills + CLAUDE.md

context: fork๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด skill์— ์ž‘์—…์„ ์ž‘์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•  ์—์ด์ „ํŠธ ์œ ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ์ œ๊ณต Explore ๋ฐ Plan ์—์ด์ „ํŠธ๋Š” ์ปจํ…์ŠคํŠธ๋ฅผ ์ž‘๊ฒŒ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด CLAUDE.md ๋ฐ git status๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ agent: Explore๋ฅผ ์‚ฌ์šฉํ•˜๋Š” forked skill์€ SKILL.md ์ฝ˜ํ…์ธ ์™€ ์—์ด์ „ํŠธ ์ž์ฒด์˜ ์‹œ์Šคํ…œ ํ”„๋กฌํ”„ํŠธ๋งŒ ๋ด…๋‹ˆ๋‹ค. ์—ญ๋ฐฉํ–ฅ(skills๋ฅผ ์ฐธ์กฐ ์ž๋ฃŒ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ์šฉ์ž ์ •์˜ subagent ์ •์˜)์€ Subagents๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์˜ˆ์ œ: Explore ์—์ด์ „ํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” Research Skill

์ด skill์€ forked Explore ์—์ด์ „ํŠธ์—์„œ ์—ฐ๊ตฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. skill ์ฝ˜ํ…์ธ ๋Š” ์ž‘์—…์ด ๋˜๊ณ , ์—์ด์ „ํŠธ๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค ํƒ์ƒ‰์— ์ตœ์ ํ™”๋œ ์ฝ๊ธฐ ์ „์šฉ ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค:

---
name: deep-research
description: Research a topic thoroughly
context: fork
agent: Explore
---

Research $ARGUMENTS thoroughly:

1. Find relevant files using Glob and Grep
2. Read and analyze the code
3. Summarize findings with specific file references

์ด skill์ด ์‹คํ–‰๋  ๋•Œ:

  1. ์ƒˆ๋กœ์šด ๊ฒฉ๋ฆฌ๋œ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  2. subagent๋Š” skill ์ฝ˜ํ…์ธ ๋ฅผ ํ”„๋กฌํ”„ํŠธ๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค("Research $ARGUMENTS thoroughly...").
  3. agent ํ•„๋“œ๋Š” ์‹คํ–‰ ํ™˜๊ฒฝ(๋ชจ๋ธ, ๋„๊ตฌ ๋ฐ ๊ถŒํ•œ)์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. ๊ฒฐ๊ณผ๋Š” ์š”์•ฝ๋˜์–ด ์ฃผ ๋Œ€ํ™”๋กœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

agent ํ•„๋“œ๋Š” ์‚ฌ์šฉํ•  subagent ๊ตฌ์„ฑ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์˜ต์…˜์—๋Š” ๊ธฐ๋ณธ ์ œ๊ณต ์—์ด์ „ํŠธ(Explore, Plan, general-purpose) ๋˜๋Š” .claude/agents/์˜ ๋ชจ๋“  ์‚ฌ์šฉ์ž ์ •์˜ subagent๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด general-purpose๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Claude์˜ Skill ์•ก์„ธ์Šค ์ œํ•œ

๊ธฐ๋ณธ์ ์œผ๋กœ Claude๋Š” disable-model-invocation: true๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์€ ๋ชจ๋“  skill์„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. allowed-tools๋ฅผ ์ •์˜ํ•˜๋Š” Skills๋Š” skill์ด ํ™œ์„ฑํ™”๋˜์—ˆ์„ ๋•Œ ์‚ฌ์šฉ์ž๋ณ„ ์Šน์ธ ์—†์ด Claude์—๊ฒŒ ์ด๋Ÿฌํ•œ ๋„๊ตฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ๊ถŒํ•œ ์„ค์ •์€ ์—ฌ์ „ํžˆ ๋‹ค๋ฅธ ๋ชจ๋“  ๋„๊ตฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ ์Šน์ธ ๋™์ž‘์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. /init, /review, /security-review๋ฅผ ํฌํ•จํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์ œ๊ณต ๋ช…๋ น์–ด๋„ Skill ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. /compact์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๊ธฐ๋ณธ ์ œ๊ณต ๋ช…๋ น์–ด๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Claude๊ฐ€ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋Š” skills๋ฅผ ์ œ์–ดํ•˜๋Š” ์„ธ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•:

/permissions์—์„œ Skill ๋„๊ตฌ๋ฅผ ๊ฑฐ๋ถ€ํ•˜์—ฌ ๋ชจ๋“  skills๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ฉ๋‹ˆ๋‹ค:

# Add to deny rules:
Skill

๊ถŒํ•œ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • skills๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค:

# Allow only specific skills
Skill(commit)
Skill(review-pr *)

# Deny specific skills
Skill(deploy *)

๊ถŒํ•œ ๊ตฌ๋ฌธ: ์ •ํ™•ํ•œ ์ผ์น˜๋Š” Skill(name), ๋ชจ๋“  ์ธ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ์ ‘๋‘์‚ฌ ์ผ์น˜๋Š” Skill(name *).

๊ฐœ๋ณ„ skills๋ฅผ ์ˆจ๊ธฐ๊ธฐ - frontmatter์— disable-model-invocation: true๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Claude์˜ ์ปจํ…์ŠคํŠธ์—์„œ skill์„ ์™„์ „ํžˆ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค.

์„ค์ •์—์„œ Skill ๊ฐ€์‹œ์„ฑ ์žฌ์ •์˜

skillOverrides ์„ค์ •์€ skill์˜ ์ž์ฒด frontmatter ๋Œ€์‹  ์„ค์ •์—์„œ skill ๊ฐ€์‹œ์„ฑ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ๊ณต์œ  ํ”„๋กœ์ ํŠธ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ฒดํฌ์ธ๋˜๊ฑฐ๋‚˜ MCP ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ SKILL.md๋ฅผ ํŽธ์ง‘ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์€ skills์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. /skills ๋ฉ”๋‰ด๊ฐ€ ์ด๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค: skill์„ ๊ฐ•์กฐํ•˜๊ณ  Space๋ฅผ ๋ˆŒ๋Ÿฌ ์ƒํƒœ๋ฅผ ์ˆœํ™˜ํ•œ ๋‹ค์Œ Enter๋ฅผ ๋ˆŒ๋Ÿฌ .claude/settings.local.json์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ํ‚ค๋Š” skill ์ด๋ฆ„์ด๊ณ  ๊ฐ ๊ฐ’์€ ๋‹ค์Œ ๋„ค ๊ฐ€์ง€ ์ƒํƒœ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค:

๊ฐ’ Claude์— ๋‚˜์—ด๋จ / ๋ฉ”๋‰ด์—์„œ
"on" ์ด๋ฆ„ ๋ฐ ์„ค๋ช… ์˜ˆ
"name-only" ์ด๋ฆ„๋งŒ ์˜ˆ
"user-invocable-only" ์ˆจ๊น€ ์˜ˆ
"off" ์ˆจ๊น€ ์ˆจ๊น€

skillOverrides์— ์—†๋Š” skill์€ "on"์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์ œ๋Š” ํ•œ skill์„ ์ด๋ฆ„์œผ๋กœ ์ถ•์†Œํ•˜๊ณ  ๋‹ค๋ฅธ skill์„ ์™„์ „ํžˆ ๋•๋‹ˆ๋‹ค:

{
  "skillOverrides": {
    "legacy-context": "name-only",
    "deploy": "off"
  }
}

ํ”Œ๋Ÿฌ๊ทธ์ธ skills์€ skillOverrides์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค. /plugin์„ ํ†ตํ•ด ์ด๋ฅผ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

Skills ํ‰๊ฐ€ ๋ฐ ๋ฐ˜๋ณต

skill์ด ํŠธ๋ฆฌ๊ฑฐ๋˜๋Š” ๊ฒƒ์„ ๋ณด๋Š” ๊ฒƒ์€ Claude๊ฐ€ ์ด๋ฅผ ์ฐพ์•˜๋‹ค๋Š” ๋œป์ด์ง€, ์˜๋„ํ•œ ๋Œ€๋กœ ์ž‘๋™ํ–ˆ๋‹ค๋Š” ๋œป์ด ์•„๋‹™๋‹ˆ๋‹ค. skill์ด ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด ๋‘ ๊ฐ€์ง€๋ฅผ ๋ณ„๋„๋กœ ์ธก์ •ํ•ฉ๋‹ˆ๋‹ค: Claude๊ฐ€ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ํ”„๋กฌํ”„ํŠธ์—์„œ ํ˜ธ์ถœํ•˜๋Š”์ง€ ์—ฌ๋ถ€, ๊ทธ๋ฆฌ๊ณ  ํ˜ธ์ถœํ•  ๋•Œ ์ถœ๋ ฅ์ด ์˜ˆ์ƒ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.

๋‘˜ ๋‹ค์— ๋Œ€ํ•œ ํ™•์ธ์€ ๊ธฐ์ค€์„  ๋น„๊ต์ž…๋‹ˆ๋‹ค. ๋ช‡ ๊ฐ€์ง€ ํ˜„์‹ค์ ์ธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ , skill์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•œ ์ƒˆ๋กœ์šด ์„ธ์…˜์—์„œ ๊ฐ๊ฐ์„ ์‹คํ–‰ํ•œ ๋‹ค์Œ ๋น„ํ™œ์„ฑํ™”๋œ ์ƒํƒœ์—์„œ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๊ณ , ๊ฒฐ๊ณผ๋ฅผ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์„ธ์…˜์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. skill ์ž‘์„ฑ์˜ ๋‚จ์€ ์ปจํ…์ŠคํŠธ๊ฐ€ ์ž‘์„ฑ๋œ ์ง€์นจ์˜ ๊ฐ„๊ฒฉ์„ ์ˆจ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

skill-creator๋กœ evals ์‹คํ–‰

skill-creator ํ”Œ๋Ÿฌ๊ทธ์ธ์€ Claude Code ๋‚ด์—์„œ ๋น„๊ต ๋ฃจํ”„๋ฅผ ์ž๋™ํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค:

/plugin install skill-creator@claude-plugins-official

Claude Code๊ฐ€ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค์—์„œ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค๊ณ  ๋ณด๊ณ ํ•˜๋ฉด, ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค๊ฐ€ ๋ˆ„๋ฝ๋˜์—ˆ๊ฑฐ๋‚˜ ์˜ค๋ž˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. /plugin marketplace update claude-plugins-official๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ƒˆ๋กœ ๊ณ ์น˜๊ฑฐ๋‚˜, ์•„์ง ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด /plugin marketplace add anthropics/claude-plugins-official๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ ์„ค์น˜๋ฅผ ๋‹ค์‹œ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

์„ค์น˜ ํ›„ /reload-plugins๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ˜„์žฌ ์„ธ์…˜์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ skills๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋‹ค์Œ Claude์—๊ฒŒ ๊ธฐ์กด skill์„ ํ‰๊ฐ€ํ•˜๋„๋ก ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด evaluate my summarize-changes skill with skill-creator. ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฃจํ”„๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค:

  • ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค: skill ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์˜ evals/evals.json์— ํ”„๋กฌํ”„ํŠธ, ์ž…๋ ฅ ํŒŒ์ผ ๋ฐ ์˜ˆ์ƒ ๋™์ž‘์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฒฉ๋ฆฌ๋œ ์‹คํ–‰: ๊ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋‹น subagent๋ฅผ ์ƒ์„ฑํ•˜๋ฏ€๋กœ ๊ฐ ์‹คํ–‰์ด ๊นจ๋—ํ•œ ์ปจํ…์ŠคํŠธ๋กœ ์‹œ์ž‘๋˜๊ณ , ํ† ํฐ ์ˆ˜์™€ ๊ธฐ๊ฐ„์„ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.
  • ์ฑ„์ : ๊ฐ ์–ด์„ค์…˜์„ ์ถœ๋ ฅ์— ๋Œ€ํ•ด ํ™•์ธํ•˜๊ณ  grading.json์— ์ฆ๊ฑฐ์™€ ํ•จ๊ป˜ ํ†ต๊ณผ ๋˜๋Š” ์‹คํŒจ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฒค์น˜๋งˆํฌ: skill ์žˆ์Œ ๋Œ€ skill ์—†์Œ์— ๋Œ€ํ•œ ํ†ต๊ณผ์œจ, ์‹œ๊ฐ„ ๋ฐ ํ† ํฐ์„ benchmark.json์— ์ง‘๊ณ„ํ•˜๋ฏ€๋กœ ํ† ํฐ ๋ฐ ์‹œ๊ฐ„ ์˜ค๋ฒ„ํ—ค๋“œ์— ๋Œ€ํ•œ ํ†ต๊ณผ์œจ ๊ฐœ์„ ์„ ๋น„๊ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฒ„์ „ ๋น„๊ต: skill์˜ ๋‘ ๋ฒ„์ „ ๊ฐ„์— ๋ธ”๋ผ์ธ๋“œ A/B๋ฅผ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ์ปค๋ฐ‹ํ•˜๊ธฐ ์ „์— ํŽธ์ง‘์ด ๊ฐœ์„ ์ธ์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์„ค๋ช… ํŠœ๋‹: ํŠธ๋ฆฌ๊ฑฐํ•ด์•ผ ํ•˜๊ณ  ํŠธ๋ฆฌ๊ฑฐํ•˜์ง€ ์•Š์•„์•ผ ํ•˜๋Š” ํ”„๋กฌํ”„ํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ํžˆํŠธ์œจ์„ ์ธก์ •ํ•˜๊ณ , skill์ด ์ž˜๋ชป๋œ ์š”์ฒญ์—์„œ ํ™œ์„ฑํ™”๋  ๋•Œ ์„ค๋ช… ํŽธ์ง‘์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฆฌ๋ทฐ ๋ทฐ์–ด: ๊ฐ ์ถœ๋ ฅ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์ด ์ฝ์„ ์ •์„ฑ์  ํ”ผ๋“œ๋ฐฑ์„ ๊ธฐ๋กํ•  ์ˆ˜ ์žˆ๋Š” HTML ๋ณด๊ณ ์„œ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

eval ํŒŒ์ผ ํ˜•์‹ ๋ฐ ์ „์ฒด ๋ฐ˜๋ณต ์›Œํฌํ”Œ๋กœ์šฐ๋Š” agentskills.io์˜ Evaluating skill output quality๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. ๋ฒค์น˜๋งˆํฌ ๋ฐ ๋น„๊ต ๋ชจ๋“œ์˜ ๋ฐฐ๊ฒฝ์€ skill-creator ๊ณต์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Skills ๊ณต์œ 

Skills๋Š” ๋Œ€์ƒ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ๋ฒ”์œ„์—์„œ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

  • ํ”„๋กœ์ ํŠธ skills: .claude/skills/๋ฅผ ๋ฒ„์ „ ์ œ์–ด์— ์ปค๋ฐ‹ํ•ฉ๋‹ˆ๋‹ค.
  • ํ”Œ๋Ÿฌ๊ทธ์ธ: ํ”Œ๋Ÿฌ๊ทธ์ธ์—์„œ skills/ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ๊ด€๋ฆฌ: ๊ด€๋ฆฌ ์„ค์ •์„ ํ†ตํ•ด ์กฐ์ง ์ „์ฒด์— ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

์‹œ๊ฐ์  ์ถœ๋ ฅ ์ƒ์„ฑ

Skills๋Š” ๋ชจ๋“  ์–ธ์–ด์˜ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฒˆ๋“คํ•˜๊ณ  ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ Claude์—๊ฒŒ ๋‹จ์ผ ํ”„๋กฌํ”„ํŠธ๋กœ ๊ฐ€๋Šฅํ•œ ๊ฒƒ ์ด์ƒ์˜ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•๋ ฅํ•œ ํŒจํ„ด ์ค‘ ํ•˜๋‚˜๋Š” ์‹œ๊ฐ์  ์ถœ๋ ฅ์„ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค: ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ด๋ฆฌ๋Š” ๋Œ€ํ™”ํ˜• HTML ํŒŒ์ผ๋กœ ๋ฐ์ดํ„ฐ ํƒ์ƒ‰, ๋””๋ฒ„๊น… ๋˜๋Š” ๋ณด๊ณ ์„œ ์ƒ์„ฑ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ด ์˜ˆ์ œ๋Š” ์ฝ”๋“œ๋ฒ ์ด์Šค ํƒ์ƒ‰๊ธฐ๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค: ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ™•์žฅ ๋ฐ ์ถ•์†Œํ•  ์ˆ˜ ์žˆ๋Š” ๋Œ€ํ™”ํ˜• ํŠธ๋ฆฌ ๋ณด๊ธฐ๋กœ, ํ•œ๋ˆˆ์— ํŒŒ์ผ ํฌ๊ธฐ๋ฅผ ๋ณด๊ณ , ์ƒ‰์ƒ์œผ๋กœ ํŒŒ์ผ ์œ ํ˜•์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Skill ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ:

mkdir -p ~/.claude/skills/codebase-visualizer/scripts

~/.claude/skills/codebase-visualizer/SKILL.md์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์„ค๋ช…์€ Claude์—๊ฒŒ ์ด Skill์„ ์–ธ์ œ ํ™œ์„ฑํ™”ํ• ์ง€ ์•Œ๋ ค์ฃผ๊ณ , ์ง€์นจ์€ Claude์—๊ฒŒ ๋ฒˆ๋“ค ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ๊ฒฝ๋กœ๋Š” ${CLAUDE_SKILL_DIR}๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ skill์ด ๊ฐœ์ธ, ํ”„๋กœ์ ํŠธ ๋˜๋Š” ํ”Œ๋Ÿฌ๊ทธ์ธ ์ˆ˜์ค€์—์„œ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํ•ด์„๋ฉ๋‹ˆ๋‹ค:

---
name: codebase-visualizer
description: Generate an interactive collapsible tree visualization of your codebase. Use when exploring a new repo, understanding project structure, or identifying large files.
allowed-tools: Bash(python3 *)
---

# Codebase Visualizer

Generate an interactive HTML tree view that shows your project's file structure with collapsible directories.

## Usage

Run the visualization script from your project root:

```bash
python3 ${CLAUDE_SKILL_DIR}/scripts/visualize.py .
```

This creates `codebase-map.html` in the current directory and opens it in your default browser.

## What the visualization shows

- **Collapsible directories**: Click folders to expand/collapse
- **File sizes**: Displayed next to each file
- **Colors**: Different colors for different file types
- **Directory totals**: Shows aggregate size of each folder

~/.claude/skills/codebase-visualizer/scripts/visualize.py์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด ์Šคํฌ๋ฆฝํŠธ๋Š” ๋””๋ ‰ํ† ๋ฆฌ ํŠธ๋ฆฌ๋ฅผ ์Šค์บ”ํ•˜๊ณ  ๋‹ค์Œ์„ ํฌํ•จํ•˜๋Š” ์ž์ฒด ํฌํ•จ HTML ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค:

  • ํŒŒ์ผ ์ˆ˜, ๋””๋ ‰ํ† ๋ฆฌ ์ˆ˜, ์ด ํฌ๊ธฐ ๋ฐ ํŒŒ์ผ ์œ ํ˜• ์ˆ˜๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ์š”์•ฝ ์‚ฌ์ด๋“œ๋ฐ”
  • ํŒŒ์ผ ์œ ํ˜•๋ณ„๋กœ ์ฝ”๋“œ๋ฒ ์ด์Šค๋ฅผ ๋ถ„์„ํ•˜๋Š” ๋ง‰๋Œ€ ์ฐจํŠธ(ํฌ๊ธฐ ๊ธฐ์ค€ ์ƒ์œ„ 8๊ฐœ)
  • ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ํ™•์žฅ ๋ฐ ์ถ•์†Œํ•  ์ˆ˜ ์žˆ๋Š” ์ถ•์†Œ ๊ฐ€๋Šฅํ•œ ํŠธ๋ฆฌ๋กœ, ์ƒ‰์ƒ์œผ๋กœ ์ฝ”๋”ฉ๋œ ํŒŒ์ผ ์œ ํ˜• ํ‘œ์‹œ๊ธฐ ํฌํ•จ

์Šคํฌ๋ฆฝํŠธ๋Š” Python 3์ด ํ•„์š”ํ•˜์ง€๋งŒ ๊ธฐ๋ณธ ์ œ๊ณต ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์„ค์น˜ํ•  ํŒจํ‚ค์ง€๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค:

#!/usr/bin/env python3
"""Generate an interactive collapsible tree visualization of a codebase."""

import json
import sys
import webbrowser
from html import escape
from pathlib import Path
from collections import Counter

IGNORE = {'.git', 'node_modules', '__pycache__', '.venv', 'venv', 'dist', 'build'}

def scan(path: Path, stats: dict) -> dict:
    result = {"name": path.name, "children": [], "size": 0}
    try:
        for item in sorted(path.iterdir()):
            if item.name in IGNORE or item.name.startswith('.'):
                continue
            if item.is_file():
                size = item.stat().st_size
                ext = item.suffix.lower() or '(no ext)'
                result["children"].append({"name": item.name, "size": size, "ext": ext})
                result["size"] += size
                stats["files"] += 1
                stats["extensions"][ext] += 1
                stats["ext_sizes"][ext] += size
            elif item.is_dir():
                stats["dirs"] += 1
                child = scan(item, stats)
                if child["children"]:
                    result["children"].append(child)
                    result["size"] += child["size"]
    except PermissionError:
        pass
    return result

def generate_html(data: dict, stats: dict, output: Path) -> None:
    ext_sizes = stats["ext_sizes"]
    total_size = sum(ext_sizes.values()) or 1
    sorted_exts = sorted(ext_sizes.items(), key=lambda x: -x[1])[:8]
    colors = {
        '.js': '#f7df1e', '.ts': '#3178c6', '.py': '#3776ab', '.go': '#00add8',
        '.rs': '#dea584', '.rb': '#cc342d', '.css': '#264de4', '.html': '#e34c26',
        '.json': '#6b7280', '.md': '#083fa1', '.yaml': '#cb171e', '.yml': '#cb171e',
        '.mdx': '#083fa1', '.tsx': '#3178c6', '.jsx': '#61dafb', '.sh': '#4eaa25',
    }
    lang_bars = "".join(
        f'<div class="bar-row"><span class="bar-label">{ext}</span>'
        f'<div class="bar" style="width:{(size/total_size)*100}%;background:{colors.get(ext,"#6b7280")}"></div>'
        f'<span class="bar-pct">{(size/total_size)*100:.1f}%</span></div>'
        for ext, size in sorted_exts
    )
    def fmt(b):
        if b < 1024: return f"{b} B"
        if b < 1048576: return f"{b/1024:.1f} KB"
        return f"{b/1048576:.1f} MB"

    html = f'''<!DOCTYPE html>
<html><head>
  <meta charset="utf-8"><title>Codebase Explorer</title>
  <style>
    body {{ font: 14px/1.5 system-ui, sans-serif; margin: 0; background: #1a1a2e; color: #eee; }}
    .container {{ display: flex; height: 100vh; }}
    .sidebar {{ width: 280px; background: #252542; padding: 20px; border-right: 1px solid #3d3d5c; overflow-y: auto; flex-shrink: 0; }}
    .main {{ flex: 1; padding: 20px; overflow-y: auto; }}
    h1 {{ margin: 0 0 10px 0; font-size: 18px; }}
    h2 {{ margin: 20px 0 10px 0; font-size: 14px; color: #888; text-transform: uppercase; }}
    .stat {{ display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #3d3d5c; }}
    .stat-value {{ font-weight: bold; }}
    .bar-row {{ display: flex; align-items: center; margin: 6px 0; }}
    .bar-label {{ width: 55px; font-size: 12px; color: #aaa; }}
    .bar {{ height: 18px; border-radius: 3px; }}
    .bar-pct {{ margin-left: 8px; font-size: 12px; color: #666; }}
    .tree {{ list-style: none; padding-left: 20px; }}
    details {{ cursor: pointer; }}
    summary {{ padding: 4px 8px; border-radius: 4px; }}
    summary:hover {{ background: #2d2d44; }}
    .folder {{ color: #ffd700; }}
    .file {{ display: flex; align-items: center; padding: 4px 8px; border-radius: 4px; }}
    .file:hover {{ background: #2d2d44; }}
    .size {{ color: #888; margin-left: auto; font-size: 12px; }}
    .dot {{ width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; }}
  </style>
</head><body>
  <div class="container">
    <div class="sidebar">
      <h1>๐Ÿ“Š Summary</h1>
      <div class="stat"><span>Files</span><span class="stat-value">{stats["files"]:,}</span></div>
      <div class="stat"><span>Directories</span><span class="stat-value">{stats["dirs"]:,}</span></div>
      <div class="stat"><span>Total size</span><span class="stat-value">{fmt(data["size"])}</span></div>
      <div class="stat"><span>File types</span><span class="stat-value">{len(stats["extensions"])}</span></div>
      <h2>By file type</h2>
      {lang_bars}
    </div>
    <div class="main">
      <h1>๐Ÿ“ {escape(data["name"])}</h1>
      <ul class="tree" id="root"></ul>
    </div>
  </div>
</body></html>'''
    output.write_text(html)

if __name__ == '__main__':
    target = Path(sys.argv[1] if len(sys.argv) > 1 else '.').resolve()
    stats = {"files": 0, "dirs": 0, "extensions": Counter(), "ext_sizes": Counter()}
    data = scan(target, stats)
    out = Path('codebase-map.html')
    generate_html(data, stats, out)
    print(f'Generated {out.absolute()}')
    webbrowser.open(f'file://{out.absolute()}')

ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ๋ชจ๋“  ํ”„๋กœ์ ํŠธ์—์„œ Claude Code๋ฅผ ์—ด๊ณ  "Visualize this codebase"๋ฅผ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค. Claude๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , codebase-map.html์„ ์ƒ์„ฑํ•˜๊ณ , ๋ธŒ๋ผ์šฐ์ €์—์„œ ์—ฝ๋‹ˆ๋‹ค.

์ด ํŒจํ„ด์€ ๋ชจ๋“  ์‹œ๊ฐ์  ์ถœ๋ ฅ์— ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค: ์ข…์†์„ฑ ๊ทธ๋ž˜ํ”„, ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ ๋ณด๊ณ ์„œ, API ๋ฌธ์„œ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์‹œ๊ฐํ™”. ๋ฒˆ๋“ค ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฌด๊ฑฐ์šด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ Claude๋Š” ์กฐ์œจ์„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ ํ•ด๊ฒฐ

Skill์ด ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š์Œ

Claude๊ฐ€ ์˜ˆ์ƒ๋Œ€๋กœ skill์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ:

  1. ์„ค๋ช…์— ์‚ฌ์šฉ์ž๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋งํ•  ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. skill์ด What skills are available?์— ๋‚˜ํƒ€๋‚˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ค๋ช…๊ณผ ๋” ๊ฐ€๊น๊ฒŒ ์ผ์น˜ํ•˜๋„๋ก ์š”์ฒญ์„ ๋‹ค์‹œ ํ‘œํ˜„ํ•ด๋ด…๋‹ˆ๋‹ค.
  4. skill์ด ์‚ฌ์šฉ์ž ํ˜ธ์ถœ ๊ฐ€๋Šฅํ•˜๋ฉด /skill-name์œผ๋กœ ์ง์ ‘ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค.

frontmatter YAML์ด ์ž˜๋ชป๋œ ํ˜•์‹์ด๋ฉด, Claude Code๋Š” skill ๋ณธ๋ฌธ์„ ๋นˆ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋กœ ๋กœ๋“œํ•˜๋ฏ€๋กœ /skill-name์€ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€๋งŒ Claude๋Š” ์ผ์น˜์‹œํ‚ฌ description์ด ์—†์Šต๋‹ˆ๋‹ค. --debug๋กœ ์‹คํ–‰ํ•˜์—ฌ ๊ตฌ๋ฌธ ๋ถ„์„ ์˜ค๋ฅ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Skill์ด ๋„ˆ๋ฌด ์ž์ฃผ ํŠธ๋ฆฌ๊ฑฐ๋จ

Claude๊ฐ€ ์›ํ•˜์ง€ ์•Š์„ ๋•Œ skill์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ:

  1. ์„ค๋ช…์„ ๋” ๊ตฌ์ฒด์ ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. ์ˆ˜๋™ ํ˜ธ์ถœ๋งŒ ์›ํ•˜๋ฉด disable-model-invocation: true๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

Skill ์„ค๋ช…์ด ์ž˜๋ฆผ

Claude Code๋Š” skill ์ด๋ฆ„๊ณผ ์„ค๋ช… ๋ชฉ๋ก์„ ์ปจํ…์ŠคํŠธ์— ๋กœ๋“œํ•˜์—ฌ Claude๊ฐ€ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ•ญ๋ชฉ์„ ์•Œ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ๋ก์—๋Š” ํ•ญ์ƒ ๋ชจ๋“  skill ์ด๋ฆ„์ด ํฌํ•จ๋˜์ง€๋งŒ, skill์ด ๋งŽ์œผ๋ฉด Claude Code๋Š” ์„ค๋ช…์„ ๋‹จ์ถ•ํ•˜์—ฌ ๋ชฉ๋ก์˜ ๋ฌธ์ž ์˜ˆ์‚ฐ์— ๋งž์ถ”๋ฉฐ, ์ด๋Š” Claude๊ฐ€ ์š”์ฒญ๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ‚ค์›Œ๋“œ๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‚ฐ์€ ๋ชจ๋ธ์˜ ์ปจํ…์ŠคํŠธ ์œˆ๋„์šฐ์˜ 1%์—์„œ ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค. ๋ชฉ๋ก์ด ์˜ˆ์‚ฐ์„ ์ดˆ๊ณผํ•˜๋ฉด, Claude Code๋Š” ๊ฐ€์žฅ ์ ๊ฒŒ ํ˜ธ์ถœํ•˜๋Š” skill๋ถ€ํ„ฐ ์„ค๋ช…์„ ์‚ญ์ œํ•˜๋ฏ€๋กœ ๊ฐ€์žฅ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” skill์€ ์ „์ฒด ํ…์ŠคํŠธ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

/doctor๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ชฉ๋ก์˜ ์ปจํ…์ŠคํŠธ ๋น„์šฉ ์ถ”์ •์น˜์™€ ๊ฐ€์žฅ ํฐ ๊ธฐ์—ฌ์ž๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ชฉ๋ก์ด ์˜ˆ์‚ฐ์„ ์ดˆ๊ณผํ•˜๋ฉด, Claude Code๋Š” --debug๋กœ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋””๋ฒ„๊ทธ ๋กœ๊ทธ์— ๊ฒฝ๊ณ ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

/context์˜ Skills ํ–‰์€ ์˜ˆ์‚ฐ์ด ์ ์šฉ๋œ ํ›„์˜ ๋ชฉ๋ก ํฌ๊ธฐ๋ฅผ ๋ณด๊ณ ํ•˜๋ฏ€๋กœ ๋ชจ๋ธ์ด ์ˆ˜์‹ ํ•˜๋Š” ๊ฒƒ๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. v2.1.196 ์ด์ „์—๋Š” ํ–‰์ด ๋ชจ๋“  ์„ค๋ช…์˜ ์ „์ฒด ํ…์ŠคํŠธ๋ฅผ ๊ณ„์‚ฐํ–ˆ์œผ๋ฏ€๋กœ ๊ตฌ์„ฑ๋œ ์˜ˆ์‚ฐ๋ณด๋‹ค ๋ช‡ ๋ฐฐ ๋” ํฐ ๊ฐ’์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‚ฐ์„ ๋†’์ด๋ ค๋ฉด skillListingBudgetFraction ์„ค์ •(์˜ˆ: 0.02 = 2%)์„ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ SLASH_COMMAND_TOOL_CHAR_BUDGET ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๊ณ ์ • ๋ฌธ์ž ์ˆ˜๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ skill์„ ์œ„ํ•ด ์˜ˆ์‚ฐ์„ ํ™•๋ณดํ•˜๋ ค๋ฉด skillOverrides์—์„œ ๋‚ฎ์€ ์šฐ์„ ์ˆœ์œ„ ํ•ญ๋ชฉ์„ "name-only"๋กœ ์„ค์ •ํ•˜์—ฌ ์„ค๋ช… ์—†์ด ๋‚˜์—ด๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์†Œ์Šค์—์„œ description ๋ฐ when_to_use ํ…์ŠคํŠธ๋ฅผ ์ž๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ์ฃผ์š” ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋จผ์ € ๋ฐฐ์น˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ํ•ญ๋ชฉ์˜ ๊ฒฐํ•ฉ๋œ ํ…์ŠคํŠธ๋Š” ์˜ˆ์‚ฐ๊ณผ ๊ด€๊ณ„์—†์ด 1,536์ž๋กœ ์ œํ•œ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด ์ œํ•œ์€ skillListingMaxDescChars๋กœ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๊ตฌ์„ฑ ๋””๋ฒ„๊น…: skill์ด ๋‚˜ํƒ€๋‚˜์ง€ ์•Š๊ฑฐ๋‚˜ ํŠธ๋ฆฌ๊ฑฐ๋˜์ง€ ์•Š๋Š” ์ด์œ  ์ง„๋‹จ
  • Skill ์ถœ๋ ฅ ํ’ˆ์งˆ ํ‰๊ฐ€: agentskills.io์˜ eval ํŒŒ์ผ ํ˜•์‹ ๋ฐ ๋ฐ˜๋ณต ์›Œํฌํ”Œ๋กœ์šฐ
  • Skill ์ž‘์„ฑ ๋ชจ๋ฒ” ์‚ฌ๋ก€: Claude ์ œํ’ˆ ์ „์ฒด์— ์ ์šฉ๋˜๋Š” ์ž‘์„ฑ ์ง€์นจ
  • Subagents: ํŠนํ™”๋œ ์—์ด์ „ํŠธ์— ์ž‘์—… ์œ„์ž„
  • ํ”Œ๋Ÿฌ๊ทธ์ธ: ๋‹ค๋ฅธ ํ™•์žฅ๊ณผ ํ•จ๊ป˜ skills ํŒจํ‚ค์ง• ๋ฐ ๋ฐฐํฌ
  • Hooks: ๋„๊ตฌ ์ด๋ฒคํŠธ ์ฃผ๋ณ€ ์›Œํฌํ”Œ๋กœ์šฐ ์ž๋™ํ™”
  • ๋ฉ”๋ชจ๋ฆฌ: ์ง€์†์ ์ธ ์ปจํ…์ŠคํŠธ๋ฅผ ์œ„ํ•œ CLAUDE.md ํŒŒ์ผ ๊ด€๋ฆฌ
  • ๋ช…๋ น์–ด: ๊ธฐ๋ณธ ์ œ๊ณต ๋ช…๋ น์–ด ๋ฐ ๋ฒˆ๋“ค skills ์ฐธ์กฐ
  • ๊ถŒํ•œ: ๋„๊ตฌ ๋ฐ skill ์•ก์„ธ์Šค ์ œ์–ด
  • Claude Tag skills: ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ปค๋ฐ‹๋œ ํ”„๋กœ์ ํŠธ skills๋Š” ํ•ด๋‹น ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๊ฐ€ Claude Tag ์ฑ„๋„์—์„œ ์‚ฌ์šฉ๋  ๋•Œ๋„ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค