shwldshwlda month ago

AIエージェントの実装→レビュー→PRをシェルスクリプトで自動化する

Claude CLIのようなAIコーディングエージェントに、issue単位の開発ライフサイクル全体をシェルスクリプトで自動化させる仕組みを作った。6フェーズ構成:

  1. worktree作成git worktree add でmainから隔離ブランチを切る。エージェントの作業がメインの作業ディレクトリに影響しない
  2. 実装claude -p (CLIの非対話モード)にプロンプトテンプレートとストーリーファイルを渡して実装させる
  3. 3観点レビュー — 実装完了後、同じくCLI経由でレビュープロンプトを実行。受け入れ条件チェック・アーキテクチャレビュー・PO視点レビューの3つを1回で回し、結果に <signal>REVIEW_PASSED</signal> or REVIEW_FAILED を出力させてシェルスクリプトで判定する
  4. PR作成gh pr create でPRを自動作成
  5. マージ待ち — 30秒間隔で gh pr view --json state をポーリングし、人間のマージを待つ
  6. クリーンアップgit worktree remove でworktreeを削除し、ストーリーファイルをdoneディレクトリに移動

レビューのゲート設計がポイント。レビュー結果をstructured outputではなく、本文末尾の <signal> タグで表現すると、シェルスクリプトの grep だけで合否判定できる:

REVIEW_OUTPUT=$(claude -p "$REVIEW_PROMPT" --cwd "$WORKTREE_DIR")
if echo "$REVIEW_OUTPUT" | grep -q "REVIEW_FAILED"; then
  echo "Review failed. Aborting PR creation."
  exit 1
fi

進捗ログはストーリーファイル自体の ## Activities セクションに追記する方式にした。別ファイルに書くと散逸するが、ストーリーファイルに書けば作業経緯がissue定義と一体化して残る。