Unreal Development
CoWork-OS/CoWork-OS
Unreal Engine development: C++/Blueprint patterns, Gameplay Framework, Niagara, Lumen/Nanite, multiplayer, and packaging.
A skill your agent uses when building, scripting or debugging a game in Unreal Engine 5 with Blueprint or C++ — the gameplay framework (Actor, Pawn, Character, GameMode, PlayerController), Actor…
$ npx skills add ericrisco/rsc-harness --skill unreal -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness unreal --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/unreal .claude/skills/unreal && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "unreal" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/unreal into .claude/skills/unreal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unreal", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/unrealType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ericrisco/rsc-harness --skill unreal -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness unreal --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/unreal .agents/skills/unreal && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "unreal" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/unreal into .agents/skills/unreal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unreal", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill unreal -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness unreal --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/unreal .cursor/skills/unreal && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "unreal" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/unreal into .cursor/skills/unreal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unreal", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/unreal--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill unreal -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness unreal --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/unreal .gemini/skills/unreal && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "unreal" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/unreal into .gemini/skills/unreal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unreal", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ericrisco/rsc-harness unrealInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ericrisco/rsc-harness --skill unreal -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/unreal .github/skills/unreal && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "unreal" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/unreal into .github/skills/unreal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unreal", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ericrisco/rsc-harness --skill unreal -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness unreal --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/unreal .opencode/skills/unreal && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "unreal" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/unreal into .opencode/skills/unreal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "unreal", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
unrealA skill your agent uses when building, scripting or debugging a game in Unreal Engine 5 with Blueprint or C++ — the gameplay framework (Actor, Pawn, Character, GameMode, PlayerController), Actor…
Unreal is an agent skill from ericrisco/rsc-harness. Use when building, scripting or debugging a game in Unreal Engine 5 with Blueprint or C++ — the gameplay framework (Actor, Pawn, Character, GameMode, PlayerController), Actor lifecycle and tick, the reflection macros and garbage collection, Enhanced Input, multicast delegates, UMG widgets, Paper2D, and Blueprint-to-C++ parity in both directions. NOT Godot (that is godot), NOT Unity or MonoBehaviour (that is unity), NOT language-only C++ memory and RAII questions with no Unreal types (that is cpp).
Its SKILL.md is about 4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/blueprint-cpp-parity.md`).
It sits in Game Development, covering Game development. It works with C++, Unreal Engine and Godot. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
Read from SKILL.md and the folder at commit e3d5b33. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are cpp).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Unreal loads about 4k tokens when it runs, and up to ~7.7k if it reads all its reference files. Until then it costs about 129 tokens; SKILL.md has 1,357 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from ericrisco/rsc-harness at commit e3d5b33, republished under its MIT licence (© ericrisco). 1,357 words, ~3,974 tokens.
.claude/skills/unreal/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Build and debug UE5 games with the grain of the engine: the Gameplay Framework for structure, reflection macros so C++ and Blueprint see the same types, Enhanced Input for controls, UMG for UI, Paper2D for 2D — and a clean Blueprint↔C++ boundary so either can call the other. Hands 3D-only concerns (shaders, physics, netcode, shipping) to the siblings below.
Target Unreal Engine 5.x (patterns valid 5.3+; current stable UE 5.8, the last UE5 line before UE6). Emit modern UE5 APIs only. Never emit these deprecated / legacy patterns:
| Never emit | Use instead (UE5) |
|---|---|
Legacy input: Project-Settings Action/Axis Mappings + InputComponent->BindAction/BindAxis(FName,…) | Enhanced Input: UInputAction + UInputMappingContext + UEnhancedInputComponent->BindAction(…), context added via UEnhancedInputLocalPlayerSubsystem (default since 5.1; legacy deprecated 5.2) |
Raw UObject* / AActor* as a UPROPERTY member | TObjectPtr<T> for UPROPERTY members (raw T* is fine for locals/params) |
GENERATED_UCLASS_BODY() | GENERATED_BODY() |
TAssetPtr<T> / FStringAssetReference | TSoftObjectPtr<T> / FSoftObjectPath |
ANY_PACKAGE in FindObject / StaticLoadObject | explicit package or FTopLevelAssetPath |
Slate/Canvas DrawText/HUD for game UI | UMG (UUserWidget) |
AGameMode as the default base for a solo game | AGameModeBase (use AGameMode only when you need MatchState/multiplayer login flow) |
DECLARE_MULTICAST_DELEGATE for a Blueprint-bindable event | DECLARE_DYNAMIC_MULTICAST_DELEGATE… + BlueprintAssignable |
bCanEverTick = true "just in case" | leave tick off; drive logic from events/overlaps/timers (FTimerManager) |
| Hard-referencing / loading heavy assets at runtime by path | soft refs + FStreamableManager async load (hard refs only via ConstructorHelpers in the constructor) |
Blueprint vs C++ — and the hybrid. Blueprint: designer-facing tweaks, per-level scripting,
UI wiring, rapid iteration, one-off actors. C++: core systems, performance-critical/tick-heavy
code, base classes, math, anything you want unit-tested or diffable in git. Default to the
hybrid: write the base class in C++ (UCLASS(Blueprintable)), expose tunables with
UPROPERTY(EditAnywhere, BlueprintReadWrite) and hooks with BlueprintImplementableEvent /
BlueprintNativeEvent, then create a Blueprint subclass for designers to set defaults, wire
assets, and script the specifics — C++ speed and testability with Blueprint iteration.
| Class | Responsibility | Lifetime / scope |
|---|---|---|
AActor | Anything placeable/spawnable in a level; holds components. | Per instance in a level/world |
UActorComponent / USceneComponent | Reusable behavior/data on an Actor; USceneComponent adds a transform. | Owned by its Actor |
APawn | An Actor that can be possessed and driven by a controller. | Per instance |
ACharacter | A Pawn with a CapsuleComponent, SkeletalMesh, and CharacterMovementComponent (walk/jump/crouch, networked). | Per instance |
AController / APlayerController / AAIController | The "brain" that possesses a Pawn; APlayerController maps a human player to input, camera, and UI. | One per player/AI |
APlayerState | Per-player replicated state that must survive respawn (name, score, team). | One per player |
AGameModeBase | The rules of the match; spawns players, defines default Pawn/Controller/HUD classes. Server-only — never exists on clients. | One per level |
AGameStateBase | Game-wide replicated state all clients need (match phase, shared score, player array). | One, replicated |
AHUD / UUserWidget | On-screen UI; prefer UMG UUserWidget over AHUD canvas drawing. | Per PlayerController |
Rule of thumb: transient input/camera → PlayerController; persistent per-player data →
PlayerState; match rules → GameMode (server); shared world state → GameState. Full
responsibilities and a spawn-order diagram → references/gameplay-framework.md.
Order for a spawned/placed Actor: constructor (set defaults, create subobjects — never
gameplay logic) → PostInitializeComponents → BeginPlay (world is live; safe to start logic)
→ Tick(DeltaSeconds) each frame (only if enabled) → EndPlay / Destroyed (release).
AMyActor::AMyActor()
{
PrimaryActorTick.bCanEverTick = false; // opt in only if you truly tick
RootComponent = CreateDefaultSubobject<USceneComponent>(TEXT("Root"));
Mesh = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("Mesh"));
Mesh->SetupAttachment(RootComponent); // attach in the CONSTRUCTOR
}
void AMyActor::BeginPlay() { Super::BeginPlay(); /* start logic here, not in ctor */ }CreateDefaultSubobject<T>(TEXT("Name")) in the constructor; store
them in a UPROPERTY() TObjectPtr<T> so they're kept alive and visible.SetupAttachment; at runtime use
AttachToComponent(Parent, FAttachmentTransformRules::SnapToTargetNotIncludingScale).GetWorldTimerManager().SetTimer(Handle, this, &AMyActor::Fn, 1.f, true);Macros register types with Unreal Header Tool (UHT) so they get GC, serialization, editor, and
Blueprint support. Put GENERATED_BODY() first inside the class.
UENUM(BlueprintType)
enum class ETeam : uint8 { Red, Blue };
USTRUCT(BlueprintType) // value type, visible to BP; no GC of itself
struct FLoadout { GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite) int32 Ammo = 30;
};
UCLASS(Blueprintable) // Blueprintable = can be subclassed in BP
class MYGAME_API AWeapon : public AActor {
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="Combat") float Damage = 10.f;
UPROPERTY(VisibleAnywhere) TObjectPtr<UStaticMeshComponent> Mesh; // GC-tracked ref
UFUNCTION(BlueprintCallable, Category="Combat") void Fire();
};Common UPROPERTY specifiers: EditAnywhere (edit on instances + defaults),
EditDefaultsOnly (class defaults only), VisibleAnywhere (read-only in editor);
BlueprintReadWrite (get + set in BP) vs BlueprintReadOnly (get only); always give a
Category.
Garbage collection — the #1 gotcha. The GC frees any UObject that no reachable UPROPERTY
points to. A UObject reference stored without UPROPERTY() is invisible to GC: it will be
collected out from under you and the pointer dangles/crashes. So:
UObject/AActor reference in a UPROPERTY() TObjectPtr<T>.TWeakObjectPtr<T> and .IsValid().new/delete a UObject — spawn Actors with SpawnActor<T>() and create other UObjects
with NewObject<T>(); the GC owns their lifetime. new/delete and smart pointers apply only
to non-UObject C++ types.// Dynamic multicast = Blueprint-assignable + serializable. Params need a typed macro variant.
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnHealthChanged, float, NewHealth);
UPROPERTY(BlueprintAssignable, Category="Events") // shows as a red event node in BP
FOnHealthChanged OnHealthChanged;
// C++ side: bind and fire.
OnHealthChanged.AddDynamic(this, &AMyActor::HandleHealth); // dynamic → AddDynamic + UFUNCTION
OnHealthChanged.Broadcast(NewHealth);Use a dynamic multicast delegate whenever Blueprint must bind to the event (BlueprintAssignable);
its handler must be a UFUNCTION. Use a plain DECLARE_MULTICAST_DELEGATE… (bind with
AddUObject/AddLambda) only for C++-to-C++ events that never touch Blueprint. Overlap/hit
events (OnComponentBeginOverlap, OnActorHit) are already dynamic multicast — bind with
AddDynamic.
Same graph, two languages. Left = the Blueprint node; right = the C++ that does the same thing.
| Blueprint node | C++ |
|---|---|
| Event BeginPlay | virtual void BeginPlay() override; (call Super::BeginPlay()) |
| Event Tick (Delta Seconds) | virtual void Tick(float DeltaSeconds) override; |
| Spawn Actor from Class | GetWorld()->SpawnActor<AWeapon>(Class, Loc, Rot); |
Cast To X | if (AX* P = Cast<AX>(Obj)) { … } (always null-check) |
| Set Timer by Event | GetWorldTimerManager().SetTimer(H, this, &A::Fn, Rate, bLoop); |
| Print String | UE_LOG(LogTemp, Warning, TEXT("v=%d"), V); / GEngine->AddOnScreenDebugMessage(...) |
| Get Player Controller | UGameplayStatics::GetPlayerController(this, 0); |
Bind Event to OnClicked | Button->OnClicked.AddDynamic(this, &U::Fn); |
Expose C++ → Blueprint:
UFUNCTION(BlueprintCallable, Category="X") void DoThing(); // callable node (has exec pins)
UFUNCTION(BlueprintPure, Category="X") int32 GetScore() const; // pure node (no exec pins)
UPROPERTY(EditAnywhere, BlueprintReadWrite) float Speed = 600.f; // exposed variableCall Blueprint ← C++ (the hybrid hooks — declare in C++, implement/override in the BP subclass):
// No C++ body — Blueprint provides the whole implementation. C++ just calls OnScored().
UFUNCTION(BlueprintImplementableEvent) void OnScored(int32 Points);
// C++ gives a default; Blueprint may override. Implement the C++ default in OnDamaged_Implementation.
UFUNCTION(BlueprintNativeEvent) void OnDamaged(float Amount);
void AMyActor::OnDamaged_Implementation(float Amount) { Health -= Amount; }
// Call the event from C++ by its plain name: OnScored(10); OnDamaged(5.f);Mapping table (every specifier), full expose/override examples, and the C++-base-+-BP-subclass
workflow → references/blueprint-cpp-parity.md.
UI is a UUserWidget (design the visuals in a WBP asset; drive logic in C++ or its BP graph).
Bind C++ members to named widgets with meta=(BindWidget) — the C++ name must match the WBP
widget.
UCLASS() class UHealthWidget : public UUserWidget { GENERATED_BODY()
UPROPERTY(meta=(BindWidget)) TObjectPtr<UProgressBar> HealthBar; // name matches WBP
UFUNCTION(BlueprintCallable) void SetHealth(float Pct);
};
// Create + show from a PlayerController:
UHealthWidget* W = CreateWidget<UHealthWidget>(PC, WidgetClass);
W->AddToViewport();Layout with panels (Canvas/V-H Box/Overlay/Grid); SetVisibility,
RemoveFromParent to hide/close; anchors + a design resolution for scaling.
Enable the Paper2D plugin. Core types:
UPaperSprite asset, UPaperSpriteComponent) — a single textured quad.UPaperFlipbook asset, UPaperFlipbookComponent) — frames + FPS = animation;
SetFlipbook(...) to swap states (idle/run/jump).APaperCharacter — a ACharacter whose mesh is a flipbook; you get
CharacterMovementComponent (walk/jump) for free, driven by Enhanced Input just like 3D.UPaperTileMap, UPaperTileMapComponent) for level geometry.2D uses the same Gameplay Framework, Enhanced Input, and lifecycle as 3D — only the visual components differ. Constrain movement to a plane and use an orthographic camera.
Debug, DebugGame, Development (default for iteration —
optimized engine, hot-reloadable game code), Shipping (fully optimized, logging/console
stripped — ship this), Test.*.Target.cs) define Game/Editor/Client/Server targets; module rules
(*.Build.cs) declare module dependencies (e.g. "EnhancedInput", "UMG", "Paper2D").<target> ▸ Package Project, or automate with
RunUAT BuildCookRun (cook content → stage → package). Per-platform settings live in
Config/DefaultGame.ini / Default<Platform>Engine.ini.This is the minimum. Deep shipping — cooking, pak/IoStore, certification, size/perf budgets, CI —
is owned by gamedev-shipping. Overview + a starter .Build.cs →
references/packaging.md.
UPROPERTY() or it will be garbage
collected and crash. This is the most common Unreal C++ bug.UInputMappingContext via the
local player subsystem in BeginPlay/on-possess, bind actions on UEnhancedInputComponent.BeginPlay.Cast<T>() and SpawnActor results; they can return nullptr.new/delete UObjects — NewObject/SpawnActor and let GC free them. Header
changes need a full editor recompile (Live Coding covers .cpp bodies only).*.Build.cs
(missing "EnhancedInput"/"UMG" = linker errors).UPROPERTY(Replicated), gate server actions behind
HasAuthority() → see gamedev-multiplayer.cpp — plain C++/RAII/smart-pointer ownership for non-UObject code; this
skill owns the Unreal reflection + GC model layered on top.gamedev-shipping — deep cooking/packaging/store submission.gamedev-multiplayer — replication, RPCs, authority.gamedev-physics — Chaos physics, collision, constraints.game-design — mechanics/loops before you build them.godot / unity — the other engines; route there
when the project is Godot or Unity, not Unreal.UInputAction + UInputMappingContext + subsystem).UPROPERTY() TObjectPtr<T> (GC-safe).CreateDefaultSubobject + SetupAttachment; no logic in ctor.BlueprintCallable/Pure to expose, BlueprintImplementableEvent/
NativeEvent for BP-overridable hooks; BP-bound delegates are dynamic multicast.UUserWidget + BindWidget), not HUD canvas drawing.EnhancedInput/UMG/Paper2D) added in *.Build.cs; project files regenerated.© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (references) in skills/unreal of ericrisco/rsc-harness.
Open the folder on GitHubat commit e3d5b33
Unreal next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Unreal this skillericrisco/rsc-harness | 167 | — | ~4k | Automated safety check: Pass | MIT | |
| Unreal DevelopmentCoWork-OS/CoWork-OS | 473 | — | ~446 | Automated safety check: Pass | MIT | |
| Unreal Engine MCPEpicGames/unreal-engine-skills-for-claude-code-plugin | 327 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Gdextension Hygienemicrosoft/XBOX-Godot-Sample | 237 | — | ~983 | Automated safety check: Pass | MIT | |
| Unreal Actor-Component Architecturequodsoler/unreal-engine-skills | 359 | — | ~7.5k | Automated safety check: Pass | MIT | |
| Unreal Engine Animation Systemquodsoler/unreal-engine-skills | 359 | — | ~7k | Automated safety check: Pass | MIT |
CoWork-OS/CoWork-OS
Unreal Engine development: C++/Blueprint patterns, Gameplay Framework, Niagara, Lumen/Nanite, multiplayer, and packaging.
EpicGames/unreal-engine-skills-for-claude-code-plugin
Drives a live Unreal Editor through the unreal-mcp server: spawn actors, edit Blueprints, materials and sequences, change properties and trigger Live Coding.
microsoft/XBOX-Godot-Sample
Run a Godot/GDExtension finish pass over the current diff: enforce headless GDScript validation, public API docclasses coverage, docs/spec/sample/test synchronization, and registration or CMake…
quodsoler/unreal-engine-skills
Unreal Engine C++ guidance for AActor and UActorComponent: lifecycle hooks, spawning, component creation and attachment, ticking, interfaces and composition.
quodsoler/unreal-engine-skills
Reference for writing and debugging Unreal Engine 5.8 animation C++: AnimInstance and proxy, montages, notifies, curves, blend spaces, state machines, linked layers and root motion.
quodsoler/unreal-engine-skills
Picks and applies the right Unreal Engine C++ concurrency API, from UE::Tasks and FPipe to ParallelFor, FRunnable, locks and timers, with game-thread safety rules.
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Works with
Categories
A skill your agent uses when building, scripting or debugging a game in Unreal Engine 5 with Blueprint or C++ — the gameplay framework (Actor, Pawn, Character, GameMode, PlayerController), Actor…. Unreal is an agent skill from ericrisco/rsc-harness. Use when building, scripting or debugging a game in Unreal Engine 5 with Blueprint or C++ — the gameplay framework (Actor, Pawn, Character, GameMode, PlayerController), Actor lifecycle and tick, the reflection macros and garbage collection, Enhanced Input, multicast delegates, UMG widgets, Paper2D, and Blueprint-to-C++ parity in both directions.
Unreal fits situations like: debugging a game in Unreal Engine 5 with Blueprint; C++ — the gameplay framework (Actor; playerController); actor lifecycle and tick.
Run `npx skills add ericrisco/rsc-harness --skill unreal -a claude-code`. Or copy the skill folder (skills/unreal in ericrisco/rsc-harness) into .claude/skills/unreal in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill unreal -a codex`. Or copy the skill folder (skills/unreal in ericrisco/rsc-harness) into .agents/skills/unreal in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill unreal -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/unreal, .gemini/skills/unreal, .github/skills/unreal and .opencode/skills/unreal in your project.
SKILL.md names no scripts, command-line tools or credentials: Unreal is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Unreal is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4k tokens (SKILL.md is roughly 16k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.7k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Unreal: Unreal Development (CoWork-OS/CoWork-OS, 473 stars), Unreal Engine MCP (EpicGames/unreal-engine-skills-for-claude-code-plugin, 327 stars), Gdextension Hygiene (microsoft/XBOX-Godot-Sample, 237 stars) and Unreal Actor-Component Architecture (quodsoler/unreal-engine-skills, 359 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 167 GitHub stars. The repository holds 227 skills in this directory. The repository was last updated on October 7, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.