generate-editor-search-query について
Unity のアセットやシーンオブジェクトに関する自然言語の依頼を、簡潔な Unity Search クエリに変換するスキルです。検索ウィンドウも開けますが、検索は読み取り専用で、対象が曖昧な場合は確認を求めます。
主な機能
- 01自然言語からクエリへの変換
- 02アセットとシーンオブジェクトの検索
- 03検索ウィンドウを開く前のクエリ表示
- 04読み取り専用の検索フロー
- 05曖昧さや起動失敗への対応
活用シーン
- 01種類、名前、フォルダー、ラベルによるアセット検索
- 02シーンオブジェクトやコンポーネントの特定
- 03特定アセットを参照するアセットの検索
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ unity-technologies/ unity-agent-plugin --skill generate-editor-search-queryインストール後、Claude Code で/generate-editor-search-queryを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
SECURITY.mdreferences/open-search-window.mdquery-patterns.md詳細
自然言語による Unity Editor の検索リクエストを、有用な Unity Search クエリに変換し、簡潔に説明して、適切な場合はクエリを指定して Unity Search ウィンドウを開きます。
デフォルトの動作
プロンプトで Unity Search、Quick Search、Search window、open Search が明示されている場合、または Unity Search クエリを求められた場合は、対象がライティング、UI、物理演算、オーディオ、アニメーションなど別の分野であっても、このスキルで検索リクエストに対応します。
具体的な Unity アセットやシーンオブジェクトについて、「find」「search」「locate」「list」「filter」「look up」「where is」「which assets use」「what references」などの依頼を受けた場合は、次の手順に従います。
- リクエストの主な対象がプロジェクトアセット、シーンオブジェクト、またはその両方のどれかを判断します。
- 簡潔な Unity Search クエリを 1 つ作成します。
- Search を開く前、または開く際に、クエリを回答に表示します。
- ユーザーがクエリのテキストのみを明示的に求めていない限り、Editor 側のスニペットを実行して Unity Search を開きます。
- Search を開けない場合は、クエリを返し、Unity Search に手動で貼り付けるようユーザーに伝えます。
ユーザーが「do not open Search」「query only」「what query should I use」「just give me the query」などと指示した場合は、Search を開きません。
一般的な説明、プロジェクトの概要、フォルダー構造の要約、アーキテクチャの解説、ゲームプレイシステムの要約、またはプログラミング方法に関する質問の場合、プロンプトで Unity Search、Search クエリ、または Search ウィンドウを開くことが明示的に求められていない限り、このスキルは使用しません。
添付されたアセット、シーンオブジェクト、表示されている名前、パスがない状態で「this」「selected」「current」と言及された場合は、名前またはパスを尋ね、推測で補いません。
対象範囲
読み取り専用の Unity Search / Quick Search クエリの対象は、次のとおりです。
- マテリアル、テクスチャ、プレハブ、シーン、スクリプト、シェーダー、オーディオクリップ、スプライト、メッシュ、モデル、アニメーション、フォント、レンダーテクスチャ、ScriptableObject アセットなどのプロジェクトアセット
- カメラ、ライト、Rigidbody、Collider、Renderer、Canvas オブジェクト、UI コンポーネント、ParticleSystem、AudioSource、Animator、Terrain オブジェクト、名前付き GameObject などのシーンオブジェクトとコンポーネント
- パス、ラベル、タイプ、ファイル名、キーワード、参照を対象とするアセット検索
- 名前またはパスが会話や添付ファイルから確認できる、選択済みまたは名前が指定されたアセット
パッケージのインストール、メニューコマンドの実行、アセットの編集、シーンの変更、外部ドキュメントの検索、リポジトリ内テキストの検索、ビルドログの調査、検索結果の削除、検索結果の修正、依存関係グラフの分析は行いません。検索結果に対する操作をユーザーが求めた場合は、まず Search を開くかクエリを提示し、その後、別の変更用スキルまたはワークフローを実行する前に確認を求めます。
参考資料
複雑なクエリを生成する前に、references/query-patterns.md を読みます。
Search ウィンドウを開く前に、references/open-search-window.md を読みます。
公式の英語版リファレンス:
script eval への C# の渡し方
script eval はファイルではなく、ステートメントブロックをコンパイルします。そのため、次の 2 つはコンパイルエラーになります。
usingディレクティブは使用できません。 コンパイラーはusing UnityEditor;をリソース破棄の ステートメントとして読み取り、拒否します(CS0210)。- 型は完全修飾する必要があります。
SearchServiceだけでは解決されず(CS0246)、Objectだけではobjectと曖昧になります(CS0104)。
前提条件(CLI のインストール、接続済み Editor の確認、プロジェクトへの com.unity.pipeline パッケージの追加、コマンドカタログの確認)は unity-cli スキルが担当します。特に script eval が必要です。これがない場合はクエリテキストを生成し、ウィンドウを開けないことを伝えます。
クエリ生成ルール
求められている結果が得られそうな、最もシンプルなクエリを使用してください。
- アセットやコンポーネントのリクエストには、
t:material、t:texture、t:prefab、t:scene、t:script、t:shader、t:Light、t:Rigidbodyなどのタイプフィルターを優先してください。 - ユーザーが指定した名前やキーワードは、引用符で囲む必要がない限り、通常のクエリ語としてそのまま保持してください。
- ユーザーがフォルダーを指定した場合や、「Assets/... 内」「... 以下」と指定した場合は、
dir:を使用してください。 - ユーザーが Unity アセットのラベルを指定した場合は、
l:を使用してください。 - ユーザーがアセットを何が参照しているか、何が使っているか、何に依存しているか、何を含んでいるか、何と接続されているかを尋ねた場合は、
ref=を使用してください。 t:prefab ref={t:texture}やt:scene ref={t:prefab}のように、クエリの改善に明らかに役立つ場合に限り、検索式を使用してください。- 「選択中」や「現在」の対象を指定する場合、チャットのコンテキストに既知の選択中アセット名またはパスが含まれているときに限り、それを使用してください。含まれていない場合は、ユーザーに確認してください。
- 「Rigidbody がどこで使われているか」のような広範な関連性のリクエストでは、まずシンプルなキーワードまたはコンポーネントのクエリを使用してください。コードやプロパティを網羅的に解析する必要がある場合は、スクリプトによる監査が別途必要であることを伝えてください。
- 検索と修復作業が混在するリクエストでは、まずクエリを生成して開いてください。ユーザーが別途明示的に確認しない限り、検索結果を変更してはいけません。
- 判断が難しいリクエストに対して、未対応のフィルターを推測で使用しないでください。Unity Search の構文で確実に表現できない場合は、最も安全な範囲のクエリを開き、その制限を説明してください。
Unity Search を開く
Search ウィンドウを開く場合に限り、Editor で C# を実行してください。これは Editor UI の操作であり、プロジェクトのアセットやシーンの内容を変更してはいけません。
Search を開くときは、次の手順に従ってください。
- クエリを UTF-8 で Base64 エンコードし、生成する C# 文字列には Base64 テキストのみを埋め込んでください。スニペット内でデコードして文字列に戻します。
- この v1 スキルでは、アセットおよびシーンのプロバイダーを優先してください。
- プロバイダーが利用できない場合は、アクティブなプロバイダーにフォールバックしてください。
- 開いたクエリをログに記録してください。
- コマンドが失敗した場合は、Search を開いたと主張してはいけません。
応答形式
ユーザーへの応答は簡潔にしてください。
Query: `t:material`
Opened Unity Search with that query.
Search を開かない場合:
Query: `t:prefab ref={t:texture}`
Paste this into Unity Search.
リクエストが曖昧でも検索可能な場合は、最も可能性の高いクエリを選び、その前提を伝えてください。「対象を探して」のように、アセット、シーン、タイプ、名前、コンテキストのいずれもなく、検索対象を推測できない場合に限り、質問してください。
検証チェックリスト
成功を報告する前に、次の点を確認してください。
- 生成したクエリをユーザーに提示している
- クエリの対象がアセット、シーンオブジェクト、またはその両方である
- ユーザーが Search を開かないよう指定していない場合に限り、Search を開いている
- フォールバックや不確実な点があれば、明確に伝えている
- アセット、シーン、パッケージ、プロジェクト設定、検索結果を変更していない