Skip to main content

plugin-model-analyzer

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

インストールへ移動

ソース情報

リポジトリ
JetBrains/intellij-community
ソースの最終更新活動
2026年8月5日 18:20
検出された SKILL.md の言語
英語
スター
20,445
フォーク
6,009

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
plugin-model-analyzer
description
Query IntelliJ Product DSL modules, products, plugin graphs, loading, and packaging.
<!-- 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: ```bash 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: ```json {"filter":"moduleInfo","module":"intellij.platform.vcs.impl","limit":20} ``` Module dependencies: ```json {"filter":"moduleDependencies","module":"intellij.platform.vcs.impl","includeTransitive":false,"includeTestDependencies":false} ``` Dependency path: ```json {"filter":"dependencyPath","fromModule":"intellij.platform.vcs.impl","toModule":"intellij.platform.projectModel.impl","includeTestDependencies":true,"includeScopes":true} ``` Module owners: ```json {"filter":"moduleOwners","module":"intellij.platform.vcs.impl","includeTestSources":true} ``` Module-set details or search: ```json {"filter":"moduleSetQuery","moduleSet":"ide.common","details":false,"limit":50} {"filter":"moduleSetQuery","name":"vcs","location":"COMMUNITY","minModuleCount":3,"limit":20} ``` Product details or search: ```json {"filter":"productQuery","product":"idea","details":false,"limit":50} {"filter":"productQuery","usesModuleSet":"ide.common","limit":30} ``` Product comparison and trace path: ```json {"filter":"productCompare","product":"idea","product2":"Idea","limit":50} {"filter":"productTracePath","product":"idea","moduleSet":"ide.common","limit":20} ``` Embedded dependency closure: ```json {"filter":"embeddedDependencyClosure","value":"idea","moduleSet":"ide.common","pluginSourceOnly":true} ``` Merge or inline impact: ```json {"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: ```json {"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: ```json {"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: ```json {"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 operation | JSON 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 `graph` | No 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_analysis` | Avoid 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? ```json {"filter":"moduleInfo","module":"<module>","limit":50} {"filter":"modulePaths","module":"<module>"} ``` What depends on what, and why? ```json {"filter":"moduleDependencies","module":"<module>","includeTransitive":false,"includeTestDependencies":false} {"filter":"dependencyPath","fromModule":"<from>","toModule":"<to>","includeTestDependencies":true,"includeScopes":true} ``` Who owns a module? ```json {"filter":"moduleOwners","module":"<module>","includeTestSources":true} ``` Which products or module sets use something? ```json {"filter":"moduleInfo","module":"<module>","limit":50} {"filter":"productQuery","usesModuleSet":"<module-set>","limit":50} {"filter":"productUsage","moduleSet":"<module-set>"} ``` Can a module stop being embedded? ```json {"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? ```json {"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? ```json {"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`.
GitHubで見る
この SKILL.md は非常に大きいため、SkillsMP では最初のセクションだけを表示しています。 GitHubで見る