Content/Skills/data-assets/SKILL.md
Create and modify Primary Data Assets with property management
npx skillsauth add kevinpbuckley/vibeue data-assetsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
# WRONG
unreal.DataAssetService.set_property(path, "Damage", 75)
# CORRECT
unreal.DataAssetService.set_property(path, "Damage", "75")
unreal.DataAssetService.set_property(path, "IsActive", "true")
# WRONG - JSON format won't work
keys_json = '[{"EntryName": "Key1"}]'
# CORRECT - Unreal string format
keys_str = '((EntryName="Key1"),(EntryName="Key2"))'
# WRONG
"/Game/Meshes/Cube"
# CORRECT - repeat asset name
"/Game/Meshes/Cube.Cube"
# Blueprint classes add _C suffix
"/Game/Blueprints/BP_Enemy.BP_Enemy_C"
# WRONG
info = unreal.DataAssetService.get_info(path)
print(info["name"]) # ERROR!
# CORRECT
print(info.name)
print(info.class_name)
unreal.DataAssetService.set_property(path, "Damage", "100")
unreal.EditorAssetLibrary.save_asset(path) # REQUIRED
unreal.DataAssetService.set_property(path, "Level", "50") # Integer
unreal.DataAssetService.set_property(path, "Weight", "5.5") # Float
unreal.DataAssetService.set_property(path, "IsActive", "true") # Boolean
unreal.DataAssetService.set_property(path, "Name", "Iron Sword") # String
# FVector
unreal.DataAssetService.set_property(path, "Location", "(X=100.0,Y=200.0,Z=50.0)")
# FLinearColor
unreal.DataAssetService.set_property(path, "Color", "(R=1.0,G=0.5,B=0.0,A=1.0)")
# Custom struct
unreal.DataAssetService.set_property(path, "Stats", "(Attack=75,Defense=50)")
# Use Unreal syntax: ((field=value),(field=value))
items_str = '((Name="Sword",Quantity=1),(Name="Potion",Quantity=5))'
unreal.DataAssetService.set_property(path, "Inventory", items_str)
import unreal
path = unreal.DataAssetService.create_data_asset("InputAction", "/Game/Data/", "DA_NewItem")
unreal.DataAssetService.set_property(path, "Name", "New Item")
unreal.DataAssetService.set_property(path, "Value", "100")
unreal.EditorAssetLibrary.save_asset(path)
import unreal
# Find available DataAsset classes
types = unreal.DataAssetService.search_types("Item")
for t in types:
print(f"{t.name}: {t.parent_class}")
# Get class schema
info = unreal.DataAssetService.get_class_info("InputAction", True)
for p in info.properties:
print(f" {p.name}: {p.type}")
import unreal
path = "/Game/Data/DA_Item"
props = unreal.DataAssetService.list_properties(path)
for p in props:
value = unreal.DataAssetService.get_property(path, p.name)
print(f"{p.name}: {value}")
import unreal
import json
properties = {"Name": "Iron Sword", "Damage": "50", "Weight": "5.5"}
result = unreal.DataAssetService.set_properties(path, json.dumps(properties))
# result.success_properties - list of properties set
# result.failed_properties - list that failed
testing
Procedurally design an AAA-style open-world FPS map blockout (roads, POIs, fields, forests/treelines, railway/bridges) from a VibeUE-generated landscape, validate it through gated checks, and materialize the plan into real engine geometry (splines, paint layers, foliage, actors).
tools
Create and manage Niagara particle systems - system lifecycle, adding/copying emitters, user parameters, system script settings, scratch-pad authoring
development
Configure Niagara emitter internals - modules, renderers, rapid iteration parameters, graph positioning, and scratch-pad authoring (Custom HLSL + node graph)
tools
Create and modify Blueprint assets, variables, functions, and components