PluginBench
Skill
Pass
Audit score 90

msw-sprite-ruid

msw-git/msw-ai-coding-plugins-official

Native RUID support for sprite and animation rendering with thumbnail:// prefix for icons and previews.

What is msw-sprite-ruid?

Enables direct assignment of sprite and animationclip RUIDs to SpriteRendererComponent (world) and SpriteGUIRendererComponent (UI), plus thumbnail:// prefix for static resource previews. Use when rendering sprites, animations, or item icons in world or UI contexts.

  • Assign sprite or animationclip RUIDs directly to SpriteRendererComponent.SpriteRUID (world) and SpriteGUIRendererComponent.ImageRUID (UI)
  • Render static thumbnail images from any resource type (sprite, animationclip, skeleton, avataritem) using thumbnail:// prefix
  • Display avatar item icons in inventory slots, shop listings, and UI previews
  • Support single looping animations for background effects and props without requiring animator components
  • Handle multi-state animations via StateAnimationComponent + ActionSheet for complex behaviors

How to install msw-sprite-ruid

npx skills add https://github.com/msw-git/msw-ai-coding-plugins-official --skill msw-sprite-ruid
Claude Code
Cursor
Windsurf
Cline

How to use msw-sprite-ruid

  1. 1.For world sprites: assign the sprite or animationclip RUID directly to SpriteRendererComponent.SpriteRUID as a plain string
  2. 2.For UI images: assign the RUID to SpriteGUIRendererComponent.ImageRUID using DataRef(ruid) in runtime Lua code
  3. 3.To render a static thumbnail, prepend thumbnail:// to any resource RUID before assignment
  4. 4.For multi-state animations, use StateAnimationComponent + ActionSheet instead of direct RUID assignment
  5. 5.Use msw-search skill to find avatar item and resource RUIDs before assigning them

Use cases

Good for
  • Assigning an animationclip RUID to a background decoration or idle effect sprite renderer
  • Creating inventory slot icons by prepending thumbnail:// to an avataritem RUID
  • Displaying a skeleton or avataritem as a static preview image in a shop UI
  • Rendering item icons in equip preview panels without animation
  • Setting a sprite RUID directly on a world entity's SpriteRendererComponent at runtime
Who it's for
  • Game developers building inventory and shop UIs
  • Programmers implementing character or item preview systems
  • Developers working with sprite-based animations and static thumbnails
  • Teams managing avatar items and costume systems

msw-sprite-ruid FAQ

Why does my skeleton or avataritem RUID render as invisible?

skeleton and avataritem RUIDs require the thumbnail:// prefix to render. Without it, they fail silently. Prepend thumbnail:// to the RUID before assignment.

What is the difference between assigning a RUID directly vs using thumbnail://?

Direct assignment plays live animation (for animationclip) or renders the sprite. The thumbnail:// prefix renders a static preview image from any resource type, useful for icons and previews.

How do I assign an ImageRUID in UI code?

Use DataRef(ruid) in runtime Lua: self.Entity.SpriteGUIRendererComponent.ImageRUID = DataRef("thumbnail://" .. avatarItemRuid). The { DataId: ... } object form is only for .ui/.model JSON files.

Can I use thumbnail:// with multi-state animations?

No. thumbnail:// produces a static image only. For multi-state animations (stand/move/attack), use StateAnimationComponent + ActionSheet and assign the animationclip RUID directly without the prefix.

Should I prepend thumbnail:// to a RUID returned from msw-search as an icon?

No. If msw-search returned a sprite RUID that is already an icon or thumbnail image, assign it directly without the prefix. The prefix is for converting source resources into thumbnails, not for already-thumbnail results.

Full instructions (SKILL.md)

Source of truth, from msw-git/msw-ai-coding-plugins-official.


name: msw-sprite-ruid description: "SpriteRendererComponent.SpriteRUID (world) and SpriteGUIRendererComponent.ImageRUID (UI) — native RUID type support (sprite / animationclip direct playback), thumbnail:// prefix for rendering avataritem / skeleton / animationclip as static thumbnail image, avatar item icon in inventory / shop / UI slot. Use when: assigning any RUID to a sprite renderer component, displaying an avatar item or resource as a thumbnail or icon, using animationclip directly in a renderer, rendering inventory item icons, displaying a thumbnail image in a world entity. Keywords: SpriteRUID, ImageRUID, thumbnail://, animationclip, RUID apply, RUID assign, thumbnail, item icon, sprite RUID, RUID to renderer"

MSW Sprite RUID

Rules for assigning a RUID to SpriteRendererComponent.SpriteRUID (world) or SpriteGUIRendererComponent.ImageRUID (UI).


Native type support

Both components accept a sprite or animationclip RUID directly — no extra animator component required.

ComponentPropertyValue form (runtime .mlua)Native RUID types
SpriteRendererComponent (world)SpriteRUIDplain stringsprite, animationclip
SpriteGUIRendererComponent (UI)ImageRUIDDataRef("...")sprite, animationclip

ImageRUID is a DataRef: in runtime .mlua, assign DataRef(ruid). Use { DataId: ruid } only in .ui / .model JSON or builder patch data. SpriteRUID remains a plain string.

-- World: sprite or animationclip RUID both work
self.Entity.SpriteRendererComponent.SpriteRUID = ruid

-- UI: sprite or animationclip RUID both work
self.Entity.SpriteGUIRendererComponent.ImageRUID = DataRef(ruid)

A skeleton / avataritem RUID assigned without the thumbnail:// prefix fails silently (no error, nothing renders).


animationclip: single animation vs multi-state

  • Single looping animation (background deco, idle effect, prop): set SpriteRUID or ImageRUID directly to the animationclip RUID.
  • Multi-state (stand / move / attack / hit / die): use StateAnimationComponent + ActionSheet. See msw-general/references/monster.md.

thumbnail:// prefix — static thumbnail from any resource

Prepend thumbnail:// to SpriteRUID or ImageRUID to render a static thumbnail image from any resource — useful for icons, preview images, and item thumbnails.

thumbnail://<32-char hex RUID>

Accepted types: sprite · animationclip · skeleton · avataritem

-- World thumbnail (any resource type)
self.Entity.SpriteRendererComponent.SpriteRUID = "thumbnail://" .. anyRuid

-- UI thumbnail (any resource type)
self.Entity.SpriteGUIRendererComponent.ImageRUID = DataRef("thumbnail://" .. anyRuid)

Primary use case: avataritem icons

avataritem RUIDs cannot render without thumbnail://. With the prefix they become item icons for inventory slots, shop listings, and equip previews.

slotEntity.SpriteGUIRendererComponent.ImageRUID = DataRef("thumbnail://" .. avatarItemRuid)

Search avatar item RUIDs with the msw-search skill (searchAvatarItems).


Common pitfalls

  • skeleton / avataritem directly into SpriteRUID / ImageRUID without prefix → silently invisible.
  • thumbnail:// = static image only. For live animation, assign the animationclip RUID directly (no prefix).
  • Runtime .mlua uses ImageRUID = DataRef("..."); the { "DataId": "..." } object form is .ui / .model JSON only (the prefix goes inside DataId, not a separate field). Do not use the table form in runtime code — the LSP rejects it as a DataRef type mismatch.
  • CostumeManagerComponent.Custom*Equip, StateAnimationComponent.ActionSheet, and SkeletonRendererComponent.SkeletonRUID do not accept thumbnail://.
  • Do not prepend thumbnail:// to a RUID that was already retrieved as a thumbnail or icon image from msw-search. The prefix converts a source resource into its thumbnail — applying it to an already-thumbnail sprite is logically redundant. If the search query targeted an icon / thumbnail image and returned a sprite RUID, assign that RUID directly without any prefix.
  • To search for RUIDs use the msw-search skill — searchAvatarItems for avatar items; searchResources for everything else.