Agent Skills Vrc Udon
Skills, rules, and validation hooks that teach AI coding agents to generate correct UdonSharp code
Agent Skills Vrc Udon is an open-source agent skill by niaka3dayo, written mainly in Shell, with 342 GitHub stars and the MIT license. Its code was last updated Oct 30, 2026. The latest npm release is agent-skills-vrc-udon 4.3.1, published Nov 10, 2026, with 656 downloads last week.
English | 日本語 | 简体中文 | 繁體中文 | 한국어
<p align="center"> <img src="https://img.shields.io/badge/VRChat_SDK-3.10.6-00b4d8?style=for-the-badge" alt="VRChat SDK" /> <img src="https://img.shields.io/badge/UdonSharp-C%23_%E2%86%92_Udon-5C2D91?style=for-the-badge&logo=csharp&logoColor=white" alt="UdonSharp" /> <img src="https://img.shields.io/badge/AI_Agent-Skills_%26_Rules-ff6b35?style=for-the-badge" alt="Agent Skills" /> <img src="https://img.shields.io/github/license/niaka3dayo/agent-skills-vrc-udon?style=for-the-badge" alt="License" /> </p> <p align="center"> <img src="https://img.shields.io/npm/v/agent-skills-vrc-udon?style=flat-square&label=npm" alt="npm version" /> <img src="https://img.shields.io/npm/dm/agent-skills-vrc-udon?style=flat-square&label=downloads" alt="npm downloads" /> <img src="https://img.shields.io/github/actions/workflow/status/niaka3dayo/agent-skills-vrc-udon/ci.yml?branch=dev&style=flat-square&label=CI" alt="CI" /> </p> <h1 align="center">Agent Skills for VRChat UdonSharp</h1> <p align="center"> <b>Skills, rules, and validation hooks that teach AI coding agents to generate correct UdonSharp code</b> </p> <p align="center"> <a href="#about">About</a> • <a href="#install">Install</a> • <a href="#structure">Structure</a> • <a href="#skills">Skills</a> • <a href="#rules">Rules</a> • <a href="#hooks">Hooks</a> • <a href="#contributing">Contributing</a> • <a href="#disclaimer">Disclaimer</a> </p><h2 id="about">About</h2>
VRChat world development with UdonSharp (C# → Udon Assembly) has strict compile constraints that differ significantly from standard C#. In Udon runtime code, features like List<T>, async/await, try/catch, LINQ, and lambdas cause compile errors. Editor-evaluated field initializers are a separate C# context and may use some of these features to generate a final field value that Udon supports.
This repository provides AI coding agents with the knowledge to generate correct UdonSharp code from the start.
| Problem | Solution |
|---|---|
AI generates Udon-incompatible List<T>, async/await, etc. in runtime code | Rules + hooks auto-detect and warn |
| Sync variable bloat | Decision tree + data budget |
| Incorrect networking patterns | Pattern library + anti-patterns |
| SDK version feature differences | Version table with feature mapping |
| Late Joiner state inconsistency | Sync pattern selection framework |
This is NOT:
- A VRChat SDK or UdonSharp distribution
- A Unity project (no executable code)
- A replacement for official VRChat documentation
- A guarantee of all AI behaviors
Issues: Bug reports and knowledge requests are welcome via GitHub Issues. PRs: Pull Requests are not accepted. See CONTRIBUTING.md for details.
<h2 id="install">Install</h2>
Migrating from fork/clone? — You no longer need to fork or clone this repository. Run one of the install commands below inside your VRChat Unity project. If you cloned this repo earlier, you can delete the cloned directory after switching.
Method 1: skills CLI (recommended)
npx skills add niaka3dayo/agent-skills-vrc-udon
This uses the skills.sh ecosystem to install skills into your project. The skills CLI requires Node.js 22.20 or later.
Method 2: Claude Code plugin
claude plugin install vrc-udon-skills --marketplace niaka3dayo/agent-skills-vrc-udon
On Claude Code older than 2.1.292, run claude plugin marketplace add niaka3dayo/agent-skills-vrc-udon first, then claude plugin install vrc-udon-skills@agent-skills-vrc-udon.
Method 3: git clone
git clone https://github.com/niaka3dayo/agent-skills-vrc-udon.git
Installing a specific version
All published versions remain permanently available on npm and as git tags — nothing is ever removed.
# skills CLI, pinned to a git tag
npx skills add https://github.com/niaka3dayo/agent-skills-vrc-udon/tree/v2.3.0
# npm (any published version, v1.0.0 and later); the skills are in node_modules/agent-skills-vrc-udon/skills/
npm install --save-exact agent-skills-vrc-udon@2.3.0
# git tag
git clone --branch v2.3.0 https://github.com/niaka3dayo/agent-skills-vrc-udon.git
<h2 id="structure">Structure</h2>
skills/ # All skills
unity-vrc-udon-sharp/ # UdonSharp core skill
SKILL.md # Skill definition + frontmatter
LICENSE.txt # MIT License
CHEATSHEET.md # Quick reference (1 page)
rules/ # Constraint rules
udonsharp-constraints.md
udonsharp-networking.md
udonsharp-sync-selection.md
hooks/ # PostToolUse validation
validate-udonsharp.sh
validate-udonsharp.ps1
assets/templates/ # Code templates (17 files)
references/ # Detailed documentation (25 files)
unity-vrc-world-sdk-3/ # VRC World SDK skill
SKILL.md, LICENSE.txt, CHEATSHEET.md, references/ (8 files)
templates/ # AI tool config templates
CLAUDE.md AGENTS.md GEMINI.md # Starter project instructions (copy manually)
.claude-plugin/marketplace.json # Claude Code plugin registration
hooks/hooks.json # Claude Code plugin hook registration
CLAUDE.md # Development guide (this repo only)
<h2 id="skills">Skills</h2>
unity-vrc-udon-sharp
UdonSharp scripting core skill. Covers compile constraints, networking, events, and templates.
| Area | Content |
|---|---|
| Constraints | C# features blocked in Udon runtime, their alternatives (List<T> → DataList, async → SendCustomEventDelayedSeconds), and the Editor-evaluated initializer boundary |
| Networking | Ownership model, Manual/Continuous sync, FieldChangeCallback, anti-patterns |
| NetworkCallable | Introduced in SDK 3.8.1: parameterized network events (up to 8 args) |
| Persistence | Introduced in SDK 3.7.4: PlayerData/PlayerObject API |
| Dynamics | Introduced in SDK 3.10.0: PhysBones, Contacts, VRC Constraints for Worlds |
| Web Loading | String/Image download, VRCJson, VRCUrl constraints |
| Templates | 17 templates (interactions, sync patterns, persistence, editor utilities, and more) |
unity-vrc-world-sdk-3
World-level scene setup, component placement, and optimization.
| Area | Content |
|---|---|
| Scene Setup | VRC_SceneDescriptor, spawn points, Reference Camera |
| Components | VRC_Pickup, Station, ObjectSync, Mirror, Portal, CameraDolly |
| Layers | VRChat reserved layers and collision matrix |
| Performance | FPS targets, Quest/Android limits, optimization checklist |
| Lighting | Baked lighting best practices |
| Audio/Video | Spatial audio, video player selection (AVPro vs Unity) |
| Upload | Build and upload workflow, pre-upload checklist |
<h2 id="rules">Rules</h2>
Rules are constraint files that guide AI agents before code generation.
| Rule File | Content |
|---|---|
udonsharp-constraints | Blocked C# features, code generation rules, attributes, syncable types |
udonsharp-networking | Ownership model, sync modes, anti-patterns, NetworkCallable constraints |
udonsharp-sync-selection | Sync decision tree, data budget targets, 6 minimization principles |
Networking rule: A parameterless public method without a leading _ is a legacy network entry. Prefix local-only/custom public methods with _, and use [NetworkCallable] to expose only intentional entries. Confirm NetworkCalling.InNetworkCall before reading NetworkCalling.CallingPlayer; authorize the caller separately from receiver ownership. Never use instance master as a security or access-control boundary.
Sync Decision Tree
Q1: Visible to other players?
No --> No sync (0 bytes)
Yes --> Q2
Q2: Late Joiner needs current state?
No --> Events only (0 bytes)
Yes --> Q3
Q3: Continuous change? (position/rotation)
Yes --> Continuous sync
No --> Manual sync (minimal [UdonSynced])
Target: < 50 bytes per behaviour. Small-medium worlds: < 100 bytes total.
<h2 id="hooks">Validation Hooks</h2>
A PostToolUse hook checks every .cs file the agent writes or edits and reports what it finds back to the agent.
Claude Code plugin — registered automatically. The plugin runs the Bash validator, so bash must be on PATH. On Windows, Git Bash is enough; jq is not needed.
skills CLI or git clone — register the hook yourself. For Claude Code, add this to .claude/settings.json:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bash \"$CLAUDE_PROJECT_DIR/.claude/skills/unity-vrc-udon-sharp/hooks/validate-udonsharp.sh\""
}
]
}
]
}
}
To use the PowerShell validator, set the command to pwsh -NoProfile -File "$CLAUDE_PROJECT_DIR/.claude/skills/unity-vrc-udon-sharp/hooks/validate-udonsharp.ps1".
| Category | Check | Severity |
|---|---|---|
| Context-sensitive Features | List<T>, LINQ, lambdas (blocked in Udon runtime; may be valid in Editor-evaluated field initializers) | WARNING |
| Blocked Runtime Features | async/await, try/catch, coroutines | ERROR |
| Blocked Patterns | AddListener(), StartCoroutine() | ERROR |
| Networking | [UdonSynced] without RequestSerialization() | WARNING |
| Networking | [UdonSynced] without Networking.SetOwner() | WARNING |
| Sync Bloat | 6+ synced variables per behaviour | WARNING |
| Sync Bloat | int[]/float[] sync (recommend smaller types) | WARNING |
| Config Mismatch | NoVariableSync mode with [UdonSynced] fields | ERROR |
| Config Mismatch | None mode with [NetworkCallable] or a SendCustomNetworkEvent call on itself (the event is never delivered) | WARNING |
Supports both Bash (validate-udonsharp.sh) and PowerShell (validate-udonsharp.ps1).
Findings reach the agent as additional context on the edit, and the same lines are printed to stderr for manual runs. The hook never blocks an edit.
When a validator cannot run, for example because it cannot read the hook input or the file, it reports VALIDATOR-WARNING: validation skipped (<reason>); the hook does not silently claim that validation succeeded.
Codex edits files with apply_patch, which passes the patch text to the hook instead of a file path. Both validators accept that input and check each .cs file named in the patch.
SDK Versions
Active support / last verified: VRChat SDK 3.10.6
From v4.0.0 onward, the support policy is latest stable SDK only; the support target moves to a new stable release only after this repository verifies it. A new stable release is not supported automatically. Current last verified target: 3.10.6.
The table below keeps historical feature-introduction notes for migration reference. SDK 3.7.1-3.10.5 entries are historical information only; they are not active support or validation targets for this Skill. This is the Skill's support boundary, not a statement about VRChat's own SDK policy.
| SDK Version | Key Features | Status |
|---|---|---|
| 3.7.1 | StringBuilder, Regex, System.Random | Historical |
| 3.7.4 | Persistence API (PlayerData / PlayerObject) | Historical |
| 3.7.6 | Multi-platform Build & Publish (PC + Android) | Historical |
| 3.8.0 | PhysBone dependency sorting, Force Kinematic On Remote | Historical |
| 3.8.1 | [NetworkCallable] parameterized events, Others/Self targets | Historical |
| 3.9.0 | Camera Dolly API, Auto Hold pickup | Historical |
| 3.10.0 | VRChat Dynamics for Worlds (PhysBones, Contacts, VRC Constraints) | Historical |
| 3.10.1 | Bug fixes, stability improvements | Historical |
| 3.10.2 | EventTiming.PostLateUpdate/FixedUpdate, PhysBones fixes, shader time globals | Historical |
| 3.10.3 | VRCPlayerApi.isVRCPlus, VRCRaycast (avatar), Mirror render-order fix | Historical |
| 3.10.4 | VRCTween, Box-shaped Contacts, Global Avatar PhysBone Colliders, world VRCPhysBoneCollider Udon access, DataList/DataDictionary capacity APIs | Historical |
| 3.10.5 | WorldQualitySettings, writable VRCQualitySettings, Assembly Version Defines, Pickup Outline Renderers, Pipeline Manager validation | Historical |
| 3.10.6 | VRCBillboard, VRCVelocityTracker, VRCPlacementZone, constraint source methods and Smoothing Factor, Interact Outline Renderers, UdonSharp enum-comparison and named-argument fixes | Active / Last verified |
Note: Before publishing, confirm that the project uses an SDK version currently supported by VRChat.
Official Resources
| Resource | URL |
|---|---|
| VRChat Creators Docs | https://creators.vrchat.com/ |
| UdonSharp API Reference | https://udonsharp.docs.vrchat.com/ |
| VRChat Forums (Q&A) | https://ask.vrchat.com/ |
| VRChat Canny (Bugs/Features) | https://feedback.vrchat.com/ |
| VRChat Community GitHub | https://github.com/vrchat-community |
<h2 id="community-contributors">Community Contributors</h2>
This project has benefited from people who took the time to file concrete Issues and help verify the fixes. Thank you to:
<!-- community-contributors:start --> <p> <a href="https://github.com/KatanoShingo" title="@KatanoShingo"><img src="https://github.com/KatanoShingo.png?size=64" width="64" height="64" alt="@KatanoShingo"></a> <a href="https://github.com/Guribo" title="@Guribo"><img src="https://github.com/Guribo.png?size=64" width="64" height="64" alt="@Guribo"></a> <a href="https://github.com/haru0416-dev" title="@haru0416-dev"><img src="https://github.com/haru0416-dev.png?size=64" width="64" height="64" alt="@haru0416-dev"></a> <a href="https://github.com/Yodokoro" title="@Yodokoro"><img src="https://github.com/Yodokoro.png?size=64" width="64" height="64" alt="@Yodokoro"></a> <a href="https://github.com/tetradice" title="@tetradice"><img src="https://github.com/tetradice.png?size=64" width="64" height="64" alt="@tetradice"></a> <a href="https://github.com/owlboy" title="@owlboy"><img src="https://github.com/owlboy.png?size=64" width="64" height="64" alt="@owlboy"></a> <a href="https://github.com/nomlasvrc" title="@nomlasvrc"><img src="https://github.com/nomlasvrc.png?size=64" width="64" height="64" alt="@nomlasvrc"></a> <a href="https://github.com/ureishi" title="@ureishi"><img src="https://github.com/ureishi.png?size=64" width="64" height="64" alt="@ureishi"></a> <a href="https://github.com/irucaVRC" title="@irucaVRC"><img src="https://github.com/irucaVRC.png?size=64" width="64" height="64" alt="@irucaVRC"></a> </p> <!-- community-contributors:end --><h2 id="contributing">Contributing</h2>
Issues are welcome -- bug reports and knowledge requests help improve this project.
Pull Requests are not accepted -- all fixes and updates are made by the maintainer.
See CONTRIBUTING.md for details.
<h2 id="disclaimer">Disclaimer</h2>
This project is not affiliated with VRChat Inc. No official endorsement, partnership, or association is implied.
"VRChat", "UdonSharp", "Udon" and related names/logos are trademarks of VRChat Inc. All trademarks belong to their respective owners.
This repository is a personal knowledge base for AI coding agents to generate correct UdonSharp code. It does not distribute any part of the VRChat SDK or UdonSharp compiler.
Accuracy
- Content is provided "AS IS" without warranty. See LICENSE.
- This is a personal project. Errors, outdated information, or incomplete content may exist. Always verify against official VRChat documentation.
- The author assumes no liability for issues caused by this repository (build errors, upload rejections, unexpected world behavior, etc.).
- Active SDK support is limited to 3.10.6, the last verified target. Older version entries are historical migration information, not a promise to test or fix those SDKs. Behavior may change with new VRChat releases.
AI-Assisted Creation
This knowledge base was created and maintained with AI tool assistance (Claude, Gemini, Codex). All content has been reviewed, but AI-generated portions may contain subtle errors. Use at your own risk.
License
This project is licensed under the MIT License. See LICENSE for details.
Fork, modify, and redistribute freely under MIT License terms. This license applies to the documentation, rules, templates, and hooks in this repository. It does not grant any rights to VRChat's SDK, UdonSharp compiler, or other VRChat intellectual property.
Agent Skills Vrc Udon alternatives
View more →Similar agent skills in Coding Agents, ranked by GitHub stars. Compare licence, recent activity and scan status before you choose.
| Name | Stars | Licence | Last updated | Scan |
|---|---|---|---|---|
| Agent Skills Vrc Udon (this page) niaka3dayo | 342 | MIT | Oct 30, 2026 | Scanned, no flagged issues |
| Rea morluto | 417k | MIT | Nov 1, 2026 | Scanned, no flagged issues |
| Agent Skills addyosmani | 112k | MIT | Oct 31, 2026 | Scanned, no flagged issues |
| I Have Adhd ayghri | 60k | MIT | Oct 19, 2026 | Scanned, no flagged issues |
| Open Code Review alibaba | 49k | Apache-2.0 | Oct 30, 2026 | Scanned, no flagged issues |
| Agent Skills For Context Engineering muratcankoylan | 18k | MIT | Oct 12, 2026 | Scanned, no flagged issues |