Agent skill

Unreal

by ericrisco in ericrisco/rsc-harness

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…

MITAuto-check passedGame Development

Install Unreal

skills CLI
$ npx skills add ericrisco/rsc-harness --skill unreal -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ericrisco/rsc-harness unreal --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
unreal
GitHub stars
167
Token cost
~4k tokens
SKILL.md length
1,357 words
Files
6 (incl. references)
Skills in repo
227
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Debugging a game in Unreal Engine 5 with Blueprint
  • SKILL.md covers Version contract — read first, Gameplay Framework — who owns…, Actor lifecycle, components &… and Reflection macros & garbage…, plus 8 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
  • C++ — the gameplay framework (Actor

What it does

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.

When your agent uses it

  • Debugging a game in Unreal Engine 5 with Blueprint
  • C++ — the gameplay framework (Actor
  • PlayerController)
  • Actor lifecycle and tick

Example prompts

  • “/unreal”

What it can do on your machine

Read from SKILL.md and the folder at commit e3d5b33. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    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.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~129
When it runs · the whole SKILL.md, loaded when a task matches
~4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~7.7k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from ericrisco/rsc-harness at commit e3d5b33, republished under its MIT licence (© ericrisco). 1,357 words, ~3,974 tokens.

Download SKILL.mdSave it as .claude/skills/unreal/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
unreal
description
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`).
tags
unreal, ue5, blueprint, unreal-engine, gamedev
recommends
cpp, gamedev-shipping, gamedev-multiplayer, game-design, gamedev-physics, godot, unity
profiles
full
origin
risco

Unreal Engine 5 (Blueprint + C++)

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.

Version contract — read first

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 emitUse 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 memberTObjectPtr<T> for UPROPERTY members (raw T* is fine for locals/params)
GENERATED_UCLASS_BODY()GENERATED_BODY()
TAssetPtr<T> / FStringAssetReferenceTSoftObjectPtr<T> / FSoftObjectPath
ANY_PACKAGE in FindObject / StaticLoadObjectexplicit package or FTopLevelAssetPath
Slate/Canvas DrawText/HUD for game UIUMG (UUserWidget)
AGameMode as the default base for a solo gameAGameModeBase (use AGameMode only when you need MatchState/multiplayer login flow)
DECLARE_MULTICAST_DELEGATE for a Blueprint-bindable eventDECLARE_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 pathsoft 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.

Gameplay Framework — who owns what

ClassResponsibilityLifetime / scope
AActorAnything placeable/spawnable in a level; holds components.Per instance in a level/world
UActorComponent / USceneComponentReusable behavior/data on an Actor; USceneComponent adds a transform.Owned by its Actor
APawnAn Actor that can be possessed and driven by a controller.Per instance
ACharacterA Pawn with a CapsuleComponent, SkeletalMesh, and CharacterMovementComponent (walk/jump/crouch, networked).Per instance
AController / APlayerController / AAIControllerThe "brain" that possesses a Pawn; APlayerController maps a human player to input, camera, and UI.One per player/AI
APlayerStatePer-player replicated state that must survive respawn (name, score, team).One per player
AGameModeBaseThe rules of the match; spawns players, defines default Pawn/Controller/HUD classes. Server-only — never exists on clients.One per level
AGameStateBaseGame-wide replicated state all clients need (match phase, shared score, player array).One, replicated
AHUD / UUserWidgetOn-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.

Actor lifecycle, components & attachment

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).

cpp
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 */ }
  • Create components with CreateDefaultSubobject<T>(TEXT("Name")) in the constructor; store them in a UPROPERTY() TObjectPtr<T> so they're kept alive and visible.
  • Attach in the constructor with SetupAttachment; at runtime use AttachToComponent(Parent, FAttachmentTransformRules::SnapToTargetNotIncludingScale).
  • Prefer timers over tick for periodic work: GetWorldTimerManager().SetTimer(Handle, this, &AMyActor::Fn, 1.f, true);

Reflection macros & garbage collection

Macros register types with Unreal Header Tool (UHT) so they get GC, serialization, editor, and Blueprint support. Put GENERATED_BODY() first inside the class.

cpp
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:

  • Store every long-lived UObject/AActor reference in a UPROPERTY() TObjectPtr<T>.
  • For a non-owning "might already be dead" reference (don't keep it alive, must null-check), use TWeakObjectPtr<T> and .IsValid().
  • Never 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.

Delegates & events

cpp
// 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.

Blueprint ↔ C++ parity

Same graph, two languages. Left = the Blueprint node; right = the C++ that does the same thing.

Blueprint nodeC++
Event BeginPlayvirtual void BeginPlay() override; (call Super::BeginPlay())
Event Tick (Delta Seconds)virtual void Tick(float DeltaSeconds) override;
Spawn Actor from ClassGetWorld()->SpawnActor<AWeapon>(Class, Loc, Rot);
Cast To Xif (AX* P = Cast<AX>(Obj)) { … } (always null-check)
Set Timer by EventGetWorldTimerManager().SetTimer(H, this, &A::Fn, Rate, bLoop);
Print StringUE_LOG(LogTemp, Warning, TEXT("v=%d"), V); / GEngine->AddOnScreenDebugMessage(...)
Get Player ControllerUGameplayStatics::GetPlayerController(this, 0);
Bind Event to OnClickedButton->OnClicked.AddDynamic(this, &U::Fn);

Expose C++ → Blueprint:

cpp
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 variable

Call Blueprint ← C++ (the hybrid hooks — declare in C++, implement/override in the BP subclass):

cpp
// 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.

Show full SKILL.md (502 more words)Show less

UMG (UI)

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.

cpp
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.

Paper2D (2D)

Enable the Paper2D plugin. Core types:

  • Sprite (UPaperSprite asset, UPaperSpriteComponent) — a single textured quad.
  • Flipbook (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.
  • Tile maps (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.

Packaging & build config (brief)

  • Build configurations: Debug, DebugGame, Development (default for iteration — optimized engine, hot-reloadable game code), Shipping (fully optimized, logging/console stripped — ship this), Test.
  • Target files (*.Target.cs) define Game/Editor/Client/Server targets; module rules (*.Build.cs) declare module dependencies (e.g. "EnhancedInput", "UMG", "Paper2D").
  • Package from Platforms ▸ <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.

Guardrails & gotchas

  • UPROPERTY-or-GC'd: any UObject ref you keep must be a UPROPERTY() or it will be garbage collected and crash. This is the most common Unreal C++ bug.
  • Enhanced Input only — no legacy Action/Axis mappings; add the UInputMappingContext via the local player subsystem in BeginPlay/on-possess, bind actions on UEnhancedInputComponent.
  • GameMode is server-only — never read it on a client; put client-visible state on GameState or PlayerState and replicate.
  • No gameplay in the constructor — the world isn't ready. Do it in BeginPlay.
  • Always null-check Cast<T>() and SpawnActor results; they can return nullptr.
  • Don't new/delete UObjects — NewObject/SpawnActor and let GC free them. Header changes need a full editor recompile (Live Coding covers .cpp bodies only).
  • Regenerate project files after adding classes/modules; add module deps in *.Build.cs (missing "EnhancedInput"/"UMG" = linker errors).
  • Multiplayer: replicate state with 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.

Checklist

  • Correct base class chosen (Actor/Pawn/Character; GameModeBase unless match-state needed).
  • No legacy input — Enhanced Input (UInputAction + UInputMappingContext + subsystem).
  • Every long-lived UObject/Actor ref is a UPROPERTY() TObjectPtr<T> (GC-safe).
  • Components made in ctor via CreateDefaultSubobject + SetupAttachment; no logic in ctor.
  • Tick left off unless required; periodic work on a timer/event.
  • C++↔BP boundary correct: BlueprintCallable/Pure to expose, BlueprintImplementableEvent/ NativeEvent for BP-overridable hooks; BP-bound delegates are dynamic multicast.
  • UI is UMG (UUserWidget + BindWidget), not HUD canvas drawing.
  • Server-only vs replicated state placed correctly (GameMode server-only).
  • Module deps (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

Files

SKILL.md and 5 other files (references) in skills/unreal of ericrisco/rsc-harness.

  • SKILL.md
  • evals/README.md
  • evals/cases.yaml
  • references/blueprint-cpp-parity.md
  • references/gameplay-framework.md
  • references/packaging.md

Open the folder on GitHubat commit e3d5b33

Compare with similar skills

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.

Unreal compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Unreal this skillericrisco/rsc-harness167—~4kAutomated safety check: PassMIT
Unreal DevelopmentCoWork-OS/CoWork-OS473—~446Automated safety check: PassMIT
Unreal Engine MCPEpicGames/unreal-engine-skills-for-claude-code-plugin327—~1.8kAutomated safety check: PassMIT
Gdextension Hygienemicrosoft/XBOX-Godot-Sample237—~983Automated safety check: PassMIT
Unreal Actor-Component Architecturequodsoler/unreal-engine-skills359—~7.5kAutomated safety check: PassMIT
Unreal Engine Animation Systemquodsoler/unreal-engine-skills359—~7kAutomated safety check: PassMIT

Similar skills

  • Unreal Development

    CoWork-OS/CoWork-OS

    Unreal Engine development: C++/Blueprint patterns, Gameplay Framework, Niagara, Lumen/Nanite, multiplayer, and packaging.

    473 GitHub stars~446 tokensUpdated today
    Game DevelopmentAuto-check passed
  • Unreal Engine MCP

    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.

    327 GitHub stars~1.8k tokensUpdated 21 days ago
    Game DevelopmentAuto-check passed
  • Gdextension Hygiene

    microsoft/XBOX-Godot-Sample

    Official

    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…

    237 GitHub stars~983 tokensUpdated today
    Game DevelopmentAuto-check passed
  • Unreal Actor-Component Architecture

    quodsoler/unreal-engine-skills

    Unreal Engine C++ guidance for AActor and UActorComponent: lifecycle hooks, spawning, component creation and attachment, ticking, interfaces and composition.

    359 GitHub stars~7.5k tokensUpdated 10 days ago
    Game DevelopmentAuto-check passed
  • Unreal Engine Animation System

    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.

    359 GitHub stars~7k tokensUpdated 10 days ago
    Game DevelopmentAuto-check passed
  • Unreal Engine Async and Threading

    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.

    359 GitHub stars~8k tokensUpdated 10 days ago
    Game DevelopmentAuto-check passed

More from ericrisco/rsc-harness

All 227 skills in this repo
  • Ab Testing

    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…

    167 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Accessibility

    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…

    167 GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Ads

    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…

    167 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Agent Eval

    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…

    167 GitHub stars~3.2k tokensUpdated today
    Auto-check passed
  • AI Media

    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…

    167 GitHub stars~3.3k tokensUpdated today
    Auto-check passed
  • Analytics

    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.

    167 GitHub stars~2.8k tokensUpdated today
    Auto-check passed

Questions about Unreal

What does Unreal do?

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.

When should I use Unreal?

Unreal fits situations like: debugging a game in Unreal Engine 5 with Blueprint; C++ — the gameplay framework (Actor; playerController); actor lifecycle and tick.

How do I install Unreal in Claude Code?

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.

How do I install Unreal in Codex?

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.

Can I use Unreal in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Unreal need to run?

SKILL.md names no scripts, command-line tools or credentials: Unreal is instructions for the agent only.

Does Unreal access the network?

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.

Is Unreal safe to install?

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.

What licence does Unreal use?

Unreal is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Unreal use?

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.

What are the alternatives to Unreal?

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.

Who maintains Unreal?

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.