Content/Skills/project-settings/SKILL.md
Configure Unreal Engine project settings AND editor preferences including UI appearance, toolbar icons, scale, colors, and all UDeveloperSettings subclasses
npx skillsauth add kevinpbuckley/vibeue project-settingsInstall 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.
EditorStyleSettings is NOT a Python ClassEditorStyleSettings is not discoverable via discover_python_class('unreal.EditorStyleSettings') — it will return PYTHON_CLASS_NOT_FOUND. It is only accessible as a category string through ProjectSettingsService:
# ❌ WRONG — will fail
discover_python_class('unreal.EditorStyleSettings') # NOT FOUND
# ✅ CORRECT — use as a category string
settings = unreal.ProjectSettingsService.list_settings("EditorStyleSettings")
result = unreal.ProjectSettingsService.set_setting("EditorStyleSettings", "AssetEditorOpenLocation", "MainWindow")
| Category | Description |
|----------|-------------|
| general | Project info (name, company, description) |
| maps | Default maps and game modes |
| custom | Direct INI access |
| EditorStyleSettings | UI scale, toolbar icons, colors, asset editor open location |
# WRONG - folder path
"/Game/Variant_Horror.Variant_Horror"
# CORRECT - full map asset path
"/Game/Variant_Horror/Lvl_Horror.Lvl_Horror"
Always verify with does_asset_exist() before setting.
result = unreal.ProjectSettingsService.set_setting("general", "ProjectName", "MyGame")
if not result.success:
print(f"Failed: {result.error_message}")
import unreal
import json
settings = {
"ProjectName": "My RPG Game",
"CompanyName": "Indie Studios",
"Description": "An epic fantasy adventure"
}
result = unreal.ProjectSettingsService.set_category_settings_from_json("general", json.dumps(settings))
if result.success:
unreal.ProjectSettingsService.save_all_config()
import unreal
# set_setting auto-persists to the correct config file - no save_config needed
result = unreal.ProjectSettingsService.set_setting("maps", "GameDefaultMap", "/Game/Maps/MainMenu.MainMenu")
if result.success:
print("Default map updated and saved")
import unreal
# EditorStartupMap controls which level opens when the editor launches
# Use full asset path format: /Game/Path/To/Level.Level
result = unreal.ProjectSettingsService.set_setting("maps", "EditorStartupMap", "/Game/Levels/MyLevel.MyLevel")
if result.success:
print("Editor startup map updated and saved")
import unreal
classes = unreal.ProjectSettingsService.discover_settings_classes()
for c in classes:
print(f"{c.class_name}: {c.property_count} properties in {c.config_file}")
import unreal
settings = unreal.ProjectSettingsService.list_settings("general")
for s in settings:
print(f"{s.key} = {s.value} ({s.type})")
When you need to find a setting but don't know which category it belongs to, search across all discovered categories:
import unreal
keyword = "AssetEditor" # partial match on setting key or display_name
classes = unreal.ProjectSettingsService.discover_settings_classes()
for c in classes:
settings = unreal.ProjectSettingsService.list_settings(c.class_name)
for s in settings:
if keyword.lower() in s.key.lower() or keyword.lower() in s.display_name.lower():
print(f"{c.class_name} -> {s.key} = {s.value}")
Use this workflow instead of guessing Python class names. Many settings classes (e.g., EditorStyleSettings) are NOT exposed as Python classes — they are only accessible as category strings through ProjectSettingsService.
import unreal
# List sections
sections = unreal.ProjectSettingsService.list_ini_sections("DefaultEngine.ini")
# Get value
value = unreal.ProjectSettingsService.get_ini_value("/Script/Engine.Engine", "GameEngine", "DefaultEngine.ini")
# Set value
result = unreal.ProjectSettingsService.set_ini_value(
"/Script/MyGame.CustomSettings",
"EnableDebugMode",
"True",
"DefaultGame.ini"
)
Python Naming Convention: C++ types like
FProjectSettingInfoare exposed asProjectSettingInfoin Python (noFprefix).
key, display_name, descriptiontype, value, default_valueconfig_section, config_filerequires_restart, read_onlysuccess, error_messagemodified_settings, failed_settingsrequires_restarttools
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