unity-shadergraph について
unity-shadergraphは、UnityのShader GraphおよびSub Graphアセットを調査・編集するスキルモジュールです。ライブのグラフ構造とバージョン固定のノード許可リストに基づき、編集範囲を制限します。
主な機能
- 01テンプレートとグラフアセットの一覧表示
- 02グラフ構造とプロパティの確認
- 03グラフとサブグラフの作成
- 04対応ノードの追加・移動・接続
- 05プロパティとキーワードの編集
- 06グラフアセットの再インポート
活用シーン
- 01ノード編集前のグラフ構造確認
- 02対応ノードを使ったグラフ構築
- 03グラフのプロパティやキーワードの更新
MCP 対応
READMEはUnityスキルについて説明していますが、このモジュールとMCPの関係は明記していません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-shadergraphインストール後、Claude Code で/unity-shadergraphを入力して読み込まれたか確認します。
詳細
このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターでスキルを呼び出そうとしている場合は、いったん停止してください。まずこのファイルを読むか、
GET /skills/recommend?includeSchema=trueでスキーマを取得してください。recommend/schema からパラメーター定義をすでに取得している場合は、そのまま dryRun に進めます。
トリガー
- Shader Graph の作成
- グラフ構造の確認
- ブラックボード/ノードの制御された編集
- Shader Graph の作成、構造の確認、ブラックボード/ノードの制御された編集
ShaderGraph スキル
Unity 2022.3 以降を対象とした Shader Graph アセットのワークフローです。ソースに基づくテンプレート処理、MultiJson の確認、制約付きの内部エディターへのリフレクション書き込みに対応しています。
動作モード
- クエリスキル(
shadergraph_list_templates、shadergraph_list_assets、shadergraph_get_info、shadergraph_get_structure、shadergraph_list_supported_nodes、shadergraph_list_properties、shadergraph_list_keywords)はSkillMode.SemiAutoです。許可なしで、3 つのモードすべてで実行されます。 - その他すべての変更スキル(グラフ/サブグラフの作成、ノードの追加/移動/接続/切断、ノードのデフォルト値/設定の変更、プロパティ/キーワードの追加/更新、再インポート)は
SkillMode.FullAutoです。Approval モードではユーザーの許可が必要です(許可するとサーバー側で一度実行され、結果が返されます)。Auto/Bypass モードでは直接実行されます。 shadergraph_remove_node、shadergraph_remove_property、shadergraph_remove_keywordはSkillOperation.Deleteが指定されており、Approval/Auto モードでは自動的に禁止されます(NeverInSemi)。実行できるのは Bypass またはユーザーが管理する Allowlist のみです。
リフレクションの脆弱性
このモジュールはリフレクションを介して UnityEditor.ShaderGraph と UnityEditor.ShaderGraph.Internal にアクセスします(ShaderGraphReflectionHelper.cs と ShaderGraphNodeRegistry.cs を参照)。サポート対象ノードのホワイトリスト、スロットの構成、設定キーは com.unity.shadergraph 14.0.x(Unity 2022.3)にバージョン固定されており、Unity 6 の対応範囲は限定的です。以下を厳守してください。
- 内部型、フィールド、スロット ID が存在すると記憶だけで判断してはいけません。必ず事前に
shadergraph_list_supported_nodesとshadergraph_get_structureで確認してください。 - Shader Graph パッケージの更新で内部型や
MultiJsonスキーマが変更された場合、レジストリが更新されるまで変更スキルが失敗したり、何もせずに終了したりすることがあります。 - スキルがリフレクション/型検索の失敗を示すエラーを返した場合、引数の形式を変えて再試行してはいけません。バージョンの不一致を報告して停止してください。
ガードレール
振り分け:
- HLSL テキストシェーダー:
shader_*を使用します - Shader Graph/Sub Graph アセット:このモジュールを使用します
- グラフ構成を提案する前に、ソースに基づく設計指針を確認する場合は shadergraph-design を読み込みます
実行時の基本ルール:
- ノード単位の編集を行う前に、必ず
shadergraph_get_structureを呼び出してください。返されたnodeIdとslotIdのみを有効な識別子として扱います - スロット名、ノード ID、テンプレートの有無を記憶だけで捏造してはいけません
shadergraph_set_node_defaultsが適用されるのは未接続の入力スロットのみです。スロットが接続されている場合は、先に接続を解除してくださいshadergraph_set_node_settingsが書き込めるのは、shadergraph_list_supported_nodesで公開されているホワイトリスト内の項目のみですPropertyNodeがバインドできるのは、既存のブラックボードプロパティのみです。先にshadergraph_add_propertyでプロパティを作成してください- SubGraph の編集は通常のノードに限られます。このモジュールでは
SubGraphOutputNodeの構造は編集できません
検証済みの動作:
- Unity 2022.3 と
[email protected]にはGraphTemplates/が含まれていません。shadergraph_create_graphは空のグラフを作成する方式にフォールバックします - Unity 6 の ShaderGraph パッケージには実際のテンプレートディレクトリが含まれる場合があります。その場合、テンプレートの一覧表示とテンプレートをコピーした作成を引き続き利用できます
- サポート対象ノードのサブセットは実行時にフィルタリングされます。ライブ検証で共通してサポートされているノードは 28 個で、現在
AppendVectorNodeに対応しているのは Unity 6 のみです
スキル
shadergraph_list_templates
インストール済みパッケージに含まれる Shader Graph テンプレートを一覧表示します
shadergraph_create_graph
パッケージのテンプレートまたは空のフォールバックから、Shader Graph アセットを作成します。
shadergraph_create_subgraph
出力スロットを設定した空の Shader Sub Graph アセットを作成します。
shadergraph_list_assets
プロジェクト内の Shader Graph アセットと Sub Graph アセットを一覧表示します。
shadergraph_get_info
Shader Graph または Sub Graph アセットの概要を取得します。
shadergraph_get_structure
実際のグラフ構造を調べます。実際の nodeId、position、slots、edges、properties、keywords を返します。
shadergraph_list_supported_nodes
制限付きのノード許可リスト、対応バージョン、スロット、編集可能な設定を一覧表示します。
shadergraph_add_node
nodeType で対応ノードを追加します。初期設定と位置を任意で指定できます。
shadergraph_remove_node
シリアル化された nodeId でノードを削除します。関連するエッジもまとめて削除されます。
shadergraph_move_node
シリアル化された nodeId でノードを移動します。
shadergraph_connect_nodes
nodeId + slotId を使用して、特定の出力スロットを特定の入力スロットに接続します。
shadergraph_disconnect_nodes
同じ 4 要素の組を使用して、特定のエッジを切断します。
shadergraph_set_node_defaults
接続されていない入力スロットのデフォルト値を設定します。
shadergraph_set_node_settings
許可リストにあるノード設定のみを書き込みます。
shadergraph_list_properties
グラフのブラックボードプロパティを一覧表示します。
shadergraph_add_property
制限付きのブラックボードプロパティを追加します。
shadergraph_update_property
制限付きのブラックボードプロパティを更新します。
shadergraph_remove_property
グラフプロパティを削除します。
shadergraph_list_keywords
グラフのブラックボードキーワードを一覧表示します。
shadergraph_add_keyword
グラフキーワードを追加します。
shadergraph_update_keyword
グラフキーワードを更新します。
shadergraph_remove_keyword
グラフキーワードを削除します。
shadergraph_reimport
外部で編集した後、Shader Graph アセットの再インポートを強制します。
ワークフロー
- 対象のグラフを作成するか、見つけます。
shadergraph_get_structureを読み取ります。- 必要に応じて、最初にブラックボードプロパティまたはキーワードを作成します。
shadergraph_list_supported_nodesを呼び出し、ノードタイプ、設定の許可リスト、スロット構成を確認します。- ノードを追加または移動し、実際の
nodeId/slotIdの値を使用して接続または切断します。 - 次の手順がトポロジーに依存する場合は、重要な編集を行うたびに
shadergraph_get_structureを再度読み取ります。
正確なシグネチャ
正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく GET /skills/schema または unity_skills.get_skill_schema() で定義されています。