mcpField
G
generate-editor-search-query

generate-editor-search-query

github.com/unity-technologies開発1.2k3.7k 回インストール1 日前に更新
リポジトリ

generate-editor-search-query について

Unity プロジェクトのアセットやシーンオブジェクトに関する自然文の検索依頼を Unity Search クエリに変換し、必要に応じて検索ウィンドウを開くスキルです。クエリ文字列のみを返す場合や、対象が不明な場合の扱いも定めています。

主な機能

  1. 01自然文から検索クエリを生成
  2. 02アセットとシーンオブジェクトの検索
  3. 03必要に応じて Unity Search を起動
  4. 04クエリ文字列のみの出力
  5. 05検索範囲と安全ルールの規定

活用シーン

  1. 01マテリアル、プレハブ、シーンの検索
  2. 02シーンオブジェクトやコンポーネントの特定
  3. 03フォルダー、ラベル、参照による検索

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/unity-technologies/skills --skill generate-editor-search-query

インストール後、Claude Code で/generate-editor-search-queryを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

SECURITY.md
references/
open-search-window.md
query-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」などのリクエストを受けた場合:

  1. リクエストが主にプロジェクトアセット、シーンオブジェクト、またはその両方のどれを対象としているか判断します。
  2. 簡潔な Unity Search クエリを 1 つ作成します。
  3. Search を開く前、または開く際に、クエリを提示します。
  4. ユーザーがクエリテキストのみを明示的に求めていない限り、Editor 側のスニペットを実行して Unity Search を開きます。
  5. Search を開けない場合は、クエリを提示し、Unity Search に手動で貼り付けるよう伝えます。

ユーザーが「do not open Search」「query only」「what query should I use」「just give me the query」などを指定した場合は、Search を開かないでください。

ユーザーが一般的な説明、プロジェクトの概要、フォルダー構成の要約、アーキテクチャの解説、ゲームプレイシステムの要約、またはプログラミングに関する「how do I」の回答を求めている場合は、プロンプトで 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 を読んでください。

公式の英語版リファレンス:

eval に渡す C# コード

eval がコンパイルするのはファイルではなくステートメントブロックです。このため、次の 2 つはいずれもコンパイルエラーになります。

  • using ディレクティブは使用できません。 コンパイラーは using UnityEditor; をリソース破棄ステートメントとして読み取り、拒否します(CS0210)。
  • 型は完全修飾する必要があります。 SearchService だけでは解決できず(CS0246)、Object だけでは object と曖昧になります(CS0104)。

前提条件(CLI のインストール、Editor の接続確認、プロジェクトへの com.unity.pipeline パッケージの追加、コマンドカタログの確認)は unity-cli スキルが担当します。特に 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 を開くときは、次の手順に従ってください。

  1. クエリを UTF-8 で Base64 エンコードし、生成する C# 文字列には Base64 テキストのみを埋め込んでください。スニペット内でデコードして文字列に戻します。
  2. この v1 スキルでは、アセットおよびシーンのプロバイダーを優先してください。
  3. プロバイダーが利用できない場合は、アクティブなプロバイダーにフォールバックしてください。
  4. 開いたクエリをログに記録してください。
  5. コマンドが失敗した場合は、Search を開いたと主張してはいけません。

応答形式

ユーザーへの応答は簡潔にしてください。

Query: `t:material`
Opened Unity Search with that query.

Search を開かない場合:

Query: `t:prefab ref={t:texture}`
Paste this into Unity Search.

リクエストが曖昧でも検索可能な場合は、最も可能性の高いクエリを選び、その前提を伝えてください。「対象を探して」のように、アセット、シーン、タイプ、名前、コンテキストのいずれもなく、検索対象を推測できない場合に限り、質問してください。

検証チェックリスト

成功を報告する前に、次の点を確認してください。

  • 生成したクエリをユーザーに提示している
  • クエリの対象がアセット、シーンオブジェクト、またはその両方である
  • ユーザーが Search を開かないよう指定していない場合に限り、Search を開いている
  • フォールバックや不確実な点があれば、明確に伝えている
  • アセット、シーン、パッケージ、プロジェクト設定、検索結果を変更していない

コメント