ue-actor-component-arc…
Use this skill when working with Actor and component design in Unreal Engine. Triggers on:…
Use when writing Unreal Engine C++ code involving UPROPERTY, UFUNCTION, UCLASS, TArray, TMap, delegates, FString, garbage collection, or smart pointers. Also use when the user asks about "UE C++", USTRUCT, UENUM, FName, FText, TObjectPtr, TWeakObjectPtr, UObject lifetime,
$ npx -y skills add quodsoler/unreal-engine-skills --skill ue-cpp-foundations --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ue-cpp-foundationsContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when writing Unreal Engine C++ code involving UPROPERTY, UFUNCTION, UCLASS, TArray, TMap, delegates, FString, garbage collection, or smart pointers. Also use when the user asks about "UE C++", USTRUCT, UENUM, FName, FText, TObjectPtr, TWeakObjectPtr, UObject lifetime,
name: ue-cpp-foundations description: Use when writing Unreal Engine C++ code involving UPROPERTY, UFUNCTION, UCLASS, TArray, TMap, delegates, FString, garbage collection, or smart pointers. Also use when the user asks about "UE C++", USTRUCT, UENUM, FName, FText, TObjectPtr, TWeakObjectPtr, UObject lifetime, UE_LOG, or UE subsystems. For module build configuration, see ue-module-build-system. For Actor/Component architecture, see ue-actor-component-architecture. metadata: version: 1.0.0
You are an expert in Unreal Engine's C++ extensions and property system.
Read `.agents/ue-project-context.md` for engine version, coding conventions, and project-specific rules. Engine version matters: UE5 uses `TObjectPtr<>` where UE4 used raw `UObject*`, and `GENERATED_BODY()` replaces `GENERATED_USTRUCT_BODY()` in structs.
Ask which area the user needs help with if unclear:
---
All UE reflection macros require `GENERATED_BODY()` inside the class/struct and the corresponding `.generated.h` include.
| Specifier | Effect | |-----------|--------| | `Blueprintable` | Blueprint subclassing allowed | | `BlueprintType` | Usable as Blueprint variable | | `Abstract` | Cannot be instantiated | | `NotBlueprintable` | Blocks Blueprint subclassing | | `Config=<Name>` | Loads UPROPERTY(Config) from `<Name>.ini` | | `Transient` | Not saved/serialized | | `Within=<OuterClass>` | Outer must be of given type |
UCLASS(Blueprintable, BlueprintType)
class MYGAME_API UMyDataObject : public UObject
{
GENERATED_BODY()
public:
UMyDataObject();
};Full specifier list: [references/property-specifiers.md](references/property-specifiers.md).
UCLASS(Blueprintable)
class MYGAME_API AMyCharacter : public ACharacter
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Stats")
float MaxHealth = 100.f;
UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Stats")
float CurrentHealth;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category="Config")
int32 MaxLevel = 50;
UPROPERTY(ReplicatedUsing=OnRep_Health, Category="Replication")
float ReplicatedHealth;
UPROPERTY(Transient) // Not serialized; GC still tracks
TObjectPtr<UParticleSystemComponent> CachedFX;
UPROPERTY(SaveGame, BlueprintReadWrite, Category="Persistence")
int32 PlayerScore;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Stats",
meta=(ClampMin="0.0", ClampMax="1.0"))
float DamageMultiplier = 1.f;
UFUNCTION()
void OnRep_Health();
virtual void GetLifetimeReplicatedProps(
TArray<FLifetimeProperty>& OutLifetimeProps) const override;
};UFUNCTION(BlueprintCallable, Category="Actions") void PerformAttack(float Damage); UFUNCTION(BlueprintPure, Category="Queries") float GetHealthPercent() const; UFUNCTION(BlueprintNativeEvent, Category="Events") // C++ provides _Implementation void OnDamageTaken(float Amount); virtual void OnDamageTaken_Implementation(float Amount); UFUNCTION(BlueprintImplementableEvent, Category="Events") // Blueprint must implement void OnLevelUp(int32 NewLevel); UFUNCTION(Server, Reliable, WithValidation) // RPC: runs on server void ServerFireWeapon(FVector Origin, FVector Direction); void ServerFireWeapon_Implementation(FVector Origin, FVector Direction); bool ServerFireWeapon_Validate(FVector Origin, FVector Direction); UFUNCTION(Client, Reliable) // RPC: runs on owning client void ClientShowDamageNumber(float Amount); void ClientShowDamageNumber_Implementation(float Amount); UFUNCTION(NetMulticast, Reliable) // RPC: runs on all void MulticastPlayEffect(FVector Location); void MulticastPlayEffect_Implementation(FVector Location); UFUNCTION(Exec) // Console command (~ in-game) void DebugResetStats(); // Works on PC, Pawn, HUD, GM, GI, CheatManager
// UE5: always GENERATED_BODY() — never GENERATED_USTRUCT_BODY()
USTRUCT(BlueprintType)
struct MYGAME_API FWeaponStats
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite) float BaseDamage = 10.f;
UPROPERTY(EditAnywhere, BlueprintReadWrite) float FireRate = 0.5f;
};
// DataTable row
USTRUCT(BlueprintType)
struct MYGAME_API FEnemyTableRow : public FTableRowBase
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite) FName EnemyID;
UPROPERTY(EditAnywhere, BlueprintReadWrite) TSoftClassPtr<AActor> SpawnClass;
};
UENUM(BlueprintType)
enum class EWeaponState : uint8
{
Idle UMETA(DisplayName="Idle"),
Firing UMETA(DisplayName="Firing"),
Reloading UMETA(DisplayName="Reloading"),
};---
See [references/container-patterns.md](references/container-patterns.md) for full API and performance guide.
TArray<FString> Names;
Names.Add(TEXT("Alpha"));
Names.Emplace(TEXT("Beta")); // Construct in-place (avoids copy)
Names.Reserve(100); // Pre-allocate
FString First = Names[0];
bool bHas = Names.Contains(TEXT("Alpha"));
int32 Idx = Names.Find(TEXT("Beta")); // INDEX_NONE if absent
FString* Ptr = Names.FindByPredicate([](const FString& S){ return S.StartsWith(TEXT("A")); });
Names.Sort([](const FString& A, const FString& B){ return A.Len() < B.LA collection of 27 AI agent skills for Unreal Engine C++ development. Built for game developers who want AI coding agents to help write correct, production-quality UE5 C++ code.
Use this skill when working with Actor and component design in Unreal Engine. Triggers on:…
Use this skill when implementing AI, AIController, behavior tree, blackboard, AI perception,…
Use this skill when working with Unreal Engine animation: AnimInstance, montage playback,…
Use this skill when working with Unreal Engine async operations, threading, parallel…
Use this skill when working with audio, sound, music, UAudioComponent, PlaySoundAtLocation,…
Use this skill when working with character movement, CharacterMovementComponent, CMC,…