ue-actor-component-arc…
Use when writing or debugging AActor and UActorComponent C++: constructor vs BeginPlay,…
Use when exposing C++ to Blueprint or calling Blueprint from C++: UFUNCTION(BlueprintCallable), BlueprintPure, BlueprintImplementableEvent, BlueprintNativeEvent, _Implementation, UBlueprintFunctionLibrary, WorldContext, DefaultToSelf, ExpandEnumAsExecs, DeterminesOutputType,
$ npx -y skills add quodsoler/unreal-engine-skills --skill ue-blueprint-cpp-interop --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/ue-blueprint-cpp-interopContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when exposing C++ to Blueprint or calling Blueprint from C++: UFUNCTION(BlueprintCallable), BlueprintPure, BlueprintImplementableEvent, BlueprintNativeEvent, _Implementation, UBlueprintFunctionLibrary, WorldContext, DefaultToSelf, ExpandEnumAsExecs, DeterminesOutputType,
name: ue-blueprint-cpp-interop description: "Use when exposing C++ to Blueprint or calling Blueprint from C++: UFUNCTION(BlueprintCallable), BlueprintPure, BlueprintImplementableEvent, BlueprintNativeEvent, _Implementation, UBlueprintFunctionLibrary, WorldContext, DefaultToSelf, ExpandEnumAsExecs, DeterminesOutputType, latent nodes, FPendingLatentAction, FLatentActionInfo, UBlueprintAsyncActionBase, BlueprintAssignable, UINTERFACE, Execute_, TScriptInterface, UENUM(BlueprintType), CallInEditor, FindFunction, ProcessEvent. Also use when the user mentions 'expose to Blueprint', 'custom Blueprint node', 'async Blueprint node' or 'meta specifier'. For reflection and container basics, see ue-cpp-foundations; for details customization, see ue-editor-tools." metadata: version: "2.0.0" engine: "5.8"
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 covers the boundary between native code and the Blueprint VM: which `UFUNCTION`/`UPROPERTY` specifiers and `meta=` keys produce which node shapes, function libraries, latent and async nodes, Blueprint-implementable interfaces, and how C++ calls back into a Blueprint graph. Everything here lives in `Core`, `CoreUObject` and `Engine` (`PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine" });`); Project Settings pages also need `DeveloperSettings`. The authority for every specifier is `Runtime/CoreUObject/Public/UObject/ObjectMacros.h` — anything not declared in its `UC`, `UI`, `UF`, `UP`, `US` or `UM` enumerations is not a specifier.
Read `.agents/ue-project-context.md` if it exists (module names, conventions, enabled plugins, GAS/networking setup). Do not stop if it is missing.
Identify the area from the request and the codebase. Ask only when two plausible readings would produce different code.
| Request is about… | Go to | |---|---| | Making a C++ function callable or overridable in Blueprint | [UFUNCTION Exposure](#ufunction-exposure) | | Making data visible or editable in Blueprint, getters/setters | [UPROPERTY Exposure](#uproperty-exposure) | | Static helpers, `WorldContext`, `DefaultToSelf` | [Function Libraries](#function-libraries) | | A node with an exec pin that finishes later (Delay-style) | [Latent Nodes](#latent-nodes) | | A node with several output exec pins that fire on events | [Async Action Nodes](#async-action-nodes) | | Interfaces Blueprint can implement, `Execute_`, `TScriptInterface` | [Blueprint Interfaces](#blueprint-interfaces) | | `UENUM`, `USTRUCT`, containers as Blueprint types | [Enums and Structs in Blueprint](#enums-and-structs-in-blueprint) | | `BlueprintAssignable` events, binding Blueprint to a C++ delegate | [Delegates and Events](#delegates-and-events) | | Running Blueprint logic from native code, Blueprint classes | [Calling Blueprint from Native Code](#calling-blueprint-from-native-code) | | Subsystems, `UDeveloperSettings`, `Exec` commands | [Subsystems and Settings in Blueprint](#subsystems-and-settings-in-blueprint) | | A button in the Details panel, editor-only actions | [Editor-Callable Functions](#editor-callable-functions) |
| Specifier | Node shape | C++ body | |---|---|---| | `BlueprintCallable` | Exec pins in and out | Yours | | `BlueprintPure` | No exec pins; implies `BlueprintCallable` | Yours, side-effect free | | `BlueprintImplementableEvent` | Event the Blueprint implements | **None** — UHT generates the thunk | | `BlueprintNativeEvent` | Event the Blueprint may override | `Name_Implementation` only | | `BlueprintGetter` / `BlueprintSetter` | Hidden; reached through the property | Yours | | `BlueprintAuthorityOnly` | Blueprint calls are skipped without network authority (direct C++ calls still run) | Yours | | `BlueprintCosmetic` | Blueprint calls are skipped on a dedicated server (direct C++ calls still run) | Yours | | `BlueprintInternalUseOnly` | Not offered in the palette; only generated nodes call it | Yours | | `CallInEditor` | Button on the Details panel | Yours | | `Exec` | Console command | Yours |
`Category="A\|B"` builds a nested palette category. The node-shaping `meta=` keys — `DisplayName`, `ToolTip`, `Keywords`, `CompactNodeTitle`, `AdvancedDisplay`, `ReturnDisplayName`, `HidePin`, `DeterminesOutputType`, `DynamicOutputParam`, `ArrayParm`, `ExpandEnumAsExecs`, `WorldContext`, `UnsafeDuringActorConstruction`, `DevelopmentOnly`, `BlueprintThreadSafe` and the rest — are tabled with header citations in [references/blueprint-meta-specifiers.md](references/blueprint-meta-specifiers.md#ufunction-meta-keys).
// MyActor.h
#pragma once
#include "CoreMinimal.h"
#include "GameFramework/Actor.h"
#include "MyActor.generated.h"
UCLASS(Blueprintable)
class MYGAME_API AMyActor : public AActor
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category="MyGame|Combat", meta=(Keywords="damage hurt"))
void ApplyDamage(float Amount);
UFUNCTION(BlueprintPure, Category="MyGame|Combat", meta=(CompactNodeTitle="HP", ReturnDisplayName="Health"))
float GetHealth() const;
/** Blueprint supplies the whole body; C++ never defines this. */
UFUNCTION(BlueprintImplementableEvent, Category="MyGame|Combat")
void OnDamaged(float Amount);
/** C++ supplies the default in OnDied_Implementation; Blueprint may override it. */
UFUNCTION(BlueprintNativeEvent, Category="MyGame|Combat")
void OnDied();
virtual void OnDied_Implementation();
UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, Category="MyGame|Combat")
void ResetOnServer() { Health = MaxHealth; } // Blueprint calls skipped on clients
UFUNCTION(BlueprintCallable, BlueprintCosmetic, Category="MyGame|FX")
void PlayHitFlash() {} // Blueprint calls skipped on a dedicated server
UFUNCTION(CallInEditor, Category="MyGame|Tools")
void SnapToGround() {}A collection of 31 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 when writing or debugging AActor and UActorComponent C++: constructor vs BeginPlay,…
Use when writing Unreal Engine C++ AI — AI controllers, behavior tree nodes, blackboards, AI…
Use when writing or debugging Unreal Engine animation C++: AnimInstance subclasses,…
Use when offloading work off the game thread, dispatching results back to it, running…
Use when playing, mixing or debugging sound in Unreal Engine — one-shot SFX, looping…
Use when writing or debugging UCharacterMovementComponent code: custom movement modes, floor…