前置き
本業ではバックエンド(Rails)・Web フロントエンド・モバイル向けアプリなどのリポジトリをさわっている.
1 つの要望が複数リポジトリにまたがるのと,並行して他人の PR レビューも回ってくる.
ここ 1〜2 ヶ月くらいで,このへんを Orca を中心にほぼ AI agent に回してもらう形に落ち着いてきたので,忘れないうちに書いておく.
前回の記事で Herdr を使ってると書いたけど,仕事のほうはいまは Orca が中心になっている.
Orca を中心にする
Orca は worktree 単位でエージェント(Claude Code / Codex)のセッションを並べて管理できるやつ.
自分が気に入っているのはこのへん.
- Jira のチケットや GitHub の PR から worktree を切れて,その worktree にチケットや PR が紐づく
orcaCLI があって,worktree の作成・エージェント起動・初期プロンプト投入までスクリプトから叩ける- Quick Command(定型プロンプト)と Automation(定期実行)がある
要するに「チケット 1 つ = worktree 1 つ = エージェント 1 体」で並べておける.
並行して 3〜4 本動いていても,サイドバー見れば何がどこまで進んでるかわかる.
worktree にはコメントが付けられるので,エージェントに 設計中 → 実装中 → レビュー待ち と自分で書き換えさせている.
開発: Jira から worktree を切ったら勝手に始まる
Orca で Jira チケットから worktree を作って Claude Code を起動すると,Claude Code の SessionStart hook が orca worktree current --json を叩いて「これは Jira 由来の worktree か」を判定する.
そうなら,チケットのキーと URL を添えて「jira-feature skill を起動せよ」とセッション冒頭に差し込む.
Orca 自体には Jira の内容をエージェントに渡す仕組みがないので,そこを hook で埋めている感じ.
あとは skill のほうでフェーズを固定している.
Phase 0 準備 Jira 本文・コメント・リンク先(Slack/Notion/PR)を読む
リポジトリの関連コードを Explore サブエージェント並列で調査
Phase 1 設計 要約 + 論点 + 最初の質問 → 質疑のたびに設計 doc を更新
Phase 2 承認 「ok」で status: approved を書いて実装計画を作る
Phase 3 実装 フロント側の worktree は親セッションが裏で作る
Phase 4 PR repo ごとに作成.本文にデプロイ順を書く
Phase 5 並列 (a) 動作確認 → サブエージェントに委譲
(b) codex-review + CodeRabbit 収集
Phase 6 報告 結果を Artifact にまとめて,ok なら Slack に共有
Phase 7 指摘対応 採否を決めて修正 → push → 再収集
人間がやることは,設計の質疑に答える・承認する・レビュー指摘の採否を決める・Slack 投稿に ok を出す,だけ.
それ以外では止まらないように書いてある.
worktree を開いた時点で「チケットの要約・設計上の論点(推奨案つき)・最初の質問」が出ているので,こっちはそれに答えていくだけでいい.
質疑のたびに設計 doc が更新されて Inkdrop に同期されるので,あとから読み返すのも楽.
細かい工夫
- 3 リポジトリを親セッション 1 本で抱える: バックエンド以外の worktree は Orca のサイドバーに並べず,親セッションの中に隠している.並べると 1 チケットで 3 行になって見通しが悪くなるので.
- 進捗ファイル:
docs/memo/YYYY-MM-DD-<key>-progress.mdにいまの Phase や PR 番号を書かせている./clearやコンテキスト圧縮のあとでも,hook がこれを見つけて「続きから」で再開する. - 既存の環境を壊さない: ローカルのバックエンドのコンテナは他の作業でも使っているので,worktree 側は別ポートで起動する.動作確認でどうしても差し替えが要るときだけ,条件付きで差し替えて終わったら必ず戻す,というルールを skill に書いてある.
- 動作確認はサブエージェント: puppeteer-core + chromium で画面を見てスクショを撮り,項目ごとの OK/NG を報告させる.修正はさせない.報告だけ.
レビュー(自分の PR): Codex と CodeRabbit を集めて採否だけ決める
PR を出したら,Phase 5(b) で 2 系統のレビューを集める.
- codex-review: Codex CLI を read-only で走らせて branch 全体をレビューさせる
- CodeRabbit: PR 作成から 3 分後に GitHub API を見に行って,来てなければ 2 分おきに最長 15 分待つ
集めた指摘は Claude Code が 自分でコードを読んで検証してから,docs/reviews/ の 1 本の md に repo ごとにまとめる.
各指摘には「問題」「失敗シナリオ」「修正方針」「採否案」を必ず書かせている.
ここで大事にしているのは,Codex の出力をそのまま貼らせないこと.
Codex は同僚であって権威ではない.Claude 側に「同意/異議とその根拠」を書かせると,わりと的外れな指摘がちゃんと落ちる.
あと,説明と採否の選択肢を同じターンに出させない.説明だけのターンで一度止めさせて,読んでから番号で採否を返す.
これをやらないと,説明がスクロールで流れて選択肢だけ見て決めることになるので.
レビュー(他人の PR): Automation で勝手にレビューが走る
他人の PR のレビューも Orca に寄せている.
Orca の Automation で定期的にスイープを回していて,
review-requested:@meの PR(と,自分がレビュー済みで新しく push された PR)を列挙- 起動済みかどうかを (repo, PR 番号, head SHA) で判定
- 未起動なら PR の head をチェックアウトしたレビュー専用 worktree を作って,新しい Claude Code を起動して初期プロンプトを渡す
スイープ担当のセッションは引き渡したら終わり.レビュー自体はしない.
dependabot の PR とリリース PR は別扱いで除外している.
起動されたレビュー agent は code-review skill でレビューして docs/reviews/<日付>-pr-<番号>.md に書き,そのあと review-comment-judge skill で 各指摘を「投稿 / 保留 / 見送り」に振り分けて PR に投稿する.
review-comment-judge
これは,自分が過去にレビュー文書を読んで「これは投稿」「これは見送り」と指示していたログから規則を抜き出したもの.
たとえば見送りの例.
- 自分の個人的な好み(コメント書かない,とか)が根拠で,リポジトリの規約ではないもの
- 計測していない性能懸念
- 現実にまず起きない桁や入力
- 追加テストの提案
- スコープ外の既存問題
逆に Major/Medium は,再現か一次資料・最新の head との照合・PR 本文や Jira との突合・既存コメントとの重複チェック,を全部通ったものだけ投稿する.通らなければ保留.
文面も自分の文体に寄せてあって,絵文字や「AI によると」みたいなのは書かない.
Approve と Request changes は絶対に付けない.投稿は COMMENT だけで,Approve は自分で押す.
なので朝来たら,自分は保留になった項目だけ読んで投稿するか決めて,Approve を押す,くらいになっている.
将来的にここも人間の判断は不要になるかもしれないが今のところはまだ見るようにしている.
横断調査: CodeGraphContext
「この機能ってバックエンドとフロントでどうつながってるんだっけ」系の調査は,全リポジトリを CodeGraphContext でインデックスして MCP 経由で引けるようにしている.
CodeGraphContext だけだと GraphQL などは引けないので,ラップしてコード以外にも Schema を引けるようなラッパー MCP を作った.
ドキュメントの置き場
設計・メモ・レビュー結果は全部リポジトリの docs/ 配下に日付つきファイル名で書かせて,PostToolUse hook で Inkdrop に同期している.
docs/superpowers/{specs,plans}/: 設計と実装計画docs/memo/: 調査メモ,進捗ファイルdocs/reviews/: レビュー結果
エージェントのセッションは消えるけど,doc は Inkdrop に残る.
スマホ/タブレットからも読めるので,移動中にレビュー文書読んで判断する,みたいなこともできる.
やってみて
- 人間の仕事が「質問に答える」「採否を決める」「ok を出す」にほぼ寄った.逆にいうと,そこはちゃんと自分で読まないといけない.
- skill は最初からきっちり書いたわけではなくて,2 週間くらい手でやってばらつきが見えてきたところで,そのやり方を固めた.いきなり自動化から入らなかったのはよかったと思う.
- レビュー判断の規則化は,過去の自分の判断を根拠事例つきで表にしたのがよかった.規則を変えるときも根拠事例を足すようにしている.
- 当社は少人数で開発しているにもかかわらず,こっちが一日に 5 件 PR 出すと翌日に同僚が 10 件 PR 出すみたいな謎の加速主義が蔓延っており,全然楽にならない.現実が過酷過ぎる.