Agent skill

Project Settings

by kevinpbuckley in kevinpbuckley/VibeUE

Configure Unreal Engine project settings and editor preferences — UI appearance, toolbar icons, scale, colors, and any UDeveloperSettings subclass (ProjectSettingsService).

MITAuto-check passedGame Development

Install Project Settings

skills CLI
$ npx skills add kevinpbuckley/VibeUE --skill project-settings -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install kevinpbuckley/VibeUE project-settings --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/kevinpbuckley/VibeUE.git skills-src && mkdir -p .claude/skills && cp -r skills-src/Content/Skills/project-settings .claude/skills/project-settings && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
project-settings
GitHub stars
726
Token cost
~3.1k tokens
SKILL.md length
954 words
Files
2 (incl. scripts)
Skills in repo
39
Repo updated
First seen
Licence
MIT

At a glance

Configure Unreal Engine project settings and editor preferences — UI appearance, toolbar icons, scale, colors, and any UDeveloperSettings subclass (ProjectSettingsService).

  • The user asks to change a project setting
  • SKILL.md covers Critical Rules, Workflows, Data Structures and Sample scripts (run via…
  • Editor preference
  • Configure a UDeveloperSettings category

What it does

Project Settings is an agent skill from kevinpbuckley/VibeUE. Configure Unreal Engine project settings and editor preferences — UI appearance, toolbar icons, scale, colors, and any UDeveloperSettings subclass (ProjectSettingsService). Use when the user asks to change a project setting or editor preference, configure a UDeveloperSettings category, or read/write project config values.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts.

It sits in Game Development. It works with Unreal Engine and Python. The repository describes itself as: Unreal Engine Vibe Coding tool. The licence is MIT.

When your agent uses it

  • The user asks to change a project setting
  • Editor preference
  • Configure a UDeveloperSettings category
  • Read/write project config values

Example prompts

  • “/project-settings”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit dc051be. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/, which the agent can run.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Project Settings loads about 3.1k tokens when it runs. Until then it costs about 85 tokens; SKILL.md has 954 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~85
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from kevinpbuckley/VibeUE at commit dc051be, republished under its MIT licence (© kevinpbuckley). 954 words, ~3,060 tokens.

Download SKILL.mdSave it as .claude/skills/project-settings/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
project-settings
description
Configure Unreal Engine project settings and editor preferences — UI appearance, toolbar icons, scale, colors, and any UDeveloperSettings subclass (ProjectSettingsService). Use when the user asks to change a project setting or editor preference, configure a UDeveloperSettings category, or read/write project config values.
display_name
Project & Editor Settings
vibeue_classes
ProjectSettingsService
unreal_classes
EditorAssetLibrary

Project Settings Skill

🔀 Registered settings moved to the engine. Category-based registered-setting access (list_categories / list_settings / get_setting / set_setting / set_category_settings_from_json) is now Unreal 5.8's native ConfigSettingsToolset — reach it with call_tool (run describe_toolset on ConfigSettingsToolset for its actions/params). VibeUE's ProjectSettingsService was trimmed to the delta the engine doesn't cover: discover_settings_classes + direct INI read/write (get_ini_value / set_ini_value / *_ini_array / list_ini_sections / list_ini_keys) + config save, plus set_settings_property / get_settings_property for one property of a settings class by name. Use those from execute_python_code as shown below.

Critical Rules

⚠️ EditorStyleSettings is NOT a Python Class

EditorStyleSettings is not discoverable via discover_python_class('unreal.EditorStyleSettings') — it returns PYTHON_CLASS_NOT_FOUND. Reach it through the engine ConfigSettingsToolset as a settings category (via call_tool), or write its values directly via raw INI:

python
# ❌ WRONG — will fail
discover_python_class('unreal.EditorStyleSettings')  # NOT FOUND

# ✅ CORRECT — engine ConfigSettingsToolset (registered settings) via call_tool, OR the class by name:
result = unreal.ProjectSettingsService.set_settings_property(
    "EditorStyleSettings", "AssetEditorOpenLocation", "MainWindow")

set_ini_value writes the file you name: a bare name resolves to the project Config/ folder ("DefaultGame.ini" → Config/DefaultGame.ini), an absolute path is used as-is, and the path must end in .ini. A bare "EditorPerProjectUserSettings.ini" therefore writes Config/EditorPerProjectUserSettings.ini, a file no config hierarchy reads. An absolute path does reach a user-layer file under Saved/Config/<Platform>Editor/, but the editor keeps those files in memory and rewrites them from memory when it saves its config (at the latest when it exits), which can silently drop a direct write. Change user settings (editor preferences such as EditorStyleSettings) with set_settings_property, which edits the editor's in-memory copy and saves it.

⚠️ Category vs Raw INI

Named registered-setting categories (general, maps, EditorStyleSettings, etc.) are handled by the engine ConfigSettingsToolset. From VibeUE you instead address settings by their INI section / key / file:

NeedUse
Project info, maps, any registered category by nameengine ConfigSettingsToolset via call_tool
Read/write a known INI section+keyProjectSettingsService.get_ini_value / set_ini_value
Set one property of any loaded config class, live and saved as the Settings window saves itProjectSettingsService.set_settings_property(class, property, value)
Discover which classes/sections existProjectSettingsService.discover_settings_classes()
⚠️ Map Paths Must Be Full Asset Paths
python
# 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.

⚠️ Always Check Operation Results

The INI write methods return an FProjectSettingResult:

python
result = unreal.ProjectSettingsService.set_ini_value(
    "/Script/EngineSettings.GeneralProjectSettings", "ProjectName", "MyGame", "DefaultGame.ini")
if not result.success:
    print(f"Failed: {result.error_message}")

set_ini_value writes the key into the file on disk (the rest of the file, comments included, is kept), reloads that config branch, and reads the file back: success is false when the value did not land, and the file is then put back exactly as it was. A section or key containing a line break, a section containing ], and a path that does not end in .ini are refused before anything is written. A settings object read its config at startup, so it sees the new value after a restart (requires_restart is true); set_settings_property applies the value live as well.

get_ini_value, list_ini_keys and get_ini_array read the file on disk as it is now (one file, not the merged config hierarchy), so they see set_ini_value, set_settings_property and hand edits at once. get_ini_value returns the plain Key= line, resolved as GConfig resolves it; +Key= / .Key= array lines are not its value. get_ini_array returns the Key=, +Key= and .Key= lines in file order (-Key= removals and !Key=ClearArray are not values). For the merged value a settings object actually uses, read get_settings_property.

set_settings_property takes any loaded config class (CLASS_Config), not only the ones the Settings window lists, and saves it the way the Settings window does: a defaultconfig class to its project Default*.ini, a user-config class to its user file, any other class to its config branch under Saved/Config. The value applies live (PostEditChangeProperty runs, as for an edit in the details panel), so an engine or editor class changes behavior immediately. Per-object-config classes are refused.

set_ini_array works only on a settings class section (/Script/Module.Class), through set_settings_property: an array in a layered project file needs !Key=ClearArray / +Key= lines relative to the lower layers, which only a settings object writes correctly. It replaces the whole array. Each value is one element in Unreal text format: an element of a struct array is a struct literal and goes in as written; an element of a string array is passed as the plain string and quoted for you; any other element containing a space, comma, parenthesis or quote is quoted for you.

Show full SKILL.md (296 more words)Show less

A section named by a config class's path is read and written in the section that class really uses. Some classes keep an older name through OverrideConfigSection: ProjectPackagingSettings lives in /Script/DeveloperToolSettings but its settings stay under [/Script/UnrealEd.ProjectPackagingSettings], so get_ini_value / get_ini_array / list_ini_keys / set_ini_value given the new path use that section.

python
# struct array: elements are struct literals, passed as written
result = unreal.ProjectSettingsService.set_ini_array(
    "/Script/DeveloperToolSettings.ProjectPackagingSettings", "DirectoriesToAlwaysStageAsNonUFS",
    ['(Path="Movies")', '(Path="Extras/Data")'], "DefaultGame.ini")
# string array: plain values
result = unreal.ProjectSettingsService.set_ini_array(
    "/Script/DeveloperToolSettings.ProjectPackagingSettings", "CulturesToStage",
    ["en", "pt-BR"], "DefaultGame.ini")

(Registered-setting writes via the engine ConfigSettingsToolset return their own result — check it the same way.)


Workflows

Basic Project Info Setup

Project info (name/company/description) is a registered category — set it via the engine ConfigSettingsToolset (call_tool). Or write the INI keys directly from VibeUE:

python
import unreal

sec  = "/Script/EngineSettings.GeneralProjectSettings"
file = "DefaultGame.ini"
unreal.ProjectSettingsService.set_ini_value(sec, "ProjectName",  "My RPG Game", file)
unreal.ProjectSettingsService.set_ini_value(sec, "CompanyName",  "Indie Studios", file)
unreal.ProjectSettingsService.set_ini_value(sec, "Description",  "An epic fantasy adventure", file)
unreal.ProjectSettingsService.save_all_config()
Configure Default Maps
python
import unreal

# Registered "maps" category → engine ConfigSettingsToolset via call_tool, OR raw INI:
result = unreal.ProjectSettingsService.set_ini_value(
    "/Script/EngineSettings.GameMapsSettings", "GameDefaultMap",
    "/Game/Maps/MainMenu.MainMenu", "DefaultEngine.ini")
if result.success:
    unreal.ProjectSettingsService.save_all_config()
    print("Default map updated and saved")
Set Editor Startup Map
python
import unreal

# EditorStartupMap controls which level opens when the editor launches. It is a GameMapsSettings
# property (defaultconfig, saved in Config/DefaultEngine.ini).
# Registered "maps" category → engine ConfigSettingsToolset (via call_tool), OR the class by name:
# Use full asset path format: /Game/Path/To/Level.Level
result = unreal.ProjectSettingsService.set_settings_property(
    "GameMapsSettings", "EditorStartupMap", "/Game/Levels/MyLevel.MyLevel")
if result.success:
    print("Editor startup map updated and saved:", result.modified_settings)
else:
    print("Failed:", result.error_message)

💾 If the level must be saved first (untitled level, or "save as <name> and set as startup"): the editor world comes from unreal.get_editor_subsystem(unreal.UnrealEditorSubsystem).get_editor_world() (NOT LevelEditorSubsystem, NOT deprecated EditorLevelLibrary), then unreal.EditorLoadingAndSavingUtils.save_map(world, "/Game/Maps/MyLevel"). Full workflow: load the level-actors skill → "Save the Current Level".

Discover Settings Classes
python
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}")
List Settings in a Category

Listing the settings inside a named category is an engine ConfigSettingsToolset action (via call_tool). From VibeUE you can enumerate the raw INI keys of a known section instead:

python
import unreal

sec  = "/Script/EngineSettings.GeneralProjectSettings"
file = "DefaultGame.ini"
for key in unreal.ProjectSettingsService.list_ini_keys(sec, file):
    print(f"{key} = {unreal.ProjectSettingsService.get_ini_value(sec, key, file)}")
Find a Setting (When You Don't Know the Section)

discover_settings_classes() maps each settings class to its INI section + file, so you can locate a setting without guessing Python class names, then read its keys via raw INI:

python
import unreal

keyword = "AssetEditor"  # partial match on class/section name
for c in unreal.ProjectSettingsService.discover_settings_classes():
    if keyword.lower() in c.class_name.lower() or keyword.lower() in c.config_section.lower():
        print(f"{c.class_name} -> section {c.config_section} in {c.config_file}")
        for key in unreal.ProjectSettingsService.list_ini_keys(c.config_section, c.config_file):
            print(f"   {key}")

Use discover_settings_classes() instead of guessing Python class names. Many settings classes (e.g., EditorStyleSettings) are NOT exposed as Python classes — edit them through the engine ConfigSettingsToolset or via their INI section.

Direct INI Access
python
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"
)

Data Structures

Python Naming Convention: C++ types like FProjectSettingResult are exposed as ProjectSettingResult in Python (no F prefix).

SettingsClassInfo (from discover_settings_classes())
  • class_name, class_path
  • config_section, config_file
  • property_count, is_developer_settings
ProjectSettingResult (from INI write methods)
  • success, error_message
  • modified_settings, failed_settings
  • requires_restart

Sample scripts (run via execute_python_code)

  • scripts/configure_setting.txt — discover settings classes and read/write a project setting.

© kevinpbuckley, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in Content/Skills/project-settings of kevinpbuckley/VibeUE.

  • SKILL.md
  • scripts/configure_setting.txt

Open the folder on GitHubat commit dc051be

Compare with similar skills

Project Settings next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Project Settings compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Project Settings this skillkevinpbuckley/VibeUE726—~3.1kAutomated safety check: PassMIT
Unreal BridgeTornLux/UnrealBridge305—~8.4kAutomated safety check: NotesMIT
Fmodel Unpackpa001024/dna-builder136—~2.6kAutomated safety check: PassMIT
Scenario Unreal Cinematicsscenario-labs/skills931—~5.1kAutomated safety check: PassMIT
Scenario Unreal Pipeline Automationscenario-labs/skills931—~5kAutomated safety check: PassMIT
Scenario Unreal Expertscenario-labs/skills931—~6.4kAutomated safety check: PassMIT

Similar skills

  • Unreal Bridge

    TornLux/UnrealBridge

    Execute Python scripts inside a running Unreal Engine 5.3+ editor via TCP bridge.

    305 GitHub stars~8.4k tokensUpdated 8 days ago
    Game DevelopmentAuto-check: notes
  • Fmodel Unpack

    pa001024/dna-builder

    This skill documents how to use the fmodel-mcp toolkit (a CUE4Parse-based .NET CLI plus a thin Python MCP server) to inspect and export Unreal Engine game assets — pak files, textures, meshes…

    136 GitHub stars~2.6k tokensUpdated 2 days ago
    Game DevelopmentAuto-check passed
  • Scenario Unreal Cinematics

    scenario-labs/skills

    A skill your agent uses when making a trailer, cutscene, cinematic or short film in Unreal Engine 5.8 with Sequencer: shot lists, master and shot sequences, cameras, lenses, depth of field, camera…

    931 GitHub stars~5.1k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • A skill your agent uses when importing FBX, USD, OBJ or glTF from Maya, ZBrush or Blender into Unreal Engine 5.8 in bulk or reimporting changed files, writing Editor Python tools, Interchange…

    931 GitHub stars~5k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Scenario Unreal Expert

    scenario-labs/skills

    A skill your agent uses when an agent drives Unreal Engine 5.8 on a Mac for any task: Editor Python (the unreal module), headless UnrealEditor-Cmd -run=pythonscript jobs, Epic's Unreal MCP server…

    931 GitHub stars~6.4k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Scenario Unreal Gameplay

    scenario-labs/skills

    A skill your agent uses when building or debugging UE5 gameplay: a character with double jump or dash, abilities with cooldowns, enemy AI that patrols, chases and attacks, a health bar or HUD…

    931 GitHub stars~5.2k tokensUpdated yesterday
    Game DevelopmentAuto-check passed

More from kevinpbuckley/VibeUE

All 39 skills in this repo
  • Unreal Animation Bone Editor

    kevinpbuckley/VibeUE

    Previews, validates and bakes bone-rotation edits on Unreal Engine AnimSequences, enforcing a coordinate space and a constraint-checked preview-validate-bake loop.

    726 GitHub stars~1.3k tokensUpdated 2 days ago
    Auto-check passed
  • Unreal Animation Montage

    kevinpbuckley/VibeUE

    Creates and edits Unreal Engine Animation Montages through AnimMontageService: sections, slots, segments, branching points, notifies and blend settings.

    726 GitHub stars~3.6k tokensUpdated 2 days ago
    Auto-check passed
  • Unreal AnimSequence Editor

    kevinpbuckley/VibeUE

    Creates and edits AnimSequence keyframes and bone tracks in Unreal Engine through AnimSequenceService, following an inspect, preview, validate and bake workflow with correct bone-space handling.

    726 GitHub stars~3.2k tokensUpdated 2 days ago
    Auto-check passed
  • Unreal Asset Import and Export

    kevinpbuckley/VibeUE

    Imports files into Unreal Engine, exports textures, reads the Content Browser selection and checks open assets via VibeUE, plus mesh reimport material fixes.

    726 GitHub stars~6.5k tokensUpdated 2 days ago
    Auto-check passed
  • Unreal Engine Settings Control

    kevinpbuckley/VibeUE

    Changes Unreal Engine console variables, scalability levels and raw INI values through VibeUE's Python API, now that registered settings moved to the engine's own toolset.

    726 GitHub stars~1.3k tokensUpdated 2 days ago
    Auto-check passed
  • Unreal Enhanced Input Setup

    kevinpbuckley/VibeUE

    Creates and wires Unreal Engine Enhanced Input assets through VibeUE's InputService: Input Actions, Mapping Contexts, key bindings, triggers and modifiers.

    726 GitHub stars~2.4k tokensUpdated 2 days ago
    Auto-check passed

Questions about Project Settings

What does Project Settings do?

Configure Unreal Engine project settings and editor preferences — UI appearance, toolbar icons, scale, colors, and any UDeveloperSettings subclass (ProjectSettingsService). Project Settings is an agent skill from kevinpbuckley/VibeUE. Configure Unreal Engine project settings and editor preferences — UI appearance, toolbar icons, scale, colors, and any UDeveloperSettings subclass (ProjectSettingsService).

When should I use Project Settings?

Project Settings fits situations like: the user asks to change a project setting; editor preference; configure a UDeveloperSettings category; read/write project config values.

How do I install Project Settings in Claude Code?

Run `npx skills add kevinpbuckley/VibeUE --skill project-settings -a claude-code`. Or copy the skill folder (Content/Skills/project-settings in kevinpbuckley/VibeUE) into .claude/skills/project-settings in your project. Claude Code loads it when a task matches its description.

How do I install Project Settings in Codex?

Run `npx skills add kevinpbuckley/VibeUE --skill project-settings -a codex`. Or copy the skill folder (Content/Skills/project-settings in kevinpbuckley/VibeUE) into .agents/skills/project-settings in your project. Codex loads it when a task matches its description.

Can I use Project Settings in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add kevinpbuckley/VibeUE --skill project-settings -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/project-settings, .gemini/skills/project-settings, .github/skills/project-settings and .opencode/skills/project-settings in your project.

What does Project Settings need to run?

SKILL.md names no scripts, command-line tools or credentials: Project Settings is instructions for the agent only. Our summary lists: Python 3.

Does Project Settings access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Project Settings safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Project Settings use?

Project Settings is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Project Settings use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Project Settings?

Skills that share tags, products or a category with Project Settings: Unreal Bridge (TornLux/UnrealBridge, 305 stars), Fmodel Unpack (pa001024/dna-builder, 136 stars), Scenario Unreal Cinematics (scenario-labs/skills, 931 stars) and Scenario Unreal Pipeline Automation (scenario-labs/skills, 931 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Project Settings?

kevinpbuckley (a GitHub user) maintains it in kevinpbuckley/VibeUE, which has 726 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 7, 2026.

Source: kevinpbuckley/VibeUE on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.