Claude Code: プラグインシステム

最終更新:2026-08-31

プラグインにより、Claude Code の能力をプラグイン可能にします — プラグインをインストールすれば新機能を獲得でき、コアコードを修正する必要はありません。

💡 ヒント: Claude Code のプラグインと MCP は2つの異なる拡張方法です。プラグインは Claude Code 自体の動作を変更し、MCP は外部への接続能力を拡張します。

📋 前提条件: 第13章 - SubAgents

1. 学ぶ内容


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つを推奨。

📖 まとめ


📝 練習問題

  1. 基本 (⭐): 公式 lint プラグインをインストールし、ファイル修正時の自動 lint を確認してください。
  2. 応用 (⭐⭐): 2つのプラグインをインストールして設定し、競合しないことを確認してください。
  3. 高度 (⭐⭐⭐): 各ファイル修正後に自動でフォーマットと lint を実行するカスタムプラグインを開発してください。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%