Entry point for authoring or modifying an MPS language — index of all aspects (structure, editor, constraints, behavior, typesystem, intentions, actions, generator, textgen, accessories, generation plans), the recommended authoring order, cross-aspect call patterns, dependency/rebuild rules, and validation flow. Start here when defining a new language or when you do not know which aspect-specific skill applies.
78
100%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
An MPS language is a collection of aspects, each a separate model inside the language module. Together they define syntax, semantics, UI, and output. Edit each aspect through its own language (its DSL). This skill is the router; each aspect links to a dedicated skill.
.mps XML. Hand edits can silently corrupt model files.mps-language-modularity.| Aspect | Aspect ID / Stereotype | Model file | Language DSL | Detailed skill |
|---|---|---|---|---|
| Structure | structure | models/structure.mps | jetbrains.mps.lang.structure | mps-aspect-structure-concepts |
| Editor | editor | models/editor.mps | jetbrains.mps.lang.editor | mps-aspect-editor, mps-aspect-editor-menus-and-keymaps |
| Constraints | constraints | models/constraints.mps | jetbrains.mps.lang.constraints | mps-aspect-constraints |
| Behavior | behavior | models/behavior.mps | jetbrains.mps.lang.behavior | mps-aspect-behavior |
| Typesystem & Checking | typesystem | models/typesystem.mps | jetbrains.mps.lang.typesystem | mps-aspect-typesystem |
| Intentions | intentions | models/intentions.mps | jetbrains.mps.lang.intentions | mps-aspect-intentions |
| Actions | actions | models/actions.mps | jetbrains.mps.lang.actions | mps-aspect-actions |
| Generator | @generator (stereotype) | generator/template/main@generator.mps | jetbrains.mps.lang.generator | mps-aspect-generator |
| TextGen | textGen | models/textGen.mps | jetbrains.mps.lang.textGen | mps-aspect-textgen |
| Dataflow | dataFlow (camelCase) | models/dataFlow.mps | jetbrains.mps.lang.dataFlow | mps-aspect-dataflow |
| Migrations | migration | models/migration.mps | jetbrains.mps.lang.migration | mps-aspect-migrations |
| Enhancement scripts | scripts | models/scripts.mps | jetbrains.mps.lang.script | mps-aspect-migrations |
| Find Usages | findUsages (camelCase) | models/findUsages.mps | jetbrains.mps.lang.findUsages | — |
| Refactorings | refactorings | models/refactorings.mps | jetbrains.mps.lang.refactoring | — |
| IDE plugin | plugin | models/plugin.mps | jetbrains.mps.lang.plugin | mps-ide-plugin |
| Feedback | feedback | models/feedback.mps | jetbrains.mps.lang.feedback | — |
| Accessories / Dependencies | — (no model created) | .mpl and per-model | — | mps-aspect-accessories |
| Code inside bodies | — | any aspect that holds BL | baseLanguage, smodel, collections, closures | mps-model-manipulation |
| Inline node literals | — | any aspect using quotations | jetbrains.mps.lang.quotation | mps-quotations |
Aspect IDs are case-sensitive and create models named <langModule>.<aspectId> with no @ suffix. Stereotypes (@generator, @genplan, @tests, @descriptor) are a separate mechanism for non-aspect models. Authoritative table with usage notes and pitfalls: aspect-model-stereotypes.md.
Additional aspects exist (Find Usages, Refactorings, Scopes Provider, Plugin). They follow the same "per-concept rule root + body" pattern — consult companion skills in .agents/skills/ or the MPS user guide when needed.
Generation Plans (cross-cutting, not an aspect of a single language) are covered by mps-aspect-generation-plan. Use when you need to control generator ordering, enable cross-model reference resolution with checkpoints, fork generation into parallel branches, or conditionally contribute plans via PlanContribution.
.mpl, ensure consumers can find everything.Most iteration is circular: structure ↔ editor ↔ constraints ↔ typesystem.
node.m(...)).error ... fix { ... } or by referencing QuickFix roots.Keep logic in behavior methods; keep aspect rules thin and declarative.
mps_mcp_get_project_structure, mps_mcp_search_concepts, mps_mcp_get_concept_details, mps_mcp_print_node.mps_mcp_create_root_node, mps_mcp_insert_root_node_from_json, mps_mcp_update_node, mps_mcp_parse_java_and_insert.mps_mcp_alter_structure (CREATE_CONCEPTS, CREATE_ENUM, UPDATE_CONCEPT_*), mps_mcp_query_structure (inheritance/aspect queries); example nodes of a concept via mps_mcp_query_nodes (FIND_INSTANCES).mps_mcp_create_module, mps_mcp_create_model, mps_mcp_model_dependency, mps_mcp_model_used_language, mps_mcp_module_dependency.mps_mcp_check_root_node_problems, language/module build via IDE MCP.After adding/changing:
mps_mcp_reload_all to refresh MPS's runtime concept registry.mps_mcp_check_root_node_problems on edited roots / aspect models — catches concept-level problems.When something in a consumer is wrong, always re-check the root cause on the language side (structure / generator / typesystem) before patching generated Java.
52c9d63
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.