Official agent skill

Skill Optimization Study

by JetBrains in JetBrains/MPS

Re-runnable measurement loop for agent-driven JetBrains MPS work over mpsmcp tools — baseline headless worker runs on fixed scenarios, server call log + transcripts, hotspot ranking, remedy…

OfficialApache-2.0Auto-check: warningsAgent Workflows

Install Skill Optimization Study

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add JetBrains/MPS --skill skill-optimization-study -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install JetBrains/MPS skill-optimization-study --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/JetBrains/MPS.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/skill-optimization-study .claude/skills/skill-optimization-study && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
skill-optimization-study
GitHub stars
1.7k
Token cost
~4.4k tokens
SKILL.md length
2,277 words
Files
5 (incl. references)
Skills in repo
40
Repo updated
First seen
Licence
Apache-2.0

At a glance

Re-runnable measurement loop for agent-driven JetBrains MPS work over mpsmcp tools — baseline headless worker runs on fixed scenarios, server call log + transcripts, hotspot ranking, remedy…

  • Works in 2 steps: Instrumentation: server call log first… → Worker models (run…
  • Tool descriptions
  • SKILL.md covers Conventions used below, Roles, Gate questions to ask before… and Procedure (tick as you go;…, plus 1 more section
  • Calls python3, claude and jq

What it does

Skill Optimization Study is an agent skill from JetBrains/MPS, published by the product's own GitHub organization. Re-runnable measurement loop for agent-driven JetBrains MPS work over mpsmcp tools — baseline headless worker runs on fixed scenarios, server call log + transcripts, hotspot ranking, remedy classification (docs / server tool / offline script / online script / template), optional A/B. Use when tool descriptions or mps- skills changed, before a release, or when agents seem slow or retry-prone on MPS tasks.

Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/analysis.md`, `references/harness.md` and `references/lessons.md`).

It sits in Agent Workflows, covering MCP servers. It works with JetBrains IDEs and Model Context Protocol. The repository describes itself as: JetBrains Meta programming System. The licence is Apache-2.0.

When your agent uses it

  • Tool descriptions
  • Mps- skills changed
  • Before a release
  • Agents seem slow

Example prompts

  • “/skill-optimization-study”

Requirements

  • Python 3

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. Instrumentation: server call log first (needs a plugin rebuild; the observer restarts MPS
  2. Worker models (run list_worker_models.py; default: the orchestrator model from that list).

What it can do on your machine

Read from SKILL.md and the folder at commit a92f944. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3
    • claude
    • jq

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Skill Optimization Study loads about 4.4k tokens when it runs, and up to ~23k if it reads all its reference files. Until then it costs about 109 tokens; SKILL.md has 2,277 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~109
When it runs · the whole SKILL.md, loaded when a task matches
~4.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~23k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: warnings

The automated check found patterns that need a careful read before installing.

  • WarningTells the agent its actions are pre-authorized / not to stop for confirmationSKILL.md:33
    swap and do not wait for approval.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from JetBrains/MPS at commit a92f944, republished under its Apache-2.0 licence (© JetBrains). 2,277 words, ~4,408 tokens.

Download SKILL.mdSave it as .claude/skills/skill-optimization-study/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
skill-optimization-study
description
Re-runnable measurement loop for agent-driven JetBrains MPS work over mps_mcp_* tools — baseline headless worker runs on fixed scenarios, server call log + transcripts, hotspot ranking, remedy classification (docs / server tool / offline script / online script / template), optional A/B. Use when tool descriptions or mps-* skills changed, before a release, or when agents seem slow or retry-prone on MPS tasks.

Skill optimisation study (MPS MCP)

A repeatable procedure for finding where agents waste turns and tokens when driving MPS through mps_mcp_*, and for choosing the cheapest fix. This skill is self-sufficient: the 2026-09 study documents (plugins/mcp-tools/docs/skill-script-automation-study.md and its runbook) are history and evidence, not required reading. Scripts and scenario prompts live in plugins/mcp-tools/study/; if that directory is removed, move scripts/ here and the prompts into assets/.

Conventions used below

Agent shells reset the working directory per call, so every command uses absolute paths through two variables — set them at the start of each Bash call (or export them in a wrapper script):

STUDY=/Users/vaclav/work/MPS/myMPS-fix/plugins/mcp-tools/study   # adjust to the checkout
RUNS=$HOME/MPSProjects/mcp-study/runs                            # evidence dir, outside the repo

$RUNS/inventory.json is a load-bearing name: run_worker.sh records its sha in every run's meta.

Roles

  • Observer (this session, Opus-class): orchestrates, never performs the MPS task, never tells workers they are measured, evaluates results read-only, writes the report. Owns the whole lifecycle: synthesizes empty projects (scripts/new_study_project.py), opens them via CLI (mps-project-management), closes them with mps_mcp_close_project, and starts, restarts and shuts MPS down with scripts/mps_control.sh. Before each swap, tell the user the absolute path about to close (if any) and the absolute path about to open — do not ask them to perform the swap and do not wait for approval.
  • Workers: headless CLI processes (claude -p or junie --task), one per (scenario, model, run), launched by study/scripts/run_worker.sh. Evidence = their transcript + the server call log.
  • Human: answers the gate questions, approves pushes, and dismisses MPS dialogs when a call returns MODAL_BLOCKED or a close/exit hangs on a confirmation. Does not open, close or create projects and does not restart MPS — those are observer actions now.

Gate questions to ask before starting (use them verbatim)

Before question 2, run python3 $STUDY/scripts/list_worker_models.py and present models as a multi-select. The orchestrator model is first and marked; list it first with "(Recommended)" (the picker cannot preselect). Extra ids the user types are allowed. Ask question 2a after question 2, as one single-select question per selected model (batch them, at most 4 per AskUserQuestion call). The recommended level is the one the user-level settings give that model today: its settingsEffort.perModel entry for the full model id, else settingsEffort.default. List it first with "(Recommended)". Fill the other options from effortLevels, at most 4 in all: on Claude leave max to "Other", unless max is the recommended level, in which case drop low instead. With no settings level (or on Junie) there is no recommendation; the CLI's built-in default is unknown, so the user picks. Always pin it, because an unpinned worker takes the observer's last /effort for that model, which changes between rounds without a trace (round 19). Ask question 3 only when the detected harness is Claude; Junie non-interactive has no bypassPermissions equivalent (--brave is interactive-only).

  1. Instrumentation: server call log first (needs a plugin rebuild; the observer restarts MPS itself with mps_control.sh restart) or transcript-only?
  2. Worker models (run list_worker_models.py; default: the orchestrator model from that list). 2a. Effort level for <model> (one per selected model; options from effortLevels; recommended: the level the user-level settings give that model today, if any). Every run of that model gets EFFORT=<level>.
  3. Permission mode for workers (default: bypassPermissions on the developer's machine).
  4. Scope of the first pass before gate 1 (default: S1 + S3 on the selected models). Gate 1 (after the pilot): matrix size. Gate 2 (after the report): which remedies; A/B yes/no.

Procedure (tick as you go; details in the references)

  1. Preflight — MPS running with the MCP server enabled. The port belongs to the IDE selector (64343 on the 261 from-sources MPS, 64344 on 262); mps_control.sh and run_worker.sh detect it from the live launcher themselves (mps_control.sh url --json shows what they find). Do not export MPS_MCP_URL during preflight: MPS may not be up yet, and an exported unconfirmed value pins the whole round to the wrong port. Set it by hand only to override detection (e.g. several MPS processes), or after mps_control.sh wait has reported confirmed: true. SMOKE targets the harness project, never a developer checkout. Check the toolchain: claude --version (≥ 2.1; must accept --output-format stream-json --strict-mcp-config) when the detected harness is Claude, or junie --version when it is Junie, python3 -c 'import sys; assert sys.version_info >= (3, 9)', jq --version. Preflight is self-healing, and every step of it is yours:
    • MPS not running → mps_control.sh start (or, with no capture on file, the IDEA MPS run configuration), then mps_control.sh wait.
    • Welcome screen → synthesize a harness project and open it: python3 $STUDY/scripts/new_study_project.py --dir ~/MPSProjects/mcp-study/proj/harness writes the three descriptor files (migration.xml derived from this MPS, so no Migration Assistant), then open it via CLI (mps-project-management). Announce the path first. Do not retry MCP until that open has landed — Welcome-screen calls are rejected before dispatch.
    • mps_mcp_list_open_projects(projectPath=<harness>) must then list it. A synthesized project is empty by construction (mps_mcp_get_project_structure returns no modules); nothing in the study depends on a hand-maintained one, though an existing empty project may be substituted if synthesis fails. Every other project must be closed first — including the developer's own checkout, the common case when MPS was started from the IDEA run configuration. Disjoint module names are not enough: with confirmOpenNewProject2 = -1 (the default) the second open raises the modal New Window / This Window prompt and blocks the round (lesson 30). Announce the path you close; it is an observer action, not one to ask for.
    • Is the call log on? Ask the process, not the log: ps -ww -p $(pgrep -f '[j]etbrains\.mps\.Launcher') -o args= | tr ' ' '\n' | grep calllog must print the option, and the file must grow after a tool call. If it is off and gate question 1 said call-log, step 2 turns it on; if gate 1 said transcript-only, expect 0-line *-server.jsonl slices and skip the call-log checks below. Record the tool inventory: MPS_MCP_URL=$($STUDY/scripts/mps_control.sh url) python3 $STUDY/scripts/tools_inventory.py --out $RUNS/inventory.json (it does not detect the port itself). Run the harness's own unit tests once (cd $STUDY/scripts && python3 -m unittest discover -s tests -p 'test_*.py') — a broken script is cheaper to find here than in the evidence. Then run the contamination guard yourself: python3 $STUDY/scripts/check_user_agents.py (exit 0 clean, 3 contaminated). It rejects MPS-related Markdown definitions below ~/.claude/agents / ~/.junie/agents — a filename matching *mps* or a body containing mps_mcp, both case-insensitively — and any mps-* folder in ~/.claude/skills or ~/.junie/skills, which would shadow the per-project catalog and silently replace the thing being measured (lessons 26, 32). run_worker.sh runs the same guard before any run side effect. The guard never modifies anything: move an offending user skill out of the skills directory for the round and restore it at wrap-up. Built-in Explore and Task agents are outside this pin and remain enabled.
  2. Instrument — the plugin logs one JSON line per dispatched call when MPS runs with -Dmps.mcp.calllog=<file> (McpCallLogListener, off by default). Turn it on without a human and without touching a tracked file: mps_control.sh capture while MPS is still alive, then mps_control.sh calllog $RUNS/server-calllog.jsonl (writes the option into the capture), then shutdown (the close of the last project carries the exit), start <project>, wait, and one SMOKE run as the readiness gate. capture only preserves VM options the live process already carries, which is why calllog exists — adding the option to the MPS run configuration works too but is study-only and must be reverted at wrap-up (lesson 13), so prefer the capture route. Confirm the relaunched process actually carries it (ps -ww -p <pid> -o args= | tr ' ' '\n' | grep calllog) and that the file grows.
  3. Template — the empty fixture is synthesized, not snapshotted (scripts/new_study_project.py): three descriptor files, no doc surface possible, and a migration.xml derived from the MPS that will open it. Module-bearing fixtures (statechart, recipes*) are still tarballs, snapshotted without any agent doc surface: exclude .git, workspace.xml, and also .agents/, .claude/, AGENTS.md, CLAUDE.md. A tarball is a point-in-time copy, so a catalog inside it is what every later round measures no matter how far the bundled skills have moved (lesson 20). Instead, run_worker.sh installs the live catalog into each run's project right before launching the worker — scripts/install_skills.py purges every mps-* folder plus both guides and calls mps_mcp_initialize_project_for_agents, then records skillsSha256 in the meta. Verify every tarball: tar -tzf <f>.tar.gz | grep -E '(^|/)(\.claude|\.agents|AGENTS\.md|CLAUDE\.md)' must be empty (a synthesized project has nothing to verify). Do NOT put .mcp.json in the template; run_worker.sh generates the worker's MCP config per run into $RUNS/<id>-mcp/ from the detected URL and passes it with --strict-mcp-config.
  4. Smoke — SMOKE is a harness check, not a scenario: a read-only prompt that lists open projects and stops, so it runs against the harness project itself (no template copy, no evaluation, pass stays empty). It is also the readiness gate after every MPS start or restart — a live process is not readiness. If the harness project is not open, announce its path, synthesize it if needed and open it via CLI; do not close it afterwards unless the next run needs a different project. RUNS=$RUNS EFFORT=<level for $MODEL> MAX_TURNS=6 PROJECT_SYNTHESIZED=1 $STUDY/scripts/run_worker.sh SMOKE $MODEL <n> <harness-project> — bump <n> on every re-run (the harness refuses an existing run id); drop PROJECT_SYNTHESIZED=1 if the harness project was not synthesized. The transcript must contain tool_use, tool_result, per-message usage; exactly one MCP server; and, when the call log is on, a SMOKE-…-server.jsonl slice of ≥ 1 line.
  5. Scenarios — study/scenarios/S1..S10/{worker_prompt.md,done_criteria.md}. Which cells a changed skill actually forces is study/scenarios.md (brief list, then the directory). Look that up before picking the matrix; the gate-4 default (S1 + S3) is a pilot default, not that lookup. Add a scenario for whatever skill/tool the directory does not cover. S10 (project lifecycle) runs last in a round: it is the only scenario whose worker closes and opens projects, and a mistake in it can leave a modal dialog that blocks every later mps_mcp_* call. Prompts are developer-voice, fixed names, explicit "done", NO reporting requirements. Fixtures: empty-project (synthesized per run, not a tarball), statechart (Projectxx5), recipes (a passing S1) — regenerated per study/fixtures/README.md, not stored in git.
  6. Runs — ONE scratch project open at a time (see lessons: shared module repository leaks across projects; S10 honours this by being sequential — it closes one project before opening the next). Restart MPS before a cell whose fixture language an earlier cell already loaded in the current process — any two of S3/S5/S6/S7/S9 on recipes*, S2/S8 on statechart (shutdown → start harness → wait → SMOKE; launch with ISOLATION=per-shared-fixture-restart, recorded per run beside mpsPid; lessons 40, 42). A read-only cell (S9) may precede a language-changing one in the same process; synthesized cells (S1, S10) need no restart. Per run: synthesize the empty project or copy the fixture tarball (PROJECT_SYNTHESIZED=1 when synthesized) → announce the scratch path (and any path you will close first) → close a previous scratch with mps_mcp_close_project if one is still open → open the new copy via CLI (mps-project-management) → confirm with list_open_projects → launch detached (run_worker.sh first rejects MPS-related user agents, then installs the live skills; either guard failure aborts with exit 3) → poll the PID in bounded loops → evaluate with an Opus subagent using the done_criteria.md (read-only mps_mcp_*, always with projectPath) → record pass/evidence in <id>.meta.json → announce the path and close with mps_mcp_close_project (force=false; on MODAL_BLOCKED ask the user only to dismiss the dialog). Sequential, never two workers against one MPS. Pass the model's gate-2a level as EFFORT on every launch. Check that every meta's effort is that level and that every meta's skillsSha256 and guidesSha256 are each the same value before comparing runs; a differing one means the catalog or the installed AGENTS.md / CLAUDE.md moved mid-round. Open/close details: references/harness.md.
  7. Analyse — python3 $STUDY/scripts/analyze_runs.py $RUNS [--out DIR] (default $RUNS/analysis) → metrics.csv, tools.json, chains.json, errors.json, hotspots.md; pass is filled from each run's meta after evaluation. Then python3 $STUDY/scripts/families.py <baseline runs> <previous round> $RUNS > $RUNS/analysis/families.tsv (per-run family counters, references/analysis.md). Filter chains containing mps_mcp, group into families, have an Opus reviewer inspect 3 instances per family with study/scripts/show_steps.py and assign determinism {1.0, 0.5, 0}. Rank by avoidable turns (fixed context ≈ 150 K cache-read tokens per turn dominates) as well as by the study formula.
  8. Classify each hotspot D → S → P-off → P-on → T (first fit). Write HOTSPOT_REPORT.md: baseline table, ranked hotspots with run:step evidence, hypotheses, defects, remedies with owner/contract/saving/risk. Keep a separate docs-defects.md from day one.
  9. Treat — parallel Opus implementers with DISJOINT file sets (skill docs / skill scripts + packaging + drift test / server batch). Never two agents in the same Kotlin toolset; the observer registers new tests in McpToolsIntegrationTestSuite and runs the suite between batches. A server-side change needs the plugin rebuilt and MPS restarted: mps_control.sh restart + SMOKE, no human step.
  10. A/B (optional) — restart MPS onto the treated plugin (mps_control.sh restart, then SMOKE), then the same runs against the treated tools; success = ≥ 30 % fewer tool calls and ≥ 25 % fewer context tokens on treated scenarios, no drop in pass rate; delete remedies that do not pay.
  11. Wrap up — fold conclusions into the study doc; revert the VM option; delete fixture tarballs (keep the SMOKE scenario — step 4 needs it); announce and close any remaining scratch with mps_mcp_close_project, closing the last one with shutdownWithLastProject=true if MPS should go down — the shutdown rides on that last close, because a Welcome-screen MPS cannot be stopped over MCP; delete any <proj>-target directory an S10 run left; clean ~/MPSProjects/mcp-study/, ~/.claude.json project entries, and ~/.claude/projects/-…-mcp-study-proj-*/ memory dirs; Junie workers may leave ~/.junie/sessions — do not auto-delete them; keep the call-log listener. The capture file lives in $TMPDIR, outside that cleanup, so a later round can still relaunch.
Show full SKILL.md (69 more words)Show less

References

  • references/harness.md — run_worker.sh, analyze_runs.py, show_steps.py, tools_inventory.py, new_study_project.py, mps_control.sh usage; clean-environment rule; the observer's project and MPS lifecycle protocols (create / open / close / shutdown + relaunch); per-run procedure card.
  • references/scenarios.md — how to run and add a scenario, fixtures, orchestrator project swap, done-criteria style. Which scenario covers which skill: plugins/mcp-tools/study/scenarios.md.
  • references/analysis.md — metrics, chain scoring, rubric, report template, thresholds.
  • references/lessons.md — what went wrong the first time and the rule that came out of it.

© JetBrains, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (references) in .agents/skills/skill-optimization-study of JetBrains/MPS.

  • SKILL.md
  • references/analysis.md
  • references/harness.md
  • references/lessons.md
  • references/scenarios.md

Open the folder on GitHubat commit a92f944

Compare with similar skills

Skill Optimization Study next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Skill Optimization Study compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Skill Optimization Study this skillJetBrains/MPS1.7k—~4.4kAutomated safety check: WarnApache-2.0
Claude Docs Consultantcentminmod/my-claude-code-setup2.7k—~959Automated safety check: PassMIT
Amplicode InstallAmplicode/spring-skills126—~2.6kAutomated safety check: PassNone
Spring Data JpaAmplicode/spring-skills126—~838Automated safety check: PassNone
Ide Diagnostics MCPJetBrains/intellij-community21k—~749Automated safety check: PassCustom licence
Dto CreatorAmplicode/spring-skills126—~7.5kAutomated safety check: PassNone

Similar skills

  • Claude Docs Consultant

    centminmod/my-claude-code-setup

    Consult official Claude Code documentation from code.claude.com using selective fetching.

    2.7k GitHub stars~959 tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Amplicode Install

    Amplicode/spring-skills

    Installs the Amplicode IntelliJ plugin into IntelliJ IDEA (Ultimate/Community) and GigaIDE on the user's machine.

    126 GitHub stars~2.6k tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check passed
  • Spring Data Jpa

    Amplicode/spring-skills

    Rules and guidelines for working with Spring Data JPA in the project.

    126 GitHub stars~838 tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check passed
  • Ide Diagnostics MCP

    JetBrains/intellij-community

    Official

    Inspect a running IntelliJ IDE for freezes or blocked threads via MCP.

    21k GitHub stars~749 tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Dto Creator

    Amplicode/spring-skills

    Creates a DTO (Data Transfer Object) class for an entity. An agent skill from Amplicode/spring-skills.

    126 GitHub stars~7.5k tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check passed
  • Mapper Creator

    Amplicode/spring-skills

    Creates a mapper between an entity and a DTO (MapStruct or custom converter).

    126 GitHub stars~5.4k tokensUpdated 1 mo ago
    Agent WorkflowsAuto-check passed

More from JetBrains/MPS

All 40 skills in this repo
  • Official

    Analyze an MPS language by name — discover concepts, properties, references, children, aspects (editor/constraints/behavior), and metadata.

    1.7k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Mps Node Editing

    JetBrains/MPS

    Official

    Add, update, or delete MPS nodes using JSON blueprints — covers the unified blueprint format, staged construction for large subtrees, validation, and reference repair.

    1.7k GitHub stars~4.7k tokensUpdated today
    Auto-check passed
  • Official

    Open an MPS project in a running or freshly started MPS instance when MCP tools fail because no project is open (welcome screen), close an open project with mpsmcpcloseproject, or create a new empty…

    1.7k GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Mps MCP Workflow

    JetBrains/MPS

    Official

    Complete JetBrains MPS workflow guide for DSL projects — models, languages, generators, node JSON blueprints, validation, MPS MCP tool usage, and the index of companion skills.

    1.7k GitHub stars~5.8k tokensUpdated today
    Auto-check passed
  • Bugfix Workflow

    JetBrains/MPS

    Official

    Structured MPS bugfix workflow driven by a YouTrack issue ID — preflight tool checks, version/branch derivation, parallel-agent problem analysis, solution design, branch creation, implementation…

    1.7k GitHub stars~4.4k tokensUpdated today
    Auto-check passed
  • Official

    Define concepts, interface concepts, enumerations, and constrained data types in an MPS language's structure aspect.

    1.7k GitHub stars~2.8k tokensUpdated today
    Auto-check passed

Categories

Questions about Skill Optimization Study

What does Skill Optimization Study do?

Re-runnable measurement loop for agent-driven JetBrains MPS work over mpsmcp tools — baseline headless worker runs on fixed scenarios, server call log + transcripts, hotspot ranking, remedy…. Skill Optimization Study is an agent skill from JetBrains/MPS, published by the product's own GitHub organization. Re-runnable measurement loop for agent-driven JetBrains MPS work over mpsmcp tools — baseline headless worker runs on fixed scenarios, server call log + transcripts, hotspot ranking, remedy classification (docs / server tool / offline script / online script / template), optional A/B.

When should I use Skill Optimization Study?

Skill Optimization Study fits situations like: tool descriptions; mps- skills changed; before a release; agents seem slow.

How do I install Skill Optimization Study in Claude Code?

Run `npx skills add JetBrains/MPS --skill skill-optimization-study -a claude-code`. Or copy the skill folder (.agents/skills/skill-optimization-study in JetBrains/MPS) into .claude/skills/skill-optimization-study in your project. Claude Code loads it when a task matches its description.

How do I install Skill Optimization Study in Codex?

Run `npx skills add JetBrains/MPS --skill skill-optimization-study -a codex`. Or copy the skill folder (.agents/skills/skill-optimization-study in JetBrains/MPS) into .agents/skills/skill-optimization-study in your project. Codex loads it when a task matches its description.

Can I use Skill Optimization Study in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add JetBrains/MPS --skill skill-optimization-study -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/skill-optimization-study, .gemini/skills/skill-optimization-study, .github/skills/skill-optimization-study and .opencode/skills/skill-optimization-study in your project.

What does Skill Optimization Study need to run?

Going by SKILL.md and its folder, Skill Optimization Study needs the command-line tools its instructions call (python3, claude and jq). Our summary lists: Python 3.

Does Skill Optimization Study access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Skill Optimization Study safe to install?

Our automated static check of SKILL.md flagged 1 warning(s): tells the agent its actions are pre-authorized / not to stop for confirmation. Read the flagged lines before installing; the check is not a guarantee either way.

What licence does Skill Optimization Study use?

Skill Optimization Study is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Skill Optimization Study use?

About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 19k tokens, read only when the agent opens those files.

What are the alternatives to Skill Optimization Study?

Skills that share tags, products or a category with Skill Optimization Study: Claude Docs Consultant (centminmod/my-claude-code-setup, 2.7k stars), Amplicode Install (Amplicode/spring-skills, 126 stars), Spring Data Jpa (Amplicode/spring-skills, 126 stars) and Ide Diagnostics MCP (JetBrains/intellij-community, 21k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Skill Optimization Study?

JetBrains (a GitHub organization, an official publisher) maintains it in JetBrains/MPS, which has 1,660 GitHub stars. The repository holds 40 skills in this directory. The repository was last updated on October 7, 2026.

Source: JetBrains/MPS on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.