実践ガイド
Claude Code プラグインをゼロから作成:開発フロー、Marketplace への公開、チームコラボ設定、トラブルシューティングの完全ガイド
おさらい
前の記事では、Plugin のコア概念について学びました。Plugin は Claude Code のワークフローをパッケージ化して配布する仕組みであり、Commands、Skills、Agents、Hooks などのコンポーネントを一つにまとめて、チームでの共有やコミュニティへの配布を可能にします。本記事では実践的な視点から、作成から公開までの完全なフローを一緒に進めていきます。
最初の Plugin を作成する
ステップ 1:ディレクトリ構造を作成する
mkdir my-first-plugin
mkdir my-first-plugin/.claude-plugin
mkdir my-first-plugin/commandsステップ 2:プラグインマニフェストを作成する
.claude-plugin/plugin.json にプラグインのメタデータを定義します:
{
"name": "my-first-plugin",
"description": "我的第一个 Claude Code 插件",
"version": "1.0.0",
"author": {
"name": "Your Name"
}
}ステップ 3:スラッシュコマンドを追加する
commands/ ディレクトリに Markdown ファイルを作成します。各ファイルが一つのコマンドに対応します:
commands/hello.md:
---
description: 向用户发送友好的问候
---
# Hello 命令
请热情地问候用户,并询问今天可以帮助他们做什么。ステップ 4:プラグインをテストする
--plugin-dir フラグを使ってローカルのプラグインを読み込んでテストします:
claude --plugin-dir ./my-first-pluginClaude Code でコマンドを実行します:
/my-first-plugin:helloステップ 5:コマンド引数を追加する
コマンドはユーザーが入力した引数を受け取ることができます。hello.md を更新します:
---
description: 向指定用户发送个性化问候
---
# Hello 命令
请热情地问候名为 "$ARGUMENTS" 的用户,并询问今天可以帮助他们做什么。
如果用户没有提供名字,就使用"朋友"作为称呼。引数付きでコマンドをテストします:
/my-first-plugin:hello 小明サポートされる引数プレースホルダー:
$ARGUMENTS- すべてのユーザー入力$1,$2,$3- 個別の引数
コンポーネントを追加する
Skills を追加する
skills/ ディレクトリを作成します。各 Skill は SKILL.md を含むフォルダです:
my-first-plugin/
├── skills/
│ └── code-review/
│ └── SKILL.mdskills/code-review/SKILL.md:
---
name: code-review
description: 审查代码质量、安全性和可维护性
---
当审查代码时,请检查以下方面:
1. **代码组织**:结构是否清晰
2. **错误处理**:异常是否被妥善处理
3. **安全隐患**:是否存在安全漏洞
4. **测试覆盖**:关键逻辑是否有测试
输出格式:
- 严重问题(必须修复)
- 警告(建议修复)
- 建议(可以改进)Subagents を追加する
agents/ ディレクトリを作成します:
agents/code-reviewer.md:
---
name: code-reviewer
description: 专业的代码审查代理,用于代码质量检查
tools: Read, Grep, Glob, Bash
---
你是一位资深的代码审查专家。
当被调用时:
1. 运行 git diff 查看最近的更改
2. 分析修改的文件
3. 提供结构化的审查反馈
审查清单:
- 代码可读性和命名规范
- 错误处理和边界条件
- 安全漏洞(如注入、敏感信息泄露)
- 性能优化机会Hooks を追加する
Hooks を使うと、特定のイベントが発生した際にスクリプトを自動実行できます。hooks/hooks.json を作成します:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/format-code.sh"
}
]
}
]
}
}重要:${CLAUDE_PLUGIN_ROOT} 環境変数を使ってプラグインディレクトリ内のファイルを参照してください。こうすることで、プラグインがどこにインストールされてもパスが正しく解決されます。
対応するスクリプト scripts/format-code.sh を作成します:
#!/bin/bash
# 格式化代码
cd "$CLAUDE_PROJECT_DIR" && make format 2>/dev/null || true実行権限を付与することを忘れないでください:
chmod +x scripts/format-code.shMCP サーバーを追加する
プラグインが外部システムに接続する必要がある場合は、.mcp.json を作成します:
{
"mcpServers": {
"plugin-database": {
"command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
"args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
"env": {
"DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"
}
}
}
}完全な Plugin 構造
機能がフル装備された Plugin は次のような構造になります:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # 插件清单
├── commands/
│ ├── review.md # 代码审查命令
│ ├── deploy.md # 部署命令
│ └── test.md # 测试命令
├── agents/
│ ├── code-reviewer.md # 代码审查代理
│ └── debugger.md # 调试代理
├── skills/
│ └── code-standards/
│ └── SKILL.md # 代码规范知识
├── hooks/
│ └── hooks.json # 事件钩子配置
├── scripts/
│ ├── format-code.sh # 格式化脚本
│ └── run-tests.sh # 测试脚本
├── .mcp.json # MCP 配置
├── LICENSE
├── README.md
└── CHANGELOG.md対応する plugin.json:
{
"name": "dev-toolkit",
"version": "1.0.0",
"description": "开发者工具箱:代码审查、测试、部署一站式解决方案",
"author": {
"name": "Your Team",
"email": "team@example.com"
},
"homepage": "https://github.com/you/dev-toolkit",
"repository": "https://github.com/you/dev-toolkit",
"license": "MIT",
"keywords": ["development", "code-review", "deployment"],
"commands": "./commands/",
"agents": "./agents/",
"skills": "./skills/",
"hooks": "./hooks/hooks.json",
"mcpServers": "./.mcp.json"
}Marketplace に公開する
Marketplace とは
Marketplace は Plugin の配布センターです。「プラグインストア」と考えるとわかりやすいでしょう。ユーザーはシンプルなコマンドひとつで、あなたが公開したプラグインをインストールできます。
Marketplace 設定を作成する
GitHub リポジトリ内に .claude-plugin/marketplace.json を作成します:
{
"name": "my-marketplace",
"owner": {
"name": "Your Name",
"email": "you@example.com"
},
"plugins": [
{
"name": "dev-toolkit",
"source": "./plugins/dev-toolkit",
"description": "开发者工具箱",
"version": "1.0.0"
},
{
"name": "doc-generator",
"source": {
"source": "github",
"repo": "you/doc-generator-plugin"
},
"description": "文档生成工具"
}
]
}プラグインのソースタイプ
Marketplace は複数のソースタイプをサポートしています:
相対パス(同一リポジトリ内のプラグイン):
{
"name": "my-plugin",
"source": "./plugins/my-plugin"
}GitHub リポジトリ:
{
"name": "github-plugin",
"source": {
"source": "github",
"repo": "owner/plugin-repo"
}
}任意の Git リポジトリ:
{
"name": "git-plugin",
"source": {
"source": "url",
"url": "https://gitlab.com/team/plugin.git"
}
}公開フロー
-
GitHub リポジトリを作成する
-
コードをプッシュする:
git init git add . git commit -m "Initial release" git push origin main -
ユーザーがあなたの Marketplace を追加する:
/plugin marketplace add your-username/your-repo -
ユーザーがプラグインをインストールする:
/plugin install dev-toolkit@your-marketplace
Plugin のインストールと管理
インタラクティブメニューから
/pluginこれにより、プラグインの閲覧、インストール、有効化、無効化ができるインタラクティブなインターフェースが開きます。
コマンドラインから
Marketplace を追加する:
/plugin marketplace add owner/repo # GitHub
/plugin marketplace add https://example.com/marketplace.json # URL
/plugin marketplace add ./local-marketplace # 本地プラグインをインストールする:
# 安装到用户范围(默认)
/plugin install formatter@my-marketplace
# 安装到项目范围(团队共享)
/plugin install formatter@my-marketplace --scope project
# 安装到本地范围(gitignored)
/plugin install formatter@my-marketplace --scope localその他の管理コマンド:
/plugin enable <plugin> # 启用插件
/plugin disable <plugin> # 禁用插件
/plugin uninstall <plugin> # 卸载插件
/plugin update <plugin> # 更新插件プラグインの検証
公開前にプラグイン設定が正しいか検証します:
claude plugin validate .または Claude Code 内で:
/plugin validate .チームコラボレーション設定
プロジェクト内でプラグイン設定を共有する
プラグイン設定をバージョン管理にコミットすることで、チームメンバーが自動的に利用できるようになります:
.claude/settings.json:
{
"extraKnownMarketplaces": {
"company-tools": {
"source": {
"source": "github",
"repo": "your-org/claude-plugins"
}
}
},
"enabledPlugins": {
"code-formatter@company-tools": true,
"deployment-tools@company-tools": true
}
}チームメンバーがプロジェクトをクローンすると、これらのプラグインが自動的に利用可能になります。
エンタープライズ向け Marketplace 制限
厳格な管理が必要なエンタープライズ環境では、マネージド設定で許可する Marketplace を制限できます:
{
"strictKnownMarketplaces": [
{
"source": "github",
"repo": "company/approved-plugins"
}
]
}空の配列 [] に設定すると、外部プラグインを完全に無効化できます。
CLI コマンドリファレンス
| コマンド | 説明 |
|---|---|
/plugin | インタラクティブ管理画面を開く |
/plugin install <name>@<marketplace> | プラグインをインストール |
/plugin uninstall <name> | プラグインをアンインストール |
/plugin enable <name> | プラグインを有効化 |
/plugin disable <name> | プラグインを無効化 |
/plugin update <name> | プラグインを更新 |
/plugin validate . | 現在のディレクトリのプラグイン設定を検証 |
/plugin marketplace add <source> | Marketplace を追加 |
/plugin marketplace list | 追加済みの Marketplace を一覧表示 |
/plugin marketplace update | Marketplace キャッシュを更新 |
/plugin marketplace remove <name> | Marketplace を削除 |
ベストプラクティス
開発のベストプラクティス
- Skills は一つのことに集中させる:各 Skill は一つのことをしっかり行い、あれもこれもと詰め込まないようにしましょう
- 明確な説明を書く:Claude がコンポーネントをいつ使うべきか理解できるようにしましょう
- まずチーム内でテストする:コミュニティに配布する前に、チーム内で検証しましょう
- バージョン変更を記録する:CHANGELOG.md に各バージョンの変更内容を記録しましょう
ディレクトリ構造のベストプラクティス
commands/、agents/、skills/はプラグインのルートディレクトリに配置します.claude-plugin/ディレクトリにはplugin.jsonのみを配置します- プラグイン内のファイルを参照するには
${CLAUDE_PLUGIN_ROOT}を使用します ../を使ってプラグイン外のファイルにアクセスしないでください
Hooks のベストプラクティス
- スクリプトは実行可能にする:
chmod +x script.sh - shebang でインタープリターを宣言する:
#!/bin/bash ${CLAUDE_PLUGIN_ROOT}変数を使ってパスの正確性を確保する- Hook に統合する前にスクリプトを単独でテストする
バージョン管理のベストプラクティス
Semantic Versioning に従います:
- MAJOR (1.0.0 → 2.0.0):破壊的変更
- MINOR (1.0.0 → 1.1.0):新機能の追加(後方互換あり)
- PATCH (1.0.0 → 1.0.1):バグ修正(後方互換あり)
よくある問題のトラブルシューティング
| 問題 | 考えられる原因 | 解決策 |
|---|---|---|
| プラグインが読み込まれない | plugin.json のフォーマットエラー | claude plugin validate で検証する |
| コマンドが表示されない | ディレクトリ構造の誤り | commands/ がルートディレクトリにあり、.claude-plugin/ 内にないことを確認する |
| Hooks が発火しない | スクリプトに実行権限がない | chmod +x script.sh を実行する |
| パスが見つからない | 相対パスを使用している | ${CLAUDE_PLUGIN_ROOT} に変更する |
| MCP サーバーが失敗する | 環境変数が未設定 | .mcp.json 内のパス設定を確認する |
既存設定からの移行
すでに .claude/ ディレクトリに設定がある場合は、以下の手順で Plugin に移行できます:
-
Plugin 構造を作成する:
mkdir my-plugin/.claude-plugin -
plugin.json を作成する:
{ "name": "my-plugin", "description": "从现有配置迁移的插件", "version": "1.0.0" } -
既存ファイルをコピーする:
cp -r .claude/commands my-plugin/ cp -r .claude/agents my-plugin/ cp -r .claude/skills my-plugin/ -
Hooks を移行する:
.claude/settings.jsonからhooks設定をhooks/hooks.jsonにコピーします -
テストする:
claude --plugin-dir ./my-plugin
学習リソース
公式ドキュメント
| リソース | リンク | 説明 |
|---|---|---|
| Plugins Reference | code.claude.com/docs | プラグインリファレンスドキュメント |
| Create Plugins | code.claude.com/docs | プラグイン作成ガイド |
| Best Practices | Anthropic Engineering | 公式ベストプラクティス |
| Agent Skills 標準 | agentskills.io | オープンスタンダード仕様 |
公式リポジトリ
| リソース | リンク | 説明 |
|---|---|---|
| anthropics/skills | GitHub | 公式 Skills リポジトリ |
| anthropics/claude-plugins-official | GitHub | 公式プラグインカタログ |
| Docker MCP Toolkit | 公式サイト | 200 以上のプリビルト MCP |
コミュニティリソース
| リソース | リンク | 説明 |
|---|---|---|
| claude-plugins.dev | 公式サイト | コミュニティレジストリと CLI |
| awesome-claude-plugins | GitHub | 243 個のプラグインコレクション |
| awesome-claude-code | GitHub | ベストプラクティスまとめ |
| wshobson/agents | GitHub | 99 エージェント + 15 オーケストレーター |
| jeremylongshore チュートリアル | GitHub | 数百のプラグイン + Jupyter チュートリアル |
おすすめの記事
| 記事 | ソース |
|---|---|
| Understanding Claude Code: Skills vs Commands vs Subagents vs Plugins | Young Leaders Tech |
| Improving your coding workflow with Claude Code Plugins | Composio |
| Building My First Claude Code Plugin | Alexander Opalic |
今後の展望
Plugin の仕組みにより、Claude Code の拡張能力は飛躍的に向上しました。コミュニティの発展に伴い、今後は以下のような進化が期待されます:
- より豊かなプラグインエコシステム:さまざまな開発シナリオやワークフローをカバー
- エンタープライズ向け機能:より充実した権限管理と監査機能
- クロスプラットフォーム互換性:Skills のオープンスタンダードはすでに複数のベンダーに採用されています
今こそ参入する絶好のタイミングです。シンプルなコマンドから始めて、徐々に Skills や Hooks を追加し、最終的に完全なワークフローソリューションを構築していきましょう。
Plugin に含めることができる Subagent コンポーネントについて詳しく知りたい場合は、《Claude Code Subagent とは》をご覧ください。