自然言語によるUnity Editor検索リクエストを有用なUnity Searchクエリに変換し、簡単に説明して、適切な場合にUnity Searchウィンドウをそのクエリで開きます。
デフォルトの動作
プロンプトに「Unity Search」、「Quick Search」、「Search window」、「open Search」、またはUnity Searchクエリの要求が明示的に含まれている場合、ターゲットがライティング、UI、物理、オーディオ、アニメーションなど別のドメインに属していても、このスキルで検索リクエストを処理します。
「find」、「search」、「locate」、「list」、「filter」、「look up」、「where is」、「which assets use」、「what references」などの具体的なUnityアセットやシーンオブジェクトに関するリクエストの場合:
- リクエストが主にプロジェクトアセットに関するものか、シーンオブジェクトに関するものか、またはその両方かを判断します。
- 簡潔なUnity Searchクエリを1つ作成します。
- 検索を開く前または開くと同時に、応答にクエリを表示します。
- ユーザーが明示的にクエリテキストのみを要求していない限り、Editor側のスニペットを実行してUnity Searchを開きます。
- 検索の開始に失敗した場合は、クエリを返し、ユーザーにUnity Searchに手動で貼り付けるよう伝えます。
ユーザーが「Searchを開かないで」、「クエリのみ」、「どんなクエリを使えばいい?」、「クエリだけ教えて」などと言った場合は、検索を開かないでください。
ユーザーが一般的な説明、プロジェクト概要、フォルダ構造の要約、アーキテクチャウォークスルー、ゲームプレイシステムの概要、「どうやって~するの?」というプログラミングの質問をした場合は、プロンプトにUnity Search、Searchクエリ、またはSearchウィンドウを開くことが明示的に含まれていない限り、このスキルを使用しないでください。
ユーザーが「これ」、「選択中」、「現在の」といった表現を、関連するアセット、シーンオブジェクト、名前、パスなしで使用した場合は、名前やパスをでっち上げるのではなく、それを尋ねてください。
スコープ
読み取り専用の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を読んでください。
公式英語リファレンス:
evalへのC#の受け渡し
evalはファイルではなくステートメントブロックをコンパイルします。これには2つの結果があり、どちらもコンパイルエラーになります:
usingディレクティブは使用不可。 コンパイラはusing UnityEditor;をリソース破棄ステートメントと見なし、拒否します (CS0210)。- 型は完全修飾名で指定する必要があります。 裸の
SearchServiceは解決されず (CS0246)、裸のObjectはobjectと曖昧になります (CS0104)。
unity-cliスキルが前提条件(CLIのインストール、接続されたEditorの確認、プロジェクトへのcom.unity.pipelineパッケージの追加、コマンドカタログの検出)を担当します。特にevalが必要です。evalがない場合は、クエリテキストを生成し、ウィンドウを開けないことを伝えてください。
クエリ生成ルール
要求された結果を生成する可能性が最も高い、最もシンプルなクエリを使用します。
- アセットやコンポーネントのリクエストには、タイプフィルタを優先します(例:
t:material、t:texture、t:prefab、t:scene、t:script、t:shader、t:Light、t:Rigidbody)。 - ユーザーが指定した名前やキーワードは、引用符が必要でない限り、プレーンなクエリ用語として保持します。
- ユーザーがフォルダを指定したり、「Assets/...の中」、「~の下」と言った場合は、
dir:を使用します。 - ユーザーがUnityアセットラベルを尋ねた場合は、
l:を使用します。 - ユーザーが何を参照しているか、何を使用しているか、何に依存しているか、何を含んでいるか、何に接続しているかを尋ねた場合は、
ref=を使用します。 - Search式は、クエリを明らかに改善する場合にのみ使用します(例:
t:prefab ref={t:texture}、t:scene ref={t:prefab})。 - 「選択中/現在の」という表現については、チャットコンテキストに既知の選択アセット名またはパスが存在する場合のみそれを使用し、そうでない場合はそれを尋ねてください。
- 「Rigidbodyはどこで使われている?」のような広範な関係リクエストには、まずシンプルなキーワードまたはコンポーネントクエリを使用し、ユーザーが徹底的なコード/プロパティ分析を必要とする場合は、スクリプト監査は別途必要であると述べてください。
- 検索と修復作業が混在するリクエストの場合、最初にクエリを生成して開き、ユーザーが別のフォローアップアクションを明示的に確認しない限り、結果を変更しないでください。
- 不確かなリクエストに対して、サポートされていないフィルタをでっち上げないでください。リクエストをUnity Search構文で確実に表現できない場合は、最も近い安全なクエリを開き、その制限を明記してください。
Unity Searchを開く
EditorでC#を実行するのは、Searchウィンドウを開くためだけです。これはEditor UIアクションであり、プロジェクトアセットやシーンコンテンツを変更してはなりません。
Searchを開くとき:
- 生成されたC#文字列内でクエリを安全にエスケープします。
- このv1スキルでは、アセットプロバイダーとシーンプロバイダーを優先します。
- プロバイダーが利用できない場合は、アクティブなプロバイダーにフォールバックします。
- 開かれたクエリをログに記録します。
- コマンドが失敗した場合、Searchが開かれたと決して主張しないでください。
応答フォーマット
ユーザー向けの応答は簡潔に保ちます:
クエリ: `t:material`
Unity Searchをそのクエリで開きました。
Searchを開かない場合:
クエリ: `t:prefab ref={t:texture}`
これをUnity Searchに貼り付けてください。
リクエストがあいまいでも検索可能な場合は、最も可能性の高いクエリを選択し、その前提について言及します。検索対象が推測できない場合(例:「あれを探して」、アセット、シーン、タイプ、名前、コンテキストなし)にのみ、質問をしてください。
検証チェックリスト
成功を報告する前に:
- 生成されたクエリがユーザーに表示されている
- クエリがアセット、シーンオブジェクト、またはその両方を対象としている
- ユーザーがオプトアウトしなかった場合にのみSearchが開かれた
- フォールバックや不確実性があればそれが明確に述べられている
- アセット、シーン、パッケージ、プロジェクト設定、検索結果が一切変更されていない