AutoCAD CUIX Builder
SkillAI & modelsGenerate a complete AutoCAD .bundle (CUIX ribbon + extended tooltip GIFs + LISP + PackageContents) from a plain-English prompt. No XML editing required.
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; ahel provides instructions and does not run this skill.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the AutoCAD CUIX Builder skill
What this skill tells your AI
The instructions your AI receives, as published by autodesk-platform-services/skills in skills/acad-cuix-builder/SKILL.md and read by ahel’s review.
Conversational skill that generates a complete AutoCAD .bundle folder:
- Ribbon tab + panels + buttons (CUIX)
- Extended tooltips with GIF animations (XAML)
- LISP command file (copied from
lispPath) PackageContents.xml— AutoCAD plugin manifest
Drop the bundle in %APPDATA%\Autodesk\ApplicationPlugins\ and AutoCAD auto-loads on next startup.
Architecture reference: see references/cuix-architecture.md.
Step 0 — Verify generator is available
$exe = "$env:USERPROFILE\.cuixbuilder\CuixBuilder.exe"
if (Test-Path $exe) {
& $exe --help # shows all config fields
} elseif (Get-Command dotnet -ErrorAction SilentlyContinue) {
dotnet --version
} else {
Write-Host "Neither found — run install.ps1 first"
}
- exe found → use
& $exe <config.json>in Step 5 - dotnet SDK → use
dotnet run --project <src-path> -c Release -- <config.json>in Step 5 - neither → tell user to run
install.ps1first (downloads exe, no SDK needed)
Step 1 — Collect plugin identity
Ask:
- Plugin display name — shown as ribbon tab and group label (e.g.
Drafting Tools) - Internal name — derive from display name, no spaces (e.g.
DraftingTools)
Step 2 — Collect panels
Ask:
- How many ribbon panels?
- Name of each panel (e.g.
Annotation,View)
Step 3 — Collect buttons (per panel)
Auto-scan icons folder (when user provides a folder path)
If the user says "use icons from <folder>", list that folder and auto-match files by button name:
Get-ChildItem "D:\SkillDemo\demo\icons\" | Select-Object Name
Matching convention (case-insensitive, spaces→empty):
{buttonname}.bmp→imagePath(16×16 ribbon icon){buttonname}.gif→tooltipImage(expanded tooltip animation){buttonname}.png→tooltipImage(fallback if no GIF)
Example: button label Zoom Selection, internal name zoomsel:
zoomsel.bmp→ imagePathzoomsel.gif→ tooltipImage
Derive internal name from label: lowercase, strip spaces/special chars (e.g. Zoom Selection → zoomsel, Isolate Layer → layiso). If no match found, use colored placeholder.
Per-button fields
For each panel, for each button ask:
- Label — text on the button (e.g.
Quick Leader) - Command — one of:
- Bare AutoCAD command:
QLEADER→ generator adds^C^Cautomatically - LISP expression:
(c:ZOOMSEL)→ generator adds^C^Cautomatically - Pre-formatted:
^C^CMYCOMMAND→ used as-is
- Bare AutoCAD command:
- Image — auto-matched from icons folder, or path to
.bmpfile, or skip → colored placeholder - Tooltip — short hover text (defaults to label)
- Tooltip description — optional extended body text shown in expanded tooltip
- Tooltip GIF — auto-matched from icons folder, or path to
.gif/.png(recommended: 300×187px, <30KB) - Help topic — anchor name for F1 help (e.g.
zoomsel); derive from internal name if not given
CHM / F1 help
If user does not mention a CHM file, always ask:
"Do you have a CHM help file for F1 support? If yes, provide the path."
If provided, set chmPath in config. If skipped, omit chmPath (F1 will open AutoCAD's own help).
Help topic per button = anchor name derived from button internal name (e.g. zoomsel).
Step 4 — Output path
Ask where to save the .cuix file.
Default: current directory + <PluginName>.cuix
Step 5 — Confirm, build JSON, generate
Show a summary table:
Plugin : <DisplayName> Tab : <Tab> Output : <path>
Panel: <name>
[1] <label> → <command> image: <file or "placeholder blue">
[2] ...
Confirm with user, then build the JSON config:
{
"pluginName": "DraftingTools",
"displayName": "Drafting Tools",
"tab": "Drafting Tools",
"outputPath": "C:\\full\\path\\DraftingTools.cuix",
"acadDir": "C:\\Program Files\\Autodesk\\AutoCAD 2027",
"lispPath": "C:\\full\\path\\DraftingTools.lsp",
"panels": [
{
"name": "Panel Name",
"buttons": [
{
"label": "Zoom Selection",
"command": "(c:ZOOMSEL)",
"imagePath": "C:\\icons\\zoomsel.bmp",
"tooltip": "Zoom to selected objects",
"tooltipDescription": "Zooms viewport to fit current selection set.",
"tooltipImage": "C:\\icons\\zoomsel.gif"
}
]
}
]
}
acadDir— AutoCAD install dir, used to detect R-series (R26.0 = 2027, R25.1 = 2026, R25.0 = 2025)lispPath— copied into bundle;.Help.htmland.chmnext to it are also auto-copiedtooltipImage— GIF/PNG shown in expanded tooltip; recommended 300×187px, <30KBimagePath— 16×16 BMP for ribbon button icon; omit for auto-generated colored placeholder
Write config with an explicit timestamp to $env:TEMP, then run:
$configPath = "$env:TEMP\cuix_$(Get-Date -Format 'yyyyMMdd_HHmmss').json"
# ... write config to $configPath ...
# With exe (preferred)
& "$env:USERPROFILE\.cuixbuilder\CuixBuilder.exe" $configPath
# With SDK fallback — clone source from GitHub
$src = "$env:TEMP\acad-cuix-builder-src"
if (-not (Test-Path $src)) {
git clone https://github.com/ADN-DevTech/acad-cuix-builder $src
}
dotnet run --project $src -c Release -- $configPath
Step 6 — Report result
On success:
Done: <outputPath>
In AutoCAD: CUILOAD → browse to <outputPath>
On failure: show stderr and diagnose (common: missing exe, wrong path, invalid JSON).
Command normalization
| User types | Becomes |
|---|---|
QLEADER | ^C^CQLEADER |
zoom e | ^C^CZOOM E |
(alert "Hi") | ^C^C(alert "Hi") |
^C^CMYCOMMAND | ^C^CMYCOMMAND (unchanged) |
Placeholder icon colors (auto-generated when no image provided)
Index cycles 0→7 across all buttons in the CUIX.
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| Blue | Green | Orange | Purple | Teal | Red | Amber | Cyan |
F1 Help — CHM via PackageContents
F1 help works via CHM + PackageContents.xml. Tested and confirmed working in AutoCAD 2027.
How it works
HelpFile="./Contents/Win64/Plugin.chm"on<ApplicationPackage><Command Local="ZOOMSEL" HelpTopic="zoomsel" />— anchor name only (no.htm)- CUIX
<ToolTip HelpTopic="zoomsel" HelpSource="C:\absolute\path\Plugin.chm" />
Config
Set chmPath + helpTopic (anchor name, not filename) per button:
{
"chmPath": "C:\\path\\to\\DraftingTools.chm",
"panels": [{
"buttons": [{
"helpTopic": "zoomsel"
}]
}]
}
CuixBuilder strips .htm/.html extensions automatically if user provides a filename — always outputs anchor name only.
Requirements
- CuixBuilder.exe — install via
install.ps1(downloads from GitHub Releases, ~200KB) - .NET 10 runtime — ships with AutoCAD 2027; or install from https://dot.net
- Windows only — AutoCAD bundle format is Windows-specific
Signals
- GitHub stars
- 61
- Forks
- 14
- Last commit
- Oct 2026
ahel review
K6low
bundled executables the agent is told to run
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Item type
- skill
- Key
acad-cuix-builder- Source
- github.com/autodesk-platform-services/skills
github.com/autodesk-platform-services/skills