基于 SOC 职业分类
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/JetBrains/intellij-community --skill plugin-model-analyzer命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
Convert Product DSL module sets into bundled wrapper plugins.
Convert Product DSL module sets into bundled wrapper plugins.
Migrate IntelliJ JPS module tests to Bazel and debug Bazel-only test/runtime/plugin dependency failures.
| name | plugin-model-analyzer |
| description | Query IntelliJ Product DSL modules, products, plugin graphs, loading, 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.