Loading...
    • 開発者ガイド
    • APIリファレンス
    • MCP
    • リソース
    • リリースノート
    Search...
    ⌘K
    最初のステップ
    Claudeの紹介クイックスタート
    モデルと価格
    モデル概要モデルの選択Claude 4.5の新機能Claude 4.5への移行モデルの廃止予定価格
    Claudeで構築
    機能概要Messages APIの使用コンテキストウィンドウプロンプトのベストプラクティス
    機能
    プロンプトキャッシングコンテキスト編集拡張思考エフォートストリーミングメッセージバッチ処理引用多言語対応トークンカウント埋め込みビジョンPDF対応Files API検索結果構造化出力
    ツール
    概要ツール使用の実装方法細粒度ツールストリーミングBashツールコード実行ツールプログラマティックツール呼び出しコンピュータ使用ツールテキストエディタツールWebフェッチツールWeb検索ツールメモリツールツール検索ツール
    エージェントスキル
    概要クイックスタートベストプラクティスAPIでスキルを使用
    Agent SDK
    概要クイックスタートTypeScript SDKTypeScript V2(プレビュー)Python SDK移行ガイド
    ストリーミング入力権限の処理フックで実行を制御セッション管理ファイルチェックポイントSDKの構造化出力Agent SDKのホスティングAIエージェントの安全なデプロイシステムプロンプトの変更SDKのMCPカスタムツールSDKのサブエージェントSDKのスラッシュコマンドSDKのエージェントスキルコストと使用状況の追跡ToDoリストSDKのプラグイン
    APIのMCP
    MCPコネクタリモートMCPサーバー
    サードパーティプラットフォームのClaude
    Amazon BedrockMicrosoft FoundryVertex AI
    プロンプトエンジニアリング
    概要プロンプトジェネレータプロンプトテンプレートの使用プロンプト改善ツール明確で直接的に例を使用(マルチショットプロンプティング)Claudeに考えさせる(CoT)XMLタグを使用Claudeに役割を与える(システムプロンプト)Claudeの応答を事前入力複雑なプロンプトをチェーン長いコンテキストのヒント拡張思考のヒント
    テストと評価
    成功基準の定義テストケースの開発評価ツールの使用レイテンシの削減
    ガードレールの強化
    ハルシネーションの削減出力の一貫性を向上ジェイルブレイクの軽減ストリーミング拒否プロンプトリークの削減Claudeをキャラクターのままに
    管理とモニタリング
    Admin API概要使用状況とコストAPIClaude Code Analytics API
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy
    ガイド

    SDK のプラグイン

    Agent SDK を通じてコマンド、エージェント、スキル、フックを使用してカスタムプラグインを読み込み、Claude Code を拡張します

    プラグインを使用すると、プロジェクト全体で共有できるカスタム機能を使用して Claude Code を拡張できます。Agent SDK を通じて、ローカルディレクトリからプログラムでプラグインを読み込んで、カスタムスラッシュコマンド、エージェント、スキル、フック、MCP サーバーをエージェントセッションに追加できます。

    プラグインとは何ですか?

    プラグインは Claude Code 拡張機能のパッケージであり、以下を含むことができます:

    • コマンド: カスタムスラッシュコマンド
    • エージェント: 特定のタスク用の特殊なサブエージェント
    • スキル: Claude が自律的に使用するモデル呼び出し機能
    • フック: ツール使用およびその他のイベントに応答するイベントハンドラー
    • MCP サーバー: Model Context Protocol 経由の外部ツール統合

    プラグイン構造とプラグインの作成方法に関する完全な情報については、プラグインを参照してください。

    プラグインの読み込み

    オプション設定でローカルファイルシステムパスを指定してプラグインを読み込みます。SDK は複数の場所から複数のプラグインを読み込むことをサポートしています。

    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    for await (const message of query({
      prompt: "Hello",
      options: {
        plugins: [
          { type: "local", path: "./my-plugin" },
          { type: "local", path: "/absolute/path/to/another-plugin" }
        ]
      }
    })) {
      // Plugin commands, agents, and other features are now available
    }

    パス指定

    プラグインパスは以下のいずれかです:

    • 相対パス: 現在の作業ディレクトリを基準に解決されます(例:"./plugins/my-plugin")
    • 絶対パス: ファイルシステムの完全なパス(例:"/home/user/plugins/my-plugin")

    パスはプラグインのルートディレクトリ(.claude-plugin/plugin.json を含むディレクトリ)を指す必要があります。

    プラグインインストールの確認

    プラグインが正常に読み込まれると、システム初期化メッセージに表示されます。プラグインが利用可能であることを確認できます:

    プラグインコマンドの使用

    プラグインからのコマンドは、競合を避けるためにプラグイン名で自動的に名前空間化されます。形式は plugin-name:command-name です。

    CLI 経由でプラグインをインストールした場合(例:/plugin install my-plugin@marketplace)、SDK でもそのインストールパスを指定することで使用できます。CLI でインストールされたプラグインについては ~/.claude/plugins/ を確認してください。

    完全な例

    プラグインの読み込みと使用を示す完全な例を以下に示します:

    プラグイン構造リファレンス

    プラグインディレクトリには .claude-plugin/plugin.json マニフェストファイルが含まれている必要があります。オプションで以下を含めることができます:

    my-plugin/
    ├── .claude-plugin/
    │   └── plugin.json          # Required: plugin manifest
    ├── commands/                 # Custom slash commands
    │   └── custom-cmd.md
    ├── agents/                   # Custom agents
    │   └── specialist.md
    ├── skills/                   # Agent Skills
    │   └── my-skill/
    │       └── SKILL.md
    ├── hooks/                    # Event handlers
    │   └── hooks.json
    └── .mcp.json                # MCP server definitions

    プラグイン作成の詳細については、以下を参照してください:

    • プラグイン - 完全なプラグイン開発ガイド
    • プラグインリファレンス - 技術仕様とスキーマ

    一般的なユースケース

    開発とテスト

    グローバルにインストールせずに開発中にプラグインを読み込みます:

    plugins: [
      { type: "local", path: "./dev-plugins/my-plugin" }
    ]

    プロジェクト固有の拡張機能

    チーム全体の一貫性のためにプロジェクトリポジトリにプラグインを含めます:

    plugins: [
      { type: "local", path: "./project-plugins/team-workflows" }
    ]

    複数のプラグインソース

    異なる場所からプラグインを組み合わせます:

    plugins: [
      { type: "local", path: "./local-plugin" },
      { type: "local", path: "~/.claude/custom-plugins/shared-plugin" }
    ]

    トラブルシューティング

    プラグインが読み込まれない

    プラグインが init メッセージに表示されない場合:

    1. パスを確認する: パスがプラグインルートディレクトリ(.claude-plugin/ を含む)を指していることを確認してください
    2. plugin.json を検証する: マニフェストファイルが有効な JSON 構文を持っていることを確認してください
    3. ファイルパーミッションを確認する: プラグインディレクトリが読み取り可能であることを確認してください

    コマンドが利用できない

    プラグインコマンドが機能しない場合:

    1. 名前空間を使用する: プラグインコマンドには plugin-name:command-name 形式が必要です
    2. init メッセージを確認する: コマンドが正しい名前空間で slash_commands に表示されていることを確認してください
    3. コマンドファイルを検証する: コマンドマークダウンファイルが commands/ ディレクトリにあることを確認してください

    パス解決の問題

    相対パスが機能しない場合:

    1. 作業ディレクトリを確認する: 相対パスは現在の作業ディレクトリから解決されます
    2. 絶対パスを使用する: 信頼性のために絶対パスの使用を検討してください
    3. パスを正規化する: パスユーティリティを使用してパスを正しく構築してください

    関連項目

    • プラグイン - 完全なプラグイン開発ガイド
    • プラグインリファレンス - 技術仕様
    • スラッシュコマンド - SDK でのスラッシュコマンドの使用
    • サブエージェント - 特殊なエージェントの操作
    • スキル - Agent Skills の使用
    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    for await (const message of query({
      prompt: "Hello",
      options: {
        plugins: [{ type: "local", path: "./my-plugin" }]
      }
    })) {
      if (message.type === "system" && message.subtype === "init") {
        // Check loaded plugins
        console.log("Plugins:", message.plugins);
        // Example: [{ name: "my-plugin", path: "./my-plugin" }]
    
        // Check available commands from plugins
        console.log("Commands:", message.slash_commands);
        // Example: ["/help", "/compact", "my-plugin:custom-command"]
      }
    }
    import { query } from "@anthropic-ai/claude-agent-sdk";
    
    // Load a plugin with a custom /greet command
    for await (const message of query({
      prompt: "/my-plugin:greet",  // Use plugin command with namespace
      options: {
        plugins: [{ type: "local", path: "./my-plugin" }]
      }
    })) {
      // Claude executes the custom greeting command from the plugin
      if (message.type === "assistant") {
        console.log(message.content);
      }
    }
    import { query } from "@anthropic-ai/claude-agent-sdk";
    import * as path from "path";
    
    async function runWithPlugin() {
      const pluginPath = path.join(__dirname, "plugins", "my-plugin");
    
      console.log("Loading plugin from:", pluginPath);
    
      for await (const message of query({
        prompt: "What custom commands do you have available?",
        options: {
          plugins: [
            { type: "local", path: pluginPath }
          ],
          maxTurns: 3
        }
      })) {
        if (message.type === "system" && message.subtype === "init") {
          console.log("Loaded plugins:", message.plugins);
          console.log("Available commands:", message.slash_commands);
        }
    
        if (message.type === "assistant") {
          console.log("Assistant:", message.content);
        }
      }
    }
    
    runWithPlugin().catch(console.error);