italink/unrealclientprotocol/unreal-widget-editing
Claude Code and agent skill by italink/unrealclientprotocol
- community
Checking that the SKILL.md file is still in the repository.
Edit UMG Widget Blueprint UI layouts via text (ReadGraph/WriteGraph). Use when the user asks to add, remove, or rearrange UI widgets, change widget properties, or modify the visual hierarchy of a Widget Blueprint.
Install
npx vskill@latest install italink/unrealclientprotocol/unreal-widget-editingSKILL.md
Widget Editing
Edit UMG Widget Blueprint UI layouts via a text-based tree representation. The widget tree (visual hierarchy) uses the [WidgetTree] section. For editing the event graph and functions of a Widget Blueprint, use the unreal-blueprint-editing skill — Widget Blueprints are Blueprints, so EventGraph/Function/Variables sections work identically.
Prerequisite: UE editor running with UCP plugin enabled.
API
CDO: /Script/UnrealClientProtocolEditor.Default__NodeCodeEditingLibrary
| Function | Params | Description | |
|---|---|---|---|
Outline | AssetPath | Returns all sections: [WidgetTree], [Variables], [EventGraph], [Function:Name], etc. | |
ReadGraph | AssetPath, Section | Returns text. Use "WidgetTree" for the UI layout. | |
WriteGraph | AssetPath, Section, GraphText | Overwrite the widget tree. |
Section Types for Widget Blueprints
A Widget Blueprint's Outline returns both widget tree and graph sections:
| Section | Handler | Description | |
|---|---|---|---|
WidgetTree | WidgetTreeSectionHandler | UI widget hierarchy | |
Variables | BlueprintSectionHandler | Blueprint variables | |
EventGraph | BlueprintSectionHandler | Event graph logic | |
Function:<Name> | BlueprintSectionHandler | Blueprint functions |
WidgetTree Text Format
The widget tree uses indentation-based text format where depth represents parent-child relationships:
Format Rules
- Indentation = hierarchy: 2 spaces per level. Root widget has no indentation.
- Widget name is the key:
TextBlock_Title,Button_Submit, etc. These are the widget'sGetName(). - `Type`: Widget class name (e.g.,
CanvasPanel,TextBlock,Button,Image). Resolved via reflection. - `Slot`: Layout properties from the parent panel's slot type, as a nested JSON object.
- `bIsVariable`: If
true, the widget is accessible from the Blueprint graph (e.g., for binding events or setting properties at runtime). Only serialized whentrue. - Other properties: Non-default widget properties, serialized via UE reflection.
Slot Properties by Panel Type
Different panel types use different slot types with different layout properties:
CanvasPanelSlot (parent is CanvasPanel):
LayoutData.Anchors:(Minimum=(X=0,Y=0),Maximum=(X=1,Y=1))— anchor presetsLayoutData.Offsets:(Left=0,Top=0,Right=0,Bottom=0)— position/size offsetsLayoutData.Alignment:(X=0.5,Y=0.5)— pivot alignmentbAutoSize:true/falseZOrder: integer
VerticalBoxSlot / HorizontalBoxSlot (parent is VerticalBox/HorizontalBox):
Padding:(Left=0,Top=10,Right=0,Bottom=0)Size:(SizeRule=Fill,Value=1.0)or(SizeRule=Auto,Value=1.0)HorizontalAlignment:HAlign_Fill,HAlign_Left,HAlign_Center,HAlign_RightVerticalAlignment:VAlign_Fill,VAlign_Top,VAlign_Center,VAlign_Bottom
OverlaySlot (parent is Overlay):
Padding:(Left=0,Top=0,Right=0,Bottom=0)HorizontalAlignment: same as aboveVerticalAlignment: same as above
GridSlot (parent is GridPanel):
Row,Column: integerRowSpan,ColumnSpan: integer
Common Widget Types
| Type | Description | Key Properties | |
|---|---|---|---|
CanvasPanel | Free-form positioning container | (none typical) | |
VerticalBox | Stack children vertically | (none typical) | |
HorizontalBox | Stack children horizontally | (none typical) | |
Overlay | Stack children on top of each other | (none typical) | |
GridPanel | Grid layout | (none typical) | |
ScrollBox | Scrollable container | Orientation | |
SizeBox | Constrain child size | WidthOverride, HeightOverride | |
Border | Single child with background | Background | |
TextBlock | Display text | Text, Font, ColorAndOpacity | |
RichTextBlock | Rich text display | Text | |
Image | Display image/texture | Brush | |
Button | Clickable button | WidgetStyle | |
CheckBox | Toggle checkbox | IsChecked | |
Slider | Value slider | Value, MinValue, MaxValue | |
ProgressBar | Progress indicator | Percent | |
EditableText | Single-line text input | Text, HintText | |
EditableTextBox | Single-line text input with box | Text, HintText | |
MultiLineEditableText | Multi-line text input | Text | |
ComboBoxString | Dropdown selection | DefaultOptions | |
SpinBox | Numeric input | Value, MinValue, MaxValue | |
Spacer | Empty spacing widget | Size | |
WidgetSwitcher | Show one child at a time | ActiveWidgetIndex |
Workflow
- Outline — see available sections (WidgetTree + graph sections)
- ReadGraph("WidgetTree") — get the UI hierarchy
- Understand the tree — indentation shows parent-child relationships
- Modify — add/remove/rearrange widgets, change properties
- WriteGraph("WidgetTree", text) — apply changes
For logic changes (event bindings, property updates at runtime):
- ReadGraph("EventGraph") — use the
unreal-blueprint-editingskill - Reference widgets by name (widgets with
bIsVariable:trueare accessible in graphs)
Key Rules
- Indentation matters: 2 spaces per level. Incorrect indentation will create wrong parent-child relationships.
- Widget names must be unique within the tree.
- Root widget (depth 0) must be a panel widget (CanvasPanel, VerticalBox, etc.).
- Only panel widgets can have children. Don't indent a child under a non-panel widget like TextBlock.
- Set `bIsVariable:true` on any widget you need to reference from the Blueprint graph.
- ReadGraph before WriteGraph — always read first to understand the current structure.
- Slot properties depend on the parent panel type. A widget under VerticalBox uses VerticalBoxSlot properties, not CanvasPanelSlot.
- All operations support Undo (Ctrl+Z).
Error Handling
- Unknown widget class:
"Unknown widget class: ...". - Failed to create widget:
"Failed to create widget: ...". - Check
diffobject in response fornodes_added,nodes_removed.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingSkills/unreal-widget-editing/SKILL.md
Popularity
- Repository stars
- 114
- Repository forks
- 14
- 7-day trend score
- 24
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/italink/unrealclientprotocol/unreal-widget-editing)