Skip to content
Back to skills

Acad Cuix Builder

ASecurity

Generate a complete AutoCAD .bundle (CUIX ribbon + extended tooltip GIFs + LISP + PackageContents) from a plain-English prompt. No XML editing required.

  • 61 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added October 2, 2026
ai-agentsshellexpressgit

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned October 2, 2026

npx -y skills add autodesk-platform-services/skills --skill acad-cuix-builder --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Acad Cuix Builder?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Acad Cuix Builder
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/autodesk-platform-services-acad-cuix-builder/badge)](https://www.skillsdirectory.com/skills/autodesk-platform-services-acad-cuix-builder)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: acad-cuix-builder
description: "Generate a complete AutoCAD .bundle (CUIX ribbon + extended tooltip GIFs + LISP + PackageContents) from a plain-English prompt. No XML editing required."
argument-hint: "Describe the plugin: panels, buttons, commands, tooltip GIFs, and optional LISP file (e.g. 'drafting tools with zoom selection and layer isolate commands, GIF tooltips, lispPath at D:/demo/DraftingTools.lsp')"
compatibility: "Windows only. Requires CuixBuilder.exe (install via install.ps1) OR .NET SDK 10.0."
---

# AutoCAD CUIX Builder

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

```powershell
$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.ps1` first (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:

```powershell
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` → imagePath
- `zoomsel.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^C` automatically
  - LISP expression: `(c:ZOOMSEL)` → generator adds `^C^C` automatically
  - Pre-formatted: `^C^CMYCOMMAND` → used as-is
- **Image** — auto-matched from icons folder, or path to `.bmp` file, 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:

```json
{
  "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.html` and `.chm` next to it are also auto-copied
- `tooltipImage` — GIF/PNG shown in expanded tooltip; recommended 300×187px, <30KB
- `imagePath` — 16×16 BMP for ribbon button icon; omit for auto-generated colored placeholder

Write config with an explicit timestamp to `$env:TEMP`, then run:

```powershell
$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:

```json
{
  "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

Files in this skill

  • README.md2.4 KB
  • SKILL.md7.4 KB
  • install.ps11.3 KB
  • references/cuix-architecture.md14.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.