Claude Code: プラグインシステム
最終更新:2026-08-31
プラグインにより、Claude Code の能力をプラグイン可能にします — プラグインをインストールすれば新機能を獲得でき、コアコードを修正する必要はありません。
💡 ヒント: Claude Code のプラグインと MCP は2つの異なる拡張方法です。プラグインは Claude Code 自体の動作を変更し、MCP は外部への接続能力を拡張します。
📋 前提条件: 第13章 - SubAgents
1. 学ぶ内容
- プラグインシステムのアーキテクチャ
- 公式およびコミュニティプラグイン
- プラグインのインストールと管理
- プラグイン開発の基本
- プラグインと MCP の違い
2. プラグインシステムのアーキテクチャ
(1) プラグインの種類
| 種類 | 目的 | 例 |
|---|---|---|
| ツールプラグイン | 新しいツール/コマンドを追加 | コード分析ツール |
| フックプラグイン | 特定イベントでのカスタム動作 | コミット前の自動 lint |
| テーマプラグイン | 出力スタイルの変更 | カラー diff 表示 |
| 統合プラグイン | サードパーティサービスへの接続 | Jira 統合 |
(2) プラグインと MCP の比較
| 次元 | プラグイン | MCP |
|---|---|---|
| 拡張方向 | Claude Code の動作を変更 | 外部サービスに接続 |
| 実行場所 | Claude Code プロセス内 | 独立プロセス |
| 通信 | 直接関数呼び出し | プロトコル通信 |
| ユースケース | コマンドの追加、出力の変更 | データベース、API、ブラウザ |
| 開発難易度 | 中程度 | 低い |
3. 公式およびコミュニティプラグイン
(1) 公式プラグイン
| プラグイン | 機能 | インストール |
|---|---|---|
| claude-plugin-lint | 修正ファイルの自動 lint | claude plugin add lint |
| claude-plugin-test | 修正後の自動テスト実行 | claude plugin add test |
| claude-plugin-git | 強化された git 統合 | claude plugin add git |
| claude-plugin-doc | 自動ドキュメント生成 | claude plugin add doc |
(2) プラグイン管理
BASH
# インストール済みプラグインを確認
claude plugin list
# 公式プラグインをインストール
claude plugin add lint
# コミュニティプラグインをインストール
claude plugin add @community/claude-plugin-jira
# プラグインを無効化
claude plugin disable lint
# プラグインをアンインストール
claude plugin remove lint
# プラグインを更新
claude plugin update
▶ 例1:Lint プラグインのワークフロー
TEXT
📖 参照専用
# lint プラグインインストール後
> Refactor slugify function in src/utils/string.ts
Claude Code:
→ src/utils/string.ts を読み取り中
→ slugify 関数を修正中...
→ [lint plugin] 実行中: npm run lint -- --fix
→ [lint plugin] 1つの問題を発見:戻り値の型が未指定
→ 自動修正:string 戻り値型を追加
→ [lint plugin] All clean ✓
→ 実行中: npm test -- string.test.ts
✅ すべてのテストが合格
4. プラグインの設定
(1) グローバル設定
JSON
// ~/.claude/plugins.json
{
"plugins": [
{
"name": "lint",
"enabled": true,
"config": {
"runOnSave": true,
"fix": true
}
}
]
}
(2) プロジェクトレベルの設定
JSON
// .claude/plugins.json
{
"plugins": [
{
"name": "lint",
"config": {
"command": "npm run lint:fix",
"files": ["src/**/*.ts"]
}
}
]
}
5. プラグイン開発の基本
▶ 例2:シンプルなプラグイン
TYPESCRIPT
export default {
name: "my-custom-linter",
version: "1.0.0",
hooks: {
"after:file:write": async (context) => {
const { filePath } = context;
if (filePath.endsWith(".ts")) {
const { execSync } = require("child_process");
try {
execSync(`npx eslint --fix ${filePath}`, { stdio: "pipe" });
} catch (e) {
console.log(`[my-linter] Issues in ${filePath}`);
}
}
},
},
};
6. プラグインのベストプラクティス
| 原則 | 説明 |
|---|---|
| ミニマリズム | 必要なプラグインのみインストール |
| ソースの確認 | 公式を優先。コミュニティプラグインは監査 |
| 先にテスト | 新しいプラグインはテストプロジェクトで検証 |
| 定期整理 | 使用しないプラグインを削除 |
| 重複を避ける | 同種プラグインは競合する可能性 |
❓ よくある質問
Q プラグインか MCP か?
A 外部サービスへの接続(データベース、GitHub)には MCP を使用。Claude Code の動作の変更(自動 lint、カスタムコマンド)にはプラグインを使用。両者は共存可能。
Q プラグインが多すぎると遅くなりますか?
A はい。各プラグインは読み込み時間とメモリを使用します。必要なもののみインストールしてください。
Q コミュニティプラグインは安全ですか?
A 保証されません。インストール前にソースコードと作者の評判を確認してください。
Q 同種のプラグインを複数インストールできますか?
A 可能ですが競合する可能性があります。2つの lint プラグインは異なるルールを強制する場合があります。1種類につき1つを推奨。
📖 まとめ
- プラグインは Claude Code の動作を拡張、MCP は接続性を拡張
- 公式プラグイン:lint、test、git、doc
claude plugin add/removeで管理- プラグイン開発:インターフェース仕様に従いツールとフックを定義
- ミニマリズムの原則:必要なプラグインのみインストール
📝 練習問題
- 基本 (⭐): 公式 lint プラグインをインストールし、ファイル修正時の自動 lint を確認してください。
- 応用 (⭐⭐): 2つのプラグインをインストールして設定し、競合しないことを確認してください。
- 高度 (⭐⭐⭐): 各ファイル修正後に自動でフォーマットと lint を実行するカスタムプラグインを開発してください。