本文へ移動
cccskills
無料GitHub で公開日本語紹介

plugin-model-analyzer

IntelliJ Product DSLのモジュール、製品、プラグインの構成や依存関係を検索し、影響範囲や設定上の問題を調べるスキルです。

原文原文の説明を見る

Query IntelliJ Product DSL modules, products, and plugin graphs.

JetBrains/intellij-communityスター 20,664(GitHub 20,664 + cccskills 0)

実行スコア 未検証

インストール方法を見る

こんなときに便利

  • モジュールの依存先や所有元を調べたいとき
  • 製品までの依存経路を追いたいとき
  • Product DSLの配置や読み込み規則を検証
  • 製品構成やモジュールセットを比較

日本語での紹介

できること

IntelliJ Product DSLのモデルを検索し、モジュール、モジュールセット、製品、プラグインの関係を調べます。依存モジュールや依存経路、利用している製品、モジュールの所有元を確認できるほか、製品同士の比較、モジュールセットの重なり、埋め込み依存関係の調査にも使えます。配置や読み込み規則の検証、非推奨のxi:includeの検索、統合候補の提示にも対応します。結果はJSONで返り、必要な対象に絞って取得できます。

こんなときに便利

Product DSLを変更する前後に、影響する製品や依存関係を把握したい場合に向いています。特定のモジュールがどこで使われるか、依存経路に何が含まれるか、読み込み方式を変えられるかを調べるときにも役立ちます。大きなモデル全体を出力せず、小さな検索条件から確認を進められます。

使い方の例

  • 「このモジュールの依存先と所有元を調べて」
  • 「このProduct DSLの変更で配置や読み込みの問題がないか検証して」
  • 「この2つの製品の構成を比較して」

注意点

リポジトリのルートでBazelを使って実行します。旧PluginModelAnalyzer MCPサーバーは使わず、指定されたJSONリクエストで//platform/buildScripts:plugin-model-toolを呼び出します。該当するモジュールや製品の識別子が必要です。

この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。

含まれるファイル(1)

  • SKILL.md9.4 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

<!-- Generated by community/.ai/render-guides.mjs; edit community/.agents/skills/plugin-model-analyzer/SKILL.md -->

Plugin Model Analyzer

Use the Product DSL analyzer directly through Bazel. Do not call the retired PluginModelAnalyzer MCP server.

Command Shape

Run from the repository root:

bazel run --ui_event_filters=-info --noshow_progress //platform/buildScripts:plugin-model-tool -- --json='<request-json>'

The output is JSON with a timestamp plus one result property named after the requested filter.

Prefer small, typed JSON requests. Avoid unfiltered --json: it emits the full model and is usually too large for agent context. Use JSON fields, not extra CLI flags, to describe the query. Treat the single top-level result property as the answer.

Transport options:

  • Short request: --json='{"filter":"summary","limit":5}'
  • Stdin request: --json=-
  • File request: --json=@/private/tmp/plugin-model-query.json

Common Requests

Module overview:

{"filter":"moduleInfo","module":"intellij.platform.vcs.impl","limit":20}

Module dependencies:

{"filter":"moduleDependencies","module":"intellij.platform.vcs.impl","includeTransitive":false,"includeTestDependencies":false}

Dependency path:

{"filter":"dependencyPath","fromModule":"intellij.platform.vcs.impl","toModule":"intellij.platform.projectModel.impl","includeTestDependencies":true,"includeScopes":true}

Module owners:

{"filter":"moduleOwners","module":"intellij.platform.vcs.impl","includeTestSources":true}

Module-set details or search:

{"filter":"moduleSetQuery","moduleSet":"ide.common","details":false,"limit":50}
{"filter":"moduleSetQuery","name":"vcs","location":"COMMUNITY","minModuleCount":3,"limit":20}

Product details or search:

{"filter":"productQuery","product":"idea","details":false,"limit":50}
{"filter":"productQuery","usesModuleSet":"ide.common","limit":30}

Product comparison and trace path:

{"filter":"productCompare","product":"idea","product2":"Idea","limit":50}
{"filter":"productTracePath","product":"idea","moduleSet":"ide.common","limit":20}

Embedded dependency closure:

{"filter":"embeddedDependencyClosure","value":"idea","moduleSet":"ide.common","pluginSourceOnly":true}

Merge or inline impact:

{"filter":"mergeImpact","source":"some.module.set","target":"target.module.set","operation":"merge"}
{"filter":"mergeImpact","source":"some.module.set","operation":"inline"}

Validation and loading-rule checks:

{"filter":"validation","check":"community_products"}
{"filter":"validation","check":"module_set_locations"}
{"filter":"validation","check":"loading_inconsistencies"}
{"filter":"validation","check":"embedded_dependency_closure","product":"idea","pluginSourceOnly":true}
{"filter":"moduleLoading","loading":"EMBEDDED","limit":100}

Refactoring candidates:

{"filter":"moduleSetOverlap","minOverlapPercent":70,"limit":20}
{"filter":"productSimilarity","threshold":0.8,"limit":20}
{"filter":"unificationSuggestions","strategy":"merge","limit":10}
{"filter":"redundantModuleSetRefs","product":"idea","limit":50}
{"filter":"suggestModuleSetsForModules","modules":["intellij.platform.vcs.impl","intellij.platform.vcs.log.impl"],"limit":20}

Deprecated xi:include usage:

{"filter":"deprecatedIncludes","product":"idea","limit":100}

Old MCP Operation Map

Use this map when a prompt or older instruction mentions the retired PluginModelAnalyzer MCP operation names.

Old operationJSON request
analyze_module_structure{"filter":"summary"}
module info{"filter":"moduleInfo","module":"<module>"}
module dependencies{"filter":"moduleDependencies","module":"<module>"}
module paths{"filter":"modulePaths","module":"<module>"}
module reachability{"filter":"moduleReachability","module":"<module>","moduleSet":"<set>"}
module find_by_loading{"filter":"moduleLoading","loading":"EMBEDDED","details":true}
module dependency_path{"filter":"dependencyPath","fromModule":"<from>","toModule":"<to>","includeScopes":true}
module-set info{"filter":"moduleSetQuery","moduleSet":"<set>"}
module-set search{"filter":"moduleSetQuery","name":"<name>","location":"COMMUNITY","limit":20}
module-set hierarchy{"filter":"moduleSetQuery","moduleSet":"<set>","details":true}
module-set overlap{"filter":"moduleSetOverlap","minOverlapPercent":70,"limit":20}
module-set graphNo ASCII graph output; use moduleSetQuery plus productTracePath or productUsage for structured edges.
module-set suggest_for_modules{"filter":"suggestModuleSetsForModules","modules":["<module>"]}
product info{"filter":"productQuery","product":"<product>"}
product search{"filter":"productQuery","name":"<name>","limit":20}
product compare{"filter":"productCompare","product":"<product1>","product2":"<product2>"}
product similar{"filter":"productSimilarity","threshold":0.8,"limit":20}
product composition{"filter":"composition"} for all products; use productQuery for one product.
product trace_path{"filter":"productTracePath","product":"<product>","moduleSet":"<set>"}
product deprecated_includes{"filter":"deprecatedIncludes","product":"<product>"}
product full_analysisAvoid unless explicitly needed; omit the filter only when the full raw model is required.
validation community_products{"filter":"validation","check":"community_products"}
validation module_set_locations{"filter":"validation","check":"module_set_locations"}
validation loading_inconsistencies{"filter":"validation","check":"loading_inconsistencies"}

Fast Recipes

Where is a module included?

{"filter":"moduleInfo","module":"<module>","limit":50}
{"filter":"modulePaths","module":"<module>"}

What depends on what, and why?

{"filter":"moduleDependencies","module":"<module>","includeTransitive":false,"includeTestDependencies":false}
{"filter":"dependencyPath","fromModule":"<from>","toModule":"<to>","includeTestDependencies":true,"includeScopes":true}

Who owns a module?

{"filter":"moduleOwners","module":"<module>","includeTestSources":true}

Which products or module sets use something?

{"filter":"moduleInfo","module":"<module>","limit":50}
{"filter":"productQuery","usesModuleSet":"<module-set>","limit":50}
{"filter":"productUsage","moduleSet":"<module-set>"}

Can a module stop being embedded?

{"filter":"moduleInfo","module":"<module>","limit":50}
{"filter":"moduleLoading","loading":"EMBEDDED","details":true,"limit":200}
{"filter":"validation","check":"embedded_dependency_closure","module":"<module>","pluginSourceOnly":true}

For the loading query, inspect moduleLoading.result.entries.items for the target module; moduleLoading filters by loading rule, not by module name. The embedded closure check answers whether an embedded source module has dependencies that are not also supplied by embedded sources in affected products.

Did a Product DSL edit introduce placement or loading problems?

{"filter":"validation","check":"community_products"}
{"filter":"validation","check":"module_set_locations"}
{"filter":"validation","check":"loading_inconsistencies"}
{"filter":"validation","check":"embedded_dependency_closure","pluginSourceOnly":true}

Which module set should contain these modules?

{"filter":"suggestModuleSetsForModules","modules":["<module1>","<module2>"],"limit":20}

Reading Output

  • Compact list fields use count, items, and truncated; increase limit or set details:true only when needed.
  • Some focused filters return an error field in JSON for missing selectors or unknown names; a successful process exit does not always mean the query matched.
  • For direct embeddedDependencyClosure, use value for the product selector. The validation wrapper accepts product or value.
  • location values are COMMUNITY or ULTIMATE. loading values are EMBEDDED, REQUIRED, OPTIONAL, ON_DEMAND, or UNSPECIFIED.

Request Fields

Use only fields relevant to the filter. Omit false, null, and default values unless they are semantically important.

Core selectors: filter, value, module, moduleSet, product, product2, name, location, usesModuleSet, modules, fromModule, toModule, source, target.

Options: operation, graph, check, loading, strategy, limit, minModuleCount, details, threshold, minOverlapPercent, includeTransitive, includeTestDependencies, includeTestSources, includeScopes, pluginSourceOnly.

Practical Rules

  • Start with summary, moduleInfo, moduleSetQuery, or productQuery when exploring.
  • Use details:false and a small limit until you know the exact module set or product.
  • Use the legacy precise filters (moduleDependencies, dependencyPath, moduleOwners, moduleReachability, productUsage, embeddedDependencyClosure, mergeImpact) when you need the full typed analysis for one target.
  • Use --json=- or --json=@file for complex requests instead of adding more CLI flags.
  • If the command fails before producing JSON, treat stderr as the source of truth; invalid JSON requests exit nonzero.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

コメント

ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。

まだコメントはありません。最初のコメントを書いてみませんか。

送信するとすぐに公開されます。メールアドレスや電話番号などの個人情報は書かないでください。URL は 2 つまでです。

0 / 1000 文字

このフォームは reCAPTCHA で保護されており、Google のプライバシーポリシーと利用規約が適用されます。

同じリポジトリのスキル

actions

無料概要あり

IntelliJプラグインのAnActionと登録設定を実装・変更し、表示文言やアイコンの定義、非同期処理の起動方法を整えます。

  • IDEに新しいアクションを追加したいとき
  • アクションの登録やアイコンを変更したいとき
  • 表示名と説明文の定義を整理したいとき
JetBrains/intellij-community2.1万2026年10月26日 更新

bazel-test-migration

無料概要あり

IntelliJのJPSテストモジュールをBazelへ移行し、Bazelだけで起きる失敗を依存関係や実行環境から切り分ける手順を案内します。

  • JPSテストをBazelへ移行したいとき
  • Bazelだけで起きるテスト失敗を調べたいとき
  • テストの依存関係やデータ設定を確認したいとき
JetBrains/intellij-community2.1万2026年10月26日 更新

code-style

無料概要あり

IntelliJのKotlin・Javaコードを新規作成やレビューする際に、言語の選び方、書式、型の扱い、例外処理などのプロジェクト規約に沿って整えるスキルです。

  • IntelliJ規約に沿ってKotlinを書きたいとき
  • Javaコードをレビューしたいとき
  • 例外処理やsealed型の分岐を確認したいとき
JetBrains/intellij-community2.1万2026年10月26日 更新

commits

無料概要あり

IntelliJ向けの変更を適切な単位に分け、チケットの有無に応じた形式で、理由や判断も伝わるコミットメッセージを作成・修正するスキルです。

  • チケット付き変更のメッセージを作りたいとき
  • テストやドキュメントのコミットを整理したいとき
  • 既存のコミットメッセージを修正したいとき
JetBrains/intellij-community2.1万2026年10月26日 更新

compare-python-typecheckers

無料概要あり

Pythonコードの型推論や型エラーを複数の型チェッカーで比較し、各ツールの判定と診断内容をまとめたレポートを作成します。

  • 型推論の違いを比較したいとき
  • 型エラーになるか確かめたいとき
  • 複数チェッカーの診断を見比べたいとき
JetBrains/intellij-community2.1万2026年10月26日 更新

compose-ui-architecture

無料概要あり

Compose Desktopの画面で状態や副作用をどこに持たせるか整理し、表示と判断の境界、再利用部品やリストの設計を整えます。

  • 画面とプレゼンターの責務を分けたいとき
  • UI状態の置き場所を整理したいとき
  • Effectやコルーチンの使い方を見直したいとき
JetBrains/intellij-community2.1万2026年10月26日 更新

JetBrains のスキルをすべて見る

このスキルの問題を報告する