intellij-platform-sdk について
intellij-platform-sdkは、最新のIntelliJ Platform v2 SDKを使ったプラグイン開発向けスキルです。セットアップ、プラットフォームAPI、言語機能、テスト、公開、MCP連携をテーマ別の資料で案内します。
主な機能
- 01プラグイン設定と記述子のガイド
- 02プラットフォームAPIと実装パターン
- 03言語ツールとコード解析
- 04UI、設定、ツールウィンドウ
- 05テストとMarketplace公開
- 06MCP連携のリファレンス
活用シーン
- 01IntelliJ Platformプラグインの作成
- 02インスペクションや言語サポートの実装
- 03プラグインへのMCPツールやツールセットの追加
- 04プラグインのテストと公開準備
MCP 対応
IntelliJ PlatformプラグインでMCPツールを提供し、ツールセットを定義するための資料を備えています。com.intellij.mcpServer.*などのMCP関連拡張ポイントも扱います。
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ gadfly3173/ intellij-platform-sdk-skills --skill intellij-platform-sdkインストール後、Claude Code で/intellij-platform-sdkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/code_samples.mdcompatibility.mdexecution-and-run-configs.mdextension_points.mdgetting-started.mdicons.mdlanguage-support-and-analysis.mdlsp.mdmcp-and-ai-integration.mdpatterns.mdplatform-basics.mdplugin-registration.mdpsi-and-indexing.mdsplit-mode-rpc.mdtemplates.mdtesting-and-publishing.mdthemes.mdtroubleshooting-build-runtime.mdtroubleshooting-psi-ui-testing.mdtroubleshooting.mdui-settings-and-toolwindows.mdwebview-jcef.mdworkspace-model.md詳細
IntelliJ Platform SDK スキル
モダンな v2 SDK に基づく IntelliJ Platform プラグイン開発には、このスキルを使用してください。
このスキルは、メインファイルを小さく保ち、タスクに関連する資料だけをモデルが読み込めるよう、目的別のリファレンスに分割されています。
このスキルでできること
- IntelliJ Platform プラグインの作成や更新
build.gradle.kts、settings.gradle.kts、plugin.xmlの設定- アクション、サービス、ツールウィンドウ、設定、通知の実装
- PSI、参照、インデックス作成、VFS、ダムモードの操作
- カスタム言語サポートの構築
- インスペクション、インテンション、クイックフィックス、コード補完、フォーマット、ドキュメントの実装
- 実行構成、プログラムランナー、実行コンソールの実装
- ライブテンプレート、ファイルテンプレート、後置補完の提供
- IDE テーマや配色の作成・拡張
- プラグイン開発での Language Server(LSP)の統合
- MCP ツールやツールセットの提供
- プラグインのテストと Marketplace での公開準備
- バージョン互換性への対応と Gradle プラグインの移行
このスキルの使い方
まず、ユーザーの実際のタスクを特定してください。その後、関連するリファレンスファイルだけを読みます。
タスクが以下に関する場合は references/getting-started.md を読んでください
- 新しい IntelliJ Platform プラグインプロジェクトの作成
- プラグインプロジェクト向けの IntelliJ Platform Gradle Plugin 2.x のセットアップ
- プラグイン開発で対象とする IDE やバンドルプラグインの選択
plugin.xmlでのオプションのプラグイン/モジュール依存関係の追加(<depends>の全仕様についてはplugin-registration.mdも参照)- プラグインプロジェクトの
plugin.xmlメタデータの作成や修正(概要については、完全な要素/属性リファレンスを記載したplugin-registration.mdを参照)
タスクが以下に関する場合は references/plugin-registration.md を読んでください
plugin.xml記述子の構造の作成や修正<idea-plugin>ルート属性(url、require-restart)- メタデータ要素(
<id>、<name>、<vendor>、<description>、<change-notes>、<product-descriptor>) <idea-version>の since/until/strict-until-build と Gradle のpluginConfigurationの関係<depends>の必須/任意、config-fileのマージ仕様、追加の記述子の命名、<incompatible-with>- 宣言型リスナー(
<applicationListeners>/<projectListeners>の<listener>属性) <actions>のすべてのサブ要素(<add-to-group>、<mouse-shortcut>、<override-text>、<synonym>、<abbreviation>、<reference>、<separator>)<extensionPoint>のqualifiedName/area/<with>と、<extensions>のid/order/osの基本属性<resource-bundle>、<xi:include>、サービス登録 XML(testServiceImplementation/headlessImplementation)- 動的プラグイン登録の要件、
require-restart、有料プラグインの制限 - プラグインロゴファイルの配置(
pluginIcon.svg/pluginIcon_dark.svg)
タスクが以下に関する場合は references/platform-basics.md を読んでください
AnAction、アクショングループ、メニュー、ツールバー- サービス(
@Service、プロジェクト/アプリケーション/モジュールサービス) - ロギング(
Logger、logger<T>()、thisLogger()) - バックグラウンドタスク(
Task.Backgroundable、ProgressManager、ProgressIndicator) - 更新のデバウンスとバッチ処理(
DebouncedUpdates、2026.2 以降) - Virtual File System(
VirtualFile、VFS リスナー) - スレッド処理、読み取り/書き込みアクション、ダムモード、モダリティ
- プラグインでの Kotlin コルーチンのパターン(
readAction、writeAction、CoroutineScope) - 動的なプラグインの読み込み/アンロード
- Disposable のライフサイクル管理
- メッセージング基盤(
MessageBus、Topic) - 一般的なプラグインアーキテクチャの判断
- 分割モードの概念とモジュール型プラグインの構成(RPC/フロントエンドとバックエンドの詳細については
split-mode-rpc.mdを参照) - Workspace Model の概要(API リファレンス全体については
workspace-model.mdを参照)
タスクが以下に関する場合は、references/split-mode-rpc.md を読んでください
- 分割/リモート開発用のプラグインモジュール(共有/フロントエンド/バックエンド)のセットアップ
@Rpcインターフェース、RemoteApi、RemoteApiProviderService、サイド間通信のためのdurable {}- フロントエンド、バックエンド、共有のどこに各 API を配置するか
- 分割モードにおける PSI/インデックス/VFS/実行の制約
- シリアライズ可能な ID 型(
ProjectId、VirtualFileId、EditorId) - バックエンドからフロントエンドへのプッシュに使うリモートトピック(
ApplicationRemoteTopic/ProjectRemoteTopic) - DTO のパターンと
kotlinx-serializationのバージョン互換性 - Gradle の分割モード設定(各サイドの
splitMode、pluginInstallationTarget、bundledModule) - 分割モードのデバッグ(
runIdeBackend/runIdeFrontend、レイテンシのエミュレーション)
タスクが以下に関する場合は、references/workspace-model.md を読んでください
WorkspaceModel.getInstance(project).currentSnapshotを使ったプロジェクト構造の読み取りworkspaceModel.update("label") { builder -> ... }によるエンティティの変更- 外部システムからのプロジェクト構造の一括置換(
replaceBySource()) @EntityPropertyを使ったカスタム@Entity型の宣言- エンティティソース(
JpsFileEntitySource、ExternalEntitySource、GradleEntitySource) WorkspaceModelTopics.CHANGEDによるイベントのリスニング- Workspace Model エンティティと従来の
Module/Library/FacetAPI の連携 - エンティティ間参照のための
VirtualFileUrlとSymbolicEntityId
タスクが以下に関する場合は、references/psi-and-indexing.md を読んでください
- PSI の走査または変更
- 参照、解決、名前変更、使用箇所の検索、安全な削除
- PSI ファクトリーを使ったコード生成
- ファイルベースのインデックス、スタブインデックス、gists
- ファイルビュー・プロバイダー(単一ファイル内の複数言語の PSI ツリー)
IndexNotReadyException、ダムモード、PSI のパフォーマンス- PSI クックブック(Java 固有の一般的な操作)
CachedValuesManagerによるキャッシュ
タスクが以下に関する場合は、references/language-support-and-analysis.md を読んでください
- カスタム言語プラグイン
- レキサー、パーサー、
ParserDefinition - 構文ハイライト、アノテーター、コード補完
- インスペクション、インテンション、クイックフィックス
- 名前変更リファクタリング、名前変更の検証、安全な削除
- フォーマッター、折りたたみ、構造ビュー、ドキュメント・プロバイダー
- パラメーター情報、スペルチェック、ナビゲーションバーとの統合
- インレイヒント、コードビジョン
- 言語インジェクション
- Symbols API と宣言/参照モデル
- Web フレームワークのメタデータ向け Poly Symbols と Web Types
- DocumentationTarget API
OptPane、宣言型のインスペクションオプション、OptionController- コード補完/参照コントリビューター向けの要素パターン(
PlatformPatterns、PsiElementPattern) - 配色の管理、
TextAttributesKeyの依存チェーン
タスクが以下に関する場合は、references/ui-settings-and-toolwindows.md を読んでください
- Kotlin UI DSL v2(
panel { row { } }、BoundConfigurable) - ダイアログと IntelliJ UI コンポーネント
- ツールウィンドウ
- 設定/構成可能項目(親 ID/設定グループの階層を含む)
- 永続状態
- 通知
- ポップアップ(
JBPopup、ListPopup、選択ポップアップ) - 新規プロジェクトウィザード、モジュールタイプ、プロジェクトビューとの統合
- ステータスバーウィジェット
- エディター通知バナー
- 機密データの永続化(
PasswordSafe) - 埋め込みエディターコンポーネント(
EditorTextField) - 国際化(i18n)とローカライズ
- アクセシビリティ(キーボード操作、スクリーンリーダー)
- プラグインの UX 原則
タスクが以下に関する場合は、references/testing-and-publishing.md を読んでください
- テストフィクスチャとプラグインのテスト
- 統合テストまたは UI テスト
- Starter/Driver ベースのテストセットアップ
- パーサー/コード補完/インスペクションのテスト
- プラグインベリファイア
verifyPluginProjectConfiguration/verifyPluginStructure- Marketplace への署名と公開
タスクが以下に関する場合は、references/compatibility.md を読んでください
- ビルドの互換性
sinceBuild/untilBuild- レガシー Gradle プラグイン 1.x から 2.x への移行
- プラットフォームバージョン間の API 変更
- Java/Kotlin のバージョン要件
- Workspace Model の移行または新しいプラットフォーム API への移行
タスクが以下に関する場合は、references/extension_points.md を読んでください
- 正確な
plugin.xml登録構文 - 適切な拡張ポイントの特定
- アクショングループ ID と XML パターン
com.intellij.mcpServer.*などの MCP 拡張ポイント
タスクが以下に関する場合は、references/code_samples.md を読んでください
- 最も近い公式 SDK サンプルを探す
- 公式の実装パターンをコピーする
- JetBrains の各サンプルが示す内容を理解する
タスクが以下に関する場合は、references/lsp.md を読んでください
- IntelliJ Platform プラグインへの Language Server の統合
LspServerSupportProvider/LspIntegrationProvider、LspServerDescriptor/LspClientDescriptor、または LSP 固有のplugin.xml依存関係- プラグイン開発のコンテキストにおける、サポート対象の JetBrains IDE 製品とプラットフォームバージョン向けの LSP 設定
- IntelliJ Platform 内での LSP 機能サポートの時期
- プラグインで LSP 統合とネイティブな IntelliJ 言語サポートのどちらを選ぶか
タスクが以下に関する場合は、references/mcp-and-ai-integration.md を読んでください
- IntelliJ Platform プラグインにおける MCP 関連の統合
- MCP ツールの提供、または MCP ツールセットの定義
com.intellij.mcpServer.*などの MCP 関連拡張ポイントの理解- 公式 SDK ドキュメントがまだ少ない領域における MCP のガイダンス
タスクが以下に関する場合は、references/execution-and-run-configs.md を読んでください
- カスタム実行構成(
ConfigurationType、RunConfigurationBase)の実装 - 実行構成プロデューサー(コンテキストから構成を自動検出)
- プログラムランナーと実行環境
- 実行コンソールとコンソールフィルター
- 実行構成マクロ
- 起動前/起動後のタスク
タスクが以下に関する場合は、references/webview-jcef.md を読んでください
- IDE 内に Chromium ベースのブラウザー(
JBCefBrowser)を埋め込み、HTML やカスタム Web コンポーネントを表示する JBCefApp.isSupported()で JCEF の利用可否を確認し、適切なフォールバックを行う- JS ⇄ Java の双方向通信(
JBCefJSQuery、JBCefJavaScriptFunction) - JCEF のライフサイクル、破棄、スレッド処理(ハンドラーは EDT ではなく専用スレッドで実行されます)
- JCEF の
plugin.xmlと JBR の要件(com.intellij.modules.jcefモジュールはなく、実際の制約はランタイムの JBR バリアントです) - リモート開発/Gateway の制約(JCEF はバックエンドではなくシンクライアントで動作します)
- カスタムクライアントとハンドラーを使用した
JBCefBrowserBuilderの作成 - JCEF のデバッグ(DevTools の統合、レジストリーキー)
- よくある落とし穴:破棄時のリーク、スレッド違反、破棄後のアクセス
タスクが以下に関する場合は、references/templates.md を読んでください
- プラグインに同梱するライブテンプレートの提供
- カスタムライブテンプレートのマクロ/関数
- ファイルテンプレートとコードテンプレート(Velocity ベース)
- Postfix 補完テンプレート
- Surround With の記述子
タスクが以下に関する場合は、references/themes.md を読んでください
- IDE UI テーマの作成または拡張
- テーマ JSON 記述子の形式
- エディターの配色の統合
- テーマでのアイコンのカスタマイズ
- Islands テーマとの互換性
- テーマプラグインのデプロイと公開
タスクが以下に関する場合は、references/icons.md を読んでください
- プラグインへのアイコンの追加または整理
- アイコンファイルの命名規則(ダークバリアント、HiDPI)
- アイコンホルダークラス(パス指定とクラス指定)
- New UI(expui)のアイコン要件とアイコンマッピング
- アニメーションアイコン(
AnimatedIcon、AsyncProcessIcon) - リソースバンドルを使ったアイコンのツールチップ
タスクが以下に関する場合は、references/patterns.md を読んでください
- 再利用可能な実装パターン
- エディター/ドキュメントのヘルパー(キャレット位置、選択範囲、スクロール)
- エディターの座標系(オフセット、論理位置/視覚位置)
- エディターに関する FAQ(アクティブなエディターの取得、イベントのリッスン、カスタムタブのタイトル/色)
- 進捗の処理
- ダイアログ/ツールウィンドウのパターン
- PSI/エディター/VFS のユーティリティ
- アイコンの読み込みと描画のパターン
タスクが以下に該当する場合は、references/troubleshooting.md をお読みください
- 問題がどのトラブルシューティングの分類に当てはまるか、まだ判断できない
- アクションが表示されない
- スレッド関連のアサーション
- サービスの初期化に関する失敗
- PSI の書き込みアクションに関するエラー
- 検証ツールの警告
- テストのセットアップに関する失敗
タスクが以下に該当する場合は、references/troubleshooting-build-runtime.md をお読みください
- Gradle またはリポジトリの解決に関する失敗
plugin.xmlの配線またはクラスの読み込みに関する問題- アクションの登録や実行時の表示に関する問題
- 検証、署名、リリースに関する失敗
タスクが以下に該当する場合は、references/troubleshooting-psi-ui-testing.md をお読みください
- PSI の有効性または書き込みアクションに関するアサーション
IndexNotReadyException- エディターとドキュメントの同期
- UI の更新または EDT へのアクセスに関するエラー
- フィクスチャ、テストデータ、デバッグに関する問題
作業の原則
IntelliJ Platform のタスクに取り組む際は、次の点を守ってください。
- アドホックなハックよりも、公式のプラットフォームの概念を優先します。
- 再利用可能なロジックはアクションではなく、サービスに配置します。
AnAction.update()は極めて高速に保ちます。- 動作を最適化する前に、スレッド処理とダムモードを考慮します。
- 構造的なコードのタスクには、PSI を考慮した手法を使用します。
- ユーザー向けの UI には、プラットフォームの UI コンポーネントと規約を使用します。
- プラグインの依存関係と対象 IDE の範囲は、実用上可能な限り小さく保ちます。
特に重要な注意事項
AnActionの実装では、リクエストごとの状態をフィールドに保持しないでください。- IntelliJ Platform 2022.3 以降を対象とする場合、アクションでは
getActionUpdateThread()を実装する必要があります。 - PSI の変更は、EDT 上で書き込みアクションとコマンドの中で実行する必要があります。ドキュメントの変更は、プラットフォームが使用する PSI/ドキュメント API と連携させてください。
- すべての機能がダムモードで安全に動作するとは限りません。安易に
DumbAwareを指定しないでください。 - Kotlin プラグインで 2024.1 以降、またはそれより新しいプラットフォームのベースラインを対象とする場合、適切な場面ではコルーチンベースの読み取り/書き込み API を優先してください。
- ライトサービスは
finalにする必要があります。依存サービスのコンストラクターインジェクションはサポートされていません。また、コンストラクター内でサービスを検索し、フィールドにキャッシュすることも避けてください。 - 内部 API は、実用的な公開 API の代替手段がなく、そのトレードオフが明確な場合を除き、使用しないでください。
一般的な回答の手順
ユーザーから実装の支援を求められた場合は、次の手順に従ってください。
- 対象となる機能を特定します。アクション、サービス、PSI、UI、言語サポート、テスト、公開のいずれかを確認します。
- 該当するリファレンスファイルを読みます。
- 最も近い公式サンプルまたは拡張ポイントのパターンに従います。
- IntelliJ Platform の規則に沿った、最小限で正しい解決策を実装します。
- 公開または互換性が関係する場合は、検証、署名、ビルド範囲に関する項目も確認します。
リファレンスマップ
references/getting-started.mdreferences/plugin-registration.mdreferences/platform-basics.mdreferences/split-mode-rpc.mdreferences/workspace-model.mdreferences/psi-and-indexing.mdreferences/language-support-and-analysis.mdreferences/ui-settings-and-toolwindows.mdreferences/testing-and-publishing.mdreferences/compatibility.mdreferences/extension_points.mdreferences/code_samples.mdreferences/lsp.mdreferences/mcp-and-ai-integration.mdreferences/execution-and-run-configs.mdreferences/webview-jcef.mdreferences/templates.mdreferences/themes.mdreferences/icons.mdreferences/patterns.mdreferences/troubleshooting.mdreferences/troubleshooting-build-runtime.mdreferences/troubleshooting-psi-ui-testing.md
コメント
Markdown 対応