Install this skill
npx skills add sickn33/antigravity-awesome-skillsWorks across Claude Code, Cursor, Codex, Copilot & Antigravity
What this skill does
- •Enforces strict Unreal Engine C++ naming conventions and class prefixes
- •Guides safe memory management through UProperty and Garbage Collector best practices
- •Optimizes engine performance by replacing unnecessary ticks with timer-based logic
- •Facilitates decoupled systems using interface implementation patterns
- •Implements efficient async asset loading via Soft Object and Class pointers
When to use it
- ✓Refactoring existing actor classes to reduce memory overhead
- ✓Implementing new game features requiring Blueprint-to-C++ communication
- ✓Debugging performance regressions or high CPU usage in game components
- ✓Establishing standardized coding patterns for new Unreal Engine project modules
When not to use it
- ✕Non-Unreal Engine C++ projects or libraries
- ✕Blueprint-only scripting tasks that do not involve C++ class definitions
- ✕Projects using engine versions prior to Unreal Engine 5.0
How to invoke it
Example prompts that trigger this skill:
- “Review this actor class to ensure all members are properly garbage collected.”
- “Convert hard asset references in this component to TSoftObjectPtr for better loading performance.”
- “Apply Epic Games coding standards to this header file.”
- “Help me optimize this tick-heavy component using a timer instead.”
- “Refactor this system to use an interface for better decoupling.”
Example workflow
- Identify a component that suffers from high CPU usage during runtime.
- Evaluate the necessity of the Tick function using this skill's criteria.
- Replace the Tick logic with a timer-based or event-driven approach.
- Verify that all relevant UObjects are correctly marked with UPROPERTY.
- Audit the header file against the naming convention requirements.
- Run a final check to confirm no hard references are blocking asset loading.
Prerequisites
- –Unreal Engine 5.x installed
- –Active C++ project environment
- –Basic familiarity with Visual Studio or Rider for Unreal
Pitfalls & limitations
- !Over-reliance on UPROPERTY can lead to circular dependency issues if not managed.
- !Incorrect interface implementation can cause silent failures in the editor.
- !Switching to soft references adds complexity to the loading lifecycle.
FAQ
How it compares
Generic coding assistants often suggest standard C++ practices that ignore Unreal's unique garbage collection and reflection requirements; this skill forces adherence to engine-specific performance patterns.
Source & trust
From the source: “# Unreal Engine C++ Pro This skill provides expert-level guidelines for developing with Unreal Engine 5 using C++. It focuses on writing robust, performant, and standard-compliant code. ## When to Use Use this skill when: - Developing C++ code for Unreal Engine 5.x projects - Writing Actors, Compone…”
View the full SKILL.md source
# Unreal Engine C++ Pro
This skill provides expert-level guidelines for developing with Unreal Engine 5 using C++. It focuses on writing robust, performant, and standard-compliant code.
## When to Use
Use this skill when:
- Developing C++ code for Unreal Engine 5.x projects
- Writing Actors, Components, or UObject-derived classes
- Optimizing performance-critical code in Unreal Engine
- Debugging memory leaks or garbage collection issues
- Implementing Blueprint-exposed functionality
- Following Epic Games' coding standards and conventions
- Working with Unreal's reflection system (UCLASS, USTRUCT, UFUNCTION)
- Managing asset loading and soft references
Do not use this skill when:
- Working with Blueprint-only projects (no C++ code)
- Developing for Unreal Engine versions prior to 5.x
- Working on non-Unreal game engines
- The task is unrelated to Unreal Engine development
## Core Principles
1. **UObject & Garbage Collection**:
* Always use `UPROPERTY()` for `UObject*` member variables to ensure they are tracked by the Garbage Collector (GC).
* Use `TStrongObjectPtr<>` if you need to keep a root reference outside of a UObject graph, but prefer `addToRoot()` generally.
* Understand the `IsValid()` check vs `nullptr`. `IsValid()` handles pending kill state safely.
2. **Unreal Reflection System**:
* Use `UCLASS()`, `USTRUCT()`, `UENUM()`, `UFUNCTION()` to expose types to the reflection system and Blueprints.
* Minimize `BlueprintReadWrite` when possible; prefer `BlueprintReadOnly` for state that shouldn't be trampled by logic in UI/Level BPs.
3. **Performance First**:
* **Tick**: Disable Ticking (`bCanEverTick = false`) by default. Only enable it if absolutely necessary. Prefer timers (`GetWorldTimerManager()`) or event-driven logic.
* **Casting**: Avoid `Cast<T>()` in hot loops. Cache references in `BeginPlay`.
* **Structs vs Classes**: Use `F` structs for data-heavy, non-UObject types to reduce overhead.
## Naming Conventions (Strict)
Follow Epic Games' coding standard:
* **Templates**: Prefix with `T` (e.g., `TArray`, `TMap`).
* **UObject**: Prefix with `U` (e.g., `UCharacterMovementComponent`).
* **AActor**: Prefix with `A` (e.g., `AMyGameMode`).
* **SWidget**: Prefix with `S` (Slate widgets).
* **Structs**: Prefix with `F` (e.g., `FVector`).
* **Enums**: Prefix with `E` (e.g., `EWeaponState`).
* **Interfaces**: Prefix with `I` (e.g., `IInteractable`).
* **Booleans**: Prefix with `b` (e.g., `bIsDead`).
## Common Patterns
### 1. Robust Component Lookup
Avoid `GetComponentByClass` in `Tick`. Do it in `PostInitializeComponents` or `BeginPlay`.
```cpp
void AMyCharacter::PostInitializeComponents() {
Super::PostInitializeComponents();
HealthComp = FindComponentByClass<UHealthComponent>();
check(HealthComp); // Fail hard in dev if missing
}
```
### 2. Interface Implementation
Use interfaces to decouple systems (e.g., Interaction system).
```cpp
// Interface call check
if (TargetActor->Implements<UInteractable>()) {
IInteractable::Execute_OnInteract(TargetActor, this);
}
```
### 3. Async Loading (Soft References)
Avoid hard references (`UPROPERTY(EditDefaultsOnly) TSubclassOf<AActor>`) for massive assets which force load orders. Use `TSoftClassPtr` or `TSoftObjectPtr`.
```cpp
UPROPERTY(EditAnywhere, BlueprintReadWrite)
TSoftClassPtr<AWeapon> WeaponClassToLoad;
void AMyCharacter::Equip() {
if (WeaponClassToLoad.IsPending()) {
WeaponClassToLoad.LoadSynchronous(); // Or use StreamableManager for async
}
}
```
## Debugging
* **Logging**: Use `UE_LOG` with custom categories.
```cpp
DEFINE_LOG_CATEGORY_STATIC(LogMyGame, Log, All);
UE_LOG(LogMyGame, Warning, TEXT("Health is low: %f"), CurrentHealth);
```
* **Screen Messages**:
```cpp
if (GEngine) GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, TEXT("Died!"));
```
* **Visual Logger**: extremely useful for AI debugging. Implement `IVisualLoggerDebugSnapshotInterface`.
## Checklist before PR
- [ ] Does this Actor need to Tick? Can it be a Timer?
- [ ] Are all `UObject*` members wrapped in `UPROPERTY`?
- [ ] Are hard references (TSubclassOf) causing load chains? Can they be Soft Ptrs?
- [ ] Did you clean up verified delegates in `EndPlay`?
## Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
Quoted from sickn33/antigravity-awesome-skills for reference — see the original for the authoritative, latest version.
📄 Full skill instructions — original source: sickn33/antigravity-awesome-skills
How to Use This Skill Unit
Option A: Project-Specific (Recommended)
- Click "Download" above
- In your project, create the directory:
.agent/skills/unreal-engine-cpp-pro/ - Save the file as
SKILL.md - The agent will automatically discover the skill based on its description.
Option B: Global Installation (All Agents)
Save the file to these locations to make it available across all projects:
- Claude Code:
~/.claude/skills/sickn33/antigravity-awesome-skills/unreal-engine-cpp-pro/SKILL.md - Cursor:
~/.cursor/skills/sickn33/antigravity-awesome-skills/unreal-engine-cpp-pro/SKILL.md - Antigravity:
~/.gemini/antigravity/skills/sickn33/antigravity-awesome-skills/unreal-engine-cpp-pro/SKILL.md
🚀 Install with CLI:npx skills add sickn33/antigravity-awesome-skills
