italink/unrealclientprotocol/unreal-asset-operation

Claude Code and agent skill by italink/unrealclientprotocol

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Query and manage UE assets via UCP. Use when the user asks about asset search, dependencies, referencers, asset CRUD, asset management, getting selected/current assets, opening/closing asset editors, or any editor asset operation in Unreal Engine.

Install

npx vskill@latest install italink/unrealclientprotocol/unreal-asset-operation

SKILL.md

Unreal Asset Operations

Operate on Unreal Engine assets through UCP's call command. The core approach is to obtain the IAssetRegistry instance and call its rich API directly, combined with engine asset libraries for CRUD operations.

Prerequisite: The unreal-client-protocol skill must be available and the UE editor must be running with the UCP plugin enabled.

Custom Function Library

UAssetEditorOperationLibrary (Editor)

CDO Path: /Script/UnrealClientProtocolEditor.Default__AssetEditorOperationLibrary

FunctionParamsReturnsDescription
GetAssetRegistry(none)IAssetRegistry objectReturns the AssetRegistry instance. Call its functions directly via UCP call.
ForceDeleteAssetsAssetPaths (array of string)int32 — number deletedForce-deletes assets ignoring references. Wraps ObjectTools::ForceDeleteObjects.
FixupReferencersAssetPaths (array of string)boolCleans up redirectors left after rename/consolidate. Wraps IAssetTools::FixupReferencers.
Getting the AssetRegistry
json
{"object":"/Script/UnrealClientProtocolEditor.Default__AssetEditorOperationLibrary","function":"GetAssetRegistry"}

The returned object path can then be used as the object parameter for subsequent calls to IAssetRegistry functions.

Alternatively, you can use the engine helper directly:

json
{"object":"/Script/AssetRegistry.Default__AssetRegistryHelpers","function":"GetAssetRegistry"}
Force-deleting assets
json
{"object":"/Script/UnrealClientProtocolEditor.Default__AssetEditorOperationLibrary","function":"ForceDeleteAssets","params":{"AssetPaths":["/Game/OldAssets/M_Unused","/Game/OldAssets/T_Unused"]}}
Fixing up redirectors

After renaming or consolidating assets, redirectors may be left behind. Use FixupReferencers to resolve them:

json
{"object":"/Script/UnrealClientProtocolEditor.Default__AssetEditorOperationLibrary","function":"FixupReferencers","params":{"AssetPaths":["/Game/Materials/M_OldName"]}}

Engine Built-in Asset Libraries

IAssetRegistry (via GetAssetRegistry)

Once you have the AssetRegistry instance, you can call these BlueprintCallable functions on it:

Asset Queries
FunctionKey ParamsDescription
GetAssetsByPackageNamePackageName, OutAssetData, bIncludeOnlyOnDiskAssetsGet assets in a specific package
GetAssetsByPathPackagePath, OutAssetData, bRecursiveGet assets under a content path
GetAssetsByPathsPackagePaths, OutAssetData, bRecursiveGet assets under multiple paths
GetAssetsByClassClassPathName, OutAssetData, bSearchSubClassesGet all assets of a specific class
GetAssetsFilter, OutAssetDataQuery with an FARFilter (powerful filtered search)
GetAllAssetsOutAssetData, bIncludeOnlyOnDiskAssetsGet ALL registered assets
GetAssetByObjectPathObjectPathGet single asset data by path
HasAssetsPackagePath, bRecursiveCheck if any assets exist under a path
GetInMemoryAssetsFilter, OutAssetDataQuery only currently loaded assets
Dependency & Reference Queries
FunctionKey ParamsDescription
GetDependenciesPackageName, DependencyOptions, OutDependenciesGet packages this asset depends on
GetReferencersPackageName, ReferenceOptions, OutReferencersGet packages that reference this asset
Class Hierarchy
FunctionKey ParamsDescription
GetAncestorClassNamesClassPathName, OutAncestorClassNamesGet parent classes
GetDerivedClassNamesClassNames, DerivedClassNamesGet child classes
Path & Scanning
FunctionKey ParamsDescription
GetAllCachedPathsOutPathListGet all known content paths
GetSubPathsInBasePath, OutPathList, bInRecurseGet sub-paths under a base path
ScanPathsSynchronousInPaths, bForceRescanForce scan specific paths
ScanFilesSynchronousInFilePaths, bForceRescanForce scan specific files
SearchAllAssetsbSynchronousSearchTrigger full asset scan
ScanModifiedAssetFilesInFilePathsScan modified files
IsLoadingAssets(none)Check if scan is in progress
WaitForCompletion(none)Block until scan finishes
Filter & Sort
FunctionKey ParamsDescription
RunAssetsThroughFilterAssetDataList, FilterFilter asset list in-place (keep matching)
UseFilterToExcludeAssetsAssetDataList, FilterFilter asset list in-place (remove matching)
UAssetRegistryHelpers (Static Utilities)

CDO Path: /Script/AssetRegistry.Default__AssetRegistryHelpers

FunctionDescription
GetAssetRegistryGet the IAssetRegistry instance
GetDerivedClassAssetDataGet asset data for derived classes
SortByAssetNameSort FAssetData array by name
SortByPredicateSort FAssetData array by custom predicate
IAssetTools (via UAssetToolsHelpers::GetAssetTools())

Get the instance via static helper:

json
{"object":"/Script/AssetTools.Default__AssetToolsHelpers","function":"GetAssetTools"}

Then call functions on the returned instance:

Create
FunctionKey ParamsDescription
CreateAssetAssetName, PackagePath, AssetClass, FactoryCreate a new asset (Factory can be null for simple types)
CreateUniqueAssetNameInBasePackageName, InSuffixGenerate a unique name to avoid conflicts
DuplicateAssetAssetName, PackagePath, OriginalObjectDuplicate an existing asset
Example: Create a new material
json
{"object":"<asset_tools_instance>","function":"CreateAsset","params":{"AssetName":"M_NewMaterial","PackagePath":"/Game/Materials","AssetClass":"/Script/Engine.Material","Factory":null}}
Import & Export
FunctionKey ParamsDescription
ImportAssetTasksImportTasks (array of UAssetImportTask)Import external files as assets
ImportAssetsAutomatedImportData (UAutomatedAssetImportData)Automated batch import
ExportAssetsAssetsToExport, ExportPathExport assets to files
Rename & Move
FunctionKey ParamsDescription
RenameAssetsAssetsAndNames (array of FAssetRenameData)Batch rename/move assets
FindSoftReferencesToObjectTargetObjectFind soft references to an object
RenameReferencingSoftObjectPathsPackagesToCheck, AssetRedirectorMapUpdate soft references after rename
MigratePackagesPackageNamesToMigrate, DestinationPathMigrate packages to another project
Example: Batch rename assets

RenameAssets takes an array of FAssetRenameData structs. Each struct has Asset (the object to rename), NewPackagePath (destination directory), and NewName (new asset name):

json
{"object":"<asset_tools_instance>","function":"RenameAssets","params":{"AssetsAndNames":[{"Asset":"/Game/Materials/M_OldName.M_OldName","NewPackagePath":"/Game/Materials","NewName":"M_NewName"}]}}
Example: Find soft references
json
{"object":"<asset_tools_instance>","function":"FindSoftReferencesToObject","params":{"TargetObject":"/Game/Materials/M_Example.M_Example"}}
UEditorAssetLibrary

CDO Path: /Script/EditorScriptingUtilities.Default__EditorAssetLibrary

Query & Check
FunctionDescription
DoesAssetExist(AssetPath)Check if an asset exists
DoAssetsExist(AssetPaths)Batch existence check
ListAssets(DirectoryPath, bRecursive, bIncludeFolder)List assets in directory
ListAssetByTagValue(AssetTagName, TagValue)List assets matching a specific tag value
LoadAsset(AssetPath)Load an asset into memory
LoadBlueprintClass(AssetPath)Load a Blueprint and return its generated class
GetTagValues(AssetPath, AssetTagName)Get tag values for a specific asset
FindPackageReferencersForAsset(AssetPath, bLoadAssetsToConfirm)Find all packages that reference this asset
Example: Find references to an asset
json
{"object":"/Script/EditorScriptingUtilities.Default__EditorAssetLibrary","function":"FindPackageReferencersForAsset","params":{"AssetPath":"/Game/Materials/M_Example","bLoadAssetsToConfirm":false}}
Example: List assets by tag
json
{"object":"/Script/EditorScriptingUtilities.Default__EditorAssetLibrary","function":"ListAssetByTagValue","params":{"AssetTagName":"MyCustomTag","TagValue":"SomeValue"}}
Example: Load a Blueprint class
json
{"object":"/Script/EditorScriptingUtilities.Default__EditorAssetLibrary","function":"LoadBlueprintClass","params":{"AssetPath":"/Game/Blueprints/BP_MyActor"}}
Create & Modify
FunctionDescription
DuplicateAsset(SourceAssetPath, DestinationAssetPath)Duplicate an asset by path
DuplicateDirectory(SourceDirectoryPath, DestinationDirectoryPath)Duplicate an entire directory of assets
RenameAsset(SourceAssetPath, DestinationAssetPath)Rename/move an asset by path
RenameDirectory(SourceDirectoryPath, DestinationDirectoryPath)Rename/move an entire directory
SaveAsset(AssetToSave, bOnlyIfIsDirty)Save an asset to disk
SaveDirectory(DirectoryPath, bOnlyIfIsDirty, bRecursive)Save all assets in directory
Example: Duplicate a directory
json
{"object":"/Script/EditorScriptingUtilities.Default__EditorAssetLibrary","function":"DuplicateDirectory","params":{"SourceDirectoryPath":"/Game/Materials","DestinationDirectoryPath":"/Game/Materials_Backup"}}
Example: Rename a directory
json
{"object":"/Script/EditorScriptingUtilities.Default__EditorAssetLibrary","function":"RenameDirectory","params":{"SourceDirectoryPath":"/Game/OldFolder","DestinationDirectoryPath":"/Game/NewFolder"}}
Delete & Reference Replace
FunctionDescription
DeleteAsset(AssetPathToDelete)Delete an asset by path
ConsolidateAssets(AssetToConsolidateTo, AssetsToConsolidate)Replace all references to AssetsToConsolidate with AssetToConsolidateTo, then delete the consolidated assets
Example: Consolidate assets

Replace all references to M_OldMaterial with M_NewMaterial, effectively merging them:

json
{"object":"/Script/EditorScriptingUtilities.Default__EditorAssetLibrary","function":"ConsolidateAssets","params":{"AssetToConsolidateTo":"/Game/Materials/M_NewMaterial.M_NewMaterial","AssetsToConsolidate":["/Game/Materials/M_OldMaterial.M_OldMaterial"]}}

After consolidation, run FixupReferencers to clean up any leftover redirectors:

json
{"object":"/Script/UnrealClientProtocolEditor.Default__AssetEditorOperationLibrary","function":"FixupReferencers","params":{"AssetPaths":["/Game/Materials/M_OldMaterial"]}}
Directory Management
FunctionDescription
MakeDirectory(DirectoryPath)Create a content directory
DeleteDirectory(DirectoryPath)Delete a content directory
DoesDirectoryExist(DirectoryPath)Check if directory exists
DoesDirectoryHaveAssets(DirectoryPath, bRecursive)Check if directory contains assets
Metadata Tags

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

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
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/italink/unrealclientprotocol/unreal-asset-operation/badge)](https://verified-skill.com/skills/italink/unrealclientprotocol/unreal-asset-operation)

Something wrong with this skill or its page? Tell us.