https://github.com/openai/codex は、Unix シェルならではのパイプやスクリプト管理との相性が良く、AI を活用したシームレスなコードレビューを実現できる。
一方で、自動実行に対するセキュリティリスクも存在するため、Git 管理とサンドボックス設定などで防御を固める必要がある。例えば、下記のようなgh-prs.sh のようなscriptと組み合わせたワークフローを構築し、codex -m o3 を活用した差分解析や自動レビューを行うことで、高品質な開発プロセスを確立できる。
codex -m o3 $'コードの構造を踏まえて内容をレポートし、さらに改善提案やレビューを行ってください\n\n'"$(gh-prs.sh)"
#!/usr/bin/env bash
#
# gh-prs.sh
# ------------
# GitHub CLI で Issue 一覧を取得し、peco で選択して
# `gh pr view` と `gh pr diff` で詳細と差分を表示するシンプルなスクリプト。
#
# 依存:
# - GitHub CLI (gh) : https://cli.github.com/
# - peco : https://github.com/peco/peco
#
# 使い方:
# ./gh-prs.sh [gh issue list のオプション]
#
# 例) 自分が担当で open 状態の Issue を対象にする
# ./gh-prs.sh --assignee @me --state open
#
set -euo pipefail
# 表示調整
SUMMARY_MAX=120 # peco で視認しやすいようタイトルを truncate する長さ
# pr 一覧取得 (番号とタイトルのみ、タブ区切り)
LIST=$(gh pr list --limit 100 "$@" \
--json number,title \
--template '{{range .}}{{printf "%.0f\t%s\n" .number .title}}{{end}}' || true)
if [[ -z "${LIST}" ]]; then
echo "該当する pr がありませんでした。" >&2
exit 0
fi
# peco で選択
pr_NUM=$(echo "${LIST}" |
awk -v max="${SUMMARY_MAX}" -F'\t' '
{
title=$2;
if(length(title) > max) title=substr(title,1,max)"…";
printf "%s\t%s\n",$1,title
}' |
peco --prompt "Select pr > " |
cut -f1)
if [[ -z "${pr_NUM}" ]]; then
echo "pr が選択されませんでした。" >&2
exit 1
fi
# 詳細表示 + diff
gh pr view "${pr_NUM}"
gh pr view "$pr_NUM" \
--json comments \
--jq '.comments[]
| select(.authorAssociation != "NONE")
| "\(.author.login)\n\(.body)\n"'
gh pr diff "${pr_NUM}"