plugin-model-analyzer
Query IntelliJ Product DSL modules, products, plugin graphs, loading, validation, and packaging.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Query IntelliJ Product DSL modules, products, plugin graphs, loading, validation, and packaging.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Fix TeamCity project-leak test failures from diagnosis through repeated verification.
Fix TeamCity project-leak test failures from diagnosis through repeated verification.
Implement or change IntelliJ `AnAction` actions and registrations.
Apply IntelliJ Kotlin and Java code style when writing or reviewing code.
Create, amend, or rename IntelliJ commits and write compliant commit messages.
Compare Python type inference with ty, pyrefly, basedpyright, mypy, and zuban.
| name | plugin-model-analyzer |
| description | Query IntelliJ Product DSL modules, products, plugin graphs, loading, validation, and packaging. |
Use the Product DSL analyzer directly through Bazel. Do not call the retired PluginModelAnalyzer MCP server.
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:
--json='{"filter":"summary","limit":5}'--json=---json=@/private/tmp/plugin-model-query.jsonModule 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}
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"} |
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}
count, items, and truncated; increase limit or set details:true only when needed.error field in JSON for missing selectors or unknown names; a successful process exit does not always mean the query matched.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.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.
summary, moduleInfo, moduleSetQuery, or productQuery when exploring.details:false and a small limit until you know the exact module set or product.moduleDependencies, dependencyPath, moduleOwners, moduleReachability, productUsage, embeddedDependencyClosure, mergeImpact) when you need the full typed analysis for one target.--json=- or --json=@file for complex requests instead of adding more CLI flags.