Agent skill

Unity

by ericrisco in ericrisco/rsc-harness

A skill your agent uses when writing, reviewing or structuring Unity game code in C for Unity 6 LTS — GameObjects and the Transform hierarchy, the MonoBehaviour lifecycle, prefabs and variants…

MITAuto-check passedGame Development

Install Unity

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

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

GitHub CLI
$ gh skill install ericrisco/rsc-harness unity --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/unity .claude/skills/unity && 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
unity
GitHub stars
156
Token cost
~4k tokens
SKILL.md length
1,469 words
Files
6 (incl. references)
Skills in repo
229
Repo updated
First seen
Licence
MIT

At a glance

A skill your agent uses when writing, reviewing or structuring Unity game code in C for Unity 6 LTS — GameObjects and the Transform hierarchy, the MonoBehaviour lifecycle, prefabs and variants…

  • Works in 9 steps: GameObject / Component model & Transform… → Prefabs & prefab variants; instantiation → Scenes & scene management (additive… → …
  • Structuring Unity game code in C for Unity 6 LTS — GameObjects and the Transform hierarchy
  • SKILL.md covers Version contract — read first, 1. GameObject / Component…, 2. Prefabs & prefab variants;… and 3. Scenes & scene management…, plus 9 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Unity is an agent skill from ericrisco/rsc-harness. Use when writing, reviewing or structuring Unity game code in C for Unity 6 LTS — GameObjects and the Transform hierarchy, the MonoBehaviour lifecycle, prefabs and variants, ScriptableObjects for data, scenes and additive loading, the Input System, coroutines versus async and Awaitable, Addressables, and build settings for 2D and 3D. NOT Godot or GDScript (that is godot), NOT Unreal Blueprint or C++ engine work (that is unreal), NOT the netcode wire protocol (that is gamedev-multiplayer).

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/build-and-platforms.md`).

It sits in Game Development, covering Game development and Multiplayer and networking. It works with Godot, C#, Unity and C++. 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

  • Structuring Unity game code in C for Unity 6 LTS — GameObjects and the Transform hierarchy
  • The MonoBehaviour lifecycle
  • Prefabs and variants
  • ScriptableObjects for data

Example prompts

  • “/unity”

Workflow steps

9 steps, taken from the step headings in SKILL.md.

  1. GameObject / Component model & Transform hierarchy
  2. Prefabs & prefab variants; instantiation
  3. Scenes & scene management (additive loading)
  4. MonoBehaviour lifecycle
  5. ScriptableObjects for data/config; serialization
  6. Input System (new) — with a legacy contrast
  7. Coroutines vs async/await vs Awaitable
  8. Addressables (intro) + the Resources anti-pattern
  9. Build settings, platforms & player settings

What it can do on your machine

Read from SKILL.md and the folder at commit 92fde8f. 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 csharp).

    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

Unity loads about 4k tokens when it runs, and up to ~7k if it reads all its reference files. Until then it costs about 127 tokens; SKILL.md has 1,469 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~127
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
~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 92fde8f, republished under its MIT licence (© ericrisco). 1,469 words, ~3,977 tokens.

Download SKILL.mdSave it as .claude/skills/unity/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
unity
description
Use when writing, reviewing or structuring Unity game code in C# for Unity 6 LTS — GameObjects and the Transform hierarchy, the MonoBehaviour lifecycle, prefabs and variants, ScriptableObjects for data, scenes and additive loading, the Input System, coroutines versus async and Awaitable, Addressables, and build settings for 2D and 3D. NOT Godot or GDScript (that is `godot`), NOT Unreal Blueprint or C++ engine work (that is `unreal`), NOT the netcode wire protocol (that is `gamedev-multiplayer`).
tags
unity, csharp, game-dev, monobehaviour, input-system
recommends
gamedev-multiplayer, gamedev-physics, gamedev-shaders, gamedev-pathing, gamedev-shipping, godot, unreal
profiles
full
origin
risco

Unity + C# (Unity 6 LTS)

Idiomatic C# for the current Unity engine — 2D and 3D. Owns engine-side patterns (components, lifecycle, prefabs, scenes, data, input, async, builds). Not Godot (godot) or Unreal (unreal); stops at the netcode wire (gamedev-multiplayer).

Version contract — read first

Target: Unity 6 LTS, versioned 6000.x. Current LTS at authoring is Unity 6.3 LTS (6000.3) (supported to Dec 2027); Unity 6.0 LTS (6000.0) to Oct 2026. Unity 6 dropped the year-based names (2020/2021/2022 LTS) for the 6000.x scheme. Confirm the project version in ProjectSettings/ProjectVersion.txt before assuming an API exists.

Ban-list — never emit these; use the modern replacement:

Deprecated / removedUse instead
Input.GetAxis / GetKey / GetButton (legacy Input Manager)new Input System (com.unity.inputsystem): InputActionAsset / InputAction / PlayerInput — §6
UnityEngine.Networking (UNet), NetworkServer/NetworkClient, its NetworkBehaviourremoved since 2022.2. → Netcode for GameObjects (com.unity.netcode.gameobjects) + gamedev-multiplayer
Resources.Load(...) for game contentAddressables (com.unity.addressables) — §8
FindObjectOfType<T>() / FindObjectsOfType<T>()FindFirstObjectByType<T>() / FindAnyObjectByType<T>() / FindObjectsByType<T>(FindObjectsSortMode.None) (old ones obsolete since 2023.1)
WWWUnityWebRequest
OnGUI / IMGUI for runtime game UIUI Toolkit (runtime) or uGUI; keep IMGUI for editor tools only
Setting transform.position on a Rigidbody in UpdateRigidbody.MovePosition/MoveRotation in FixedUpdate — §4
GameObject.Find/FindWithTag by string in Updatecache the ref in Awake, or [SerializeField] it

Prefer the new Input System even for single-player prototypes. Keep Debug.Log out of hot loops and strip it from ships.

1. GameObject / Component model & Transform hierarchy

A GameObject is an empty container; behaviour comes from Components you attach (Transform, Rigidbody, MeshRenderer, and your MonoBehaviour scripts). Every GameObject has exactly one Transform (or RectTransform under a Canvas) giving position/rotation/scale.

  • Get components: TryGetComponent(out var rb) (no-alloc, preferred), GetComponent<T>(), GetComponentInChildren/InParent<T>(). Cache in Awake — GetComponent in Update is a perf sink.
  • Hierarchy: transform.parent, transform.SetParent(newParent, worldPositionStays: true), transform.childCount, foreach (Transform child in transform). Child world = parent × local.
  • Same object model for 2D and 3D: 2D uses Rigidbody2D/Collider2D/SpriteRenderer; 3D uses Rigidbody/Collider/MeshRenderer. Never mix 2D and 3D physics components on one body.
csharp
[RequireComponent(typeof(Rigidbody))]
public sealed class Mover : MonoBehaviour
{
    Rigidbody _rb;
    void Awake() => _rb = GetComponent<Rigidbody>(); // cache once
}

2. Prefabs & prefab variants; instantiation

A Prefab is a reusable GameObject template (an asset). A Prefab Variant inherits from a base prefab and overrides selected properties/children — like subclassing for assets (e.g. Enemy base → EnemyFast variant). Edit the base and variants inherit the change unless they override that value.

  • Spawn with Instantiate(prefab, position, rotation, parent); it returns the concrete type (var e = Instantiate(_enemyPrefab); with [SerializeField] Enemy _enemyPrefab;). Store the serialized reference; do not Resources.Load it.
  • Destroy with Destroy(gameObject) (end of frame) or Destroy(obj, delay). Never DestroyImmediate at runtime. For frequently spawned objects (bullets, VFX) pool them (UnityEngine.Pool.ObjectPool<T>) instead of Instantiate/Destroy churn.
  • Editor-only prefab authoring uses PrefabUtility (wrap in #if UNITY_EDITOR); absent in builds.

3. Scenes & scene management (additive loading)

A Scene holds a set of GameObjects. Register scenes in Build Profiles → Scene List (Unity 6; formerly Build Settings) so they can load by index or name.

csharp
using UnityEngine.SceneManagement;

// Additive: keep the current scene, layer another on top (e.g. UI, a level chunk).
var op = SceneManager.LoadSceneAsync("Level_02", LoadSceneMode.Additive);
op.completed += _ => Debug.Log("Level_02 loaded");
await op; // Unity 6: AsyncOperation is awaitable

// Unload just that scene later:
await SceneManager.UnloadSceneAsync("Level_02");
  • LoadSceneMode.Single (default) unloads everything first; Additive composes scenes — the basis of streaming worlds, persistent manager scenes, and separate UI scenes.
  • SceneManager.MoveGameObjectToScene moves an object between loaded scenes; DontDestroyOnLoad objects survive Single loads (use for a bootstrap/services scene). Prefer LoadSceneAsync to avoid a hitch.

4. MonoBehaviour lifecycle

Order per frame and where each concern belongs (full ordering in references/lifecycle-deep-dive.md):

MethodWhenPut here
Awakeonce, on instantiation (even if disabled)cache GetComponent, self-init, no cross-object refs
OnEnableeach time the object/component enablessubscribe to events, register callbacks
Startonce, before first Update, only if activecross-object wiring (other objects' Awake has run)
FixedUpdatefixed timestep (physics tick), 0..n / frameall physics — Rigidbody forces/MovePosition, ApplyForce
Updateevery frameinput reads, game logic, timers (scale by Time.deltaTime)
LateUpdateevery frame, after all Updatecamera follow, look-at, anything tracking moved objects
OnDisableeach disable / before destroyunsubscribe everything subscribed in OnEnable
OnDestroyonce, on destructionrelease native/unmanaged resources, final cleanup

Rules that bite:

  • Physics goes in FixedUpdate, never Update. Reading input in FixedUpdate drops events — read input in Update, cache intent, apply forces in FixedUpdate.
  • Frame-rate independence: multiply per-frame movement by Time.deltaTime (Update) — but FixedUpdate already runs at a fixed Time.fixedDeltaTime.
  • Awake runs even on inactive objects; Start does not run until the object is active. Cross-object references belong in Start, not Awake.
  • Every OnEnable subscription needs a matching OnDisable unsubscription or you leak and get double-fires after re-enable.

5. ScriptableObjects for data/config; serialization

A ScriptableObject is a data asset that lives outside any scene — ideal for config, tuning tables, enemy/item definitions, and event channels. One asset is shared by reference (no per-instance copy), so it saves memory and lets designers tweak values without touching code.

csharp
[CreateAssetMenu(fileName = "WeaponDef", menuName = "Game/Weapon Definition")]
public sealed class WeaponDefinition : ScriptableObject
{
    [SerializeField] float _damage = 10f;
    [SerializeField] float _fireRate = 2f;
    public float Damage => _damage;      // expose read-only
    public float FireRate => _fireRate;
}

[SerializeField] private vs public: default to [SerializeField] private + a public property/method. It shows in the Inspector and survives serialization without letting arbitrary code mutate the field — encapsulation intact. Use bare public only for genuine data bags.

Serialization rules (they trip everyone):

  • Unity serializes: public or [SerializeField] fields of supported types (primitives, string, Unity types, enums, arrays/List<T> of those, and [Serializable] plain classes/structs).
  • Unity does not serialize: properties (use [field: SerializeField] public float X { get; private set; }), static, readonly, const, Dictionary<,> (use two lists or a serializable wrapper), or polymorphic references — for interface/abstract fields use [SerializeReference].
  • Do not hold runtime mutable state on a shared ScriptableObject expecting it to reset — it persists in the Editor between play sessions. Keep SOs for config; put mutable per-instance state on MonoBehaviours.
Show full SKILL.md (610 more words)Show less

6. Input System (new) — with a legacy contrast

The new Input System (com.unity.inputsystem) is enabled by default in Unity 6 and is device-agnostic and event-driven. Define an Input Action Asset with Action Maps (e.g. "Player", "UI") and Actions (e.g. "Move" = Value/Vector2, "Jump" = Button). Generate a C# wrapper or use the PlayerInput component. Full setup, PlayerInput, and rebinding in references/input-system.md.

csharp
// New Input System — subscribe to the generated actions (no per-frame polling).
using UnityEngine.InputSystem;

public sealed class PlayerController : MonoBehaviour
{
    InputSystem_Actions _controls;   // generated C# class from the .inputactions asset
    Vector2 _move;

    void Awake() => _controls = new InputSystem_Actions();
    void OnEnable()
    {
        _controls.Player.Enable();
        _controls.Player.Move.performed += ctx => _move = ctx.ReadValue<Vector2>();
        _controls.Player.Move.canceled  += _  => _move = Vector2.zero;
        _controls.Player.Jump.performed += _  => Jump();
    }
    void OnDisable() => _controls.Player.Disable();
}

Legacy contrast (do not write this in new code):

csharp
// LEGACY Input Manager — string axes, per-frame polling, device-blind. Avoid.
float x = Input.GetAxis("Horizontal");
if (Input.GetButtonDown("Jump")) Jump();

The new system also polls if you prefer: _controls.Player.Move.ReadValue<Vector2>() in Update.

7. Coroutines vs async/await vs Awaitable

UseReach forWhy
Frame-sequenced gameplay (timers, tweens, "wait then spawn")Coroutine or Awaitableframe-aware yields; auto-tie to object lifetime
Unity-native async in Unity 6 (default for new async gameplay)Awaitablemain-thread, low-alloc (pooled), frame + thread awaits, cancels via destroyCancellationToken
True background CPU work / library Task APIsasync Task + awaitthread pool; but marshal back — Unity APIs are main-thread only
csharp
// Coroutine — classic, MonoBehaviour-bound, stops when the object disables/destroys.
IEnumerator SpawnWave()
{
    yield return new WaitForSeconds(1f);
    Instantiate(_enemyPrefab);
}
void Start() => StartCoroutine(SpawnWave());

// Awaitable (Unity 6) — the modern replacement. Cancels automatically on destroy.
async Awaitable SpawnWaveAsync()
{
    await Awaitable.WaitForSecondsAsync(1f, destroyCancellationToken);
    await Awaitable.NextFrameAsync(destroyCancellationToken);
    Instantiate(_enemyPrefab);
}

Rules:

  • Coroutines run only while the MonoBehaviour is enabled; they die silently on disable. No return value; exceptions across yield are awkward.
  • Awaitable: never await the same instance twice (pooled → undefined behavior). Pass destroyCancellationToken so it stops when the object is destroyed. Switch threads with Awaitable.BackgroundThreadAsync() / Awaitable.MainThreadAsync().
  • Task: does not auto-cancel on destroy — thread a CancellationToken yourself, and never touch Unity API off the main thread (it throws). Prefer Awaitable in Unity 6 unless you need Task.

8. Addressables (intro) + the Resources anti-pattern

Addressables (com.unity.addressables) is the modern content-loading system: assets get string addresses, load asynchronously, and can ship in the build or from a remote CDN with dependency tracking and memory-managed release.

csharp
using UnityEngine.AddressableAssets;

var handle = Addressables.InstantiateAsync("Prefabs/Boss");
GameObject boss = await handle.Task;      // or handle.Completed += ...
// when done: Addressables.ReleaseInstance(boss);  // release to free memory

Resources/ is an anti-pattern for game content: everything under it is forced into the build, loaded synchronously, bloats size/startup, and can't be patched or streamed. Reserve it for tiny always-needed defaults; migrate real content to Addressables.

9. Build settings, platforms & player settings

  • Build Profiles (Unity 6, File → Build Profiles) supersede the old Build Settings window: per-platform scene list, target platform, and overridable player settings.
  • Scripting backend: IL2CPP (AOT — required for iOS/consoles/WebGL, faster, harder to reverse) vs Mono (JIT, Editor/desktop, faster iteration). Set per platform in Player Settings.
  • Player Settings: product/company name, bundle identifier, icons, orientation, API compatibility level (.NET Standard 2.1 default), managed stripping. 2D vs 3D is a template choice, not a different build path.
  • WebGL/mobile specifics and the shipping checklist: references/build-and-platforms.md + gamedev-shipping.

Guardrails / gotchas

  • ==/!= null on a destroyed UnityEngine.Object works (overloaded), but ?. and cached refs treat a destroyed object as non-null. Re-check with if (obj) after possible destruction.
  • Don't mix input systems: with PlayerInput, don't also Input.GetKey — in "New" mode legacy calls throw.
  • One Rigidbody per body (child colliders fine); non-uniform scale breaks physics bodies.
  • Coroutines/InvokeRepeating stop on SetActive(false); async Tasks keep running unless cancelled.
  • No allocation (new, LINQ, boxing) in Update/FixedUpdate hot paths.
  • gamedev-multiplayer — networking/netcode (Netcode for GameObjects); this skill hands off the wire.
  • gamedev-physics — deep physics tuning (joints, solver, determinism) beyond "put it in FixedUpdate".
  • gamedev-shaders — Shader Graph / HLSL, URP/HDRP materials and rendering.
  • gamedev-pathing — NavMesh, agents, steering, path solving.
  • gamedev-shipping — store builds, signing, size budgets, platform certification.
  • godot / unreal — the other engines; route Godot/GDScript and Unreal/Blueprint/C++ there.

Checklist

  • Confirmed the project's Unity version (ProjectVersion.txt); no year-based-LTS assumptions.
  • No banned API emitted (Input.GetAxis, UnityEngine.Networking, Resources.Load for content, FindObjectOfType, WWW, runtime OnGUI).
  • GetComponent results cached in Awake; no string Find in Update.
  • Physics in FixedUpdate; input read in Update; camera/tracking in LateUpdate.
  • Every OnEnable subscription has a matching OnDisable unsubscription.
  • [SerializeField] private + property used instead of bare public where encapsulation matters.
  • New Input System used (actions/maps), not legacy polling; systems not mixed.
  • Async uses Awaitable (or coroutine) with destroyCancellationToken; no double-await.
  • Content via Addressables, not Resources/.
  • Scenes registered in Build Profiles; async/additive loading where it avoids a hitch.

© 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/unity of ericrisco/rsc-harness.

  • SKILL.md
  • evals/README.md
  • evals/cases.yaml
  • references/build-and-platforms.md
  • references/input-system.md
  • references/lifecycle-deep-dive.md

Open the folder on GitHubat commit 92fde8f

Compare with similar skills

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

Unity compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Unity this skillericrisco/rsc-harness156—~4kAutomated safety check: PassMIT
Validate GsdkPlayFab/gsdk170—~645Automated safety check: PassApache-2.0
Beehavejame581/GodotPrompter792—~2.8kAutomated safety check: PassMIT
Headless BuildRandallLiuXin/GodotMaker5491 repos~454Automated safety check: PassCustom licence
Gdextensionjame581/GodotPrompter792—~2.7kAutomated safety check: PassMIT
Limboaijame581/GodotPrompter792—~3.2kAutomated safety check: PassMIT

Similar skills

  • Validate Gsdk

    PlayFab/gsdk

    Validates PlayFab Game Server SDK (GSDK) integrations in game server projects.

    170 GitHub stars~645 tokensUpdated 2 days ago
    Game DevelopmentAuto-check passed
  • Beehave

    jame581/GodotPrompter

    A skill your agent uses when using the Beehave addon — pure-GDScript behavior trees with composites, decorators, leaves, a blackboard, and a visual runtime debugger

    792 GitHub stars~2.8k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Headless Build

    RandallLiuXin/GodotMaker

    Compile-check a Godot project using headless mode. An agent skill from RandallLiuXin/GodotMaker.

    549 GitHub starsUsed in 1 repo~454 tokens
    Game DevelopmentAuto-check passed
  • Gdextension

    jame581/GodotPrompter

    A skill your agent uses when building native extensions for Godot — godot-cpp (C++) or gdext (Rust), binding classes, building, and GDScript/C interop

    792 GitHub stars~2.7k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Limboai

    jame581/GodotPrompter

    A skill your agent uses when using the LimboAI addon — behavior trees and hierarchical state machines (C++ GDExtension) with a visual editor, BTTask subclassing, and a blackboard

    792 GitHub stars~3.2k tokensUpdated yesterday
    Game DevelopmentAuto-check passed
  • Setup Engine

    pixel-cellar/Claude-Code-Game-Studios

    配置项目的游戏引擎和版本。将引擎锁定到 CLAUDE.md 中,检测知识缺口,当版本超出 LLM 训练数据时通过 WebSearch 填充引擎参考文档。

    342 GitHub stars~1.5k tokensUpdated 6 mo ago
    Agent WorkflowsAuto-check passed

More from ericrisco/rsc-harness

All 229 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…

    156 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…

    156 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…

    156 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…

    156 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…

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

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

Works with

Questions about Unity

What does Unity do?

A skill your agent uses when writing, reviewing or structuring Unity game code in C for Unity 6 LTS — GameObjects and the Transform hierarchy, the MonoBehaviour lifecycle, prefabs and variants…. Unity is an agent skill from ericrisco/rsc-harness. Use when writing, reviewing or structuring Unity game code in C for Unity 6 LTS — GameObjects and the Transform hierarchy, the MonoBehaviour lifecycle, prefabs and variants, ScriptableObjects for data, scenes and additive loading, the Input System, coroutines versus async and Awaitable, Addressables, and build settings for 2D and 3D.

When should I use Unity?

Unity fits situations like: structuring Unity game code in C for Unity 6 LTS — GameObjects and the Transform hierarchy; the MonoBehaviour lifecycle; prefabs and variants; scriptableObjects for data.

How do I install Unity in Claude Code?

Run `npx skills add ericrisco/rsc-harness --skill unity -a claude-code`. Or copy the skill folder (skills/unity in ericrisco/rsc-harness) into .claude/skills/unity in your project. Claude Code loads it when a task matches its description.

How do I install Unity in Codex?

Run `npx skills add ericrisco/rsc-harness --skill unity -a codex`. Or copy the skill folder (skills/unity in ericrisco/rsc-harness) into .agents/skills/unity in your project. Codex loads it when a task matches its description.

Can I use Unity 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 unity -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/unity, .gemini/skills/unity, .github/skills/unity and .opencode/skills/unity in your project.

What does Unity need to run?

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

Does Unity 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 Unity 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 Unity use?

Unity 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 Unity 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 3k tokens, read only when the agent opens those files.

What are the alternatives to Unity?

Skills that share tags, products or a category with Unity: Validate Gsdk (PlayFab/gsdk, 170 stars), Beehave (jame581/GodotPrompter, 792 stars), Headless Build (RandallLiuXin/GodotMaker, 549 stars) and Gdextension (jame581/GodotPrompter, 792 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Unity?

ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 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.