- 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 | ํ๋ฌ๊ทธ์ธ ๋งค๋์ ์ ํ์ |
version | semantic 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