Install
$ agentstack add skill-dqz00116-skill-lib-ue5-umg ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
UE5 UMG Studio
Orchestrate C++ logic and Blueprint visuals for production UE5 user interfaces. Work in two layers: C++ for architecture and data binding, Blueprints for layout and polish.
Overview
Build production-ready Unreal Engine 5 user interfaces using a hybrid C++/Blueprint approach. C++ handles widget architecture, data binding, lifecycle, and performance; Blueprints handle layout, styling, animation, and visual state management.
When to Use
- Creating HUDs, menus, inventories, settings panels, or any widget-based interface
- Binding C++ properties to Blueprint widget components via
BindWidget - Handling gamepad or keyboard focus navigation and input modes
- Designing responsive UMG layouts, animations, and visual states
- Optimizing UI performance (widget pooling, ListView, Tick abuse, material overhead)
- Troubleshooting memory leaks from widget pools or dangling delegate references
When NOT to Use
- Editor tools, debug overlays, or custom Slate drawing — see
references/slate-fundamentals.md - Deep Common UI Plugin specifics — refer to official Epic documentation
- General gameplay programming unrelated to UI
Core Pattern: Hybrid C++/Blueprint Workflow
Without separation: Blueprint-only logic becomes spaghetti, C++-only UI is slow to iterate. With separation: C++ owns data, state, and lifecycle; Blueprints own layout, style, and animation.
// C++ Logic Layer: data binding and state
UCLASS(Abstract)
class UMyWidget : public UUserWidget
{
GENERATED_BODY()
protected:
UPROPERTY(meta = (BindWidget))
TObjectPtr HealthBar;
virtual void NativeConstruct() override;
virtual void NativeDestruct() override;
};
void UMyWidget::NativeConstruct()
{
Super::NativeConstruct();
if (HealthBar)
{
HealthBar->SetPercent(1.0f);
}
}
The Blueprint subclass of UMyWidget places a ProgressBar named HealthBar in the Designer and styles it without any logic nodes.
Quick Reference
| Task | Reference File | |------|---------------| | C++ base class, BindWidget, pooling, ListView, input modes | references/umg-cpp-patterns.md | | Layout containers, anchors, animation, styling, materials | references/blueprint-visuals.md | | Common mistakes and how to fix them | references/common-pitfalls.md | | Slate direct usage for editor tools | references/slate-fundamentals.md |
Key Rules
C++ Logic:
- Always use
UCLASS(Abstract)on base classes meant for Blueprint subclassing - BindWidget names must match Blueprint component names exactly (case-sensitive)
- Bind delegates in
NativeConstruct, unbind inNativeDestruct - Override
ReleaseSlateResourceswhen usingFUserWidgetPool
Blueprint Visuals:
- Design at your minimum supported resolution (e.g. 1280x720)
- Use
Collapsedvisibility for hiding;Hiddenonly to preserve layout space - Use
WidgetSwitcherfor mutually exclusive pages, not Visibility toggling - Never use Blueprint "Bind" properties — they run every frame
Performance:
- Use
UListView/UTileViewfor scrollable lists with 10+ items - Avoid
NativeTickfor polling; use delegates and events - Call
SetVisibilityonly when state actually changes
Quality Gates
- [ ]
UCLASS(Abstract)on base classes; BindWidget names match exactly - [ ] Delegates bound in
NativeConstruct, unbound inNativeDestruct - [ ] Input mode and focus set when showing or hiding UI
- [ ]
ReleaseSlateResourcesimplemented if using widget pools - [ ] ListView used for scrollable lists with 10+ items
- [ ] No Blueprint "Bind" properties used for dynamic values
- [ ] UI designed at minimum target resolution; anchors used for responsiveness
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: Dqz00116
- Source: Dqz00116/skill-lib
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.