Imported from YuukiReiya/YukimaruGames.Unity-Terminal (
.opencode/AGENTS.md). Install upstream withnpx skills add YuukiReiya/YukimaruGames.Unity-Terminal --skill .opencode. Copyright stays with the author.
🛠️ OpenCodeエージェント向けガイドライン (AGENTS.md)
目的: 本レポジトリの利用にあたり、開発・調査・デバッグ作業を行うエージェントが陥りやすい間違いや、特別な知識として保持すべき最も重要な工程、規約、コマンド手順をまとめた資料です。
🚨 最優先システムルール (Absolute Rules)
エージェントは、いかなる場合も以下のメタ指示を最優先して思考・行動してください。
-
日本語ベースの対話と技術用語の維持 (Language Protocol):
- 思考プロセス(Thought)、ユーザーへの提案、解説、質問への回答など、**対話のベースとなる自然言語は必ず「日本語」**で記述してください。
- ただし、開発・コーディングにおける専門用語やドメイン用語(例:
Interface,Generic,Bootstrapper,PropertyDrawer,Delegate,Eventなど)や、C#の型名・API名は、無理に日本語に翻訳せず、そのままの英語(アルファベット)表記を維持してください。不自然な直訳(例: 引数を「ひきすう」ではなくParameter/Argumentと呼ぶなど)は避けてください。
-
勝手なフォーマット変更の禁止 (Preserve Metadata):
- 既存のスクリプトファイルや設定ファイルを編集する際、ファイル冒頭のヘッダー、ライセンス表記、メタデータのフォーマット(読み込みエラーの原因になるもの)をエージェント独自の判断で削除・変更しないでください。
-
ハルシネーションの防止 (Strict Fact-Checking):
- Gitの操作(ブランチ作成やPull Requestの作成など)を行う際、実際にはコマンドが失敗している、あるいはまだ実行していないにもかかわらず、「作成が完了しました」といった虚偽の報告(ハルシネーション)を絶対にしないでください。 必ず実行結果のログを確認し、事実のみを報告してください。
✨ アーキテクチャ概要
このプロジェクトは、Unityエディタ上で動作する「ランタイムターミナル」システムです。コンポーネント間の依存関係は以下の通り、特に「コマンド登録」の仕組みが重要です。
主要コンポーネントと役割:
TerminalBootstrapper(Unity Component):- エディタ上での初期設定(フォント、色、キーバインドなど)を担当します。
- コマンドシステムの起動点であり、他のコンポーネントと連携するAPI公開点です。
MyCommands(Static Class):[TerminalCommand]属性を持つpublic staticメソッドが、最もシンプルなコマンド登録方法です。- 【注意】 ここで登録されたコマンドは、最低限の依存関係と基本的な使い方を理解する上で最も参照すべき場所の一つです。
⚙️ 重要な開発ワークフロー・手順 (High-Signal Facts)
1. コマンドの登録 (Command Registration)
コマンドの登録方法は2種類があり、区別して扱う必要があります。
-
✅ 静的メソッド (Static Method):
- 用途: シンプルで、インスタンスの依存関係が不要なコマンド。
- 手順: 任意のクラスに
public static void MyCommand(param1, param2...)を定義し、[TerminalCommand("コマンド名", Help = "説明")]属性を付与するだけで自動登録されます。 - ポイント: この属性が付与されているメソッドを優先して調査してください。
-
✅ インスタンスメソッド (Instance Method):
- 用途: データや状態を持つ特定のオブジェクト(例:プレイヤー、ゲームマネージャー)に紐づくコマンド。
- 手順:
TerminalBootstrapperなどのパブリックAPIを通じて、System.Action<T>形式のデリゲートを取得します。(MyPlayerクラスのStartメソッド参照)CommandMetaクラスでメタデータ(コマンド名、説明、優先度など)を定義します。Terminal.RegisterCommand(delegate, meta)の形で明示的に登録します。
- 重要: この手順は手動での知識が必要であり、エージェントが自動で推測すべきではありません。
2. コマンドの型検証 (Type Validation)
- 規約: 引数は必ず型安全性を考慮します。
int,float,bool,Vector3など、C#のネイティブ型に自動でキャスト・検証されることを前提としてコーディングしてください。 - 調査ポイント: どのような型(
Vector3やカスタム構造体)が適切か、呼び出し側から逆算して検証するのが最も効率的です。
3. 開発・検証の必須手順 (Mandatory Steps)
- [MUST] インストール方法:
- Unity Package Managerを開く。
+ボタンからAdd package from git URL...を選択。https://github.com/YuukiReiya/YukimaruGames.Unity-Terminal.git?path=Assets/YukimaruGames/Terminalを入力し、追加する。
- [Test] 使用前確認:
- 最低限、単体テストや実行時のテストロジックを走らせることを考慮し、
[TerminalCommand]属性を持つ静的メソッドをメインの確認対象としてください。
- 最低限、単体テストや実行時のテストロジックを走らせることを考慮し、
💡 その他(Gotchas)
- 入力システム: Unityの古いInput Managerと新しいInput Systemの両方をサポートしているため、I/O処理や入力イベントの取得に関するコードは、両方の機構を考慮した記述が必要です。
参照ドキュメント: README.md
