# Agent Configuration
## 基本方針
- 回答・説明・進捗報告は必ず日本語で行うこと。
- 実装・設計・調査は必ず Task ツールを使って進めること。
- subagent は常に親モデルを継承すること。
- Task ツール呼び出し時に `model` パラメータを指定してはならない。
- 不明点がある場合は、推測で進めず AskUserQuestion を使って質問すること。
- 既存の期待動作を壊さないことを最優先すること。
## Plan モード時のルール
Plan モードでは、実装前に必ず以下を明示すること。
- 作業目的
- 影響範囲
- 使用する subagent
- 各 subagent に担当させる内容
- 修正予定ファイル
- 確認・テスト方針
- 不明点がある場合は AskUserQuestion で確認すること
設計作業は必ず subagent に Task として依頼すること。
## 開発時のルール
開発作業は必ず subagent に Task として依頼すること。
Task 作成時は以下を明確にすること。
- 目的
- 対象ファイル
- 変更方針
- 期待される挙動
- 既存挙動への影響確認
- 実施すべきテストまたは確認方法
subagent を使う際、`model` パラメータは指定しないこと。
## 実装方針
実装は、目的を満たすために必要な最小限の機能に留めること。
- 要求されていない機能を追加しないこと。
- 将来使うかもしれないという理由だけで実装を増やさないこと。
- 既存の設計や実装方針に沿って、変更範囲を最小限にすること。
- 過剰な抽象化、過剰な汎用化、不要なリファクタリングを避けること。
- ただし、可読性・保守性・テスト容易性が向上する場合は適切に関数化すること。
関数化する際は、以下を意識すること。
- 1つの関数は1つの責務に集中させること。
- 複雑な条件分岐や重複処理は関数として切り出すこと。
- 関数名から処理内容が分かるようにすること。
- 呼び出し元の可読性が下がるような過度な分割は避けること。
- 既存の関数やユーティリティで代用できる場合は新規作成しないこと。
## 設定ファイル
環境依存の値・しきい値・URL・機能フラグなどは、ソースコードに直接書かず **別ファイルの設定** として管理すること。
- 定数や設定値をプログラム内にハードコードしないこと。
- プロジェクトの慣習に合わせ、設定用ファイル(例: `.env`、`config.yaml`、`settings.toml`、フレームワークの設定ディレクトリ)を作成し、そこにまとめること。
- 既存の設定ファイルや読み込み処理がある場合は、それを拡張すること。同目的の設定ファイルを重複して作らないこと。
- シークレット(API キー、トークン、パスワード)はリポジトリにコミットせず、環境変数やローカル専用ファイル(`.env.local` 等)で扱うこと。
- 新規に設定ファイルを追加する場合は、配置場所・読み込み方法・必須項目をコード変更とあわせて明示すること。
## Web 検索のルール
以下の場合は web 検索を行うこと。
- 技術的に詰まった場合
- 原因不明のエラーが解決できない場合
- 使用しているライブラリ、API、フレームワークの仕様に不確実性がある場合
- 最新の仕様や既知の不具合を確認する必要がある場合
検索時は、可能な限り以下を優先すること。
- 公式ドキュメント
- 公式リポジトリ
- Issue / Discussion
- 信頼できる技術記事
検索結果を利用した場合は、何を根拠に判断したかを簡潔に説明すること。
## 修正前の確認
ファイルを修正する前に、必ず以下を提示すること。
- 現在のディレクトリ構造
- 修正対象ファイル
- 各ファイルを修正する理由
例:
```text
.
├── src/
│ ├── components/
│ │ └── Button.tsx # 表示ロジックの修正対象
│ └── utils/
│ └── format.ts # 既存処理への影響確認対象
└── package.json # テストコマンド確認対象