unity-shader について
unity-shader は、Unity の手書き ShaderLab/HLSL ファイルを扱うスキル群です。シェーダーの作成や検査に対応し、URP 用テンプレートも利用できます。ShaderGraph は別モジュールです。
主な機能
- 01.shader ファイルの作成と読み取り
- 02シェーダーの一覧表示と検索
- 03プロパティ、キーワード、バリアント情報の確認
- 04シェーダーのコンパイルエラー確認
- 05URP Unlit または Lit シェーダーの作成
- 06グローバルキーワードの有効・無効化
活用シーン
- 01手書きシェーダーのソース作成や確認
- 02プロジェクト内のシェーダーを探してプロパティ定義を確認
- 03シェーダーエラーやバリアント関連情報を調査
- 04グローバル Shader キーワードの切り替え
MCP 対応
README には MCP との関係について記載がありません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-shaderインストール後、Claude Code で/unity-shaderを入力して読み込まれたか確認します。
詳細
このモジュールのスキルを呼び出す前に: 名前や説明からパラメーターを推測してスキルを呼び出そうとしている場合は、いったん停止してください。まずこのファイルを読むか、
GET /skills/recommend?includeSchema=trueでスキーマを取得してください。recommend/schema からすでにパラメーターの定義を取得している場合は、そのまま dryRun に進めます。
トリガー
- 手書きのシェーダーの作成または編集
- .shader ファイルの一覧表示または検索
- プロパティ/キーワードの確認
- 手書きの shader の作成または編集、.shader ファイルの一覧表示/検索、プロパティとキーワードの確認
Unity Shader スキル
.shader の HLSL/ShaderLab ファイルを操作します(テンプレートからの作成、ソースの読み取り、一覧表示、検索、キーワード/プロパティ/バリアントの取得、エラー確認、削除、グローバルキーワードの切り替え)。ノードベースの ShaderGraph には shadergraph モジュールを使用してください。
動作モード
- スキルの照会(
shader_read、shader_list、shader_find、shader_get_properties、shader_check_errors、shader_get_keywords、shader_get_variant_count)はSkillMode.SemiAutoです。許可がなくても3つすべてのモードで実行できます。 - 変更を行うスキル(
shader_create、shader_create_urp、shader_set_global_keyword)はSkillMode.FullAutoです。Approval ではユーザーの許可が必要です(許可するとサーバー側で1回実行され、結果が返されます)。Auto/Bypass では直接実行されます。 shader_deleteにはSkillOperation.Deleteが設定されており、Approval/Auto モードでは自動的に禁止されます(NeverInSemi)。Bypass またはユーザー管理の Allowlist でのみ実行できます。
ガードレール
禁止事項(よくある誤り):
shader_set_propertyは存在しません → シェーダーではなく、マテリアルに対してmaterial_set_float/material_set_colorなどを使用してくださいshader_apply/shader_assignは存在しません → マテリアルのシェーダーを変更するにはmaterial_set_shaderを使用してくださいshader_get_propertiesが返すのはシェーダーのプロパティ定義(名前/型/範囲)であり、現在の値ではありません → マテリアルインスタンスの値を取得するにはmaterial_get_propertiesを使用してください- シェーダー名では大文字と小文字が区別され、パス形式です。
"Standard"、"Universal Render Pipeline/Lit"を使用し、"standard"や"URP Lit"は使用しないでください
使い分け:
- マテリアルのプロパティ変更 →
materialモジュールを使用 - シェーダーキーワードの制御 →
materialモジュールのmaterial_set_keyword - グローバルシェーダーキーワード → このモジュールの
shader_set_global_keyword
スキルの概要
| スキル | 説明 |
|---|---|
shader_create | シェーダーファイルを作成 |
shader_read | シェーダーソースを読み取り |
shader_list | すべてのシェーダーを一覧表示 |
shader_find | 名前でシェーダーを検索 |
shader_delete | シェーダーファイルを削除 |
shader_get_properties | シェーダーのプロパティを取得 |
shader_check_errors | シェーダーのコンパイルエラーを確認 |
shader_get_keywords | シェーダーキーワードの一覧を取得 |
shader_get_variant_count | パフォーマンス分析用にシェーダーバリアント数を取得 |
shader_create_urp | テンプレートから URP シェーダーを作成 |
shader_set_global_keyword | グローバルシェーダーキーワードを有効化または無効化 |
スキル
shader_create
シェーダーファイルを作成します。template パラメーターは、.shader ファイルにそのまま書き込まれる生のシェーダーソースコードです。プリセット名ではありません。template="Standard" を渡すと、文字列 Standard がそのままディスクに書き込まれ、シェーダーのコンパイルに失敗します。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
shaderName | string | はい | - | Shader "..." 宣言に書き込むシェーダー名(例:"Custom/MyShader") |
savePath | string | はい | - | 保存先のパス(例:"Assets/Shaders/My.shader") |
template | string | いいえ | null | ShaderLab/HLSL のソース文字列全体。省略した場合は、組み込みの Unlit テンプレート(_MainTex + _Color、単一の CGPROGRAM パス)が使用されます。他の組み込みプリセットはありません。 |
URP の Unlit/Lit プリセットには、代わりに
shader_create_urp(type: "Unlit" | "Lit")を使用してください。名前でテンプレートが実際に選択されます。
shader_read
シェーダーのソースコードを読み取ります。
| Parameter | Type | Required | Description |
|---|---|---|---|
shaderPath | string | Yes | シェーダーアセットのパス |
Returns: {path, lines, content}
shader_list
プロジェクト内のすべてのシェーダーを一覧表示します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
filter | string | No | null | 名前のフィルター |
limit | int | No | 100 | 結果の最大数 |
Returns: {count, shaders: [{path, name, propertyCount}]}
shader_find
名前でシェーダーを検索します。
| Parameter | Type | Required | Description |
|---|---|---|---|
searchName | string | Yes | 検索するシェーダー名 |
Returns: {found, name, path}
shader_delete
シェーダーファイルを削除します。
| Parameter | Type | Required | Description |
|---|---|---|---|
shaderPath | string | Yes | シェーダーアセットのパス |
shader_get_properties
シェーダーで定義されているすべてのプロパティを取得します。
| Parameter | Type | Required | Description |
|---|---|---|---|
shaderNameOrPath | string | Yes | シェーダー名またはシェーダーアセットのパス |
Returns: {success, shaderName, propertyCount, properties: [{name, type, description}]}
shader_check_errors
シェーダーにコンパイルエラーがないか確認します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
shaderNameOrPath | string | Yes | - | シェーダー名またはアセットのパス(例:"Custom/MyShader" または "Assets/Shaders/My.shader") |
Returns: { shaderName, hasErrors, messageCount }
shader_get_keywords
シェーダーのキーワード一覧を取得します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
shaderNameOrPath | string | Yes | - | シェーダー名またはアセットのパス(例:"Custom/MyShader" または "Assets/Shaders/My.shader") |
Returns: { shaderName, keywordCount, keywords: [{ name, type }] }
shader_get_variant_count
パフォーマンス分析用にシェーダーのバリアント数を取得します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
shaderNameOrPath | string | Yes | - | シェーダー名またはアセットのパス(例:"Custom/MyShader" または "Assets/Shaders/My.shader") |
Returns: { shaderName, subshaderCount, totalPasses }
shader_create_urp
テンプレートからURPシェーダーを作成します(タイプ:UnlitまたはLit)。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
shaderName | string | Yes | - | シェーダー名(例:"Custom/MyURPShader") |
savePath | string | Yes | - | 保存先のパス(例:"Assets/Shaders/MyURP.shader") |
type | string | No | "Unlit" | テンプレートのタイプ:"Unlit"または"Lit" |
Returns: { success, shaderName, path, type }
shader_set_global_keyword
グローバルシェーダーキーワードを有効または無効にします。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
keyword | string | Yes | - | グローバルシェーダーキーワード名 |
enabled | bool | Yes | - | 有効にする場合はtrue、無効にする場合はfalse |
Returns: { success, keyword, enabled }
使用例
import unity_skills
# Create an unlit shader
unity_skills.call_skill("shader_create",
shaderName="Custom/MyUnlit",
savePath="Assets/Shaders/MyUnlit.shader",
template="Unlit"
)
# Create a surface shader
unity_skills.call_skill("shader_create",
shaderName="Custom/MyPBR",
savePath="Assets/Shaders/MyPBR.shader",
template="Standard"
)
# Read shader source
source = unity_skills.call_skill("shader_read",
shaderPath="Assets/Shaders/MyUnlit.shader"
)
print(source['content'])
# List all custom shaders
shaders = unity_skills.call_skill("shader_list", filter="Custom")
for shader in shaders['shaders']:
print(f"{shader['name']}: {shader['path']}")
ベストプラクティス
- シェーダー名の付け方を統一します(Category/Name)
- シェーダーを専用フォルダーに整理します
- テンプレートから始め、必要に応じて変更します
- さまざまな照明条件でシェーダーをテストします
- ビルド時にはモバイルとの互換性を考慮します
正確なシグネチャ
正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく、GET /skills/schema または unity_skills.get_skill_schema() で定義されています。