[English](README.md) | **日本語** | [简体中文](README.zh-CN.md) | [繁體中文](README.zh-TW.md) | [한국어](README.ko.md)
Agent Skills for VRChat UdonSharp
AIコーディングエージェントが正しいUdonSharpコードを生成できるようにするスキル・ルール・バリデーションフック集
概要 •
インストール •
構成 •
スキル •
ルール •
フック •
コントリビュート •
免責事項
---
概要
**UdonSharp**(C# → Udon Assembly)を使ったVRChatワールド開発には、通常のC#とは大きく異なる厳格なコンパイル制約があります。`List`、`async/await`、`try/catch`、LINQ、ラムダ式などは**コンパイルエラー**になります。
このリポジトリは、AIコーディングエージェントが最初から正しいUdonSharpコードを生成できるよう、必要な知識を提供します。
| 問題 | 解決策 |
|---------|----------|
| AIが `List`、`async/await` 等を生成してしまう | ルール + フックによる自動検出と警告 |
| 同期変数の肥大化 | デシジョンツリー + データバジェット |
| 誤ったネットワーキングパターン | パターンライブラリ + アンチパターン集 |
| SDKバージョンごとの機能差異 | バージョンテーブルと機能マッピング |
| 遅延参加者への状態不整合 | 同期パターン選択フレームワーク |
**このリポジトリは以下ではありません:**
- VRChat SDK または UdonSharp の配布物
- Unityプロジェクト(実行可能なコードは含みません)
- [VRChat公式ドキュメント](https://creators.vrchat.com/) の代替
- AIの全動作を保証するもの
> **Issues**: バグ報告や知識リクエストは [GitHub Issues](https://github.com/niaka3dayo/agent-skills-vrc-udon/issues) からお気軽にどうぞ。
> **PR**: Pull Requestは受け付けていません。詳細は [CONTRIBUTING.md](CONTRIBUTING.md) をご覧ください。
---
インストール
> **フォーク・クローンからの移行をお考えの方へ** — v1.0.0 以降、このプロジェクトは **npm パッケージ** として配布されています。リポジトリをフォークやクローンする必要はなくなりました。VRChat の Unity プロジェクト内で、以下のいずれかのインストールコマンドを実行するだけで使用できます。以前にこのリポジトリをクローンしていた場合は、クローンしたディレクトリを削除して npm ベースのインストールに切り替えていただけます。
### 方法 1: skills CLI(推奨)
```bash
npx skills add niaka3dayo/agent-skills-vrc-udon
```
[skills.sh](https://skills.sh) エコシステムを使用して、プロジェクトにスキルをインストールします。
### 方法 2: Claude Code プラグイン
```bash
claude plugin add niaka3dayo/agent-skills-vrc-udon
```
### 方法 3: git clone
```bash
git clone https://github.com/niaka3dayo/agent-skills-vrc-udon.git
```
---
構成
```
skills/ # すべてのスキル
unity-vrc-udon-sharp/ # UdonSharpコアスキル
SKILL.md # スキル定義 + フロントマター
LICENSE.txt # MITライセンス
CHEATSHEET.md # クイックリファレンス(1ページ)
rules/ # 制約ルール
udonsharp-constraints.md
udonsharp-networking.md
udonsharp-sync-selection.md
hooks/ # PostToolUseバリデーション
validate-udonsharp.sh
validate-udonsharp.ps1
assets/templates/ # コードテンプレート(17ファイル)
references/ # 詳細ドキュメント(25ファイル)
unity-vrc-world-sdk-3/ # VRC World SDKスキル
SKILL.md, LICENSE.txt, CHEATSHEET.md, references/(8ファイル)
templates/ # AIツール設定テンプレート
CLAUDE.md AGENTS.md GEMINI.md # インストーラー経由でユーザーに配布
.claude-plugin/marketplace.json # Claude Codeプラグイン登録
CLAUDE.md # 開発ガイド(このリポジトリ専用)
```
---
スキル
### unity-vrc-udon-sharp
UdonSharpスクリプティングのコアスキルです。コンパイル制約、ネットワーキング、イベント、テンプレートをカバーします。
| 分野 | 内容 |
|------|---------|
| **制約** | 使用不可なC#機能と代替手段(`List` → `DataList`、`async` → `SendCustomEventDelayedSeconds`) |
| **ネットワーキング** | オーナーシップモデル、Manual/Continuousシンク、FieldChangeCallback、アンチパターン |
| **NetworkCallable** | SDK 3.8.1以降のパラメータ付きネットワークイベント(最大8引数) |
| **パーシスタンス** | SDK 3.7.4以降のPlayerData/PlayerObject API |
| **ダイナミクス** | SDK 3.10.0以降のPhysBones、Contacts、ワールド向けVRC Constraints |
| **Webローディング** | 文字列・画像ダウンロード、VRCJson、VRCUrlの制約 |
| **テンプレート** | 17種のテンプレート(インタラクション、同期パターン、永続化、エディタユーティリティなど) |
### unity-vrc-world-sdk-3
ワールドレベルのシーン設定、コンポーネント配置、最適化を扱うスキルです。
| 分野 | 内容 |
|------|---------|
| **シーン設定** | VRC_SceneDescriptor、スポーンポイント、Reference Camera |
| **コンポーネント** | VRC_Pickup、Station、ObjectSync、Mirror、Portal、CameraDolly |
| **レイヤー** | VRChat予約レイヤーとコリジョンマトリクス |
| **パフォーマンス** | FPS目標値、Quest/Android制限、最適化チェックリスト |
| **ライティング** | ベイクドライティングのベストプラクティス |
| **オーディオ/ビデオ** | 空間オーディオ、ビデオプレイヤー選択(AVPro vs Unity) |
| **アップロード** | ビルドとアップロードのワークフロー、アップロード前チェックリスト |
---
ルール
ルールは、AIエージェントがコードを生成する前に参照する制約ファイルです。
| ルールファイル | 内容 |
|-----------|---------|
| `udonsharp-constraints` | 使用不可なC#機能、コード生成ルール、属性、同期可能な型 |
| `udonsharp-networking` | オーナーシップモデル、シンクモード、アンチパターン、NetworkCallableの制約 |
| `udonsharp-sync-selection` | 同期デシジョンツリー、データバジェット目標値、6つの最小化原則 |
### 同期デシジョンツリー
```
Q1: 他プレイヤーから見える必要がありますか?
No --> 同期不要(0バイト)
Yes --> Q2
Q2: 遅延参加者が現在の状態を知る必要がありますか?
No --> イベントのみ(0バイト)
Yes --> Q3
Q3: 継続的に変化しますか?(位置・回転など)
Yes --> Continuous同期
No --> Manual同期(最小限の [UdonSynced])
```
**目標値**: ビヘイビアあたり50バイト未満。小〜中規模のワールド全体では100バイト未満。
---
バリデーションフック
`.cs` ファイルを編集した際に自動実行される PostToolUse フックです。
| カテゴリ | チェック内容 | 重大度 |
|----------|-------|----------|
| 使用禁止機能 | `List`、`async/await`、`try/catch`、LINQ、コルーチン、ラムダ式 | ERROR |
| 使用禁止パターン | `AddListener()`、`StartCoroutine()` | ERROR |
| ネットワーキング | `RequestSerialization()` なしの `[UdonSynced]` | WARNING |
| ネットワーキング | `Networking.SetOwner()` なしの `[UdonSynced]` | WARNING |
| 同期の肥大化 | ビヘイビアあたり6つ以上の同期変数 | WARNING |
| 同期の肥大化 | `int[]`/`float[]` 同期(より小さい型を推奨) | WARNING |
| 設定の不整合 | `NoVariableSync` モードと `[UdonSynced]` フィールドの併用 | ERROR |
**Bash**(`validate-udonsharp.sh`)と **PowerShell**(`validate-udonsharp.ps1`)の両方に対応しています。
---
## SDKバージョン
| SDKバージョン | 主な機能 | ステータス |
|:-----------:|:-------------|:------:|
| **3.7.1** | `StringBuilder`、`Regex`、`System.Random` | サポート済み |
| **3.7.4** | Persistence API(PlayerData / PlayerObject) | サポート済み |
| **3.7.6** | マルチプラットフォームビルド&パブリッシュ(PC + Android) | サポート済み |
| **3.8.0** | PhysBone依存関係ソート、Force Kinematic On Remote | サポート済み |
| **3.8.1** | `[NetworkCallable]` パラメータ付きイベント、`Others`/`Self` ターゲット | サポート済み |
| **3.9.0** | Camera Dolly API、Auto Hold Pickup | サポート済み |
| **3.10.0** | ワールド向けVRChat Dynamics(PhysBones、Contacts、VRC Constraints) | サポート済み |
| **3.10.1** | バグ修正、安定性の向上 | サポート済み |
| **3.10.2** | EventTiming.PostLateUpdate/FixedUpdate、PhysBones修正、シェーダー時間グローバル | サポート済み |
| **3.10.3** | `VRCPlayerApi.isVRCPlus`、VRCRaycast(アバター)、Mirror 描画タイミング修正 | サポート済み |
| **3.10.4** | VRCTween、Box形状のContacts、Global Avatar PhysBone Colliders、ワールドの`VRCPhysBoneCollider` Udonアクセス、DataList/DataDictionary容量API | 最新安定版 |
> **注意**: SDK 3.9.0未満は2025年12月2日に非推奨となりました。新規ワールドのアップロードには3.9.0以上が必要です。
---
## 公式リソース
| リソース | URL |
|----------|-----|
| VRChat クリエイターズドキュメント | https://creators.vrchat.com/ |
| UdonSharp APIリファレンス | https://udonsharp.docs.vrchat.com/ |
| VRChatフォーラム(Q&A) | https://ask.vrchat.com/ |
| VRChat Canny(バグ・機能要望) | https://feedback.vrchat.com/ |
| VRChat コミュニティGitHub | https://github.com/vrchat-community |
---
コントリビュート
**Issuesは歓迎します** -- バグ報告や知識リクエストはプロジェクトの改善に役立ちます。
**Pull Requestは受け付けていません** -- すべての修正と更新はメンテナーが行います。
詳細は [CONTRIBUTING.md](CONTRIBUTING.md) をご覧ください。
---
免責事項
> **このプロジェクトはVRChat Inc.とは一切関係なく、公式の推薦・パートナーシップ・関連性を示すものではありません。**
>
> 「VRChat」「UdonSharp」「Udon」および関連する名称・ロゴはVRChat Inc.の商標です。すべての商標はそれぞれの権利者に帰属します。
>
> このリポジトリは、AIコーディングエージェントが正しいUdonSharpコードを生成するための**個人的なナレッジベース**です。VRChat SDKやUdonSharpコンパイラのいかなる部分も配布しません。
### 正確性について
- コンテンツは**「現状のまま」**提供されており、いかなる保証もありません。[LICENSE](LICENSE) をご確認ください。
- これは個人プロジェクトです。**誤り、古くなった情報、または不完全な内容が含まれる可能性があります。** 常に[VRChat公式ドキュメント](https://creators.vrchat.com/)で確認してください。
- このリポジトリが原因で生じた問題(ビルドエラー、アップロード拒否、予期しないワールドの動作など)について、作者は一切責任を負いません。
- SDKカバレッジ(3.7.1〜3.10.4)は最終更新時点のものです。新しいVRChatリリースで動作が変わる可能性があります。
### AI支援による作成
このナレッジベースはAIツール(Claude、Gemini、Codex)の支援を受けて作成・メンテナンスされています。すべてのコンテンツはレビュー済みですが、AI生成部分に微妙な誤りが含まれる可能性があります。自己責任でご利用ください。
---
## ライセンス
このプロジェクトは **MIT ライセンス** の下で提供されています。詳細は [LICENSE](LICENSE) をご覧ください。
MIT ライセンスの条件のもとで、自由にフォーク・改変・再配布していただけます。このライセンスはリポジトリ内のドキュメント、ルール、テンプレート、フックに適用されます。VRChat の SDK、UdonSharp コンパイラ、またはその他の VRChat 知的財産に対するいかなる権利も付与しません。