• Skills, Agents, Hooks, MCP ์„œ๋ฒ„ ๋“ฑ์„ ํ•˜๋‚˜์˜ ํŒจํ‚ค์ง€๋กœ ๋ฌถ์–ด ๋ฐฐํฌํ•˜๋Š” ํ™•์žฅ ์‹œ์Šคํ…œ
  • ํ”„๋กœ์ ํŠธ/ํŒ€/์ปค๋ฎค๋‹ˆํ‹ฐ ๊ฐ„์— ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํ˜•ํƒœ๋กœ ๊ณต์œ  ๊ฐ€๋Šฅ
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค(/plugin-name:skill-name)๋กœ ์ถฉ๋Œ ์—†์ด ์—ฌ๋Ÿฌ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋™์‹œ ์‚ฌ์šฉ

ํ•ด๋‹น ๊ฐœ๋…์ด ํ•„์š”ํ•œ ์ด์œ 

  • ๊ณต์œ  & ์žฌ์‚ฌ์šฉ: ํ•œ ๋ฒˆ ๋งŒ๋“  ์›Œํฌํ”Œ๋กœ์šฐ๋ฅผ ํŒ€ ์ „์ฒด ๋˜๋Š” ์ปค๋ฎค๋‹ˆํ‹ฐ์— ๋ฐฐํฌ
  • ๋ฒ„์ „ ๊ด€๋ฆฌ: semantic versioning์œผ๋กœ ์—…๋ฐ์ดํŠธ ์ถ”์ 
  • ์ถฉ๋Œ ๋ฐฉ์ง€: ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ธฐ๋ฐ˜์ด๋ผ ๋™๋ช… ์Šคํ‚ฌ์ด ์žˆ์–ด๋„ ์•ˆ์ „
  • ์˜ฌ์ธ์› ํŒจํ‚ค์ง•: ์Šคํ‚ฌ + ์—์ด์ „ํŠธ + ํ›… + MCP ์„œ๋ฒ„๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์Œ

AS-IS (Plugin ์—†์ด = Standalone)

# ํŒ€์› A๊ฐ€ ๋งŒ๋“  ์ปค์Šคํ…€ ์„ค์ • (Standalone = .claude/ ์ง์ ‘ ์„ค์ •)
~/.claude/skills/review-pr/SKILL.md
~/.claude/settings.json (hooks)
~/.claude/agents/code-reviewer.md

# ํŒ€์› B์—๊ฒŒ ๊ณต์œ ํ•˜๋ ค๋ฉด?
โ†’ ํŒŒ์ผ์„ ํ•˜๋‚˜ํ•˜๋‚˜ ๋ณต์‚ฌ
โ†’ settings.json ์ˆ˜๋™ ๋จธ์ง€
โ†’ ๊ฒฝ๋กœ ์ฐจ์ด๋กœ ๋™์ž‘ ์•ˆ ํ•จ
โ†’ ๋ฒ„์ „ ๊ด€๋ฆฌ ๋ถˆ๊ฐ€

TO-BE (Plugin ์‚ฌ์šฉ)

# ํ•˜๋‚˜์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ํŒจํ‚ค์ง•
my-plugin/
โ”œโ”€โ”€ .claude-plugin/
โ”‚   โ””โ”€โ”€ plugin.json          # ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
โ”œโ”€โ”€ skills/
โ”‚   โ””โ”€โ”€ review-pr/SKILL.md   # ์Šคํ‚ฌ
โ”œโ”€โ”€ agents/
โ”‚   โ””โ”€โ”€ code-reviewer.md     # ์—์ด์ „ํŠธ
โ”œโ”€โ”€ hooks/
โ”‚   โ””โ”€โ”€ hooks.json           # ํ›…
โ””โ”€โ”€ .mcp.json                # MCP ์„œ๋ฒ„

# ํŒ€์› B๋Š” ํ•œ ์ค„๋กœ ์„ค์น˜
/plugin install marketplace-url

Standalone vs Plugin

Standalone(๋‹จ๋… ์„ค์ •)์ด๋ž€ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ํŒจํ‚ค์ง•ํ•˜์ง€ ์•Š๊ณ , .claude/ ๋””๋ ‰ํ† ๋ฆฌ์— ์ง์ ‘ ๋‘๋Š” ์„ค์ • ํŒŒ์ผ๋“ค์„ ๋งํ•œ๋‹ค. ์˜ˆ: .claude/skills/, .claude/agents/, .claude/settings.json์˜ hooks. ํ•ด๋‹น ํ”„๋กœ์ ํŠธ ๋˜๋Š” ํ•ด๋‹น ์‚ฌ์šฉ์ž(~/.claude/)์—์„œ๋งŒ ๋™์ž‘ํ•˜๋ฉฐ, ๋ณ„๋„ ์„ค์น˜/๋ฐฐํฌ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด ์—†๋‹ค.

ํ•ญ๋ชฉStandalone (.claude/)Plugin
์Šคํ‚ฌ๋ช…/hello/plugin-name:hello
์ ์šฉ ๋ฒ”์œ„ํ•œ ํ”„๋กœ์ ํŠธ์„ค์น˜ํ•œ ๋ชจ๋“  ๊ณณ
๊ณต์œ ์ˆ˜๋™ ํŒŒ์ผ ๋ณต์‚ฌmarketplace ๋˜๋Š” --plugin-dir
๋ฒ„์ „ ๊ด€๋ฆฌ์—†์Œsemantic versioning
์ ํ•ฉํ•œ ๊ฒฝ์šฐ๊ฐœ์ธ ์›Œํฌํ”Œ๋กœ์šฐ, ๋น ๋ฅธ ์‹คํ—˜ํŒ€ ๊ณต์œ , ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ฐฐํฌ

ํ”Œ๋Ÿฌ๊ทธ์ธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ

my-plugin/
โ”œโ”€โ”€ .claude-plugin/       # plugin.json๋งŒ ์œ„์น˜ (ํ•„์ˆ˜)
โ”‚   โ””โ”€โ”€ plugin.json       # ๋งค๋‹ˆํŽ˜์ŠคํŠธ (์ด๋ฆ„, ๋ฒ„์ „, ์„ค๋ช…)
โ”œโ”€โ”€ commands/             # ์Šฌ๋ž˜์‹œ ์ปค๋งจ๋“œ (Markdown)
โ”œโ”€โ”€ skills/               # Agent Skills (SKILL.md)
โ”œโ”€โ”€ agents/               # ์ปค์Šคํ…€ Subagent ์ •์˜
โ”œโ”€โ”€ hooks/                # hooks.json (์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ)
โ”œโ”€โ”€ .mcp.json             # MCP ์„œ๋ฒ„ ์„ค์ •
โ””โ”€โ”€ .lsp.json             # LSP ์„œ๋ฒ„ ์„ค์ •

.claude-plugin/ ์•ˆ์—๋Š” plugin.json๋งŒ. commands/, agents/ ๋“ฑ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฃจํŠธ์— ์œ„์น˜ํ•ด์•ผ ํ•จ.

plugin.json ๋งค๋‹ˆํŽ˜์ŠคํŠธ

{
  "name": "my-plugin",
  "description": "์ฝ”๋“œ ๋ฆฌ๋ทฐ ์ž๋™ํ™” ํ”Œ๋Ÿฌ๊ทธ์ธ",
  "version": "1.0.0",
  "author": {
    "name": "Your Name"
  }
}
ํ•„๋“œ์šฉ๋„
name๊ณ ์œ  ์‹๋ณ„์ž ๊ฒธ ์Šคํ‚ฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค (/name:skill)
descriptionํ”Œ๋Ÿฌ๊ทธ์ธ ๋งค๋‹ˆ์ €์— ํ‘œ์‹œ
versionsemantic versioning
author์„ ํƒ. ํฌ๋ ˆ๋”ง ํ‘œ์‹œ์šฉ

ํŒ€์— ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ณต์œ ํ•˜๋Š” ๋ฐฉ๋ฒ•

๋ฐฉ๋ฒ• 1: Git ๋ ˆํฌ์— ํ”Œ๋Ÿฌ๊ทธ์ธ ํด๋” ์ปค๋ฐ‹ (๊ฐ€์žฅ ๊ฐ„๋‹จ)

my-project/
โ”œโ”€โ”€ .claude-plugins/           # ํŒ€ ๊ณต์œ  ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ชจ์Œ
โ”‚   โ””โ”€โ”€ team-workflows/
โ”‚       โ”œโ”€โ”€ .claude-plugin/
โ”‚       โ”‚   โ””โ”€โ”€ plugin.json
โ”‚       โ”œโ”€โ”€ skills/
โ”‚       โ”‚   โ””โ”€โ”€ review-pr/SKILL.md
โ”‚       โ””โ”€โ”€ hooks/
โ”‚           โ””โ”€โ”€ hooks.json
โ”œโ”€โ”€ src/
โ””โ”€โ”€ ...

ํŒ€์›์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ:

claude --plugin-dir ./.claude-plugins/team-workflows

๋ฐฉ๋ฒ• 2: ๋งˆ์ผ“ํ”Œ๋ ˆ์ด์Šค ํ™œ์šฉ (๊ณต์‹ ๋ฐฐํฌ)

# ํŒ€์›์€ Claude Code์—์„œ ์„ค์น˜
/plugin install <marketplace-url>

๋ฐฉ๋ฒ• 3: ๊ณต์œ  ๋ ˆํฌ (๊ฐ„ํŽธ ๊ณต์œ )

# ํŒ€ ๊ณต์œ  ๋ ˆํฌ๋ฅผ clone
git clone git@github.com:team/claude-plugins.git ~/team-plugins
 
# ๊ฐ์ž ๋กœ๋“œ
claude --plugin-dir ~/team-plugins/team-workflows

ํ•ต์‹ฌ์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋””๋ ‰ํ† ๋ฆฌ ๊ตฌ์กฐ๋งŒ ๋งž์œผ๋ฉด (.claude-plugin/plugin.json ์กด์žฌ), ์–ด๋””์— ๋‘๋“  --plugin-dir๋กœ ๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค.

๋กœ์ปฌ ํ…Œ์ŠคํŠธ

# ๋‹จ์ผ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋กœ๋“œ
claude --plugin-dir ./my-plugin
 
# ๋ณต์ˆ˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋™์‹œ ๋กœ๋“œ
claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

๊ธฐ์กด Standalone ์„ค์ •์„ ํ”Œ๋Ÿฌ๊ทธ์ธ์œผ๋กœ ๋ณ€ํ™˜

# 1. ํ”Œ๋Ÿฌ๊ทธ์ธ ๊ตฌ์กฐ ์ƒ์„ฑ
mkdir -p my-plugin/.claude-plugin
 
# 2. plugin.json ์ž‘์„ฑ
echo '{"name":"my-plugin","version":"1.0.0"}' > my-plugin/.claude-plugin/plugin.json
 
# 3. ๊ธฐ์กด ํŒŒ์ผ ๋ณต์‚ฌ
cp -r .claude/commands my-plugin/
cp -r .claude/agents my-plugin/
cp -r .claude/skills my-plugin/
 
# 4. hooks ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (settings.json โ†’ hooks/hooks.json)
mkdir my-plugin/hooks
# settings.json์˜ hooks ๊ฐ์ฒด๋ฅผ hooks.json์œผ๋กœ ์ด๋™
 
# 5. ํ…Œ์ŠคํŠธ
claude --plugin-dir ./my-plugin

์ฐธ๊ณ  ๋ฌธ์„œ