Game Build Log Triage
Use this skill to turn noisy Unity and Unreal logs into a short, prioritized debugging brief.
The goal is not to explain every line. The goal is to find the first non-cascading failure, identify the most likely subsystem, and tell the user what to inspect next.
Read references/engine-patterns.md before classifying unfamiliar engine-specific errors.
If the user is not asking about one failing log but about repeated CI instability, cache policy, packaging workflow shape, or release automation for Unity/Unreal projects, route that broader workflow design work to game-ci-cd-pipeline after or alongside this triage.
When to use this skill
- Unity build, import, compile, package, or play-mode startup failures
- Unreal build, UBT/UHT, cook, package, shader, plugin, or module failures
- CI logs from game projects where the raw output is long and noisy
- Asset moves, redirectors, missing references,
.meta/GUID, module, or plugin breakages
- Users who provide
Editor.log, package output, BuildCookRun logs, stack traces, or console excerpts and want the next debugging steps
Instructions
Step 1: Confirm the engine and log scope
- Detect whether the material is mainly Unity, Unreal, or mixed/unknown.
- Record the log source when visible:
- Unity:
Editor.log, Console output, package manager output, player build output, CI transcript
- Unreal: UBT/UHT output, cook/package logs, Output Log, Message Log, crash log, CI transcript
- Identify the time window or failing command if present.
- If the log is huge, focus first on:
- lines containing
error, exception, fatal, failed, UHT, UBT, NullReferenceException, MissingReferenceException, Cook failed, AutomationTool exiting, Script compilation error
- the first error cluster before a flood of repeated follow-on errors
Step 2: Find the first actionable failure
Work top-down and separate root-cause candidates from cascade noise.
Use this decision order:
- Hard stop / fatal line — first line that clearly aborts the run
- Configuration or dependency blocker — missing module, SDK, package, plugin, target, or assembly definition
- Compile/reflection blocker — C# compiler error, UHT/UBT error, macro/reflection issue, missing symbol, duplicate class, circular dependency
- Asset/reference blocker — missing asset, redirector fallout, GUID/meta mismatch, bad import, broken prefab/Blueprint reference
- Environment/platform blocker — Android/iOS/console SDK issue, signing/provisioning, toolchain path, unsupported target
- Secondary noise — repeated exceptions, retries, or downstream "could not complete" messages
Do not summarize 20 symptoms as if they are 20 causes.
Step 3: Classify the failure bucket
Map the log to one primary bucket and optional secondary bucket.
Primary buckets
compile-code
compile-reflection
asset-reference
package-plugin-config
platform-sdk
build-pipeline-state
runtime-startup
unknown-needs-more-context
Typical Unity mappings
CS0246, CS0103, Assembly has reference to non-existent assembly → compile-code or package-plugin-config
MissingReferenceException, NullReferenceException during import/build, missing GUID/meta issues → asset-reference
- Package Manager resolution failures, invalid asmdef references, scripting define mismatch →
package-plugin-config
- Android SDK/JDK/Gradle/Xcode signing failures →
platform-sdk
Typical Unreal mappings
Unable to instantiate module, missing plugin/module, bad .Build.cs, target rules failures → package-plugin-config
- UHT/UObject/reflection macro errors, generated code issues →
compile-reflection
Cook failed, missing content, redirector/moved asset fallout → asset-reference or build-pipeline-state
- Visual Studio/toolchain/SDK/platform packaging blockers →
platform-sdk
Step 4: Produce the triage brief
Return a concise report with this exact structure:
# Game Log Triage
## Engine
- Unity | Unreal | Mixed/Unknown
## Log scope
- Source: ...
- Failing command/stage: ...
- Confidence: high | medium | low
## First actionable failure
- Line or excerpt: `...`
- Why it matters: ...
- Why later errors look secondary: ...
## Classification
- Primary bucket: ...
- Secondary bucket: ...
## Most likely root cause
- 1-3 sentence explanation grounded in the log
## Next checks
1. ...
2. ...
3. ...
## Files / settings to inspect
- ...
- ...
- ...
## Safe follow-up commands
```bash
# optional read-only inspection commands only
What not to do yet
- Avoid shotgun cleanup or broad asset deletion until the primary blocker is verified
### Step 5: Tailor the next checks to the engine
**For Unity, prefer checks like:**
- `Packages/manifest.json`, `Packages/packages-lock.json`
- `.asmdef` references and scripting define symbols
- `ProjectSettings/`, platform build settings, signing/toolchain paths
- recent asset moves, `.meta` files, GUID stability, prefab/scene references
- the first compiler error before any `NullReferenceException` flood
**For Unreal, prefer checks like:**
- `.uproject`, plugin enablement, `Source/*/*.Build.cs`, target files
- first UBT/UHT error before package/cook fallout
- redirectors, missing assets, moved content, generated code mismatches
- platform SDK/toolchain prerequisites and AutomationTool stage
- whether the failure started after renaming classes/assets or changing modules/plugins
### Step 6: Escalate carefully when evidence is weak
If the log excerpt is too short or starts mid-cascade:
1. Say that confidence is low.
2. Ask for the earliest error cluster or the failing command section.
3. List the minimum extra context required:
- first 50-150 lines around the first error
- engine version
- target platform
- whether the breakage followed code/package/asset/plugin changes
Do not pretend certainty from a truncated excerpt.
## Output format
Always return a short debugging brief, not a stream-of-consciousness analysis.
Required qualities:
- prioritize the first actionable blocker
- separate root cause from cascade noise
- keep the report under roughly 250-400 words unless the user asks for more
- include file paths/settings to inspect when the engine suggests them
- keep shell suggestions read-only unless the user explicitly asks for fixes
## Examples
### Example 1: Unity compile + package drift
**Input**
> Unity build failed after we updated a package. The log shows `CS0246: The type or namespace name 'InputSystem' could not be found` and then dozens of `NullReferenceException` lines.
**Output sketch**
- Engine: Unity
- First actionable failure: `CS0246` for `InputSystem`
- Classification: `package-plugin-config`
- Root cause: package or asmdef reference drift is blocking compilation; the later null refs are likely fallout from the failed compile/import state
- Next checks:
1. confirm `Packages/manifest.json` still includes the Input System package
2. inspect asmdef references for the affected assembly
3. verify scripting define symbols or package migration notes
### Example 2: Unreal cook failure after asset moves
**Input**
> Unreal cook started failing after we renamed folders. The log shows `Cook failed` and multiple missing asset warnings.
**Output sketch**
- Engine: Unreal
- First actionable failure: earliest missing asset / redirector-related line before `Cook failed`
- Classification: `asset-reference`
- Root cause: moved content likely left broken references or redirectors that were not fixed up before cook
- Next checks:
1. inspect moved asset paths and redirectors
2. run a read-only audit of referenced missing assets from the log
3. verify whether plugin/content paths changed with the rename
### Example 3: Unreal UHT blocker
**Input**
> CI says `UnrealHeaderTool failed` after a refactor.
**Output sketch**
- Engine: Unreal
- First actionable failure: first UHT reflection/macros error, not later AutomationTool exit lines
- Classification: `compile-reflection`
- Root cause: header/reflection metadata mismatch during generated code step
- Next checks:
1. inspect the referenced header and macro usage
2. compare recent renamed classes or moved modules
3. verify generated-code dependencies in the owning module
## Best practices
1. **Lead with the earliest blocker** — game-engine logs cascade badly.
2. **Name the subsystem** — compile, reflection, asset/reference, plugin/config, or platform SDK.
3. **Prefer specific inspection targets** over generic advice like "rebuild everything."
4. **Keep remediation safe-first** — read-only commands and targeted checks before destructive cleanup.
5. **Treat asset moves as high-suspicion events** in both engines.
6. **Explain confidence** when the excerpt is partial or noisy.
7. **Use engine language the team already uses**: asmdef, GUID/meta, UBT/UHT, redirectors, BuildCookRun, etc.
## References
- [Unity Console](https://docs.unity3d.com/Manual/Console.html)
- [Unity Log Files](https://docs.unity3d.com/Manual/log-files.html)
- [Unity Version Control / Smart Merge Support](https://docs.unity3d.com/Manual/ExternalVersionControlSystemSupport.html)
- [Unreal Logging](https://dev.epicgames.com/documentation/en-us/unreal-engine/logging-in-unreal-engine)
- [Unreal Packaging Projects](https://docs.unrealengine.com/5.0/en-US/packaging-unreal-engine-projects/)
- [Unreal Redirectors](https://docs.unrealengine.com/5.0/en-US/redirectors-in-unreal-engine/)
1---2name: game-build-log-triage3description: Triage Unity and Unreal Engine editor, build, package, cook, compile, and CI logs into the first actionable failure, likely subsystem, and next debugging steps. Use when a game project fails to build, cook, package, import assets, compile scripts/code, or throws noisy editor/runtime errors, even if the user only shares raw log text or says "Unity build failed", "Unreal cook error", "Editor.log", "UHT/UBT failed", or "packaging started breaking after asset moves".4---56# Game Build Log Triage78Use this skill to turn noisy Unity and Unreal logs into a short, prioritized debugging brief.910The goal is not to explain every line. The goal is to find the **first non-cascading failure**, identify the most likely subsystem, and tell the user what to inspect next.1112Read [references/engine-patterns.md](references/engine-patterns.md) before classifying unfamiliar engine-specific errors.1314If the user is not asking about one failing log but about repeated CI instability, cache policy, packaging workflow shape, or release automation for Unity/Unreal projects, route that broader workflow design work to `game-ci-cd-pipeline` after or alongside this triage.1516## When to use this skill17- Unity build, import, compile, package, or play-mode startup failures18- Unreal build, UBT/UHT, cook, package, shader, plugin, or module failures19- CI logs from game projects where the raw output is long and noisy20- Asset moves, redirectors, missing references, `.meta`/GUID, module, or plugin breakages21- Users who provide `Editor.log`, package output, BuildCookRun logs, stack traces, or console excerpts and want the next debugging steps2223## Instructions2425### Step 1: Confirm the engine and log scope261. Detect whether the material is mainly **Unity**, **Unreal**, or **mixed/unknown**.272. Record the log source when visible:28 - Unity: `Editor.log`, Console output, package manager output, player build output, CI transcript29 - Unreal: UBT/UHT output, cook/package logs, Output Log, Message Log, crash log, CI transcript303. Identify the time window or failing command if present.314. If the log is huge, focus first on:32 - lines containing `error`, `exception`, `fatal`, `failed`, `UHT`, `UBT`, `NullReferenceException`, `MissingReferenceException`, `Cook failed`, `AutomationTool exiting`, `Script compilation error`33 - the first error cluster before a flood of repeated follow-on errors3435### Step 2: Find the first actionable failure36Work top-down and separate **root-cause candidates** from **cascade noise**.3738Use this decision order:391. **Hard stop / fatal line** — first line that clearly aborts the run402. **Configuration or dependency blocker** — missing module, SDK, package, plugin, target, or assembly definition413. **Compile/reflection blocker** — C# compiler error, UHT/UBT error, macro/reflection issue, missing symbol, duplicate class, circular dependency424. **Asset/reference blocker** — missing asset, redirector fallout, GUID/meta mismatch, bad import, broken prefab/Blueprint reference435. **Environment/platform blocker** — Android/iOS/console SDK issue, signing/provisioning, toolchain path, unsupported target446. **Secondary noise** — repeated exceptions, retries, or downstream "could not complete" messages4546Do **not** summarize 20 symptoms as if they are 20 causes.4748### Step 3: Classify the failure bucket49Map the log to one primary bucket and optional secondary bucket.5051**Primary buckets**52- `compile-code`53- `compile-reflection`54- `asset-reference`55- `package-plugin-config`56- `platform-sdk`57- `build-pipeline-state`58- `runtime-startup`59- `unknown-needs-more-context`6061**Typical Unity mappings**62- `CS0246`, `CS0103`, `Assembly has reference to non-existent assembly` → `compile-code` or `package-plugin-config`63- `MissingReferenceException`, `NullReferenceException` during import/build, missing GUID/meta issues → `asset-reference`64- Package Manager resolution failures, invalid asmdef references, scripting define mismatch → `package-plugin-config`65- Android SDK/JDK/Gradle/Xcode signing failures → `platform-sdk`6667**Typical Unreal mappings**68- `Unable to instantiate module`, missing plugin/module, bad `.Build.cs`, target rules failures → `package-plugin-config`69- UHT/UObject/reflection macro errors, generated code issues → `compile-reflection`70- `Cook failed`, missing content, redirector/moved asset fallout → `asset-reference` or `build-pipeline-state`71- Visual Studio/toolchain/SDK/platform packaging blockers → `platform-sdk`7273### Step 4: Produce the triage brief74Return a concise report with this exact structure:7576```markdown77# Game Log Triage7879## Engine80- Unity | Unreal | Mixed/Unknown8182## Log scope83- Source: ...84- Failing command/stage: ...85- Confidence: high | medium | low8687## First actionable failure88- Line or excerpt: `...`89- Why it matters: ...90- Why later errors look secondary: ...9192## Classification93- Primary bucket: ...94- Secondary bucket: ...9596## Most likely root cause97- 1-3 sentence explanation grounded in the log9899## Next checks1001. ...1012. ...1023. ...103104## Files / settings to inspect105- ...106- ...107- ...108109## Safe follow-up commands110```bash111# optional read-only inspection commands only112```113114## What not to do yet115- Avoid shotgun cleanup or broad asset deletion until the primary blocker is verified116```117118### Step 5: Tailor the next checks to the engine119**For Unity, prefer checks like:**120- `Packages/manifest.json`, `Packages/packages-lock.json`121- `.asmdef` references and scripting define symbols122- `ProjectSettings/`, platform build settings, signing/toolchain paths123- recent asset moves, `.meta` files, GUID stability, prefab/scene references124- the first compiler error before any `NullReferenceException` flood125126**For Unreal, prefer checks like:**127- `.uproject`, plugin enablement, `Source/*/*.Build.cs`, target files128- first UBT/UHT error before package/cook fallout129- redirectors, missing assets, moved content, generated code mismatches130- platform SDK/toolchain prerequisites and AutomationTool stage131- whether the failure started after renaming classes/assets or changing modules/plugins132133### Step 6: Escalate carefully when evidence is weak134If the log excerpt is too short or starts mid-cascade:1351. Say that confidence is low.1362. Ask for the earliest error cluster or the failing command section.1373. List the minimum extra context required:138 - first 50-150 lines around the first error139 - engine version140 - target platform141 - whether the breakage followed code/package/asset/plugin changes142143Do not pretend certainty from a truncated excerpt.144145## Output format146Always return a short debugging brief, not a stream-of-consciousness analysis.147148Required qualities:149- prioritize the first actionable blocker150- separate root cause from cascade noise151- keep the report under roughly 250-400 words unless the user asks for more152- include file paths/settings to inspect when the engine suggests them153- keep shell suggestions read-only unless the user explicitly asks for fixes154155## Examples156157### Example 1: Unity compile + package drift158**Input**159> Unity build failed after we updated a package. The log shows `CS0246: The type or namespace name 'InputSystem' could not be found` and then dozens of `NullReferenceException` lines.160161**Output sketch**162- Engine: Unity163- First actionable failure: `CS0246` for `InputSystem`164- Classification: `package-plugin-config`165- Root cause: package or asmdef reference drift is blocking compilation; the later null refs are likely fallout from the failed compile/import state166- Next checks:167 1. confirm `Packages/manifest.json` still includes the Input System package168 2. inspect asmdef references for the affected assembly169 3. verify scripting define symbols or package migration notes170171### Example 2: Unreal cook failure after asset moves172**Input**173> Unreal cook started failing after we renamed folders. The log shows `Cook failed` and multiple missing asset warnings.174175**Output sketch**176- Engine: Unreal177- First actionable failure: earliest missing asset / redirector-related line before `Cook failed`178- Classification: `asset-reference`179- Root cause: moved content likely left broken references or redirectors that were not fixed up before cook180- Next checks:181 1. inspect moved asset paths and redirectors182 2. run a read-only audit of referenced missing assets from the log183 3. verify whether plugin/content paths changed with the rename184185### Example 3: Unreal UHT blocker186**Input**187> CI says `UnrealHeaderTool failed` after a refactor.188189**Output sketch**190- Engine: Unreal191- First actionable failure: first UHT reflection/macros error, not later AutomationTool exit lines192- Classification: `compile-reflection`193- Root cause: header/reflection metadata mismatch during generated code step194- Next checks:195 1. inspect the referenced header and macro usage196 2. compare recent renamed classes or moved modules197 3. verify generated-code dependencies in the owning module198199## Best practices2001. **Lead with the earliest blocker** — game-engine logs cascade badly.2012. **Name the subsystem** — compile, reflection, asset/reference, plugin/config, or platform SDK.2023. **Prefer specific inspection targets** over generic advice like "rebuild everything."2034. **Keep remediation safe-first** — read-only commands and targeted checks before destructive cleanup.2045. **Treat asset moves as high-suspicion events** in both engines.2056. **Explain confidence** when the excerpt is partial or noisy.2067. **Use engine language the team already uses**: asmdef, GUID/meta, UBT/UHT, redirectors, BuildCookRun, etc.207208## References209- [Unity Console](https://docs.unity3d.com/Manual/Console.html)210- [Unity Log Files](https://docs.unity3d.com/Manual/log-files.html)211- [Unity Version Control / Smart Merge Support](https://docs.unity3d.com/Manual/ExternalVersionControlSystemSupport.html)212- [Unreal Logging](https://dev.epicgames.com/documentation/en-us/unreal-engine/logging-in-unreal-engine)213- [Unreal Packaging Projects](https://docs.unrealengine.com/5.0/en-US/packaging-unreal-engine-projects/)214- [Unreal Redirectors](https://docs.unrealengine.com/5.0/en-US/redirectors-in-unreal-engine/)