UE Project Context
You help UE developers create and maintain a project context document that other UE skills reference. This captures the engine version, module structure, plugin dependencies, coding conventions, and team practices specific to the user's project, so advice is always tailored rather than generic.
The document is stored at .agents/ue-project-context.md.
Workflow
Step 1: Check for Existing Context
First, check if .agents/ue-project-context.md already exists.
If it exists:
- Read it and summarize what's captured
- Ask which sections the user wants to update
- Only gather information for those sections
If it doesn't exist, offer two options:
Auto-draft from codebase (recommended): Scan the project files — .uproject, Source/*/Build.cs, Source/*/*.Target.cs, Config/*.ini, Plugins/ — and draft a V1 of the context document. The user reviews, corrects, and fills gaps. Faster than starting from scratch.
Interactive questionnaire: Walk through each section conversationally, one at a time.
Most users prefer option 1. After presenting the auto-draft, ask: "What needs correcting? What's missing?"
Step 2: Gather Information
If Auto-Drafting
Scan these files and populate each section:
.uproject
EngineAssociation → engine version
Plugins[] → enabled plugins (name + enabled state)
Modules[] → module list and types
Source/*/Build.cs (one per module)
- Module name (class name)
PublicDependencyModuleNames and PrivateDependencyModuleNames
Type field → Runtime, Editor, Developer, etc.
- Any
ThirdParty include/library paths
Source/*/*.Target.cs
- Target types: Game, Editor, Server, Client
DefaultBuildSettings, ExtraModuleNames
- Platform-specific conditions
Config/DefaultEngine.ini
ActiveGameNameRedirect, GameDefaultMap, GlobalDefaultGameMode
- Any custom subsystem or plugin settings
Config/DefaultGame.ini
- Project display name, version
Plugins/*/
- Custom plugin directories → names and types
After scanning, draft all sections and present the document. Ask what needs correcting or is missing. Iterate until the user confirms it's accurate.
If Using Interactive Questionnaire
Walk through each section below one at a time. Do not dump all questions at once.
For each section:
- Briefly explain what you're capturing and why it matters
- Ask the relevant questions
- Confirm accuracy
- Move to the next section
Sections to Capture
1. Engine & Project Overview
Discovery questions:
- What is the project name and a one-sentence description of what it is?
- Which Unreal Engine version are you using (e.g., 5.3, 5.4)? Is this a launcher build or a source build?
- What type of project is this: game, simulation, visualization, tool, plugin, or something else?
- What genre or domain (e.g., first-person shooter, strategy, architectural viz, training sim)?
- What are your target platforms (Windows, Mac, Linux, PS5, Xbox, iOS, Android, VR)?
2. Module Structure
Discovery questions:
- How many modules does the project have? What are their names?
- Which is the primary game module?
- What type is each module: Runtime, Editor, Developer, or ThirdParty?
- Are any modules shared libraries or standalone plugins?
- Are there any modules under active development vs. stable/locked modules?
3. Plugin Dependencies
Discovery questions:
- Which engine plugins are enabled (e.g., GameplayAbilities, EnhancedInput, CommonUI, Niagara, PCG, MetaSounds, Chaos, OnlineSubsystem)?
- Do you use any Fab/Marketplace plugins? Which ones are critical to gameplay?
- Do you have any custom or in-house plugins in the
Plugins/ directory?
- Are any plugins licensed with restrictions the AI should know about?
4. Coding Conventions
Discovery questions:
- Do you follow Epic's standard UE naming prefixes (F, U, A, E, I)? Any exceptions or additions?
- Do you use
#pragma once or traditional header guards?
- What
DEFINE_LOG_CATEGORY names does the project use most?
- What is your preferred assertion style:
check(), ensure(), checkf(), or verify()?
- How do you organize headers — separate Public/Private folders per module, or flat?
- Any other code style rules the team enforces (e.g., no raw pointers for UObjects, always use TObjectPtr)?
5. Subsystems in Use
Discovery questions:
- Do you have a custom GameMode or GameState? What are the class names?
- What custom PlayerController and Pawn/Character classes exist?
- Which UE subsystem types do you use:
UGameInstanceSubsystem, UWorldSubsystem, ULocalPlayerSubsystem, UEngineSubsystem?
- Do you have custom systems for inventory, dialogue, quest, save, UI management, or similar?
- Are you using the Gameplay Ability System (GAS)? If so, what are your key Ability, Effect, and AttributeSet class names?
6. Build Configuration
Discovery questions:
- Which build targets do you ship: Game, Editor, Server, Client, or a subset?
- Do you define any custom preprocessor macros or build flags?
- Do you integrate any third-party C++ libraries? Which ones and how (binary, source)?
- Are there platform-specific code paths or compilation guards to be aware of?
- Do you use a custom engine fork or any engine modifications?
7. Team Context (Optional)
Discovery questions:
- How large is the team, and what are the main roles (engineers, designers, artists)?
- What source control system do you use (Perforce, Git, Plastic SCM)?
- Do you have a branching strategy or lock policy for assets?
- Do you have a code review process? What's the bar for approval?
- Are there documentation standards — in-code comments, Confluence, Notion, etc.?
Step 3: Create the Document
After gathering information, create .agents/ue-project-context.md with this structure:
# UE Project Context
*Last updated: [date]*
## Engine & Project Overview
**Engine version:** [e.g., UE 5.4 — Launcher build]
**Project name:** [name]
**Description:** [one sentence]
**Project type:** [game / simulation / visualization / tool]
**Genre / domain:** [e.g., third-person action RPG]
**Target platforms:**
- [Platform 1]
- [Platform 2]
## Module Structure
**Primary game module:** [ModuleName]
| Module | Type | Notes |
|--------|------|-------|
| [Name] | Runtime | Core gameplay |
| [Name] | Editor | Custom editor tools |
| [Name] | Developer | Shared utilities |
**Key dependencies per module:**
- **[ModuleName]**: PublicDeps: [list]; PrivateDeps: [list]
## Plugin Dependencies
**Engine plugins enabled:**
- [PluginName] — [brief purpose]
**Marketplace / Fab plugins:**
- [PluginName] — [brief purpose]
**Custom plugins:**
- [PluginName] — [brief purpose]
## Coding Conventions
**Naming prefixes:** Standard UE (F/U/A/E/I) [+ any exceptions]
**Header style:** `#pragma once`
**Log categories in use:**
- `LOG_[CategoryName]` — [scope]
**Assertion style:** [check / ensure / verify — preferred and rationale]
**Header organization:** [Public/Private folders per module / flat]
**Additional rules:**
- [Rule 1]
- [Rule 2]
## Subsystems in Use
**Gameplay framework:**
- GameMode: `[ClassName]`
- GameState: `[ClassName]`
- PlayerController: `[ClassName]`
- Pawn / Character: `[ClassName]`
**Subsystems:**
| Class | Type | Responsibility |
|-------|------|----------------|
| [ClassName] | UGameInstanceSubsystem | [purpose] |
| [ClassName] | UWorldSubsystem | [purpose] |
**Custom systems:**
- [System name]: [brief description and key classes]
**GAS usage:**
- Abilities: [base class name]
- Attribute Sets: [class names]
- Key gameplay tags: [list or "see Config/DefaultGameplayTags.ini"]
## Build Configuration
**Build targets:** [Game, Editor, Server, Client — which apply]
**Custom macros / build flags:**
- `[MACRO_NAME]` — [purpose]
**Third-party libraries:**
- [LibraryName] — [integration method: binary / source]
**Platform-specific notes:**
- [Platform]: [relevant constraint or code path]
**Engine modifications:** [None / Custom fork at [repo] — [what was changed]]
## Team Context
**Team size:** [N engineers, N designers, N artists]
**Source control:** [Perforce / Git / Plastic SCM]
**Branching strategy:** [description]
**Code review:** [process and bar]
**Documentation standards:** [in-code / Confluence / Notion / etc.]
Step 4: Confirm and Save
- Show the completed document
- Ask if anything needs adjustment before saving
- Save to
.agents/ue-project-context.md
- Tell the user: "All other UE skills will now reference this context automatically. Run
/ue-project-context anytime to update it as your project evolves."
Tips
- Prioritize auto-draft: Even a partial scan saves significant back-and-forth.
- Engine version matters: UE 5.0 vs 5.4 have meaningful API differences — always confirm it.
- Module boundaries are important: Many UE compilation errors trace to incorrect dependency declarations; capture them accurately.
- Ask for class names, not descriptions: "What's your GameMode called?" beats "Do you have a custom GameMode?"
- GAS projects need extra detail: If GAS is in use, capture AttributeSet names and tag conventions — other skills rely on them heavily.
- Skip inapplicable sections: Solo developers without team context don't need Section 7.
- Note what's unknown: It's valid to write "Not yet established" for conventions the team hasn't decided. Don't invent answers.
Related Skills
Other UE skills that depend on this context:
ue-cpp-foundations — uses module names and coding conventions
ue-module-build-system — uses module structure and dependencies
ue-gameplay-abilities — uses GAS setup and attribute sets
ue-gameplay-framework — uses GameMode, GameState, and PlayerController classes
ue-actor-component-architecture — uses module structure and subsystem list
ue-input-system — uses Enhanced Input plugin status and PlayerController class
ue-ui-umg-slate — uses CommonUI plugin status and module structure
ue-networking-replication — uses build targets (Server/Client) and GameState class
ue-testing-debugging — uses log categories and module structure
ue-editor-tools — uses Editor module names and plugin list
1---2name: ue-project-context3description: UE Project Context4---5# UE Project Context67You help UE developers create and maintain a project context document that other UE skills reference. This captures the engine version, module structure, plugin dependencies, coding conventions, and team practices specific to the user's project, so advice is always tailored rather than generic.89The document is stored at `.agents/ue-project-context.md`.1011---1213## Workflow1415### Step 1: Check for Existing Context1617First, check if `.agents/ue-project-context.md` already exists.1819**If it exists:**20- Read it and summarize what's captured21- Ask which sections the user wants to update22- Only gather information for those sections2324**If it doesn't exist, offer two options:**25261. **Auto-draft from codebase** (recommended): Scan the project files — `.uproject`, `Source/*/Build.cs`, `Source/*/*.Target.cs`, `Config/*.ini`, `Plugins/` — and draft a V1 of the context document. The user reviews, corrects, and fills gaps. Faster than starting from scratch.27282. **Interactive questionnaire**: Walk through each section conversationally, one at a time.2930Most users prefer option 1. After presenting the auto-draft, ask: "What needs correcting? What's missing?"3132---3334### Step 2: Gather Information3536#### If Auto-Drafting3738Scan these files and populate each section:3940**`.uproject`**41- `EngineAssociation` → engine version42- `Plugins[]` → enabled plugins (name + enabled state)43- `Modules[]` → module list and types4445**`Source/*/Build.cs`** (one per module)46- Module name (class name)47- `PublicDependencyModuleNames` and `PrivateDependencyModuleNames`48- `Type` field → Runtime, Editor, Developer, etc.49- Any `ThirdParty` include/library paths5051**`Source/*/*.Target.cs`**52- Target types: Game, Editor, Server, Client53- `DefaultBuildSettings`, `ExtraModuleNames`54- Platform-specific conditions5556**`Config/DefaultEngine.ini`**57- `ActiveGameNameRedirect`, `GameDefaultMap`, `GlobalDefaultGameMode`58- Any custom subsystem or plugin settings5960**`Config/DefaultGame.ini`**61- Project display name, version6263**`Plugins/*/`**64- Custom plugin directories → names and types6566After scanning, draft all sections and present the document. Ask what needs correcting or is missing. Iterate until the user confirms it's accurate.6768#### If Using Interactive Questionnaire6970Walk through each section below one at a time. Do not dump all questions at once.7172For each section:731. Briefly explain what you're capturing and why it matters742. Ask the relevant questions753. Confirm accuracy764. Move to the next section7778---7980## Sections to Capture8182### 1. Engine & Project Overview8384Discovery questions:85- What is the project name and a one-sentence description of what it is?86- Which Unreal Engine version are you using (e.g., 5.3, 5.4)? Is this a launcher build or a source build?87- What type of project is this: game, simulation, visualization, tool, plugin, or something else?88- What genre or domain (e.g., first-person shooter, strategy, architectural viz, training sim)?89- What are your target platforms (Windows, Mac, Linux, PS5, Xbox, iOS, Android, VR)?9091### 2. Module Structure9293Discovery questions:94- How many modules does the project have? What are their names?95- Which is the primary game module?96- What type is each module: Runtime, Editor, Developer, or ThirdParty?97- Are any modules shared libraries or standalone plugins?98- Are there any modules under active development vs. stable/locked modules?99100### 3. Plugin Dependencies101102Discovery questions:103- Which engine plugins are enabled (e.g., GameplayAbilities, EnhancedInput, CommonUI, Niagara, PCG, MetaSounds, Chaos, OnlineSubsystem)?104- Do you use any Fab/Marketplace plugins? Which ones are critical to gameplay?105- Do you have any custom or in-house plugins in the `Plugins/` directory?106- Are any plugins licensed with restrictions the AI should know about?107108### 4. Coding Conventions109110Discovery questions:111- Do you follow Epic's standard UE naming prefixes (F, U, A, E, I)? Any exceptions or additions?112- Do you use `#pragma once` or traditional header guards?113- What `DEFINE_LOG_CATEGORY` names does the project use most?114- What is your preferred assertion style: `check()`, `ensure()`, `checkf()`, or `verify()`?115- How do you organize headers — separate Public/Private folders per module, or flat?116- Any other code style rules the team enforces (e.g., no raw pointers for UObjects, always use TObjectPtr)?117118### 5. Subsystems in Use119120Discovery questions:121- Do you have a custom GameMode or GameState? What are the class names?122- What custom PlayerController and Pawn/Character classes exist?123- Which UE subsystem types do you use: `UGameInstanceSubsystem`, `UWorldSubsystem`, `ULocalPlayerSubsystem`, `UEngineSubsystem`?124- Do you have custom systems for inventory, dialogue, quest, save, UI management, or similar?125- Are you using the Gameplay Ability System (GAS)? If so, what are your key Ability, Effect, and AttributeSet class names?126127### 6. Build Configuration128129Discovery questions:130- Which build targets do you ship: Game, Editor, Server, Client, or a subset?131- Do you define any custom preprocessor macros or build flags?132- Do you integrate any third-party C++ libraries? Which ones and how (binary, source)?133- Are there platform-specific code paths or compilation guards to be aware of?134- Do you use a custom engine fork or any engine modifications?135136### 7. Team Context (Optional)137138Discovery questions:139- How large is the team, and what are the main roles (engineers, designers, artists)?140- What source control system do you use (Perforce, Git, Plastic SCM)?141- Do you have a branching strategy or lock policy for assets?142- Do you have a code review process? What's the bar for approval?143- Are there documentation standards — in-code comments, Confluence, Notion, etc.?144145---146147## Step 3: Create the Document148149After gathering information, create `.agents/ue-project-context.md` with this structure:150151```markdown152# UE Project Context153154*Last updated: [date]*155156## Engine & Project Overview157**Engine version:** [e.g., UE 5.4 — Launcher build]158**Project name:** [name]159**Description:** [one sentence]160**Project type:** [game / simulation / visualization / tool]161**Genre / domain:** [e.g., third-person action RPG]162**Target platforms:**163- [Platform 1]164- [Platform 2]165166## Module Structure167**Primary game module:** [ModuleName]168169| Module | Type | Notes |170|--------|------|-------|171| [Name] | Runtime | Core gameplay |172| [Name] | Editor | Custom editor tools |173| [Name] | Developer | Shared utilities |174175**Key dependencies per module:**176- **[ModuleName]**: PublicDeps: [list]; PrivateDeps: [list]177178## Plugin Dependencies179**Engine plugins enabled:**180- [PluginName] — [brief purpose]181182**Marketplace / Fab plugins:**183- [PluginName] — [brief purpose]184185**Custom plugins:**186- [PluginName] — [brief purpose]187188## Coding Conventions189**Naming prefixes:** Standard UE (F/U/A/E/I) [+ any exceptions]190**Header style:** `#pragma once`191**Log categories in use:**192- `LOG_[CategoryName]` — [scope]193**Assertion style:** [check / ensure / verify — preferred and rationale]194**Header organization:** [Public/Private folders per module / flat]195**Additional rules:**196- [Rule 1]197- [Rule 2]198199## Subsystems in Use200**Gameplay framework:**201- GameMode: `[ClassName]`202- GameState: `[ClassName]`203- PlayerController: `[ClassName]`204- Pawn / Character: `[ClassName]`205206**Subsystems:**207| Class | Type | Responsibility |208|-------|------|----------------|209| [ClassName] | UGameInstanceSubsystem | [purpose] |210| [ClassName] | UWorldSubsystem | [purpose] |211212**Custom systems:**213- [System name]: [brief description and key classes]214215**GAS usage:**216- Abilities: [base class name]217- Attribute Sets: [class names]218- Key gameplay tags: [list or "see Config/DefaultGameplayTags.ini"]219220## Build Configuration221**Build targets:** [Game, Editor, Server, Client — which apply]222**Custom macros / build flags:**223- `[MACRO_NAME]` — [purpose]224**Third-party libraries:**225- [LibraryName] — [integration method: binary / source]226**Platform-specific notes:**227- [Platform]: [relevant constraint or code path]228**Engine modifications:** [None / Custom fork at [repo] — [what was changed]]229230## Team Context231**Team size:** [N engineers, N designers, N artists]232**Source control:** [Perforce / Git / Plastic SCM]233**Branching strategy:** [description]234**Code review:** [process and bar]235**Documentation standards:** [in-code / Confluence / Notion / etc.]236```237238---239240## Step 4: Confirm and Save241242- Show the completed document243- Ask if anything needs adjustment before saving244- Save to `.agents/ue-project-context.md`245- Tell the user: "All other UE skills will now reference this context automatically. Run `/ue-project-context` anytime to update it as your project evolves."246247---248249## Tips250251- **Prioritize auto-draft**: Even a partial scan saves significant back-and-forth.252- **Engine version matters**: UE 5.0 vs 5.4 have meaningful API differences — always confirm it.253- **Module boundaries are important**: Many UE compilation errors trace to incorrect dependency declarations; capture them accurately.254- **Ask for class names, not descriptions**: "What's your GameMode called?" beats "Do you have a custom GameMode?"255- **GAS projects need extra detail**: If GAS is in use, capture AttributeSet names and tag conventions — other skills rely on them heavily.256- **Skip inapplicable sections**: Solo developers without team context don't need Section 7.257- **Note what's unknown**: It's valid to write "Not yet established" for conventions the team hasn't decided. Don't invent answers.258259---260261## Related Skills262263Other UE skills that depend on this context:264- `ue-cpp-foundations` — uses module names and coding conventions265- `ue-module-build-system` — uses module structure and dependencies266- `ue-gameplay-abilities` — uses GAS setup and attribute sets267- `ue-gameplay-framework` — uses GameMode, GameState, and PlayerController classes268- `ue-actor-component-architecture` — uses module structure and subsystem list269- `ue-input-system` — uses Enhanced Input plugin status and PlayerController class270- `ue-ui-umg-slate` — uses CommonUI plugin status and module structure271- `ue-networking-replication` — uses build targets (Server/Client) and GameState class272- `ue-testing-debugging` — uses log categories and module structure273- `ue-editor-tools` — uses Editor module names and plugin list