npx claudepluginhub kurotori4423/udonsharp-coding-skill --plugin udonsharp-codingThis skill uses the workspace's default tool permissions.
---
references/en/udon_class.mdreferences/en/udon_creatorEconomy.mdreferences/en/udon_imageLoading.mdreferences/en/udon_network.mdreferences/en/udon_network/01_basics_minimum.mdreferences/en/udon_network/02_implementation.mdreferences/en/udon_network/03_sync_options.mdreferences/en/udon_network/04_synced_types.mdreferences/en/udon_network/05_design_tips.mdreferences/en/udon_network/README.mdreferences/en/udon_persistence.mdreferences/en/udon_playerTracking.mdreferences/en/udon_stringLoading.mdreferences/en/udon_uGUI.mdreferences/jp/Troubleshooting.mdreferences/jp/udon_class.mdreferences/jp/udon_creatorEconomy.mdreferences/jp/udon_imageLoading.mdreferences/jp/udon_network.mdreferences/jp/udon_network/01_basics_minimum.mdSearches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
UdonSharp generally follows C# syntax, but its features are limited.
if, else, while, for, do, foreach, switch, return, break, continue, ternary operator (condition ? true : false), ??(true || CheckIfTrue()) will not execute CheckIfTrue()typeof()out or ref parameters, such as many variants of Physics.Raycast()paramsOnPlayerJoined event with a VRCPlayerApi argument is valid.[RecursiveMethod] attribute[] collections and by extension UdonSharp only supports arrays at the moment..GetType() will not always match what you may expect since U# abstracts some types in order to make them work in Udon. For instance, any jagged array type will return a type of object[] instead of something like int[][] for a 2D int jagged array.You cannot create a new GameObject using new GameObject() and similar APIs. In UdonSharp, you create new objects by cloning an existing GameObject in the scene using Instantiate(). Additionally, only GameObject can be instantiated via Instantiate().
Utilities.IsValid for null checksbool IsValid(object obj) returns true when obj is not null (or is otherwise valid). In UdonSharp, this is faster than doing null checks with ==.
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
public class UdonSharpScript : UdonSharpBehaviour
{
}
If the problem you are addressing involves network synchronization, read the document references/en/udon_network/README.md. These documents describe the concepts and methods required to implement network logic in Udon.
If you need shared logic, encapsulation, or inheritance, be aware that UdonSharp has important limitations. See references/en/udon_class.md.
If you are implementing things like gaze-following objects or objects that follow avatar bones, see references/en/udon_playerTracking.md. It includes important notes and pitfalls for implementation.
If you need to save player-specific data (like high scores, inventory, or settings) across sessions or instances, refer to references/en/udon_persistence.md. This document explains how to use PlayerData and PlayerObjects for persistent storage.
If you need to retrieve text/JSON data or images from external servers at runtime, see references/en/udon_stringLoading.md and references/en/udon_imageLoading.md. These documents explain how to use VRCStringDownloader and VRCImageDownloader with their respective callbacks and limitations.
If you need to handle in-game purchases, check product ownership, or utilize the VRChat Creator Economy SDK, refer to references/en/udon_creatorEconomy.md. This document explains how to use UdonProduct, the Store methods, and purchase events in UdonSharp.