Content/Skills/data-tables/SKILL.md
Create and modify Data Tables with row management
npx skillsauth add kevinpbuckley/vibeue data-tablesInstall 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.
import json
data = {"Name": "Iron Sword", "Damage": 50, "IsEquippable": True}
unreal.DataTableService.add_row("/Game/DT_Items", "Sword_01", json.dumps(data))
{"Mesh": "/Game/Meshes/SM_Sword.SM_Sword", # .AssetName suffix
"ActorClass": "/Game/BP_Enemy.BP_Enemy_C"} # _C for blueprint class
Use Unreal format strings, NOT JSON objects:
{"Location": "(X=100.0,Y=200.0,Z=0.0)",
"Color": "(R=1.0,G=0.0,B=0.0,A=1.0)"}
Use enum VALUE name (not qualified):
{"ItemType": "Weapon", "Rarity": "Epic"} # NOT "EItemType::Weapon"
| Type | WRONG | CORRECT |
|------|-------|---------|
| RowStructTypeInfo | info.struct_name | info.name |
| DataTableInfo | info.asset_name | info.name |
| DataTableDetailedInfo | info.columns | info.columns_json (parse with json.loads) |
| RowStructColumnInfo | col.name | col.column_name |
unreal.DataTableService.add_row(table_path, row_name, json_data)
unreal.EditorAssetLibrary.save_asset(table_path) # REQUIRED
import unreal
# Find available row struct types
structs = unreal.DataTableService.search_row_types("Item")
for s in structs:
print(f"{s.name}: {s.path}")
# Create table
table_path = unreal.DataTableService.create_data_table("FItemData", "/Game/Data/", "DT_Items")
unreal.EditorAssetLibrary.save_asset(table_path)
import json
import unreal
table_path = "/Game/Data/DT_Items"
# Get row struct schema first
columns = unreal.DataTableService.get_row_struct(table_path)
for col in columns:
print(f"{col.column_name}: {col.column_type}")
# Add row
data = {"Name": "Iron Sword", "Damage": 50, "Price": 100}
unreal.DataTableService.add_row(table_path, "Sword_Iron", json.dumps(data))
unreal.EditorAssetLibrary.save_asset(table_path)
import unreal
import json
info = unreal.DataTableService.get_info("/Game/DT_Items")
print(f"Row count: {info.row_count}")
# Parse columns_json (it's a JSON string!)
columns = json.loads(info.columns_json)
for col in columns:
print(f"{col['name']}: {col['type']}")
# List rows
row_names = unreal.DataTableService.list_rows("/Game/DT_Items")
for name in row_names:
row_data = unreal.DataTableService.get_row("/Game/DT_Items", name)
print(f"{name}: {row_data}")
import json
import unreal
new_data = {"Name": "Iron Sword +1", "Damage": 75, "Price": 200}
unreal.DataTableService.update_row("/Game/DT_Items", "Sword_Iron", json.dumps(new_data))
unreal.EditorAssetLibrary.save_asset("/Game/DT_Items")
import unreal
unreal.DataTableService.remove_row("/Game/DT_Items", "Sword_Iron")
unreal.EditorAssetLibrary.save_asset("/Game/DT_Items")
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
tools
Search, find, open, move, duplicate, save, delete, import, and export assets