プロジェクトごとの個別設定やルールを定義し、エージェントの動作をカスタマイズする機能を設計します。これにより、プロジェクト固有の要件に対応したエージェント動作が可能になります。
- プロジェクトルートにルールファイルを配置できること
- ルールファイルによりシステムプロンプトを拡張できること
- ルールファイルにより使用可能なツールを制限できること
- ルールファイルにより操作対象ファイルを制限できること
プロジェクトルートに以下のいずれかのファイルを配置します:
- .coding-agent-rules.md: Markdown形式のルールファイル
- .coding-agent-rules.yaml: YAML形式のルールファイル
- .github/AGENTS.md: GitHub形式のエージェントルール(GitHub互換)
複数のファイルが存在する場合の優先順位:
- .coding-agent-rules.yaml
- .coding-agent-rules.md
- .github/AGENTS.md
YAML形式のルールファイルでは以下の項目を設定できます:
システムプロンプトに追加するテキストです。LLMへの追加指示を記述します。
使用を許可するツールのリストです。指定しない場合はすべてのツールが使用可能です。
使用を禁止するツールのリストです。allowed_toolsより優先されます。
操作対象ファイルのパターンを指定します。
- include: 操作を許可するファイルパターン(glob形式)
- exclude: 操作を禁止するファイルパターン(glob形式)
Markdown形式のルールファイルは、内容全体がシステムプロンプト拡張として扱われます。特定のセクション見出しを使用することで、追加の設定が可能です。
- Allowed Tools: 許可ツールのリスト
- Denied Tools: 禁止ツールのリスト
- File Patterns: ファイルパターン設定
flowchart TD
A[タスク開始] --> B[リポジトリ情報取得]
B --> C{ルールファイル存在?}
C -->|Yes| D[ルールファイル読み込み]
C -->|No| E[デフォルト設定使用]
D --> F[ルール解析]
F --> G[設定適用]
E --> G
G --> H[タスク処理開始]
flowchart TD
A[ツール呼び出し要求] --> B{allowed_tools設定?}
B -->|Yes| C{ツールが許可リストに?}
B -->|No| D{denied_tools設定?}
C -->|Yes| D
C -->|No| E[ツール呼び出し拒否]
D -->|Yes| F{ツールが禁止リストに?}
D -->|No| G[ツール呼び出し実行]
F -->|Yes| E
F -->|No| G
ルールファイルのsystem_prompt_extension(YAML)またはMarkdown本文がシステムプロンプトに追加されます。
基本システムプロンプトの後、MCPツール説明の前に追加されます。
- コーディング規約
- 使用言語の制限
- テスト要件
- ドキュメント要件
指定した場合、リストに含まれるツールのみが使用可能になります。
指定した場合、リストに含まれるツールの使用が禁止されます。allowed_toolsより優先されます。
ツール名は「MCPサーバー名/ツール名」形式で指定します。
操作を許可するファイルパターンをglob形式で指定します。
操作を禁止するファイルパターンをglob形式で指定します。includeより優先されます。
ファイル操作ツール(create_or_update_file、push_files等)の実行時にパターンチェックを行います。
- ルールファイルの検索と読み込み
- ルールの解析
- 設定の適用
- load_rules: ルールファイルを読み込み、解析結果を返す
- get_system_prompt_extension: システムプロンプト拡張を取得
- is_tool_allowed: 指定ツールが許可されているかを判定
- is_file_allowed: 指定ファイルが操作可能かを判定
project_agent_rulesセクションで以下を設定します:
- enabled: プロジェクトルール機能の有効/無効(デフォルト: true)
- rule_files: 検索するルールファイル名のリスト
- default_rules: デフォルトルール(ルールファイルがない場合に使用)
- ファイル不存在: デフォルト設定を使用
- パースエラー: ログ出力後、デフォルト設定を使用
- ツール制限違反: ツール呼び出しを拒否し、LLMにエラーを通知
- ファイルパターン違反: ファイル操作を拒否し、LLMにエラーを通知
文書バージョン: 2.0
最終更新日: 2024-11-28
ステータス: 実装済み