unity-ui
Skill7 starsChanged 7 months agoMITView on GitHub
Use when users want to create Canvas, Button, Text, Image, or other UI elements.
3 other projects use a version of this.
Adopted by
Most recently taken up by
- keijiro/unity-skillstheir own version, first seen Sep 16, 2026
- Nice-Wolf-Studio/unity-claude-skillstheir own version, first seen Sep 14, 2026
- IceMasterT/Unity-6.3_SKILLStheir own version, first seen Aug 19, 2026
Other versions3 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 3
- Nice-Wolf-Studio/unity-claude-skills★ 32same name
- keijiro/unity-skills★ 11same name
- IceMasterT/Unity-6.3_SKILLS★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository34 other files it gives its agents.
- unity-mcp-skillsSkill
- unity-animatorSkill
- unity-assetSkill
- unity-cameraSkill
- unity-cinemachineSkill
- unity-cleanerSkill
- unity-componentSkill
- unity-consoleSkill
- unity-editorSkill
- unity-eventSkill
- unity-gameobjectSkill
- unity-importerSkill
- unity-lightSkill
- unity-materialSkill
- unity-navmeshSkill
- unity-optimizationSkill
- unity-packageSkill
- unity-perceptionSkill
- unity-physicsSkill
- unity-prefabSkill
- unity-probuilderSkill
- unity-projectSkill
- unity-sceneSkill
- unity-scriptableobjectSkill
- unity-scriptSkill
- unity-shaderSkill
- unity-smartSkill
- unity-terrainSkill
- unity-testSkill
- unity-timelineSkill
- unity-toolingSkill
- unity-uitoolkitSkill
- unity-validationSkill
- unity-xrSkill
The file
We split this skill into the rules it gives an agent
12 rules. About 0 are common, 7 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 10
Use this module for Unity UGUI / Canvas workflows.
- Very specific: line 13
Check ../../mcp-tools.md first for a dedicated official Unity MCP tool.
- Very specific: line 14
If no native tool covers the operation, use ../../recipes/ui/<command>.md.
- Very specific: line 30
Do not confuse UGUI (ui) with UI Toolkit (uitoolkit)
- Very specific: line 96
Create first, then place/anchor with ui_set_rect, ui_set_anchor, or ui_layout_children.
- Distinctive: line 115
Read the response payload if you need to know which one was created before later component-specific edits.
- Distinctive: line 119
Create a Canvas first.
- Distinctive: line 120
Use panels to group related controls.
- Very specific: line 121
Prefer ui_create_batch for menus, HUD groups, and repeated widgets.
- Distinctive: line 122
Use anchors and layout groups before hand-placing every child.
- Distinctive: line 198
After this call, use the Read tool on the output PNG to confirm the visual result.
- Distinctive: line 208
When verifying screenshots, open the relevant design spec file (e.g.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Unity UI Skills
When to Use
Use this module for Unity UGUI / Canvas workflows. It is separate from UI Toolkit.
Routing:
- Check
../../mcp-tools.mdfirst for a dedicated official Unity MCP tool. - If no native tool covers the operation, use
../../recipes/ui/<command>.md. - For UXML/USS/UIDocument → use
uitoolkit. - For XR-compatible world-space Canvas conversion → use
xr_setup_ui_canvas. - For text updates after creation → use
ui_set_text. - For layout and alignment → use
ui_layout_children,ui_align_selected,ui_distribute_selected.
Creating 2+ elements: call the individual
ui_create_<primitive>recipes in a singleUnity_RunCommand— oneCommandScript.Executeblock can instantiate any number of UI elements by chaining the per-primitive setup inline.
Common Mistakes
DO NOT (common hallucinations):
ui_add_canvasdoes not exist -> useui_create_canvasui_create_labeldoes not exist -> useui_create_textui_create_checkboxdoes not exist -> useui_create_toggleui_set_colordoes not exist -> usecomponent_set_propertyonImage/Text, or the dedicated UI property skills when available- Do not confuse UGUI (
ui) with UI Toolkit (uitoolkit)
Quick Reference
Create Skills
| Skill | Use | Key parameters |
ui_create_canvas | Create Canvas | name?, renderMode? |
ui_create_panel | Create panel container | name?, parent?, r/g/b/a? |
ui_create_button | Create button | name?, parent?, text?, width/height? |
ui_create_text | Create text label | name?, parent?, text?, fontSize?, r/g/b? |
ui_create_image | Create image | name?, parent?, spritePath?, width/height? |
ui_create_inputfield | Create input field | name?, parent?, placeholder?, width/height? |
ui_create_slider | Create slider | name?, parent?, minValue?, maxValue?, value? |
ui_create_toggle | Create toggle | name?, parent?, label?, isOn? |
ui_create_dropdown | Create dropdown | name?, parent?, options?, width/height? |
ui_create_scrollview | Create ScrollRect hierarchy | name?, parent?, width/height?, horizontal?, vertical? |
ui_create_rawimage | Create RawImage | name?, parent?, texturePath?, width/height? |
ui_create_scrollbar | Create scrollbar | name?, parent?, direction?, value?, size? |
Query and Layout Skills
| Skill | Use | Key parameters |
ui_find_all | Find scene UI elements | uiType?, limit? |
ui_set_text | Update text content | name, text |
ui_set_rect | Set RectTransform size/offsets | target, width, height, posX, posY, left/right/top/bottom? |
ui_set_anchor | Apply anchor preset | target, preset?, setPivot? |
ui_layout_children | Vertical/Horizontal/Grid layout | target, layoutType?, spacing? |
ui_align_selected | Align current selection | alignment? |
ui_distribute_selected | Distribute current selection | direction? |
Property and Effect Skills
| Skill | Use | Key parameters |
ui_set_image | Image type/fill/sprite | target, type? (Simple/Sliced/Tiled/Filled), fillMethod?, fillAmount?, spritePath?, preserveAspect? |
ui_add_layout_element | Add LayoutElement constraints | target, minWidth/Height?, preferredWidth/Height?, flexibleWidth/Height?, ignoreLayout?, layoutPriority? |
ui_add_canvas_group | Add CanvasGroup | target, alpha?, interactable?, blocksRaycasts?, ignoreParentGroups? |
ui_add_mask | Add Mask or RectMask2D | target, maskType?, showMaskGraphic? |
ui_add_outline | Add Shadow/Outline effect | target, effectType? (Shadow/Outline), r/g/b/a?, distanceX/Y?, useGraphicAlpha? |
ui_configure_selectable | Configure transitions/navigation/colors | target, transition?, navigationMode?, interactable?, normalR/G/B?, highlightedR/G/B?, pressedR/G/B?, disabledR/G/B?, colorMultiplier?, fadeDuration? |
High-Frequency Defaults
Canvas and Parenting
ui_create_canvasdefaults toScreenSpaceOverlay.- Most create skills accept
parent; if omitted, Unity will create under the active Canvas or scene root depending on the implementation context. - For reusable menu groups, create the Canvas once, then create a Panel and put all child controls under that panel.
Common Create Parameters
| Skill | High-frequency fields |
ui_create_button | text, width, height |
ui_create_text | text, fontSize, r/g/b |
ui_create_image | spritePath, width, height |
ui_create_slider | minValue, maxValue, value |
ui_create_toggle | label, isOn |
ui_create_dropdown | options |
ui_create_scrollview | horizontal, vertical, movementType |
Important:
- Most create skills do not take explicit
x/yplacement. - Create first, then place/anchor with
ui_set_rect,ui_set_anchor, orui_layout_children.
Layout and Anchoring Rules
ui_set_anchoris the fastest way to move a control into a standard layout position.ui_set_rectis better for precise size/offset edits after anchoring.ui_layout_childrenis preferred over hand-positioning every child when building vertical, horizontal, or grid menus.
Anchor presets commonly used in production:
MiddleCenterfor modal/menu panelsTopLeftorTopRightfor HUD cornersStretchAllfor full-screen backgrounds
TextMeshPro Note
Text creation auto-detects TMP:
- TMP available ->
TextMeshProUGUI - TMP unavailable -> legacy
Text
Read the response payload if you need to know which one was created before later component-specific edits.
Workflow Notes
- Create a Canvas first.
- Use panels to group related controls.
- Prefer
ui_create_batchfor menus, HUD groups, and repeated widgets. - Use anchors and layout groups before hand-placing every child.
- Text creation auto-detects TextMeshPro. Responses indicate whether TMP was used.
- For world-space gameplay UI, build the Canvas here first, then convert for XR only if needed.
ui_create_batchis mainly for bulk creation, not precise positioning. Follow it with layout or rect/anchor adjustments.ui_create_batch.itemsis a JSON string parameter, not a raw array object.
Typical Menu Workflow
ui_create_canvas name="MainMenu" renderMode="ScreenSpaceOverlay"
ui_create_panel name="MenuPanel" parent="MainMenu" a=0.65
ui_set_rect name="MenuPanel" width=300 height=200
ui_create_batch items=[
{type:"Button", name:"StartBtn", parent:"MenuPanel", text:"Start", width:220, height:44},
{type:"Button", name:"OptionsBtn", parent:"MenuPanel", text:"Options", width:220, height:44},
{type:"Button", name:"QuitBtn", parent:"MenuPanel", text:"Quit", width:220, height:44}
]
ui_layout_children name="MenuPanel" layoutType="Vertical" spacing=12RunCommand Examples
Recipe path rule: ../../recipes/ui/<command>.md
See ../../recipes/ui/<command>.md for C# templates.
UI Authoring Loop
Standard 3-phase loop for running an editor authoring menu, capturing a screenshot, and verifying the result. Use whenever a [MenuItem] script modifies scene objects and requires visual confirmation.
Phase 1 — Wait for compile
internal class CommandScript : IRunCommand
{
public void Execute(ExecutionResult result)
{
result.Log("compiling=" + UnityEditor.EditorApplication.isCompiling);
}
}Poll until compiling=False. If True, wait 2–3 seconds and re-run.
Phase 2 — Run the authoring menu
internal class CommandScript : IRunCommand
{
public void Execute(ExecutionResult result)
{
bool ok = UnityEditor.EditorApplication.ExecuteMenuItem("Tools/Authoring/YourMenuName");
result.Log("menu ok=" + ok);
}
}Expected: menu ok=True plus any [Log] lines from the menu itself. If ok=False the menu path is wrong or the [MenuItem] attribute string does not match.
Phase 3 — Screenshot and verify
Prerequisite:
Tools/UI/Screenshot/menu items must exist in the project. If they do not, install the screenshot Editor script first — seetooling/ui/ui_screenshot_tool.md. Create the script viaUnity_CreateScript, wait for Unity to recompile, then continue.
internal class CommandScript : IRunCommand
{
public void Execute(ExecutionResult result)
{
bool ok = UnityEditor.EditorApplication.ExecuteMenuItem("Tools/UI/Screenshot/ScreenName");
result.Log("screenshot ok=" + ok);
}
}After this call, use the Read tool on the output PNG to confirm the visual result.
Pitfalls
- ExecuteMenuItem returns false silently if the path is wrong. Always log and check the return value.
- isCompiling may stay true for several seconds after saving a file. Do not skip the poll.
- Screenshot tools may modify CanvasScaler render mode temporarily. They should restore it — if they don't, the scene will be left dirty with wrong scaler settings.
Quality gate — always compare against a spec file
When verifying screenshots, open the relevant design spec file (e.g. a .jsx or .css reference) and compare values directly. Do NOT derive the checklist from the screenshot — that produces a circular pass. Example:
Spec says xpBar.height: 54. Current screenshot bar height looks ~20px. → FAIL.
Self-derived checklists ("button is not white") only catch regressions, not spec divergence.
Mobile UI Sizing Principles
Web spec px values do not map directly to Unity canvas pixels. Use these baselines instead of copying px numbers from a web design file.
Touch targets
| Role | Minimum height |
| Primary action button (PLAY, CONFIRM) | 60 px |
| Secondary button (SETTINGS, CANCEL) | 48 px |
| Icon button (pause, close) | 44 × 44 px |
| Toggle, checkbox | 28 × 28 px background |
HUD bars (mobile portrait baseline)
Width as percentage of canvas width; height as design-unit minimums. These values assume a portrait mobile canvas — scale proportionally for landscape or tablet.
| Bar | Width | Height |
| XP / level bar | 80–85% canvas width | 48–56 px |
| HP bar | 65–70% canvas width | 24–32 px |
| Thin progress strip | 100% width | 8–12 px |
Text inside a bar (e.g. "LVL 3") needs at minimum the bar's own height to be legible — a 24 px bar cannot hold 22 px text with padding.
Minimum bar height when text is inside: 44 px. If a design spec shows a smaller value, the spec is wrong for mobile — do not copy it.
Typography
| Role | Font size range |
| Screen title (GAME OVER, PAUSED) | 34–44 px |
| Card / panel title | 18–26 px |
| Body / stat label | 13–16 px |
| Stat value (large accent) | 18–24 px |
| Badge / caption | 10–13 px |
Pitfalls
- Web spec values are starting points, not answers. When the canvas reference width matches the spec's pixel width, the numbers are 1:1 — but web specs optimize for visual appearance, not touch targets or game-condition readability. Always check the value against the table above: if it's below the table minimum, use the minimum. If it's in range, verify it still meets the text-inside-bar rule (44 px floor) if text will be inside.
- Never use
enableAutoSizingas a crutch for wrong sizes. Auto-sizing down to the minimum means the size is wrong, not that auto-sizing fixed it. - Set
enableAutoSizing = trueBEFOREfontSizeMin/fontSizeMax. TMP silently ignores the size range if auto-sizing is enabled after the size fields are written. - Safe area. On iOS (notch / Dynamic Island) and Android (punch-hole), the top ~44 px and bottom ~34 px are unsafe. Use
Screen.safeAreato inset any HUD elements that anchor to the screen edges. - Project code is not the authority for sizing. It may already contain under-sized values. Use the sizing tables above to verify existing implementation, especially the text-inside-bar floor (44 px).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

