|
| 1 | +# Agent Engine Specifications |
| 2 | + |
| 3 | +toban-cli がサポートする各エージェントエンジンの仕様と、プロジェクト設定の読み込み規約をまとめる。 |
| 4 | + |
| 5 | +## エンジン一覧 |
| 6 | + |
| 7 | +| Engine | CLI Command | Headless Flag | Auto-Approve Flag | Status | |
| 8 | +|--------|------------|---------------|-------------------|--------| |
| 9 | +| claude | `claude` | `--print` | `--dangerously-skip-permissions` | Production | |
| 10 | +| gemini | `gemini` | `-p` | `-y` (yolo) | Verified | |
| 11 | +| codex | `codex` | `--quiet` | N/A | Untested | |
| 12 | +| mock | `bash -c <script>` | N/A | N/A | E2E Testing | |
| 13 | + |
| 14 | +--- |
| 15 | + |
| 16 | +## Claude Code |
| 17 | + |
| 18 | +### プロジェクト設定の読み込み |
| 19 | + |
| 20 | +| ファイル/ディレクトリ | 場所 | 用途 | `--print`で読まれるか | |
| 21 | +|---|---|---|---| |
| 22 | +| `CLAUDE.md` | リポルート | プロジェクト指示書(コーディング規約、ルール等) | **Yes** | |
| 23 | +| `.claude/settings.json` | リポルート | プロジェクト設定(MCP servers, permissions等) | Yes | |
| 24 | +| `.claude/commands/` | リポルート | カスタムスラッシュコマンド | Yes | |
| 25 | +| `~/.claude/CLAUDE.md` | ユーザーホーム | グローバル指示書(全プロジェクト共通) | Yes | |
| 26 | +| `~/.claude/settings.json` | ユーザーホーム | ユーザー設定 | Yes | |
| 27 | +| `~/.claude/skills/` | ユーザーホーム | インストール済みスキル | Yes | |
| 28 | +| `~/.claude/commands/` | ユーザーホーム | ユーザーレベルのカスタムコマンド | Yes | |
| 29 | + |
| 30 | +### toban-cli での起動コマンド |
| 31 | + |
| 32 | +``` |
| 33 | +claude --dangerously-skip-permissions --print <prompt> |
| 34 | +``` |
| 35 | + |
| 36 | +- `--print`: 非対話モード。結果を stdout に出力して終了 |
| 37 | +- `--dangerously-skip-permissions`: ツール実行の確認をスキップ |
| 38 | +- CWD の `CLAUDE.md` が自動読み込みされる |
| 39 | +- `CLAUDECODE` 環境変数を unset してネストセッション検出を回避 |
| 40 | + |
| 41 | +### 追加フラグ(必要に応じて利用可能) |
| 42 | + |
| 43 | +| フラグ | 用途 | |
| 44 | +|---|---| |
| 45 | +| `--append-system-prompt <prompt>` | デフォルトシステムプロンプトに追記 | |
| 46 | +| `--system-prompt <prompt>` | システムプロンプトを完全に上書き | |
| 47 | +| `--setting-sources <sources>` | 読み込む設定ソースを指定(`user,project,local`) | |
| 48 | +| `--settings <file-or-json>` | 追加設定ファイルを指定 | |
| 49 | +| `--agent <agent>` | 使用するエージェント定義を指定 | |
| 50 | + |
| 51 | +### worktree での挙動 |
| 52 | + |
| 53 | +- git worktree にはリポの全ファイルがチェックアウトされる |
| 54 | +- `CLAUDE.md` と `.claude/` が git 管理下にあれば、worktree にも含まれる |
| 55 | +- `.gitignore` に含まれている場合は worktree に含まれない |
| 56 | + |
| 57 | +--- |
| 58 | + |
| 59 | +## Gemini CLI |
| 60 | + |
| 61 | +### プロジェクト設定の読み込み |
| 62 | + |
| 63 | +| ファイル/ディレクトリ | 場所 | 用途 | `-p`で読まれるか | |
| 64 | +|---|---|---|---| |
| 65 | +| `GEMINI.md` | リポルート | プロジェクト指示書 | **Yes** | |
| 66 | +| `.gemini/GEMINI.md` | リポルート | プロジェクト指示書(別パス) | **Yes** | |
| 67 | +| `.gemini/settings.json` | リポルート | プロジェクト設定 | Yes | |
| 68 | +| `~/.gemini/settings.json` | ユーザーホーム | ユーザー設定 | Yes | |
| 69 | + |
| 70 | +### toban-cli での起動コマンド |
| 71 | + |
| 72 | +``` |
| 73 | +gemini -y -p <prompt> |
| 74 | +``` |
| 75 | + |
| 76 | +- `-p`: 非対話(headless)モード。結果を stdout に出力 |
| 77 | +- `-y`: YOLO モード。全ツール実行を自動承認 |
| 78 | +- CWD の `GEMINI.md` が自動読み込みされる |
| 79 | + |
| 80 | +### 拡張機能 |
| 81 | + |
| 82 | +| 機能 | コマンド | 説明 | |
| 83 | +|---|---|---| |
| 84 | +| Skills | `gemini skills install <source>` | エージェントスキルのインストール | |
| 85 | +| Extensions | `gemini extensions install <source>` | CLI拡張のインストール | |
| 86 | +| Hooks | `gemini hooks migrate` | Claude Code からの hook 移行 | |
| 87 | +| Policy | `--policy <file>` | ポリシーファイルによるツール制御 | |
| 88 | + |
| 89 | +### 注意事項 |
| 90 | + |
| 91 | +- Gemini CLI は quota 制限に達するとリトライを行う(5-10秒の遅延) |
| 92 | +- `-p` モードでもプロセス終了に20-30秒かかる場合がある |
| 93 | +- stdin をパイプで閉じると終了が安定する |
| 94 | + |
| 95 | +--- |
| 96 | + |
| 97 | +## Mock Engine |
| 98 | + |
| 99 | +### 用途 |
| 100 | + |
| 101 | +LLM を呼ばずにスプリントサイクルを E2E テストするためのエンジン。トークン消費ゼロ。 |
| 102 | + |
| 103 | +### 動作 |
| 104 | + |
| 105 | +```bash |
| 106 | +# 擬似的な作業を実行 |
| 107 | +echo "[mock] Agent ${name} starting task ${taskId}..." |
| 108 | +mkdir -p .mock-output |
| 109 | +echo "Mock output..." > .mock-output/${taskId}.txt |
| 110 | +git add .mock-output/${taskId}.txt |
| 111 | +git commit -m "mock: simulated work for task ${taskId}" |
| 112 | +echo 'RETRO_JSON:{"went_well":"...","to_improve":"...","suggested_tasks":[]}' |
| 113 | +``` |
| 114 | + |
| 115 | +- `.mock-output/` にダミーファイルを作成 |
| 116 | +- git commit を実行 |
| 117 | +- `RETRO_JSON` を stdout に出力(retro コメント用) |
| 118 | +- 約5秒で完了 |
| 119 | + |
| 120 | +### テスト実行 |
| 121 | + |
| 122 | +```bash |
| 123 | +API_KEY=tb_xxx npm run test:e2e:mock |
| 124 | +``` |
| 125 | + |
| 126 | +--- |
| 127 | + |
| 128 | +## エンジン共通事項 |
| 129 | + |
| 130 | +### toban-cli によるプロンプト注入 |
| 131 | + |
| 132 | +各エンジンの設定ファイル(`CLAUDE.md` / `GEMINI.md`)に加え、toban-cli は以下をプロンプト引数として注入する: |
| 133 | + |
| 134 | +- ロール定義(builder, manager 等) |
| 135 | +- プロジェクト仕様 |
| 136 | +- タスク詳細(タイトル、説明、優先度) |
| 137 | +- API リファレンス(status 更新、タスク管理、メッセージ送信) |
| 138 | +- ワークフロー指示(ブランチ作成 → 実装 → PR → retro) |
| 139 | +- セキュリティルール |
| 140 | + |
| 141 | +これにより、エンジン固有の設定ファイルがなくても最低限の動作が保証される。 |
| 142 | + |
| 143 | +### RETRO_JSON プロトコル |
| 144 | + |
| 145 | +全エンジン共通で、エージェントの stdout に以下の行を出力するとレトロスペクティブコメントとして記録される: |
| 146 | + |
| 147 | +``` |
| 148 | +RETRO_JSON:{"went_well":"...","to_improve":"...","suggested_tasks":[{"title":"...","priority":"p1"}]} |
| 149 | +``` |
| 150 | + |
| 151 | +### worktree の扱い |
| 152 | + |
| 153 | +- toban-cli は各タスクごとに git worktree を作成 |
| 154 | +- エージェントは worktree 内で作業 |
| 155 | +- 完了後、worktree のブランチをベースブランチにマージ |
| 156 | +- worktree はマージ後に自動削除 |
0 commit comments