npx skills add ...
npx skills add unity-technologies/skills --skill ui-uitk
Unity UI Toolkit expert for Unity 6.0+. Understands, edits, and generates UXML and USS files with flex-based layouts. Use for requests involving .uxml, .uss, UI Toolkit, UIElements, UIDocument, UI runtime binding, Custom UI Elements, Manipulators or PanelSettings.
npx skills add unity-technologies/skills --skill ui-uitk
Understand existing Unity UI Toolkit code, make targeted edits, generate new UXML/USS files, Manipulators, and handle UI runtime binding.
Read these as needed:
references/uss-guide.md — USS patterns and examplesreferences/svg-icons.md — SVG icon generation (only when generating icons)references/common-issues.md — Common mistakes to avoidreferences/ui-runtime-binding.md — Patterns and guide to bind data to UI at runtime (only when requested or when bindings are involved)references/painter2d.md — Painter2D API for custom visuals: gradients, shapes, arcs, procedural drawing (read this whenever gradients, custom shapes, progress rings, procedural drawing, or any visual beyond what USS can express is needed)references/pointermanipulator-guide.md — Patterns and guide to create and use Manipulators (only when requested or when manipulators are involved). This helps with setting up drag and drop features or simple event handling for a Visual Element.references/custom-elements.md — Custom UI Element patterns and guide to create reusable components with UXML, USS, and C#. This helps with creating complex UI components for reuse across the project.Paths are relative to this skill's folder — read references/uss-guide.md directly.
When explaining UI structure, use this format:
Common edit requests:
| Request | Action |
|---|---|
| "Change button color" | Edit USS selector for that button |
| "Add a label here" | Add element to UXML at specified location |
| "Make this bigger" | Edit width/height in USS |
| "Hide this element" | Add display: none to USS or remove from UXML |
| "Rename this element" | Update name attribute in UXML |
Don't over-edit:
There is no way to validate UXML or USS from outside the Editor — Unity parses these files on import and reports problems in the Console. Write the files, then have the user check the result.
Workflow:
Because feedback costs a user round-trip, get it right the first time:
references/uss-guide.md and references/common-issues.md before writing,
rather than after an error comes back.references/common-issues.md
lists them.When creating new UI:
Generate only what is requested:
| Request | Output |
|---|---|
| USS only | .uss file only |
| UXML only | .uxml file only |
| UI screen / menu / panel | .uss + .uxml only |
| "with code" / "with logic" / "functional" | .uss + .uxml + .cs |
These do NOT imply C#:
references/pointermanipulator-guide.md for patternsGeneration workflow:
references/ui-runtime-binding.md). Generate the scriptable object asset if needed. Assign the asset to the UI element root in UXML or via datasource in C#.Color, visibility, and specification rules:
Styling / Theme When styling UI or adjusting theme make sure to not only apply to the elements directly in the current UXML but also to the core elements of UI Toolkit which are composed of several child elements usually.
Follow project patterns first. Search existing files before applying defaults.
| Type | Convention | Good | Bad |
|---|---|---|---|
name attribute | camelCase | submitButton | submit-button |
class attribute / USS | kebab-case | .submit-button | .submitButton |
| File paths | Feature folders | Assets/UI/Inventory/ | Assets/Scripts/UI/ |
Output format:
Unity's USS is a subset of CSS. These properties do NOT exist — NEVER use them:
| NEVER Use | Use Instead |
|---|---|
border shorthand | border-width, border-color separately |
gap | margin on children |
z-index | DOM order or parent nesting |
pointer-events | picking-mode UXML attribute |
filter | Not supported |
outline | border-* properties |
box-shadow | Nested elements or background image |
:first-child, :last-child, :nth-child | Explicit classes |
[attribute] selectors | Explicit classes |
transition-property: <value> | Omit entirely, or none/initial/inherit only |
linear-gradient(), radial-gradient() | Custom VisualElement with Painter2D (see references/painter2d.md) |
Inline styles: NEVER use style="..." in UXML. All styling in USS only.
External URLs: NEVER use url() with external paths. Only url("project://database/Assets/...").
Prefer flexible layouts over hardcoded sizes:
flex-grow, flex-shrink, or % instead of fixed width/height valuesflex-direction: column is default)width: 100px doesn't need min-width/max-width)flex: 1 already sets grow/shrink)Every file must:
<ui:UXML xmlns:ui="UnityEngine.UIElements"><ui:Style src="Screen.uss" />style="..." attributes — use USS onlyreferences/pointermanipulator-guide.md)clickable manipulator in UXMLFor inventory and crafting systems:
references/pointermanipulator-guide.md for inventory/crafting-specific patternsDo NOT reference UnityDefaultRuntimeTheme.tss or Unity's built-in theme icons.
Icon priority:
references/svg-icons.md)Reference format:
PanelSettings is required — UI won't render without it.
Assets/UI/PanelSettings.assetPanel Settings fieldSkip for Editor UI (EditorWindow, PropertyDrawer).
AddToClassList()) — never use element.style.* as inline styles have higher specificity than USS selectors, making them impossible to override via stylesheets, and add per-element memory overheadFontAsset, TextStyleSheet, and TextSettings, not their TextMeshPro equivalents (TMP_FontAsset, etc.)background-image: url("project://database/Assets/UI/Textures/icon.png");