unity-script について
unity-script は、Unity の C# スクリプトを管理するスキル群です。コードの作成・確認・リファクタリングに使え、変更後のコンパイル診断も取得できます。
主な機能
- 01単体または複数のスクリプト作成
- 02スクリプト内容の置換・追記
- 03スクリプトの名前変更・移動・削除
- 04スクリプトの読み取りと内容検索
- 05コンパイル結果の取得
活用シーン
- 01Unity プロジェクトへのスクリプト追加
- 02複数スクリプトにまたがるコード検索
- 03スクリプト内容やファイル配置の変更
- 04エラーと発生箇所の確認
MCP 対応
MCP クライアントからこれらのスキルを呼び出し、Unity プロジェクトの C# スクリプトを読み書きし、コンパイル診断を取得できます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ besty0728/ unity-skills --skill unity-scriptインストール後、Claude Code で/unity-scriptを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
reference/script_append.mdscript_create_batch.mdscript_create.mdscript_delete.mdscript_find_in_file.mdscript_get_compile_feedback.mdscript_get_info.mdscript_list.mdscript_move.mdscript_read.mdscript_rename.mdscript_replace.md詳細
トリガー
- C# コードの作成または編集
- スクリプト全体の検索
- ファイル構成のリファクタリング
- コンパイルエラーの確認
- C# コードの作成または編集、スクリプト全体の検索、ファイル構成のリファクタリング、コンパイルエラーの確認
Unity スクリプトのスキル
C# スクリプトの作成、編集、移動、調査を行い、コンパイル結果を取得します。パラメーターはスキーマ(includeSchema=true または /skills/schema?names= を推奨)を参照してください。スキーマには分かりにくいパラメーターが記載されています。スキル名から推測してはいけません。実行と dryRun のルールについては、ルートの SKILL.md を参照してください。
動作モード
読み取り専用の SemiAuto スキルは、すべてのモードで直接実行されます:script_read、script_list、script_find_in_file、script_get_info、script_get_compile_feedback。書き込みを行う 7 つのツール(script_create、script_create_batch、script_replace、script_append、script_rename、script_move、script_delete)はすべて MayTriggerReload + RiskLevel:"high" です(.cs ファイルを書き込むとドメインがリロードされ、script_delete は Delete でもあります)。そのため、これらは NeverInSemi です。Approval と Auto のどちらでも MODE_FORBIDDEN が返され、実行できるのは Bypass または Allowlist に該当する場合のみです。これらのツールに対する許可を要求してはいけません → 動作モード。
コンパイルとリロード
- 書き込みを行うと、毎回すぐに
{success, status: "accepted", path, jobId, waitUrl, serverAvailability}が返されます。その後コンパイルが行われ、ドメインのリロード中はサーバーに一時的に接続できなくなります。 - コンパイル結果は 1 回の呼び出しで取得できます。返された
waitUrl(/jobs/<jobId>?wait=90)に対して GET を実行します。例:curl -s --retry 20 --retry-connrefused --retry-all-errors --retry-delay 2 "http://localhost:<port>/jobs/<jobId>?wait=90"。コンパイルが完了すると、ジョブのstatusはcompletedになります。コンパイルエラーがある場合はfailedとなり、診断情報はresultData.compilation(isCompiling、hasErrors、errorCount、errors: [{type, message, file, line}])に含まれます。リロード中は接続が拒否されたり、503が返されたりすることがあります。同じ URL を再度呼び出してください。waitTimedOut: trueの場合は、再び GET を実行してください。 script_get_compile_feedback(scriptPath)を呼び出すと、同じ診断情報を必要に応じて取得できます。まずエラーを修正してください。クリーンなコンパイルが完了してからでないと、component_addは新しい MonoBehaviour を検出できません。checkCompile: falseを指定すると診断情報が省略されます。diagnosticLimitは診断情報の上限数を指定します(デフォルトは 20)。
共通ルール
scriptNameはファイル名とクラス名を指定し、.csとパス区切り文字は含めません。パス(folder、scriptPath、newFolder)はプロジェクト相対で、Assets/またはPackages/から始まります。フォルダーが存在しない場合は作成されます。既存のファイルが上書きされることはありません(Script already exists)。script_createでcontentを指定すると、その内容がそのまま書き込まれます(その場合、template/namespaceNameは無視され、警告が表示されます)。指定しない場合は、テンプレート(デフォルトはMonoBehaviour。ScriptableObject、Editor、EditorWindowも指定可能。後者 2 つのデフォルトの場所はAssets/Editor)が入力され、namespaceNameを指定した場合はその名前空間で囲まれます。これ以外の名前だけを指定すると拒否されます(validValuesに有効な 4 つの値が表示されます)。コードを含むテキストは、{CLASS}/{NAMESPACE}を置き換えるリテラルテンプレートとして扱われますが、カスタムクラスにはcontentを使用してください。MonoBehaviour または ScriptableObject がファイルに紐づくのは、クラス名がファイル名と一致する場合のみです。そのような型を宣言しないcontentを指定すると、警告が表示されます。- 新しいスクリプトを 2 つ以上作成する場合は
script_create_batchを使用してください。N 回ではなく、ドメインのリロードが 1 回で済みます。
スキルの概要
- 書き込み:
script_create、script_create_batch、script_replace(検索/置換、プレーンテキストまたは正規表現)、script_append(行を挿入)、script_rename(ファイルのみ。内部のクラス名は変更されません)、script_move(移動先フォルダーを作成)、script_delete。 - 読み取り:
script_read、script_list、script_find_in_file(プレーンテキストまたは正規表現、行単位)、script_get_info(クラス、基底クラス、パブリックメンバー)、script_get_compile_feedback。
スキルごとの表と戻り値の形式:reference/<skill_name>.md — スキーマにパラメーターが記載されているため、参照が必要になることはほとんどありません。
使用しないでください(よくある誤った想定):
script_edit/script_updateは存在しません → 検索と置換にはscript_replaceを使用しますscript_writeは存在しません → 新規ファイルにはscript_create、既存ファイルの変更にはscript_replaceを使用します
その他:コンパイル済みスクリプトの API 分析には script_analyze(認識)を使用します。
正確なシグネチャ
名前、パラメーター、デフォルト値、必須フラグは、このファイルではなく GET /skills/schema?category=Script(または ?names=a,b)から取得してください。
よくあるエラー
| エラー | 発生条件 → 対処 |
|---|---|
MISSING_PARAM | 例:scriptName、pattern、find、newName が不足 → 指定してください。エラー(または dryRun)にすべてのパラメーターが表示されます。 |
SEMANTIC_INVALID | scriptName/newName にパス区切り文字が含まれる、Assets//Packages/ の外部にあるパス、またはスクリプトがすでに存在する → 名前またはパスを修正するか、既存のファイルを名前変更または移動してください。 |
TARGET_NOT_FOUND | スクリプト、MonoScript、またはフォルダーが見つからない → script_list/asset_find で正しい scriptPath を探してください。 |
SKILL_ERROR | ファイルシステムまたは AssetDatabase での移動/名前変更/削除に失敗 → メッセージを確認して問題を解決し、再試行してください。 |
トランスポートコード(COMPILING、RATE_LIMIT など)→ エラーコード。