mps-aspect-accessories

star 1.6k

Wire MPS module and model dependencies, used languages, used devkits, extended languages, runtime solutions, accessory models, and language/dependency versions. Use when adding/removing module dependencies, importing languages or devkits into a model, declaring runtime solutions, or shipping accessory content visible to consumers without explicit import.

JetBrains By JetBrains schedule Updated 6/12/2026

name: mps-aspect-accessories description: Wire MPS module and model dependencies, used languages, used devkits, extended languages, runtime solutions, accessory models, and language/dependency versions. Use when adding/removing module dependencies, importing languages or devkits into a model, declaring runtime solutions, or shipping accessory content visible to consumers without explicit import. type: reference

MPS Module and Model Dependencies, Accessory Models

This skill covers the wiring layer of an MPS language — the module descriptor (.mpl) and the per-model imports — and the special role of accessory models and runtime solutions.

Note: accessory wiring does not introduce a new aspect model or stereotype; it edits the existing language descriptor and model imports. When you do need to create a new aspect or stereotyped model, see aspect-model-stereotypes.md for the canonical aspect IDs and @stereotype values.

Critical Directives

  • Prefer MCP wiring tools over hand-editing .mpl XML. Hand-editing can silently corrupt the module descriptor. If you must hand-edit (e.g. for accessoryModels, which has no dedicated MCP tool), make a backup, edit only the targeted block, and rebuild the module immediately afterwards so MPS re-reads the descriptor.
  • Don't hand-edit languageVersions / dependencyVersions. MPS maintains these. Use the MPS "Update language/dependency versions" action.
  • Generator modules have their own dependency list. Add target-language deps to the generator, not the parent language.
  • Used languages auto-import when nodes are inserted via mps_mcp_insert_root_node_from_json, mps_mcp_update_node. Manually add a used language only for hand-written code or implicit dependencies.
  • A runtime solution holds the stable part of generation (code that doesn't vary with the model). Generate thin code that calls it; don't regenerate it. No MCP tool wires the language's <runtime> block — see references/runtime-solutions.md.

Rule of Thumb — Dependency vs. Used Language

  • If a concept is used in your language definition → add a usedLanguage.
  • If a Java class is referenced in hand-written code → add a dependency with the right scope.

MCP Tools Quick Reference

  • Module-level: mps_mcp_module_dependency, mps_mcp_get_project_structure.
  • Model-level: mps_mcp_model_dependency, mps_mcp_model_used_language (kind = language or devkit).
  • Module creation: mps_mcp_create_module(type="solution", …) for a runtime solution.

Common Workflow

  1. Inspect existing wiring: mps_mcp_get_project_structure(startingPoint=<module>) for the module descriptor, mps_mcp_get_project_structure for traversal.
  2. Diagnose the symptom against the pitfalls table (references/pitfalls.md).
  3. Apply the right MCP tool at the right layer (module vs. model vs. accessory).
  4. Rebuild the module so MPS re-reads the descriptor.

Related Skills

  • mps-language-inheritance — when you need the difference between extendedLanguages and usedLanguages in detail.
  • mps-aspect-generator — generator-module dependencies are managed separately from the parent language.
  • mps-language-aspects-overview — to know which aspects exist and where each one lives.

Reference Index

  • Open references/module-level-deps.md for the full list of .mpl declarations (dependencies, usedLanguages, usedDevKits, extendedLanguages, runtimeModules, generators, accessoryModels, version stamps), their scopes, and the mps_mcp_module_dependency scope-dispatch table.
  • Open references/model-level-imports.md for per-model dependencies, used languages, used devkits, and the auto-import behavior of node-insertion tools.
  • Open references/accessory-models.md when shipping a model that should be available to every consumer of the language without an explicit import — including the .mpl <accessoryModels> XML shape and the hand-edit caveat.
  • Open references/runtime-solutions.md for runtime solutions — shipping the Java that generated programs call at run time (the generator's stable part, as MPS source or a prebuilt JAR): the Java-facet settings, the language <runtime>-block wiring, jar-as-stubs (java_classes model root + facet <library>), the no-MCP-tool caveat, and the Kaja/JavaKaja worked example.
  • Open references/extends-vs-uses.md for the semantic difference between extendedLanguages and usedLanguages with examples.
  • Open references/pitfalls.md when you need to diagnose a symptom ("Cannot resolve concept X", "ClassNotFoundException", version mismatch, generator can't find target-language concept, devkit changes not picked up).
  • Open references/module-creation.md for mps_mcp_create_module — supported types, language-only companions (withGenerator/withSandbox/withRuntime), and the facets policy.
  • Open references/module-rename.md for mps_mcp_update_module — what the rename cascades into, the "generator modules are not renameable" rule, and the renameWarnings/renameCriticalProblems semantics.
  • Open references/module-info-fields.md for the shared info envelope returned by mps_mcp_get_project_structure(startingPoint=<module>) / mps_mcp_create_module / mps_mcp_update_modulekind, facets, loadExtensions, DevKit-only fields.
Install via CLI
npx skills add https://github.com/JetBrains/MPS --skill mps-aspect-accessories
Repository Details
star Stars 1,648
call_split Forks 309
navigation Branch main
article Path SKILL.md
More from Creator