Agent skill

Upgrade Mendix Version

by mendixlabs in mendixlabs/mxcli

Move a project to a newer Mendix version headlessly, with no Studio Pro.

Apache-2.0Auto-check passed

Install Upgrade Mendix Version

skills CLI
$ npx skills add mendixlabs/mxcli --skill upgrade-mendix-version -a claude-code

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

GitHub CLI
$ gh skill install mendixlabs/mxcli upgrade-mendix-version --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/mendixlabs/mxcli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/mendix/upgrade-mendix-version .claude/skills/upgrade-mendix-version && 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
upgrade-mendix-version
GitHub stars
128
Token cost
~1.9k tokens
SKILL.md length
877 words
Files
1
Skills in repo
75
Repo updated
First seen
Licence
Apache-2.0

At a glance

Move a project to a newer Mendix version headlessly, with no Studio Pro.

  • Works in 2 steps: Create a blank project at the target… → Compare it with the project's.
  • Raising a projects Mendix version
  • SKILL.md covers Why this needs a skill, The check that decides…, Doing it and Verifying MPR v2 survived, plus 4 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Upgrade Mendix Version is an agent skill from mendixlabs/mxcli. Move a project to a newer Mendix version headlessly, with no Studio Pro. Use when raising a project's Mendix version, when a build complains the project version does not match MxBuild, or before adopting a newer runtime. Covers the one check that decides whether a converter must run, and the two green false successes that upgrade nothing.

Its SKILL.md is about 1.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with SQLite. The repository describes itself as: Mendix cli tool, a headless way to work with Mendix projects. Enables Mendix projects for use with 3rd party agentic coding tools like Claude Code and Copilot. Includes a… The licence is Apache-2.0.

When your agent uses it

  • Raising a projects Mendix version
  • A build complains the project version does not match MxBuild
  • Before adopting a newer runtime

Example prompts

  • “/upgrade-mendix-version”

Requirements

  • Python 3

Workflow steps

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

  1. Create a blank project at the target version (or use a project you already
  2. Compare it with the project's.

What it can do on your machine

Read from SKILL.md and the folder at commit a924d11. 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

    No scripts in the folder and no shell commands in SKILL.md (its code samples are bash).

    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

Upgrade Mendix Version loads about 1.9k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 877 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~91
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k

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 passed

The automated check found no risky patterns in SKILL.md.

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 mendixlabs/mxcli at commit a924d11, republished under its Apache-2.0 licence (© mendixlabs). 877 words, ~1,866 tokens.

Download SKILL.mdSave it as .claude/skills/upgrade-mendix-version/SKILL.md (or your agent's skills folder).
name
upgrade-mendix-version
description
Move a project to a newer Mendix version headlessly, with no Studio Pro. Use when raising a project's Mendix version, when a build complains the project version does not match MxBuild, or before adopting a newer runtime. Covers the one check that decides whether a converter must run, and the two green false successes that upgrade nothing.

Upgrading a Mendix version without Studio Pro

Why this needs a skill

Both ways of getting it wrong look like success:

what you dowhat you seewhat is true
mxbuild --loose-version-checkBUILD SUCCEEDEDthe project is still on the old version
UPDATE _MetaData SET _ProductVersionthe project reports the new version, and mxcli agreesevery unit is read against the wrong schema

Neither prints a warning. The first is not hypothetical — it is what happened to the project that reported this, and it took going back to look at the version column to notice that a successful build had upgraded nothing.

The check that decides everything

A .mpr is SQLite. The version lives in one table, _MetaData, with columns _FormatVersion, _ProductVersion, _BuildVersion and _SchemaHash.

Use Python rather than the sqlite3 CLI: python3 ships with a sqlite3 module, while the CLI is frequently absent (it is not in the mxcli devcontainer).

bash
mprhash() { python3 -c "import sqlite3,sys
print(*sqlite3.connect(sys.argv[1]).execute(
  'SELECT _ProductVersion,_SchemaHash FROM _MetaData').fetchone(), sep='  ')" "$1"; }

mprhash app.mpr
11.13.0  {SHA256}5Fk35jOyzj+cWnJe9ZkGWQjMEzsge3nIzS2zxH9jp6M=

For the version alone, mxcli says it on connect — no SQL needed:

Connected to: /path/App.mpr (Mendix 11.14.0)

One UPDATE would make the project claim the new version. Whether that is an upgrade or a corruption is decided by the fourth column:

  1. Create a blank project at the target version (or use a project you already have there) and read its _SchemaHash.
  2. Compare it with the project's.
    • Same → the model schema did not change. The version is a label.
    • Different → the schema changed, so units stored against the old one would be read against the new. A converter must run.

_SchemaHash is a property of the Mendix version, not of the project — which is what makes this usable. Measured across two unrelated projects and two machines: a 517-unit application and a blank app, both at 11.13.0, carry byte-identical hashes, and the same holds at 11.14.0. So a reference value can be recorded and reused rather than rebuilt each time.

11.13.0   {SHA256}5Fk35jOyzj+cWnJe9ZkGWQjMEzsge3nIzS2zxH9jp6M=
11.14.0   {SHA256}o9B9S8lorV9RD5gY9B6j1bJp4ALW87u4newnreIbRAg=

Two values are not a rule. Treat the table as a cache to check against, and re-derive the target version's hash from a blank project the first time you go to a version that is not listed — one command, and it is the only thing that actually answers the question.

Doing it

mx convert is the converter. It sits beside mxbuild in the toolset, and mxcli does not wrap it.

bash
# 1. Cache the target toolchain.
mxcli setup mxbuild --version 11.14.0        # ~/.mxcli/mxbuild/11.14.0/modeler/

# 2. Get the reference hash for the target version, if you do not have it.
mx create-project --app-name Ref --output-dir /short/path
mprhash /short/path/Ref.mpr

# 3. Convert a COPY first, never the project.
cp -a MyApp /short/MyApp-probe
mx convert --in-place /short/MyApp-probe

# 4. Verify the copy before touching anything real.
mprhash /short/MyApp-probe/App.mpr     # must equal the reference from step 2
mx check /short/MyApp-probe/App.mpr

# 5. Only now, the real project.
mx convert --in-place MyApp

Converting a copy first, confirming its hash matches the reference, and only then touching the real project is what makes this safe rather than lucky. Step 4 is the whole point: it is the difference between "the conversion ran" and "the conversion produced what the target version expects".

Verifying MPR v2 survived

mx convert preserves MPR v2 — which is not a given. Its siblings mx update-widgets and mx rename-design-properties collapse a v2 project into a single-file v1 .mpr and delete mprcontents/ as a side effect, one-way. That is the whole reason mxcli fix widgets exists.

Check the storage format, not the unit count. Measured on an 11.13 → 11.14 conversion: .mxunit files went 391 → 386 while v2 was perfectly intact. A conversion may legitimately drop or merge units, so an unchanged count is a coincidence, not the invariant. What actually distinguishes preserved from collapsed:

bash
[ -d MyApp/mprcontents ] && echo "v2 intact"     # a collapse deletes this
stat -c%s MyApp/App.mpr                          # v2: tens of KB. v1: tens of MB

On the measured run: mprcontents/ present, .mpr 73,728 bytes.

Show full SKILL.md (349 more words)Show less

Traps

mx convert takes the app DIRECTORY, not the .mpr. Pointing it at the file fails with a message that reads like the project is missing:

Conversion failed: The app directory '/path/App.mpr' does not exist.

--loose-version-check suppresses the check, it does not run a converter. Verified: after invoking mxbuild with the flag, _ProductVersion and _SchemaHash are untouched. A green build proves nothing about the version.

A runtime version and its tooling move together. The upgrade may break the tools around it, and the failure need not mention a version at all. On 11.13 → 11.14 it surfaced as:

Error: bundling web client: no rollup.config.mjs in .../deployment/web
       (run a serve Deploy build first)

— because 11.14's MxBuild bundles the web client itself, so the separate rollup step has nothing left to configure. Deleting deployment/ and rebuilding does not help; a newer mxcli is what fixes it. When something breaks right after an upgrade and names no version, suspect the toolchain before the model.

mx create-project needs a short output path. It fails with System.IO.PathTooLongException under a deeply nested directory, during package extraction — the message names a path length, not the real constraint.

What generalises, and what does not

Most version-pair specifics will be wrong next time. The web-client bundling change is 11.13 → 11.14 and will not recur; the two hashes above are facts about two releases, not a pattern.

What generalises is the decision procedure — _SchemaHash decides label vs convert — plus the three traps: convert takes a directory, --loose-version-check upgrades nothing, and the tooling moves with the runtime. Check the specifics against your own versions rather than trusting them.

After the upgrade

Re-run whatever the project relies on that is not covered by mx check, because a clean check is not evidence the app still works. On the reporting project the thing worth being anxious about was a non-standard database connection type not in Mendix's own picker; it survived, and a full sync cycle proved it. Pick your own equivalent — the integration nobody would notice breaking — and exercise it.

  • run-local — booting the app after an upgrade; the toolchain mismatch above surfaces there first.
  • debug-bson — if the converted model behaves oddly, and for why mx convert's bare error count is not evidence about a model.

© mendixlabs, 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

Just SKILL.md in .claude/skills/mendix/upgrade-mendix-version of mendixlabs/mxcli.

Open the folder on GitHubat commit a924d11

Compare with similar skills

Upgrade Mendix Version 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.

Upgrade Mendix Version compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Upgrade Mendix Version this skillmendixlabs/mxcli128—~1.9kAutomated safety check: PassApache-2.0
MCP Server BuildershareAI-lab/learn-claude-code78k5 repos~1.2kAutomated safety check: PassMIT
Copilot Session Failure Analysisdotnet/maui23k—~3.4kAutomated safety check: PassMIT
RTK Rust Design Patternsrtk-ai/rtk83k—~1.9kAutomated safety check: PassApache-2.0
OpenWork Desktop CDP Driverdifferent-ai/openwork24k—~465Automated safety check: PassCustom licence
Add Memory KindEverMind-AI/EverOS13k—~2.6kAutomated safety check: PassApache-2.0

Similar skills

  • MCP Server Builder

    shareAI-lab/learn-claude-code

    Walks through building MCP servers in Python or TypeScript that expose tools, resources and prompts to Claude, with templates, registration and testing.

    78k GitHub starsUsed in 5 repos~1.2k tokens
    Agent WorkflowsAuto-check passed
  • Mines local Copilot CLI session logs for dotnet/maui to rank costly or failing runs, tag recurring failure modes, propose repo edits and emit guard evals.

    23k GitHub stars~3.4k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Describes seven Rust design patterns for the RTK CLI filter modules, with when to use each, RTK examples, and notes on when a pattern is overkill.

    83k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • OpenWork Desktop CDP Driver

    different-ai/openwork

    Drives a running OpenWork desktop window over CDP from the shell to evaluate JS, take screenshots, start sessions and send prompts for hand checks.

    24k GitHub stars~465 tokensUpdated today
    Testing & QAAuto-check passed
  • Add Memory Kind

    EverMind-AI/EverOS

    Walks through adding a new persisted memory kind to EverOS: choose storage among Markdown, SQLite and LanceDB, pick a Markdown strategy, then wire schemas, repos and writers.

    13k GitHub stars~2.6k tokensUpdated today
    DatabasesAuto-check passed
  • OmniRoute Database Backups

    diegosouzapw/OmniRoute

    Trigger system backups, restore from backup files, and manage the SQLite database lifecycle. Supports export, import, and incremental snapshot strategies.

    74k GitHub starsUsed in 1 repo~395 tokens
    DevOps & CloudAuto-check passed

More from mendixlabs/mxcli

All 75 skills in this repo
  • Mendix Odata Pushdown

    mendixlabs/mxcli

    Push OData query options into the SQL of a Mendix resource served by a read microflow, so $filter, $orderby, $top, $skip, $count and the key lookup reach the database instead of being silently…

    128 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Mendix Vega Charts

    mendixlabs/mxcli

    Chart a Mendix app with Vega-Lite through a pluggable widget that takes the specification and the data as separate properties, so the model emits rows and never assembles a chart payload.

    128 GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Agents

    mendixlabs/mxcli

    Author Mendix AI agent documents in MDL — Model, Knowledge Base, Consumed MCP Service and Agent, with variables, tools and multi-line prompts.

    128 GitHub starsUsed in 1 repo~2.2k tokens
    Auto-check passed
  • Mendix Bulk Oql Dml

    mendixlabs/mxcli

    Run set-based INSERT, UPDATE and DELETE against Mendix entities through OQL statements, which the runtime supports and Studio Pro cannot author.

    128 GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • Mock REST APIs

    mendixlabs/mxcli

    Stand up an HTTP endpoint you control instead of a live third-party API, and point the Mendix app at it — Prism from an OpenAPI contract, a constant swap, or a forward proxy.

    128 GitHub starsUsed in 1 repo~2.5k tokens
    Auto-check passed
  • REST Client

    mendixlabs/mxcli

    Call external REST APIs from Mendix — the three approaches (inline REST CALL, consumed REST client document, generated from OpenAPI) and how to choose.

    128 GitHub starsUsed in 1 repo~3.9k tokens
    Auto-check passed

Works with

Questions about Upgrade Mendix Version

What does Upgrade Mendix Version do?

Move a project to a newer Mendix version headlessly, with no Studio Pro. Upgrade Mendix Version is an agent skill from mendixlabs/mxcli. Move a project to a newer Mendix version headlessly, with no Studio Pro.

When should I use Upgrade Mendix Version?

Upgrade Mendix Version fits situations like: raising a projects Mendix version; A build complains the project version does not match MxBuild; before adopting a newer runtime.

How do I install Upgrade Mendix Version in Claude Code?

Run `npx skills add mendixlabs/mxcli --skill upgrade-mendix-version -a claude-code`. Or copy the skill folder (.claude/skills/mendix/upgrade-mendix-version in mendixlabs/mxcli) into .claude/skills/upgrade-mendix-version in your project. Claude Code loads it when a task matches its description.

How do I install Upgrade Mendix Version in Codex?

Run `npx skills add mendixlabs/mxcli --skill upgrade-mendix-version -a codex`. Or copy the skill folder (.claude/skills/mendix/upgrade-mendix-version in mendixlabs/mxcli) into .agents/skills/upgrade-mendix-version in your project. Codex loads it when a task matches its description.

Can I use Upgrade Mendix Version 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 mendixlabs/mxcli --skill upgrade-mendix-version -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/upgrade-mendix-version, .gemini/skills/upgrade-mendix-version, .github/skills/upgrade-mendix-version and .opencode/skills/upgrade-mendix-version in your project.

What does Upgrade Mendix Version need to run?

SKILL.md names no scripts, command-line tools or credentials: Upgrade Mendix Version is instructions for the agent only. Our summary lists: Python 3.

Does Upgrade Mendix Version 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 Upgrade Mendix Version safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Upgrade Mendix Version use?

Upgrade Mendix Version 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 Upgrade Mendix Version use?

About 1.9k tokens (SKILL.md is roughly 7.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Upgrade Mendix Version?

Skills that share tags, products or a category with Upgrade Mendix Version: MCP Server Builder (shareAI-lab/learn-claude-code, 78k stars), Copilot Session Failure Analysis (dotnet/maui, 23k stars), RTK Rust Design Patterns (rtk-ai/rtk, 83k stars) and OpenWork Desktop CDP Driver (different-ai/openwork, 24k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Upgrade Mendix Version?

mendixlabs (a GitHub organization) maintains it in mendixlabs/mxcli, which has 128 GitHub stars. The repository holds 75 skills in this directory. The repository was last updated on October 7, 2026.

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