What problem does it solve? Unreal Engine has two memory worlds — garbage-collected UObjects and plain C++ heap objects — and mixing them up causes most UE crashes, from dangling pointers after GC to uncollectable reference cycles. This Skill gives an agent the exact rules, pointer types, and engine-source citations to choose correct ownership and debug memory bugs. ## Core Features & Use Cases - Pointer type selection: Decision guidance for TObjectPtr, TWeakObjectPtr, TSoftObjectPtr, TStrongObjectPtr, TSharedPtr, TSharedRef, TWeakPtr, and TUniquePtr, with a comparison table of GC visibility and ownership semantics. - GC internals: Explains the reachability cycle, root set, clustering, incremental GC, and the BeginDestroy/FinishDestroy destruction callback sequence. - Non-UObject ownership: Patterns for holding UObjects from plain F* classes via FGCObject::AddReferencedObjects or TStrongObjectPtr. - Use Case: An agent debugging a crash that appears seconds after a level load can identify the classic "GC collected it" symptom, find the raw UObject* member missing UPROPERTY, and fix it with TObjectPtr plus IsValid checks. ## Quick Start Use the ue-memory-and-gc skill to explain why my UObject pointer becomes garbage after a few seconds and which pointer type I should use instead.