ue-editor-tools
Use when extending the Unreal Editor with editor tool, editor utility widget, Blutility, detail customization, property customization, editor mode, asset editor, editor subsystem, editor extension, UToolMenus, or scripted asset operations. For Slate fundamentals, see ue-ui-umg-slate. For module buil
By quodsoler · 937 installs
npx skills add quodsoler/unreal-engine-skills --skill ue-editor-tools
Source repository · Upstream listing
UE Editor Tools
You are an expert in extending the Unreal Editor with custom tools and workflows.
Context
Read .agents/ue project context.md for editor module structure, engine version, team workflows, and project specific conventions before providing guidance.
Before You Start
Ask which area the user needs if not clear:
Editor Utility Widget — UMG panel run from editor right click
Blutility — UAssetActionUtility or UActorActionUtility scripted actions
Detail Customization — Custom property panel (IDetailCustomization / IPropertyTypeCustomization)
Custom Editor Mode — Viewport mode with specialized interaction (FEdMode)
Asset Type Actions — Content Browser integration for a custom asset type
Editor Subsystem — Editor lifetime singleton (UEditorSubsystem)
Menu / Toolbar Extension — UToolMenus additions to main menu, toolbars, context menus
Editor Module Setup
All editor extending code must live in a module with "Type": "Editor" . Never put UnrealEd / PropertyEditor includes in a Runtime module without if WITH EDITOR guards.
Module skeleton — every registration in StartupModule must be mirrored in ShutdownModule :
Full boilerplate with asset type actions, editor modes, and factory: references/editor module setup.md
Editor Utility Widgets
UEditorUtilityWidget (from EditorUtilityWidget.h ) extends UUserWidget for editor only UMG panels. Create as a Blueprint subclass (right click Content Browser Editor Utilities Editor Utility Widget). Run : right click the widget asset Run Editor Utility Widget. Or subclass in C++:
Key UEditorUtilityLibrary functions (from EditorUtilityLibrary.h ):
Function Purpose
GetSelectedAssets() Currently selected Content Browser assets
GetSelectedAssetsOfClass(UClass ) Filter selection by class
UEditorAssetLibrary::DeleteAsset(Path) Delete asset; RenameAsset for move/rename
GetSelectionSet() Selected level actors
SyncBrowserToFolders(TArray<FString ) Sync content browser view
Content browser filters : Use FARFilter with IAssetRegistry::GetAssets for programmatic asset queries by class, path, or tags.
Open a widget programmatically:
Blutility: Scripted Actions
UAssetActionUtility — Asset Right Click Actions
Any UFUNCTION(CallInEditor) on a UAssetActionUtility subclass appears in the Content Browser context menu. Set SupportedClasses in Class Defaults to filter by asset type.
UActorActionUtility — Actor Right Click Actions
Same pattern for level actors. Both UAssetActionUtility and UActorActionUtility inherit from UEditorUtilityObject , the base class for all Blutility actions.
Detail Customizations
Class Customization — IDetailCustomization
Struct Customization — IPropertyTypeCustomization
Full implementations, Slate row patterns, IPropertyHandle read/write, NameContent/ValueContent: references/detail customization patterns.md
Custom Editor Modes
FEdMode (from EdMode.h ) provides specialized viewport interaction. Register globally; only one active per viewport at a time.
Register/unregister in module lifecycle:
Asset Type Actions
FAssetTypeActions Base (from AssetTypeActions Base.h ) controls Content Browser appearance and context menu for custom asset types.
Register in StartupModule , keep reference, unregister in ShutdownModule .
FAssetEditorToolkit — Tab Based Asset Editor Window
Query open editors programmatically via IAssetEditorInstance :
Asset Factories
UFactory subclasses allow the Content Browser's "Add" menu to create new custom assets:
Custom Thumbnails
Editor Subsystems
UEditorSubsystem (from EditorSubsystem.h ) — editor lifetime singletons, auto discovered (no registration needed). Access via GEditor GetEditorSubsystem<T () .
Built in subsystems:
Subsystem Purpose
UEditorActorSubsystem Select, spawn, delete level actors
UEditorAssetSubsystem Load, save, duplicate assets
ULevelEditorSubsystem Open, save, manage levels
UEditorUtilitySubsystem Spawn editor utility widget tabs
Menu and Toolbar Extensions (UToolMenus)
UToolMenus (UE5+) replaces FExtender . Register inside the startup callback so Slate is ready:
Always unregister: UToolMenus::UnRegisterStartupCallback(this) + TryGet() UnregisterOwner(this) .
Command Registration — TCommands Pattern
Data Validation
Common Mistakes
Mistake Fix
Editor headers in Runtime modules Move to Editor module; use if WITH EDITOR for runtime side editor hooks
No UnregisterCustomClassLayout in ShutdownModule Always pair register/unregister; crashes Live Coding reload
Raw pointer capture in Slate lambdas Capture as TWeakPtr ; pin before use
LoadingPhase: Default for editor extension module Use PostEngineInit for modules registering menus or customizations
UEditorUtilityWidget referenced from Runtime Editor only; will not exist in packaged builds
ForceRefreshDetails() on every value change Use only when layout structure changes; use handles/attributes for values
RegisterMode without UnregisterMode Crashes on plugin reload
Related Skills
ue ui umg slate — Slate widget fundamentals (SNew, TAttribute, FReply, SBox, SHorizontalBox)
ue module build system — Editor module .Build.cs , LoadingPhase, WITH EDITOR guards
ue data assets tables — Custom UDataAsset types that need asset editors and type actions
ue cpp foundations — UPROPERTY, UFUNCTION, UObject reflection system