Ue Specifiers
fjz13/UnrealSpecifiers
A skill your agent uses when writing, editing, reviewing, validating, or explaining Unreal Engine C++ reflected declarations: UCLASS, USTRUCT, UENUM, UINTERFACE, UPROPERTY, UFUNCTION, UPARAM, UMETA…
A skill your agent uses when creating, refreshing or repairing .agents/ue-project-context.md, the project document every other UE skill reads first.
$ npx skills add quodsoler/unreal-engine-skills --skill ue-project-context -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install quodsoler/unreal-engine-skills ue-project-context --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/quodsoler/unreal-engine-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ue-project-context .claude/skills/ue-project-context && rm -rf skills-srcUse ~/.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/
Install the "ue-project-context" agent skill from https://github.com/quodsoler/unreal-engine-skills/tree/main/skills/ue-project-context into .claude/skills/ue-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ue-project-context", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/quodsoler/unreal-engine-skills/tree/main/skills/ue-project-contextType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add quodsoler/unreal-engine-skills --skill ue-project-context -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install quodsoler/unreal-engine-skills ue-project-context --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/quodsoler/unreal-engine-skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/ue-project-context .agents/skills/ue-project-context && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ue-project-context" agent skill from https://github.com/quodsoler/unreal-engine-skills/tree/main/skills/ue-project-context into .agents/skills/ue-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ue-project-context", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add quodsoler/unreal-engine-skills --skill ue-project-context -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install quodsoler/unreal-engine-skills ue-project-context --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/quodsoler/unreal-engine-skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/ue-project-context .cursor/skills/ue-project-context && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ue-project-context" agent skill from https://github.com/quodsoler/unreal-engine-skills/tree/main/skills/ue-project-context into .cursor/skills/ue-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ue-project-context", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/quodsoler/unreal-engine-skills.git --path skills/ue-project-context--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add quodsoler/unreal-engine-skills --skill ue-project-context -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install quodsoler/unreal-engine-skills ue-project-context --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/quodsoler/unreal-engine-skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/ue-project-context .gemini/skills/ue-project-context && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ue-project-context" agent skill from https://github.com/quodsoler/unreal-engine-skills/tree/main/skills/ue-project-context into .gemini/skills/ue-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ue-project-context", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install quodsoler/unreal-engine-skills ue-project-contextInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add quodsoler/unreal-engine-skills --skill ue-project-context -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/quodsoler/unreal-engine-skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/ue-project-context .github/skills/ue-project-context && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ue-project-context" agent skill from https://github.com/quodsoler/unreal-engine-skills/tree/main/skills/ue-project-context into .github/skills/ue-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ue-project-context", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add quodsoler/unreal-engine-skills --skill ue-project-context -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install quodsoler/unreal-engine-skills ue-project-context --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/quodsoler/unreal-engine-skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/ue-project-context .opencode/skills/ue-project-context && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ue-project-context" agent skill from https://github.com/quodsoler/unreal-engine-skills/tree/main/skills/ue-project-context into .opencode/skills/ue-project-context/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ue-project-context", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ue-project-contextA skill your agent uses when creating, refreshing or repairing .agents/ue-project-context.md, the project document every other UE skill reads first.
Ue Project Context is an agent skill from quodsoler/unreal-engine-skills. Use when creating, refreshing or repairing .agents/ue-project-context.md, the project document every other UE skill reads first. Also use when the user says 'project context', 'set up context', 'UE context', 'scan my project', 'onboard the agent to my project', 'update project context', 'configure project', 'what engine version is this project on', 'which plugins do we have enabled', or complains that UE advice keeps coming out generic. For Build.cs and Target.cs mechanics, see ue-module-build-system; for naming…
Its SKILL.md is about 4.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development. It works with C++. The repository describes itself as: Unreal Engine C++ skills for AI coding agents. 27 skills covering gameplay, rendering, networking, animation, and more. Works with Claude Code, Cursor, Windsurf, and any agent… The licence is MIT.
3 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f3742d7. It shows what the files ask for, not the result of running them.
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.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ue Project Context loads about 4.9k tokens when it runs. Until then it costs about 159 tokens; SKILL.md has 1,808 words of instructions outside code blocks.
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.
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); files beside SKILL.md are not scanned.
The full file from quodsoler/unreal-engine-skills at commit f3742d7, republished under its MIT licence (© quodsoler). 1,808 words, ~4,928 tokens.
.claude/skills/ue-project-context/SKILL.md (or your agent's skills folder).Target engine: UE 5.8. APIs below are verified against the 5.8 headers; older forms are listed under "Deprecated — do not use".
This skill produces and maintains .agents/ue-project-context.md — the single file the other UE skills read to learn the project's engine version, module layout, enabled plugins, coding conventions, gameplay framework classes, networking model and build targets. It reads project files only (.uproject, *.Build.cs, *.Target.cs, Config/Default*.ini, Plugins/*/*.uplugin); it calls no engine API. This is the one skill in this set that is deliberately a conversation: every line it writes must come from the codebase or from the user, never from a guess.
Read .agents/ue-project-context.md if it exists (module names, conventions, enabled plugins, GAS/networking setup). Do not stop if it is missing — this skill is what creates it.
The default path is scan first, then interview. Build a draft from the codebase before asking anything, then let the user correct it. Do not open with a menu of options.
| Request is about… | Go to |
|---|---|
| First-time setup, or the file is missing | Step 1: Scan and draft |
| What to read and what to pull out of each file | What to scan |
| Naming a plugin the project has enabled | Plugin checklist |
| Reviewing the draft with the user | Step 2: Correct the draft |
| Saving or refreshing an existing context file | Step 3: Save and confirm |
| No C++ source to scan (Blueprint-only, or a new empty project) | Fallback questionnaire |
| The shape of the output file | Document template |
.agents/ue-project-context.md exists. If it does, read it and treat it as the previous draft rather than starting over.[unknown] in the draft. Never invent a team size, a coding rule or a networking model.A partial scan is still worth presenting. Engine version, module list and plugin list come out of the files almost entirely, which removes most of the interview.
| File | Pull out |
|---|---|
*.uproject | EngineAssociation (e.g. "EngineAssociation": "5.8"; a GUID means a registered source build; empty means a native project inside an engine tree), Modules[] (Name, Type, LoadingPhase), Plugins[] (Name, Enabled), TargetPlatforms[] |
Source/*/*.Build.cs | Module class name, PublicDependencyModuleNames, PrivateDependencyModuleNames, PublicIncludePathModuleNames, third-party include/library paths, any PublicDefinitions |
Source/*.Target.cs | Type (TargetType.Game, Editor, Client, Server, Program), ExtraModuleNames, DefaultBuildSettings, IncludeOrderVersion, platform conditionals |
Config/DefaultEngine.ini | [/Script/EngineSettings.GameMapsSettings] — GameDefaultMap, ServerDefaultMap, GlobalDefaultGameMode, GameInstanceClass (the module is EngineSettings, not Engine); [/Script/Engine.RendererSettings] for the rendering feature set |
Config/DefaultGame.ini | Project display name and version; [/Script/Engine.AssetManagerSettings] — PrimaryAssetTypesToScan, which reveals the data-driven asset layout |
Config/DefaultInput.ini | [/Script/Engine.InputSettings] — DefaultPlayerInputClass / DefaultInputComponentClass (/Script/EnhancedInput.EnhancedPlayerInput / EnhancedInputComponent means Enhanced Input is live; InputSettings.h:219,223), leftover legacy ActionMappings/AxisMappings; [/Script/EnhancedInput.EnhancedInputDeveloperSettings] for Enhanced Input project settings |
Config/DefaultGameplayTags.ini | [/Script/GameplayTags.GameplayTagsSettings] — GameplayTagList, GameplayTagTableList, ImportTagsFromConfig |
Plugins/*/*.uplugin | In-house plugin names, their Modules[] and their Plugins[] dependencies |
Source/*/Public/** (spot-check 3–5 headers) | Naming prefixes in practice, TObjectPtr versus raw pointers, API macro style (MYGAME_API on each declaration, or a per-header #define UE_API MYGAME_API), DEFINE_LOG_CATEGORY names, check/ensure usage |
Also grep Config/Default*.ini for every other [/Script/...] section the project has customised — those sections name the systems the team actually configures.
Cross-check Plugins[] in the .uproject against this list and record maturity wherever it changes the advice other skills give. These are .uplugin names in 5.8.
| Area | Plugins to look for |
|---|---|
| Abilities & modularity | GameplayAbilities, GameFeatures (Beta), ModularGameplay (Beta), SmartObjects, InstancedActors (Experimental) |
| Input | EnhancedInput |
| UI | CommonUI, ModelViewViewModel (Beta) |
| AI & simulation | StateTree, GameplayStateTree, MassGameplay (Experimental), MassAI (Experimental) |
| Animation & movement | Mover (Experimental), MotionWarping (Beta), PoseSearch, Chooser, AnimationBudgetAllocator |
| Camera | GameplayCameras (Experimental), EngineCameras |
| Networking | Iris (Beta), ReplicationGraph (Beta) |
| Audio | Metasound, AudioModulation |
| FX & procedural | Niagara, PCG, ProceduralMeshComponent, GeometryScripting |
| Data & services | DataRegistry (Beta), OnlineSubsystem, OnlineServices, SignificanceManager |
| Streaming & messaging | LevelStreamingPersistence (Experimental), AsyncMessageSystem (Experimental) |
Record the .uplugin name, not the friendly display name, so other skills can match it. A project plugin under Plugins/ that is absent from .uproject Plugins[] is still enabled unless its .uplugin says "EnabledByDefault": false (FPlugin::IsEnabledByDefault, Projects/Private/PluginManager.cpp:421-435); an engine plugin absent from Plugins[] is enabled only if its .uplugin has "EnabledByDefault": true. Record which rule applied.
Present the draft, then put two questions to the user:
What is wrong in this draft, and what is missing?
Work through their answers, then re-present only the sections that changed. Repeat until the user says it is accurate.
Fill the [unknown] fields the same way, a few at a time, highest value first:
Iris, push model on or off, ReplicationGraph in use.[unknown] and "not yet established" are valid final answers. A field the team has not decided is more useful written down as undecided than filled with a plausible invention.
.agents/ue-project-context.md, creating .agents/ if needed.The skills in this repo target UE 5.8. Record the project's actual engine version verbatim from EngineAssociation so that advice can be adjusted when the project sits on a different version, and note whether it is a launcher build or a source build.
Use this only when there is no Source/ tree to scan (Blueprint-only project, or an empty project being planned). Work through one group at a time and confirm each before moving on.
Engine and project. Project name and a one-sentence description. Engine version, launcher or source build. Project type (game, simulation, visualisation, tool, plugin) and genre. Target platforms.
Modules. Module names, which is the primary game module, and each module's host type (Runtime, Editor, Developer, CookedOnly, UncookedOnly, Program). Key dependencies per module.
Plugins. Walk the Plugin checklist by area rather than reciting names. Then in-house plugins under Plugins/, Fab/marketplace plugins critical to gameplay, and any licence restriction worth recording.
Conventions. Epic's F/U/A/E/I prefixes or a house variant. TObjectPtr for UPROPERTY object references, or raw pointers. Module API macro style — MYGAME_API on each declaration, or a per-header #define UE_API MYGAME_API. Log category names. Assertion policy (check, checkf, ensure, ensureMsgf, verify) and where each is allowed. Public/Private header layout. Any rule enforced in review.
Gameplay framework. Class names for GameMode, GameState, PlayerController, PlayerState, Pawn/Character, GameInstance. Subsystem classes in use and what each owns.
GAS. Whether GameplayAbilities is enabled; if so, the AbilitySystemComponent subclass, AttributeSet class names, the ability base class, and where the tag hierarchy is defined.
Networking. Listen server, dedicated server, or single-player. Iris or classic replication. Push model on or off. ReplicationGraph in use. Expected player count and tick budget.
Input. EnhancedInput or legacy mappings. Where UInputMappingContext and UInputAction assets live, and which class adds the contexts.
UI. UMG only, CommonUI, or CommonUI plus ModelViewViewModel. Base widget classes and how the HUD/menu stack is managed.
AI. Behavior Trees, StateTree/GameplayStateTree, Mass, or a custom stack. Navigation setup and whether SmartObjects is in use.
Streaming. World Partition with Data Layers, or classic sub-levels. Level-instancing approach.
Saves. USaveGame subclass names, slot naming, versioning approach.
Build. Which target types ship. Custom preprocessor defines. Third-party libraries and how they are integrated. Platform-specific code paths. Engine fork or modifications.
Team. Size and roles. Source control (Perforce, Git, Plastic). Branching and asset-lock policy. Review bar. Documentation home.
Write .agents/ue-project-context.md in this shape. Drop any section the project genuinely has nothing to say about.
# UE Project Context
*Engine: UE 5.8 · Last updated: [date]*
## Engine & Project
**Engine version:** [5.8 — launcher build / source build at [path]]
**Project name:** [name] · **Type:** [game / sim / tool] · **Genre:** [genre]
**Description:** [one sentence]
**Target platforms:** [list]
## Modules
**Primary game module:** [ModuleName]
| Module | Host type | Public deps | Private deps | Notes |
|---|---|---|---|---|
| [MyGame] | Runtime | Core, CoreUObject, Engine, InputCore | [list] | [purpose] |
| [MyGameEditor] | Editor | [list] | [list] | [purpose] |
## Plugins
| Plugin | Maturity | Used for |
|---|---|---|
| [EnhancedInput] | [stable] | [input] |
| [Mover] | [Experimental] | [locomotion prototype] |
**In-house plugins:** [Name — purpose]
**Fab / marketplace:** [Name — purpose, licence notes]
## Coding conventions
**Prefixes:** [standard F/U/A/E/I, exceptions]
**Object references:** [TObjectPtr in UPROPERTY / raw pointers]
**API macro style:** [MYGAME_API per declaration / per-header #define UE_API MYGAME_API]
**Log categories:** `[LogMyGame]` — [scope]
**Assertions:** [check where / ensure where / verify where]
**Header layout:** [Public/Private per module / flat]
**Enforced rules:** [list]
## Gameplay framework
| Role | Class |
|---|---|
| GameMode | `[AMyGameMode]` |
| GameState | `[AMyGameState]` |
| PlayerController | `[AMyPlayerController]` |
| PlayerState | `[AMyPlayerState]` |
| Pawn / Character | `[AMyCharacter]` |
| GameInstance | `[UMyGameInstance]` |
**Subsystems:** `[UMyClass]` ([UGameInstanceSubsystem / UWorldSubsystem / ULocalPlayerSubsystem]) — [owns]
## GAS
**Enabled:** [yes / no]
**AbilitySystemComponent:** `[UMyAbilitySystemComponent]` — lives on [PlayerState / Pawn]
**AttributeSets:** `[UMyAttributeSet]` — [attributes]
**Ability base:** `[UMyGameplayAbility]`
**Tag source:** [Config/DefaultGameplayTags.ini / native tags in [file]]
## Networking
**Model:** [single-player / listen server / dedicated server]
**Replication stack:** [classic / Iris (Beta)]
**Push model:** [on / off] · **ReplicationGraph:** [yes / no]
**Budget:** [N players, tick rate]
## Input
**Stack:** [EnhancedInput / legacy]
**Mapping contexts:** [asset paths] · **Added by:** `[class]`
## UI
**Stack:** [UMG / CommonUI / CommonUI + ModelViewViewModel]
**Base widgets:** `[UMyUserWidget]` · **Layer / stack management:** [description]
## AI
**Stack:** [Behavior Trees / StateTree / GameplayStateTree / Mass / custom]
**Navigation:** [NavMesh setup] · **SmartObjects:** [yes / no]
## Streaming
**Model:** [World Partition + Data Layers / sub-levels]
**Notes:** [cell size, streaming sources, level instances]
## Saves
**SaveGame classes:** `[UMySaveGame]` · **Slots:** [naming] · **Versioning:** [approach]
## Build
**Targets:** [Game, Editor, Client, Server]
**Defines:** `[MYGAME_WITH_CHEATS]` — [purpose]
**Third-party:** [Library — binary / source]
**Platform notes:** [platform: constraint]
**Engine modifications:** [none / fork at [repo] — [what changed]]
## Team
**Size & roles:** [N engineers, N designers, N artists]
**Source control:** [Perforce / Git / Plastic] · **Branching:** [strategy]
**Review bar:** [description] · **Docs:** [where]Old forms an agent is likely to write into a context document, or into the code it generates from one.
| Do not emit | Use in 5.8 | Source |
|---|---|---|
GENERATED_UCLASS_BODY() | GENERATED_BODY() | #define GENERATED_UCLASS_BODY(...) GENERATED_BODY_LEGACY() in CoreUObject/Public/UObject/ObjectMacros.h:803 |
UPROPERTY() UObject* Ptr; | UPROPERTY() TObjectPtr<UObject> Ptr; | struct TObjectPtr in CoreUObject/Public/UObject/ObjectPtr.h:519 |
NetUpdateFrequency = 10.f; | SetNetUpdateFrequency(10.f) / GetNetUpdateFrequency() | UE_DEPRECATED(5.5) in Engine/Classes/GameFramework/Actor.h:903 |
MinNetUpdateFrequency = 2.f; | SetMinNetUpdateFrequency(2.f) / GetMinNetUpdateFrequency() | UE_DEPRECATED(5.5) in Engine/Classes/GameFramework/Actor.h:908 |
UDataLayerSubsystem accessors | the UDataLayerManager equivalents | UE_DEPRECATED(5.3) in Engine/Public/WorldPartition/DataLayer/DataLayerSubsystem.h:37 |
bEnableDynamicComponentInputBinding in DefaultInput.ini | drop the key | UE_DEPRECATED(5.7) in Engine/Classes/GameFramework/InputSettings.h:96 |
SpeechMappings in DefaultInput.ini | drop the key | UE_DEPRECATED(5.7) in Engine/Classes/GameFramework/InputSettings.h:211 |
[/Script/Engine.GameMapsSettings] | [/Script/EngineSettings.GameMapsSettings] | class UGameMapsSettings in Runtime/EngineSettings/Classes/GameMapsSettings.h:101 |
MetaSounds as a plugin name | Metasound | Engine/Plugins/Runtime/Metasound/Metasound.uplugin |
Opening with a questionnaire instead of a draft: the .uproject, the *.Build.cs files and Config/Default*.ini answer most of the document. Scan, draft, then find out what is wrong — do not make the user dictate what is already on disk.
Guessing to fill a gap: a fabricated team size or assertion policy is worse than a blank, because every other skill then acts on it. Write [unknown] and move on.
Writing friendly plugin names: record the .uplugin name (ModelViewViewModel, Metasound, GameplayAbilities), not the display name, so other skills can match it against .uproject Plugins[].
Misjudging plugin state: a plugin is active if its .uproject Plugins[] entry has "Enabled": true, or if it is enabled by default and not disabled there — and a project plugin under Plugins/ with no EnabledByDefault key counts as enabled by default.
Putting GameMapsSettings under the Engine module: the class lives in the EngineSettings module, so the section is [/Script/EngineSettings.GameMapsSettings]. The wrong section silently does nothing.
Omitting maturity: an Experimental or Beta plugin changes what other skills should recommend. Mover (Experimental), Iris (Beta) and GameplayCameras (Experimental) each need the label next to the name.
Dropping module dependencies: most UE link errors trace to a missing entry in PublicDependencyModuleNames/PrivateDependencyModuleNames. Capture both lists per module verbatim.
Overwriting on a refresh: on a re-run, merge into the existing file. Sections the user did not revisit keep their content.
Skills that read .agents/ue-project-context.md, and what each takes from it:
ue-module-build-system — module list, host types, Build.cs dependency lists, target typesue-cpp-foundations — naming prefixes, TObjectPtr policy, API macro style, assertion policyue-gameplay-framework — GameMode, GameState, PlayerController, PlayerState, Pawn classesue-gameplay-abilities — GAS setup, AbilitySystemComponent owner, AttributeSet namesue-gameplay-tags-messaging — tag source (DefaultGameplayTags.ini or native tags) and messaging stackue-networking-replication — networking model, Iris versus classic, push model, ReplicationGraphue-input-system — Enhanced Input status, mapping context locations, PlayerController classue-ui-umg-slate — CommonUI / ModelViewViewModel status and base widget classesue-blueprint-cpp-interop — API macro style and which systems are Blueprint-facingue-actor-component-architecture — subsystem list and component conventionsue-character-movement — character class and movement stackue-mover — whether the Mover plugin (Experimental) is enabledue-gameplay-cameras — whether GameplayCameras (Experimental) is enabledue-ai-navigation — AI stack, navigation setup, SmartObjects statusue-state-trees — StateTree / GameplayStateTree plugin statusue-world-level-streaming — World Partition versus sub-levels, Data Layer usageue-serialization-savegames — SaveGame classes, slot naming, versioningue-testing-debugging — log categories, assertion policy, module listue-editor-tools — Editor module names and editor plugin listue-game-features — GameFeatures / ModularGameplay plugin status© quodsoler, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/ue-project-context of quodsoler/unreal-engine-skills.
Open the folder on GitHubat commit f3742d7
Ue Project Context 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ue Project Context this skillquodsoler/unreal-engine-skills | 359 | — | ~4.9k | Automated safety check: Pass | MIT | |
| Ue Specifiersfjz13/UnrealSpecifiers | 1.1k | — | ~1.4k | Automated safety check: Pass | Custom licence | |
| Validate GsdkPlayFab/gsdk | 170 | — | ~645 | Automated safety check: Pass | Apache-2.0 | |
| Sokol Netelix22/Sokol.NET | 154 | — | ~2.8k | Automated safety check: Pass | MIT | |
| Unreal Engine MCPEpicGames/unreal-engine-skills-for-claude-code-plugin | 327 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Gdextension Hygienemicrosoft/XBOX-Godot-Sample | 237 | — | ~983 | Automated safety check: Pass | MIT |
fjz13/UnrealSpecifiers
A skill your agent uses when writing, editing, reviewing, validating, or explaining Unreal Engine C++ reflected declarations: UCLASS, USTRUCT, UENUM, UINTERFACE, UPROPERTY, UFUNCTION, UPARAM, UMETA…
PlayFab/gsdk
Validates PlayFab Game Server SDK (GSDK) integrations in game server projects.
elix22/Sokol.NET
Sokol.NET framework development — use for ANY work in this repo: creating or debugging examples, building/running for desktop/Android/iOS/Web, writing or compiling shaders, adding a new C/C++…
EpicGames/unreal-engine-skills-for-claude-code-plugin
Drives a live Unreal Editor through the unreal-mcp server: spawn actors, edit Blueprints, materials and sequences, change properties and trigger Live Coding.
microsoft/XBOX-Godot-Sample
Run a Godot/GDExtension finish pass over the current diff: enforce headless GDScript validation, public API docclasses coverage, docs/spec/sample/test synchronization, and registration or CMake…
intrinsic-ai/intrinsic-core
Intrinsic Solution Building Library (SBL) Python SDK guide for connecting to workcells, composing Behavior Trees, querying/mutating ObjectWorld frames, binding equipment resources, and orchestrating…
quodsoler/unreal-engine-skills
Unreal Engine C++ guidance for AActor and UActorComponent: lifecycle hooks, spawning, component creation and attachment, ticking, interfaces and composition.
quodsoler/unreal-engine-skills
Guides Unreal Engine C++ AI work across AI controllers, behavior trees, blackboards, perception, navmesh pathfinding, EQS and Smart Objects.
quodsoler/unreal-engine-skills
Reference for writing and debugging Unreal Engine 5.8 animation C++: AnimInstance and proxy, montages, notifies, curves, blend spaces, state machines, linked layers and root motion.
quodsoler/unreal-engine-skills
Picks and applies the right Unreal Engine C++ concurrency API, from UE::Tasks and FPipe to ParallelFor, FRunnable, locks and timers, with game-thread safety rules.
quodsoler/unreal-engine-skills
A skill your agent uses when playing, mixing or debugging sound in Unreal Engine — one-shot SFX, looping ambience, music, dialogue or procedural audio.
quodsoler/unreal-engine-skills
Reference for exposing Unreal Engine C++ to Blueprint and calling Blueprint from C++, covering UFUNCTION and UPROPERTY specifiers, latent and async nodes, and interfaces.
Works with
Categories
A skill your agent uses when creating, refreshing or repairing .agents/ue-project-context.md, the project document every other UE skill reads first. Ue Project Context is an agent skill from quodsoler/unreal-engine-skills.md, the project document every other UE skill reads first.
Ue Project Context fits situations like: repairing .agents/ue-project-context.md; the project document every other UE skill reads first; the user says project context; scan my project.
Run `npx skills add quodsoler/unreal-engine-skills --skill ue-project-context -a claude-code`. Or copy the skill folder (skills/ue-project-context in quodsoler/unreal-engine-skills) into .claude/skills/ue-project-context in your project. Claude Code loads it when a task matches its description.
Run `npx skills add quodsoler/unreal-engine-skills --skill ue-project-context -a codex`. Or copy the skill folder (skills/ue-project-context in quodsoler/unreal-engine-skills) into .agents/skills/ue-project-context in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add quodsoler/unreal-engine-skills --skill ue-project-context -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ue-project-context, .gemini/skills/ue-project-context, .github/skills/ue-project-context and .opencode/skills/ue-project-context in your project.
SKILL.md names no scripts, command-line tools or credentials: Ue Project Context is instructions for the agent only.
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.
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. Review the folder before installing.
Ue Project Context is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.9k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Ue Project Context: Ue Specifiers (fjz13/UnrealSpecifiers, 1.1k stars), Validate Gsdk (PlayFab/gsdk, 170 stars), Sokol Net (elix22/Sokol.NET, 154 stars) and Unreal Engine MCP (EpicGames/unreal-engine-skills-for-claude-code-plugin, 327 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
quodsoler (a GitHub user) maintains it in quodsoler/unreal-engine-skills, which has 359 GitHub stars. The repository holds 31 skills in this directory. The repository was last updated on September 28, 2026.
Source: quodsoler/unreal-engine-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.