cheatsheet-errors

A quick reference for fixing common MDL syntax errors. MDL is the language used by Mendix for describing and checking application logic.

In plain words
What is it for?
It covers undeclared variables, invalid data retrieval sources, list operations, and expression mistakes.
Why use it?
It helps developers move from an error reported by mxcli, the Mendix command-line checker, to a likely correction without searching the full reference.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/mendixlabs/mxcli/cheatsheet-errors
Any agent
npx skills add mendixlabs/mxcli --skill cheatsheet-errors
Clone the repo
git clone --depth 1 https://github.com/mendixlabs/mxcli

Made for: Claude Code, Codex.

Per session 52 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,107 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00052 $0.02107
Opus 5 $0.00026 $0.01053
Sonnet 5 $0.00010 $0.00421
Haiku 4.5 $0.00005 $0.00211

Measured yesterday against content hash 0fd51e2baccf, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

cheatsheet-errors scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/mendix/cheatsheet-errors/SKILL.md · 285 lines

How it starts

The opening of the file, as written. The whole thing — 285 lines — stays where its author put it; the contents beside it link to each section on GitHub.

MDL Common Errors Cheatsheet

Quick fixes for common MDL syntax errors.

Variable Errors

"Variable 'X' is not declared"

Problem: Using SET on a variable that wasn't declared.

-- WRONG
if $value > 10 then
  set $IsValid = false;  -- ERROR: $IsValid not declared
end if;

Fix: Add DECLARE before SET.

-- CORRECT
declare $IsValid boolean = true;
if $value > 10 then
  set $IsValid = false;
end if;

"Selected type is not allowed" (CE0053)

Problem: Declaring an object (entity) or list variable. A declare maps to a Create Variable activity, which only accepts primitives (String/Integer/Long/Decimal/Boolean/DateTime/Enumeration). Declaring an object or list is rejected (CE0053/CE0038, plus CE7247 on any later set) — bare or initialized. The as keyword is also a parse error in mxcli. mxcli check flags an object declare as MDL043 and a list declare as MDL040.

-- WRONG: declaring an object — there is no "empty object variable" (MDL043)
declare $Product Module.Product = empty;
declare $Product as Module.Product;         -- AS is also a parse error
-- WRONG: declaring a list (MDL040)
declare $Products list of Module.Product = empty;

Fix: Objects and lists can't be declared — get them from a source that produces one.

-- object: a microflow parameter, a retrieve, a create, or a loop iterator
retrieve $Product from Module.Product where Code = $Code limit 1;  -- retrieve
$Product = create Module.Product (Name = $Name);                   -- create
-- or: create microflow M.Save ($Product: Module.Product) ... / loop $Product in $Products ...

-- list: a parameter, a retrieve, or a create list
$Products = create list of Module.Product;   -- empty list to accumulate into
retrieve $Products from Module.Product where ...;  -- or populate from the database

Expression Errors

"Error in expression" (CE0117)

Problem 1: Using unqualified association name in XPath.

-- WRONG: Missing module qualification
set $Name = $Order/Customer/Name;

Read the full file on GitHub · 285 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 285 lines · 52 tokens per session scan A 0fd51e2baccf

Subscribe to this mod's changes

cheatsheet-errors is a skill published in the GitHub repository mendixlabs/mxcli (115 stars, last pushed 2d ago), licensed Apache-2.0. It adds 52 tokens to every session and 2,107 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.