unity-asset について
unity-asset は、Unity プロジェクトのアセットを管理するスキル群です。アセット整理やファイルのインポート、AssetDatabase 情報の検索に対応し、複数アセットの一括操作も行えます。
主な機能
- 01名前、種類、ラベルでアセットを検索
- 02アセット情報とラベルを取得
- 03アセットのインポート、移動、複製、削除
- 04フォルダー作成と AssetDatabase の更新
- 05インポート、移動、削除、再インポートの一括処理
活用シーン
- 01種類やラベルでプロジェクト内のファイルを検索
- 02アセットのフォルダーを整理してファイルを一括移動
- 03外部ファイルを Unity プロジェクトにインポート
- 04外部ファイル変更後にアセットを更新または再インポート
MCP 対応
README には MCP との関係について記載がありません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-assetインストール後、Claude Code で/unity-assetを入力して読み込まれたか確認します。
詳細
このモジュールのスキルを呼び出す前に: 名前や説明から推測したパラメーターでスキルを呼び出そうとしている場合は、いったん停止し、まずこのファイルを読むか、
GET /skills/recommend?includeSchema=trueでスキーマを取得してください。recommend/schema からすでにパラメーター定義を取得している場合は、そのまま dryRun に進めます。
トリガー
- プロジェクトアセットの整理
- ファイルのインポートまたは移動
- アセットメタデータの照会
- AssetDatabase 操作のスクリプト化
- プロジェクトアセットの整理、ファイルのインポートまたは移動、アセットメタデータの照会、AssetDatabase 操作のスクリプト化
Unity アセットスキル
バッチ優先:2 つ以上のアセットを操作する場合は、
*_batchスキルを使用してください。
動作モード
- Approval:このモジュールは Mixed です。
asset_find/asset_get_info/asset_get_labelsはSkillMode.SemiAutoに設定されており、直接実行できます。書き込み系スキル(asset_move/asset_move_batch/asset_duplicate/asset_create_folder/asset_create_folder_batch/asset_refresh/asset_reimport*/asset_set_labels)はデフォルトのSkillMode.FullAutoで実行され、grant が必要です。 - Auto / Bypass:FullAuto は直接実行されます。
- NeverInSemi を含む高リスクスキル:
asset_import/asset_import_batch(RiskLevel = "high"に設定 — プロジェクトに書き込みます)、asset_delete/asset_delete_batch(Operation.Delete)。これらは Approval/Auto ではMODE_FORBIDDENを返し、Bypass または Allowlist への該当時のみ呼び出せます。
禁止事項(よくある誤った推測):
asset_createは存在しません →asset_create_folder(フォルダー)、material_create(マテリアル)、script_create(スクリプト)を使用してくださいasset_renameは存在しません → 新しいパスを指定してasset_moveを使用してくださいasset_searchは存在しません → searchFilter 構文(例:t:Texture2D player)を使ってasset_findを使用してくださいasset_copyは存在しません →asset_duplicateを使用してください
ルーティング:
- テクスチャ/モデル/オーディオのインポート設定には
importerモジュールを使用してください(SkillMode.FullAuto) - マテリアルの作成には
materialモジュールを使用してください(SkillMode.FullAuto) - スクリプトの作成には
scriptモジュールを使用してください
スキルの概要
| 単一オブジェクト | バッチ版 | バッチ版を使用する場合 |
|---|---|---|
asset_import | asset_import_batch | 2 つ以上のファイルをインポートする場合 |
asset_delete | asset_delete_batch | 2 つ以上のアセットを削除する場合 |
asset_move | asset_move_batch | 2 つ以上のアセットを移動する場合 |
asset_create_folder | asset_create_folder_batch | 2 つ以上のフォルダーを作成する場合 |
バッチ版は不要:
asset_duplicate- 単一のアセットを複製しますasset_find- アセットを検索します(リストを返します)asset_refresh- AssetDatabase を更新しますasset_get_info- アセット情報を取得しますasset_reimport- アセットを強制的に再インポートしますasset_reimport_batch- 複数のアセットを再インポートします
スキル
asset_import
外部ファイルをプロジェクトにインポートします。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
sourcePath | string | はい | 外部ファイルのパス |
destinationPath | string | はい | プロジェクト内の保存先 |
asset_import_batch
複数の外部ファイルをインポートします。
| パラメーター | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
items | json string | はい | - | アイテムごとのオブジェクトを含む JSON 配列(下記の例を参照) |
現在、items にはネイティブ配列ではなく、JSON 文字列を指定する必要があります。
戻り値:{success, totalItems, successCount, failCount, results: [{target, success, serverAvailability?}]}:target はアイテムの destinationPath です。serverAvailability は、スクリプトドメインのアセットが書き込まれた場合、または Unity がコンパイル中の場合にのみ表示されます。
import json
unity_skills.call_skill("asset_import_batch", items=json.dumps([
{"sourcePath": "C:/Downloads/tex1.png", "destinationPath": "Assets/Textures/tex1.png"},
{"sourcePath": "C:/Downloads/tex2.png", "destinationPath": "Assets/Textures/tex2.png"}
]))
asset_delete
プロジェクトからアセットを削除します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
assetPath | string | はい | 削除するアセットのパス |
asset_delete_batch
複数のアセットを削除します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | 項目ごとのオブジェクトを含む JSON 配列(以下の例を参照) |
現在、items にはネイティブ配列ではなく、JSON 文字列を指定する必要があります。
戻り値:{success, totalItems, successCount, failCount, results: [{target, success, serverAvailability?}]}:target は削除された path です。serverAvailability は、スクリプトドメインのアセットが削除された場合、または Unity がコンパイル中の場合にのみ表示されます。
import json
unity_skills.call_skill("asset_delete_batch", items=json.dumps([
{"path": "Assets/Textures/old1.png"},
{"path": "Assets/Textures/old2.png"}
]))
asset_move
アセットを移動または名前変更します。
| Parameter | Type | Required | Description |
|---|---|---|---|
sourcePath | string | Yes | 現在のアセットパス |
destinationPath | string | Yes | 新しいパス/名前 |
asset_move_batch
複数のアセットを移動します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | 項目ごとのオブジェクトを含む JSON 配列(以下の例を参照) |
現在、items にはネイティブ配列ではなく、JSON 文字列を指定する必要があります。
戻り値:{success, totalItems, successCount, failCount, results: [{target, success, from, to, serverAvailability?}]}:target は項目の sourcePath です。serverAvailability は、スクリプトドメインのアセットが移動された場合、または Unity がコンパイル中の場合にのみ表示されます。
import json
unity_skills.call_skill("asset_move_batch", items=json.dumps([
{"sourcePath": "Assets/Old/mat1.mat", "destinationPath": "Assets/New/mat1.mat"},
{"sourcePath": "Assets/Old/mat2.mat", "destinationPath": "Assets/New/mat2.mat"}
]))
asset_duplicate
アセットを複製します。
| Parameter | Type | Required | Description |
|---|---|---|---|
assetPath | string | Yes | 複製するアセット |
asset_find
検索フィルターでアセットを検索します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
searchFilter | string | Yes | - | 検索クエリ |
limit | int | No | 50 | 返す結果の最大数 |
検索フィルターの構文:
| Filter | Example | Description |
|---|---|---|
t:Type | t:Texture2D | 種類で検索 |
l:Label | l:Architecture | ラベルで検索 |
name | player | 名前で検索 |
| Combined | t:Material player | 複数のフィルター |
戻り値:{count, totalFound, assets: [{path, name, type}]}
asset_create_folder
プロジェクト内にフォルダーを作成します。
| Parameter | Type | Required | Description |
|---|---|---|---|
folderPath | string | Yes | フォルダーのフルパス |
asset_create_folder_batch
複数のフォルダーを作成します。
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
items | json string | Yes | - | 項目ごとのオブジェクトを含む JSON 配列(以下の例を参照) |
現在、items にはネイティブ配列ではなく、JSON 文字列を指定する必要があります。各項目の親フォルダーはあらかじめ存在している必要があるため、1 回の呼び出しで入れ子のフォルダーを作成する場合は、外側のフォルダーから順に指定してください。
戻り値:{success, totalItems, successCount, failCount, results: [{target, success, path, guid}]}
import json
unity_skills.call_skill("asset_create_folder_batch", items=json.dumps([
{"folderPath": "Assets/Art"},
{"folderPath": "Assets/Art/Textures"}
]))
asset_refresh
外部変更(独自のファイルツールで書き込んだファイルや削除したファイルなど)後に、AssetDatabase を更新します。
パラメーターはありません。
戻り値:{success, message, compileTriggered}。更新によってスクリプトのコンパイルが開始された場合(.cs、.asmdef、.asmref、.rsp、または .dll が変更された場合)、compileTriggered は true となり、結果に status:"accepted"、jobId、waitUrl(/jobs/<jobId>?wait=90)、serverAvailability、および Unity からファイルが報告された場合は scriptChanges(パスを最大 20 件、残りは scriptChangesTruncated に件数を記録)が追加されます。compileTriggered:false の場合は、待機する必要はありません。
自分で .cs を書き込みましたか?asset_refresh を呼び出してから、waitUrl に GET リクエストを送信し、ドメインの再読み込み中も同じ URL を再試行してください:curl -s --retry 20 --retry-connrefused --retry-all-errors --retry-delay 2 "http://localhost:<port>/jobs/<jobId>?wait=90"。compilation.compiled:true、success:true、domainLoaded:true を伴う status:"completed" は、新しい型を使用できる状態であることを示します。"failed" には、resultData.compilation.errors にコンパイルエラーが列挙されます。診断情報はプロジェクト全体を対象とします(compilation.scope:"project")。compilation.compiled:false は、更新後にコンパイルが行われなかったことを意味します。
asset_get_info
アセットの情報を取得します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
assetPath | 文字列 | はい | アセットのパス |
asset_reimport
アセットを強制的に再インポートします。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
assetPath | 文字列 | はい | 再インポートするアセットのパス |
asset_reimport_batch
パターンに一致する複数のアセットを再インポートします。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
searchFilter | 文字列 | いいえ | AssetDatabase の検索フィルター(デフォルトは *) |
folder | 文字列 | いいえ | 検索するフォルダーのルート(デフォルトは Assets) |
limit | 整数 | いいえ | 再インポートするアセットの最大数(デフォルトは 100) |
asset_set_labels
アセットにラベルを設定します(既存のラベルは上書きされます)。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
assetPath | 文字列 | はい | アセットのパス |
labels | 文字列 | はい | カンマ区切りのラベル(例:"ui,icon,hud")。空の項目は削除されます |
戻り値:{success, assetPath, labels: [...]}
asset_get_labels
アセットに現在設定されているラベルを取得します。
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
assetPath | 文字列 | はい | アセットのパス |
戻り値:{success, assetPath, labels: [...]}
最小限の例
import unity_skills
# GOOD: 1 API call instead of 4
unity_skills.call_skill("asset_move_batch", items=[
{"sourcePath": "Assets/tex1.png", "destinationPath": "Assets/Textures/tex1.png"},
{"sourcePath": "Assets/tex2.png", "destinationPath": "Assets/Textures/tex2.png"},
{"sourcePath": "Assets/tex3.png", "destinationPath": "Assets/Textures/tex3.png"},
{"sourcePath": "Assets/tex4.png", "destinationPath": "Assets/Textures/tex4.png"}
])
ベストプラクティス
- アセットを用途に応じたフォルダーに整理する
- 一貫した命名規則を使用する
- 外部ファイルの変更後に更新する
- 効率化のために検索フィルターを使用する
- 一括削除操作の前にバックアップを取る
正確なシグネチャ
正確な名前、パラメーター、デフォルト値、戻り値は、このファイルではなく、GET /skills/schema または unity_skills.get_skill_schema() で定義されています。
よくあるエラー
トランスポートレベルのすべてのコード(COMPILING/RATE_LIMIT など)→ ../../references/protocol-error-codes.md
| エラー | 発生条件 | 対処方法 |
|---|---|---|
TARGET_NOT_FOUND | ソースファイル、アセットのパス、または対象のアセットが見つかりませんでした。 | asset_find / asset_get_info でパスを確認し、ファイルが存在することを確かめてから、プロジェクトからの相対パスを正確に指定して再試行してください。 |
MISSING_PARAM | 必須のパスパラメーターが空か、指定されていません(パスの検証で検出されます)。 | 必須の assetPath、sourcePath、destinationPath、または folderPath を指定してください。 |
SEMANTIC_INVALID | パスが無効です(例:.. を含む、Assets/ / Packages/ で始まらない、またはフォルダーがすでに存在する)。 | Assets/ または Packages/ 配下の正規化されたプロジェクト相対パスを使用してください。フォルダーがすでに存在する場合は、別の名前を選んでください。 |
SKILL_ERROR | Failed to delete asset、AssetDatabase.MoveAsset がエラーを返した、フォルダーの作成に失敗したなど、低レベルの AssetDatabase またはファイルシステム操作が失敗しました。 | メッセージに記載された問題(例:ロックされたファイルを閉じる、親パスを修正する)を解決してから再試行してください。 |