Makepad Widgets
sickn33/agentic-awesome-skills
Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19 Check for updates: https://crates.io/crates/makepad-widgets
Define reusable widget groups with CREATE FRAGMENT and place them with USE FRAGMENT.
$ npx skills add mendixlabs/mxcli --skill fragments -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install mendixlabs/mxcli fragments --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/mendix/fragments .claude/skills/fragments && rm -rf skills-srcUse ~/.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/
Install the "fragments" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/fragments into .claude/skills/fragments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fragments", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/fragmentsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add mendixlabs/mxcli --skill fragments -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install mendixlabs/mxcli fragments --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/mendix/fragments .agents/skills/fragments && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "fragments" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/fragments into .agents/skills/fragments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fragments", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mendixlabs/mxcli --skill fragments -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install mendixlabs/mxcli fragments --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/mendix/fragments .cursor/skills/fragments && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "fragments" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/fragments into .cursor/skills/fragments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fragments", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/mendixlabs/mxcli.git --path .claude/skills/mendix/fragments--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add mendixlabs/mxcli --skill fragments -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install mendixlabs/mxcli fragments --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/mendix/fragments .gemini/skills/fragments && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "fragments" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/fragments into .gemini/skills/fragments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fragments", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install mendixlabs/mxcli fragmentsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add mendixlabs/mxcli --skill fragments -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/mendix/fragments .github/skills/fragments && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "fragments" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/fragments into .github/skills/fragments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fragments", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add mendixlabs/mxcli --skill fragments -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install mendixlabs/mxcli fragments --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/mendixlabs/mxcli.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/mendix/fragments .opencode/skills/fragments && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "fragments" agent skill from https://github.com/mendixlabs/mxcli/tree/main/.claude/skills/mendix/fragments into .opencode/skills/fragments/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "fragments", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
fragmentsDefine reusable widget groups with CREATE FRAGMENT and place them with USE FRAGMENT.
Fragments is an agent skill from mendixlabs/mxcli. Define reusable widget groups with CREATE FRAGMENT and place them with USE FRAGMENT. Use when the same widget pattern repeats across pages and should be written once.
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
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.
Read from SKILL.md and the folder at commit 20a6c89. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are mdl).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Fragments loads about 2.4k tokens when it runs. Until then it costs about 44 tokens; SKILL.md has 614 words of instructions outside code blocks.
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.
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.
The full file from mendixlabs/mxcli at commit 20a6c89, republished under its Apache-2.0 licence (© mendixlabs). 614 words, ~2,366 tokens.
.claude/skills/fragments/SKILL.md (or your agent's skills folder).Use this skill when:
create fragmentuse fragmentlist fragments / describe fragmentFragments are script-scoped, transient widget groups:
mdl 1;
create fragment SaveCancelFooter as {
footer footer1 {
actionbutton btnSave (caption: 'Save', action: save changes, buttonstyle: primary)
actionbutton btnCancel (caption: 'Cancel', action: cancel changes)
}
};Multiple top-level widgets:
mdl 1;
create fragment CustomerFields as {
textbox txtName (label: 'Name', attribute: Name)
textbox txtEmail (label: 'Email', attribute: Email)
textbox txtPhone (label: 'Phone', attribute: Phone)
};Inside a page or snippet body:
mdl 1;
create page Module.CustomerEdit
(
params: ( $Customer: Module.Customer ),
title: 'Edit Customer',
layout: Atlas_Core.PopupLayout
)
{
dataview dvCustomer (datasource: $Customer) {
use fragment CustomerFields
use fragment SaveCancelFooter
}
};With prefix (avoids name conflicts):
use fragment SaveCancelFooter as order_
-- Creates: order_footer1, order_btnSave, order_btnCancelA plain fragment substitutes a fixed widget group. A content slot lets a
fragment wrap arbitrary caller-supplied content — a reusable shell (a card,
panel, or section) whose body varies per use. Declare a slot where the caller's
widgets should land, then fill it with the use fragment X { … } payload form:
mdl 1;
create fragment Card as {
container cardWrap (class: 'card', designproperties: ('Card style': on)) {
container cardBody (class: 'card-body') {
slot content -- caller's widgets are spliced in here
}
}
};
create page Module.Dashboard (title: 'Dashboard', layout: Atlas_Core.Atlas_Default) {
use fragment Card {
dynamictext cardHeading (content: 'Welcome', rendermode: H2)
dynamictext cardText (content: 'Any widgets can go inside the reusable Card shell')
}
};Rules (v1):
content; a fragment supports one slot.use fragment Card) expands the
slot to nothing — a valid empty shell.as prefix_ still renames the fragment's own
widgets (not the caller's payload).describe page shows the fully-expanded tree
(no slot marker), and there are no BSON/round-trip surprises.For varying a leaf value (a label or attribute name) rather than wrapping a subtree, scalar params (
create fragment F($label, $attr) as …) are a planned v1.1 follow-up; today use a slot plus a one-line value fill.
The content slot varies structure (which widgets). Typed parameters vary
data and behavior: a fragment can declare a datasource and/or an action
parameter, reference it with $name in a datasource/action position, and receive
its value at the use site. This turns a shell into a real reusable component —
one panel bound to a different entity and a different handler per use.
mdl 1;
create fragment DataPanel($data: datasource, $onEdit: action) as {
container panelWrap (class: 'card') {
listview lvItems (datasource: $data) {
slot content
actionbutton btnEdit (caption: 'Edit', action: $onEdit, buttonstyle: primary)
}
}
};
create page Module.Orders (title: 'Orders', layout: Atlas_Core.Atlas_Default) {
use fragment DataPanel ($data: database Module.Order, $onEdit: microflow Module.EditOrder) {
dynamictext panelHeading (content: 'Orders', rendermode: H4)
}
};Rules:
datasource ($var / database E / $currentObject/Assoc / microflow M) and action (a microflow / nanoflow / save changes / show page / …).describe page shows the concrete datasource/action, no $param.Building blocks can't declare params (they're authored in Studio Pro), but a
use building block accepts rebind overrides that rewrite the block's
outermost datasource and/or its first button after the copy:
use building block Atlas_Web_Content.List_Cards
(datasource: database Module.Order, action: call microflow Module.OpenOrder) as orders_;Binding-point rule (prototype): datasource → the first widget carrying a
datasource; action → the first button widget. For anything more specific, copy
the block in with as prefix_ and use alter page … set … on prefix_widget.
list fragments;
-- Lists all defined fragments with widget countsdescribe fragment SaveCancelFooter;
-- Outputs the full MDL definitioncreate fragment CrudFooter as {
footer footer1 {
actionbutton btnSave (caption: 'Save', action: save changes, buttonstyle: primary)
actionbutton btnCancel (caption: 'Cancel', action: cancel changes)
}
};
-- Use in every edit page
create page Module.Customer_Edit (...) {
dataview dv (datasource: $Customer) {
textbox txtName (label: 'Name', attribute: Name)
use fragment CrudFooter
}
};
create page Module.Order_Edit (...) {
dataview dv (datasource: $Order) {
textbox txtNumber (label: 'Order #', attribute: Number)
use fragment CrudFooter
}
};create fragment AddressFields as {
textbox txtStreet (label: 'Street', attribute: Street)
textbox txtCity (label: 'City', attribute: City)
textbox txtZip (label: 'Zip Code', attribute: ZipCode)
textbox txtCountry (label: 'Country', attribute: Country)
};
-- Reuse in customer and supplier pages
create page Module.Customer_Edit (...) {
dataview dv (datasource: $Customer) {
textbox txtName (label: 'Name', attribute: Name)
use fragment AddressFields
use fragment CrudFooter
}
};create fragment ActionButtons as {
actionbutton btnApprove (caption: 'Approve', action: save changes, buttonstyle: success)
actionbutton btnReject (caption: 'Reject', action: cancel changes, buttonstyle: danger)
};
create page Module.DualPanel (...) {
layoutgrid lg {
row {
column (desktopwidth: 6) {
use fragment ActionButtons as left_
}
column (desktopwidth: 6) {
use fragment ActionButtons as right_
}
}
}
};-- WRONG: Defining the same fragment name twice causes an error
create fragment footer as { ... };
create fragment footer as { ... }; -- Error: fragment "Footer" already defined-- WRONG: Using a fragment that hasn't been defined
create page Module.MyPage (...) {
use fragment NonExistent -- Error: fragment "NonExistent" not found
};-- WRONG: Using same fragment twice without prefix creates duplicate widget names
use fragment footer
use fragment footer -- Widget name "footer1" already exists!
-- CORRECT: Use prefix for uniqueness
use fragment footer as first_
use fragment footer as second_-- WRONG: Using a fragment before defining it
create page Module.MyPage (...) {
use fragment footer -- Error: fragment "Footer" not found
};
create fragment footer as { ... };
-- CORRECT: Define before use
create fragment footer as { ... };
create page Module.MyPage (...) {
use fragment footer -- OK
};create fragment statements appear before their use fragment referencesuse fragment X { … } payload is only supplied when fragment X declares a slotslot (v1 supports a single slot)mxcli syntax fragment — CLI help topiccreate-page — Page/widget syntax referenceoverview-pages — CRUD page patternsdocs/11-proposals/proposal_page_composition.md© 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
Just SKILL.md in .claude/skills/mendix/fragments of mendixlabs/mxcli.
Open the folder on GitHubat commit 20a6c89
Fragments 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 | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Fragments this skillmendixlabs/mxcli | 128 | — | ~2.4k | Automated safety check: Pass | Apache-2.0 | |
| Makepad Widgetssickn33/agentic-awesome-skills | 47k | 2 repos | ~1.7k | Automated safety check: Pass | MIT | |
| Contact Widgetnexu-io/open-design | 100k | — | ~1.6k | Automated safety check: Pass | Apache-2.0 | |
| WidgetLeoYeAI/openclaw-master-skills | 2.2k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Chat Widgetsickn33/agentic-awesome-skills | 47k | 2 repos | ~332 | Automated safety check: Pass | MIT | |
| Groupsparcadei/Continuous-Claude-v3 | 3.9k | 1 repos | ~956 | Automated safety check: Notes | MIT |
sickn33/agentic-awesome-skills
Version: makepad-widgets (dev branch) | Last Updated: 2026-01-19 Check for updates: https://crates.io/crates/makepad-widgets
nexu-io/open-design
Self-contained floating chat widget with welcome screen, social links, meeting button, and message input.
LeoYeAI/openclaw-master-skills
Create, update, hide, show, list, and delete Übersicht desktop widgets on macOS.
sickn33/agentic-awesome-skills
Build a real-time support chat system with a floating widget for users and an admin dashboard for support staff.
parcadei/Continuous-Claude-v3
Problem-solving strategies for groups in abstract algebra. An agent skill from parcadei/Continuous-Claude-v3.
sickn33/agentic-awesome-skills
CRITICAL: Use for Robius widget patterns. An agent skill from sickn33/agentic-awesome-skills.
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…
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.
mendixlabs/mxcli
Author Mendix AI agent documents in MDL — Model, Knowledge Base, Consumed MCP Service and Agent, with variables, tools and multi-line prompts.
mendixlabs/mxcli
Run set-based INSERT, UPDATE and DELETE against Mendix entities through OQL statements, which the runtime supports and Studio Pro cannot author.
mendixlabs/mxcli
Define event-driven APIs over Kafka with Mendix business event services — publish and subscribe contracts, CREATE/DROP/DESCRIBE.
mendixlabs/mxcli
Search the Mendix Catalog platform service registry (catalog.mendix.com) from the CLI to find services published across an organisation.
Define reusable widget groups with CREATE FRAGMENT and place them with USE FRAGMENT. Fragments is an agent skill from mendixlabs/mxcli. Define reusable widget groups with CREATE FRAGMENT and place them with USE FRAGMENT.
Fragments fits situations like: the same widget pattern repeats across pages and should be written once.
Run `npx skills add mendixlabs/mxcli --skill fragments -a claude-code`. Or copy the skill folder (.claude/skills/mendix/fragments in mendixlabs/mxcli) into .claude/skills/fragments in your project. Claude Code loads it when a task matches its description.
Run `npx skills add mendixlabs/mxcli --skill fragments -a codex`. Or copy the skill folder (.claude/skills/mendix/fragments in mendixlabs/mxcli) into .agents/skills/fragments in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mendixlabs/mxcli --skill fragments -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fragments, .gemini/skills/fragments, .github/skills/fragments and .opencode/skills/fragments in your project.
SKILL.md names no scripts, command-line tools or credentials: Fragments is instructions for the agent only.
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.
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.
Fragments 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.
About 2.4k tokens (SKILL.md is roughly 9.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Fragments: Makepad Widgets (sickn33/agentic-awesome-skills, 47k stars), Contact Widget (nexu-io/open-design, 100k stars), Widget (LeoYeAI/openclaw-master-skills, 2.2k stars) and Chat Widget (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
mendixlabs (a GitHub organization) maintains it in mendixlabs/mxcli, which has 128 GitHub stars. The repository holds 72 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.