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.
git clone --depth 1 https://github.com/mendixlabs/mxcliWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/mendixlabs/mxcli/review)<a href="https://agentmods.dev/commands/mendixlabs/mxcli/review"><img src="https://agentmods.dev/badge/commands/mendixlabs/mxcli/review/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/mendixlabs/mxcli/review"><img src="https://agentmods.dev/badge/commands/mendixlabs/mxcli/review.svg" alt="Reviewed on agentmods" width="80" height="20"></a>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.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00013 | $0.06879 |
| Opus 5.5 | $0.00005 | $0.02752 |
| Sonnet 5.5 | $0.00003 | $0.01376 |
| Haiku 4.5 | $0.00001 | $0.00688 |
Grade B, and why
review scanned grade B with 1 finding 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 4d ago.
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.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
| 24 | A skill or command still instructs work into a package the repo has deleted (`sdk/mpr` test locations, a symptom table moved to `findings/*.jsonl` years prior) — the doc reads as authoritative and every instructio How it starts
The opening of the file, as written. The whole thing — 162 lines — stays where its author put it; the contents beside it link to each section on GitHub.
/mxcli-dev:review — PR Review
Run a structured review of the current branch's changes against the CLAUDE.md checklist, then check the recurring findings table below for patterns that have burned us before.
Steps
- Run
gh pr viewandgh pr diff(orgit diff main...HEAD) to read the change. - Work through CLAUDE.md's "Working Rules for a Change" (the evidence bar) and the subsystem checklists at the end of this file, in full.
- Then check every row in the Recurring Findings table below — flag any match.
- Report: blockers first, then moderate issues, then minor. Include a concrete fix option for every blocker (not just "this is wrong").
- After the review: add a row to the Recurring Findings table for any new pattern not already covered.
Recurring Findings
Patterns caught in real reviews. Each row is a class of mistake worth checking proactively. Add a row after every review that surfaces something new.
| # | Finding | Category | Canonical fix |
|---|---|---|---|
| 1 | Formatter emits a keyword not present in MDLParser.g4 → DESCRIBE output won't re-parse (e.g. RANGE(...)) |
DESCRIBE roundtrip | Grep grammar before assuming a keyword is valid; if construct can't be expressed yet, emit -- TypeName(field=value) — not yet expressible in MDL |
| 2 | Output uses $currentObject/Attr prefix — non-idiomatic; Studio Pro uses bare attribute names |
Idiomatic output | Verify against a real Studio Pro BSON sample before choosing a prefix convention |
| 3 | Malformed BSON field (missing key, wrong type) produces silent garbage output (e.g. RANGE($x, , )) |
Error handling | Default missing numeric fields to "0"; or emit -- malformed <TypeName> rather than broken MDL |
| 4 | No DESCRIBE roundtrip test — grammar gap went undetected until human review | Test coverage | Add roundtrip test: format struct → MDL string → parse → confirm no error |
| 5 | Hardcoded personal path in committed file (e.g. /c/Users/Ylber.Sadiku/...) |
Docs quality | Use bare commands (go test ./...) without absolute paths in any committed doc or skill |
| 6 | Docs-only PR cites an unmerged PR as a "model example" — cited PR had blockers | Docs quality | Only cite merged, verified PRs; or annotate with known gaps if citing in-flight work |
| 7 | Skill/doc table references a function that doesn't exist (e.g. formatActionStatement() vs formatAction()) |
Docs quality | Grep function names before writing: grep -r "func formatA" mdl/executor/ |
| 8 | "Always X" rule is too absolute for trivial edge cases (e.g. "always write failing test first" for one-char typos) | Docs quality | Soften to "prefer X" or add an exception clause; include the reasoning so readers can judge edge cases |
| 9 | Doc comment promises a fallback/feature that doesn't exist in the code (e.g., "raw-map fallback in the client" when no such fallback was implemented) | Docs quality | Grep for function/type names referenced in doc comments to confirm they exist before committing |
| 10 | BSON array items decoded by mongo driver are primitive.D, not map[string]any — bare type assertion item.(map[string]any) always fails silently, causing silent data loss (e.g. Languages not parsed, issue #480) |
BSON parsing | Always use extractBsonMap(item) instead of item.(map[string]any); write a parser unit test with primitive.D items to catch this class of bug |
| 11 | execShow switch missing a case for a new ShowXxx constant — executor handler is wired but never dispatched, command silently does nothing |
Dispatch gap | After adding a new Show* constant and handler, grep executor_query.go to confirm the case is present; add a mock test that calls the handler directly |
| 12 | Mock test constructs a Kind value (e.g. "Array") that parseImportMappingElement can never produce — parser only sets "Object" or "Value" — giving false assurance for a code path that is dead against real MPR data |
Test coverage | Before writing a mock test for a fallback path, verify the parser can actually produce the mocked value; if not, either extend the parser or remove the dead fallback |
| 13 | Go type switch: inserting case TypeB: between case TypeA: and its body silently empties TypeA — unlike regular switch, type switch has no fallthrough, so an empty case is a no-op (e.g. EnumSplitStmt handler stolen by InheritanceSplitStmt in PR #475) |
Code correctness | Always give each type switch case its own complete block; never share a body by relying on fall-through |
| 14 | Visitor test for CREATE JAVA ACTION omits AS $$ ... $$ body, causing opaque parse error no viable alternative at input '...' — the body is mandatory, not optional |
Test coverage / grammar | The grammar rule ends with AS DOLLAR_STRING SEMICOLON?; always include a minimal body (as $$ return false; $$;) even in tests |
| 15 | New MDL document type or OR MODIFY variant added but cmd/mxcli/syntax/features_*.go not updated — mxcli syntax <topic> and REPL help show stale syntax |
Docs quality | Add/update SyntaxFeature entries: new type → new Register(...) block; changed syntax → update Syntax field of existing topic; grep Path: to confirm topic exists |
| 16 | Bug-fix PR missing mdl-examples/bug-tests/<issue>-description.mdl — checklist requires one per fix so Studio Pro can validate the regression case |
Test coverage | Add minimal MDL that reproduces the symptom; commit alongside the fix; the PR description often contains the exact reproduction snippet already |
| 17 | Commit message claims a change (e.g. "PERF001": "Performance" mapping in report.go) that is not present in the diff — git body overstates the actual change, often referencing an example rule as if it were shipped |
Docs quality | Diff the file the commit names (git show <sha> -- <file>); if the change isn't there, fix the commit body so it doesn't imply shipped behavior |
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.
- 4d ago Changed · +1 lines 06badc7b16b0
- 11d ago Changed · +1 lines 45334c3a5973
- 15d ago Changed · +1 lines 16bfbefc636e
- 16d ago Changed · +1 lines d975af695afc
- 20d ago Changed · +1 lines 97ae1bdd4aba
- 1mo ago Changed · +2 lines ea349a65c9f8
- 1mo ago Changed · +84 lines 3f82a279f998
- 1mo ago Changed · +3 lines 540137e34faf
- 1mo ago Changed · +3 lines 8450f9bfb6c3
- 1mo ago First seen · 65 lines · 13 tokens per session scan B 03ed00d3d706
review is a command published in the GitHub repository mendixlabs/mxcli (132 stars, last pushed 2d ago), licensed Apache-2.0. It adds 13 tokens to every session and 6,879 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
hatch3r-pr-resolve
Read open PR comments, evaluate each against current code via the rigor contract, implement accepted findings, reply inline. Multi-platform.
hatch3r-rework
User-guided rework planning for agent-implemented code in a fresh context window. Reconstructs what was delivered from the git diff, interviews the user for feedback, triages findings, validates them read-only against the code, and ends at a rework plan (docs/rework/) plus an execute-now-or-defer choice (copy-paste…
review-branch
Review the current branch's diff against base by dispatching atomic-reviewer. No orchestration loop, no spec required — pre-flight before /commit pr or /commit merge.
mach12:issue-review
Read a GitHub issue and all comments, review the implementation plan, and present findings.
hatch3r-benchmark
Run and analyze performance benchmarks. Compare results against baselines, identify regressions, and produce performance reports.
code-review-give
Give mode for code-review: Review someone else's code with multi-pass analysis and structured recommendations.