بنقرة واحدة
codex-review
Codex CLIで実装計画レビューの改善ループを回す
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Codex CLIで実装計画レビューの改善ループを回す
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
| name | codex-review |
| description | Codex CLIで実装計画レビューの改善ループを回す |
| disable-model-invocation | true |
Codex CLIを使って実装計画をレビューし、指摘→修正の改善ループを回してください。
以下の手順でplanFile(レビュー対象の実装計画ファイル)とpromptFile(実装計画の元となった要件ファイル)を取得してください:
$ARGUMENTS にファイルパスが指定されている場合は、空白で分割し第1引数をplanFile、第2引数をpromptFileとして使用してください$ARGUMENTS が空、または不足している場合は、ユーザーに対話的に確認してください:
codex コマンドが利用可能).planloop/config.yml が存在すればReadツールで読み込んでください。存在しなければ以下のデフォルト値を使用:デフォルト設定:
currentRound が maxRounds 以下の間、以下を繰り返してください。
planFileとpromptFileの最新内容を読み込み、以下のテンプレートでCodexへのレビュープロンプトを構築してください。
初回レビュー(Round 1)のプロンプト:
あなたは実装計画のレビュアーです。以下の実装計画をレビューしてください。
## レビュー対象の実装計画
{planFileの内容をそのまま挿入}
## 実装計画の元となった要件(プロンプト)
{promptFileの内容をそのまま挿入}
## レビュー指示
1. 以下の観点でレビューを行ってください:
{config.perspectivesの各項目を箇条書きで挿入}
2. 以下の種類の指摘は避けてください:
- speculative_future: 「将来必要になるかもしれない」だけの指摘
- unnecessary_fallback: 不要なフォールバック実装の要求
{config.review.additionalInstructionsが設定されている場合:
3. 追加指示:
{additionalInstructionsの内容}}
{accumulatedWaiversが空でない場合:
## 前回のレビューでの調整事項
以下の観点は前回のレビューで対象外と判断されています。これらに該当する指摘は出力しないでください。
{各waiverについて: - {reason} (カテゴリ: {category ?? "全て"}, パターン: {match})}}
## 出力形式
以下のJSON形式で出力してください。JSON以外のテキストは出力しないでください。
{
"findings": [
{
"id": "finding-1",
"summary": "指摘の要約(1行)",
"detail": "指摘の詳細説明",
"severity": "high | medium | low",
"category": "correctness | spec_mismatch | missing_acceptance_criteria | migration_risk | security | performance | code_quality | other",
"lineRef": null
}
]
}
再レビュー(Round 2+)のプロンプト:
実装計画が修正されました。修正後の計画を改めてレビューしてください。
## 修正後の実装計画
{修正後のplanFileの内容}
## 修正内容の概要
{前ラウンドで修正した内容のサマリー}
## レビュー指示
前回と同じ観点でレビューし、残存する指摘があれば出力してください。
修正により解消された指摘は含めないでください。
新たに気づいた指摘があれば追加してください。
{waiver section(上記と同じ形式)}
## 出力形式(重要: 必ず以下のJSON形式で出力してください)
{
"findings": [
{
"id": "finding-1",
"summary": "指摘の要約(1行)",
"detail": "指摘の詳細説明",
"severity": "high | medium | low",
"category": "correctness | spec_mismatch | missing_acceptance_criteria | migration_risk | security | performance | code_quality | other",
"lineRef": null
}
]
}
フィードバック反映プロンプト(トリアージ後に使用):
重要: 元実装 generateCodexFeedbackReviewPrompt() と同様に、planFileとpromptFileの内容を必ず含めてください。
あなたは実装計画のレビュアーです。前回のレビューに対して人間からフィードバックがあったため、調整後のレビュー結果を出力してください。
## レビュー対象の実装計画
{planFileの内容をそのまま挿入}
## 実装計画の元となった要件(プロンプト)
{promptFileの内容をそのまま挿入}
## 前回のレビュー指摘
{各findingを "### finding-N [SEVERITY] category\nsummary\ndetail" 形式で列挙}
## 人間からのフィードバック
{ユーザーのフィードバックテキスト}
## 指示
上記のフィードバックを踏まえ、以下の条件で再レビューしてください:
1. waiveまたは対象外と指示された指摘は含めないでください
2. フィードバックで修正方針が示された指摘は、その方針を反映して調整してください
3. フィードバックで言及されていない指摘はそのまま残してください
4. 新たに気づいた指摘があれば追加してください
## 出力形式
以下のJSON形式で出力してください。JSON以外のテキストは出力しないでください。
{
"findings": [
{
"id": "finding-1",
"summary": "指摘の要約(1行)",
"detail": "指摘の詳細説明",
"severity": "high | medium | low",
"category": "correctness | spec_mismatch | missing_acceptance_criteria | migration_risk | security | performance | code_quality | other",
"lineRef": null
}
]
}
まず、一時ファイルの衝突を防ぐため、runごとに一意な一時ディレクトリを作成してください:
PLANLOOP_TMPDIR=$(mktemp -d /tmp/planloop-run-XXXXXX)
構築したプロンプトを $PLANLOOP_TMPDIR/prompt.txt に書き出し、以下のコマンドで実行してください。
初回レビュー(Round 1の1回目):
cat "$PLANLOOP_TMPDIR/prompt.txt" | codex exec --json --full-auto --output-schema .claude/skills/codex-review/codex-review-output.json -o "$PLANLOOP_TMPDIR/codex-output.txt" - 2>&1 | tee "$PLANLOOP_TMPDIR/codex-jsonl.txt" > /dev/null
実行後、JSONL出力からthread_idを抽出して保持してください:
grep -o '"thread_id":"[^"]*"' "$PLANLOOP_TMPDIR/codex-jsonl.txt" | head -1 | sed 's/"thread_id":"//;s/"//'
フィードバック反映 / 再レビュー(resume、2回目以降):
cat "$PLANLOOP_TMPDIR/prompt.txt" | codex exec resume "<保持したthread_id>" --json --full-auto -o "$PLANLOOP_TMPDIR/codex-output.txt" - 2>&1 | tee "$PLANLOOP_TMPDIR/codex-jsonl.txt" > /dev/null
注意:
--ephemeral は使用しない(セッション保持のため)--output-schema で構造化出力を強制。2回目以降はresumeのため --output-schema 利用不可 → プロンプト内にJSON出力形式を明記codex exec resume には --last ではなく明示的な thread_id を指定(誤セッション再開リスク回避)codex exec(--output-schema 付き)にフォールバック$PLANLOOP_TMPDIR/codex-output.txt をReadツールで読み取り、findingsを抽出してください。
パース手順:
{ から } までのJSONオブジェクトを探すfindings 配列内の各要素の必須フィールド(id, summary, detail, severity, category)を確認分類結果:
各blocking findingのフィンガープリントを算出してください。
算出方法(Bashで実行):
printf '%s' "{category}:{normalized_summary}" | shasum -a 256 | head -c 16
ここで normalized_summary は:
<NUM> に置換(sed -E 's/[0-9]+//g')blocking findingsのfingerprint集合が、直近 stagnationRounds 回(デフォルト2)連続で同一であれば「停滞」と判定してループを終了してください。
以下の条件でトリアージを求めてください:
トリアージ時は以下の形式でfindingsを表示し、フィードバックを求めてください。 ユーザーが判断しやすいよう、各findingの詳細を省略せず表示することが重要です。
## Codexレビュー結果 (Round N)
### Blocking findings(修正が必要: N件)
#### finding-1 [HIGH] spec_mismatch
**指摘:** {summary}
**詳細:** {detail}
**計画の該当箇所:** {lineRefがあれば表示、なければ「該当箇所の引用」を計画から抜粋}
**要件との対比:** {計画に書かれている内容} → {要件で求められている内容}
(上記の形式で全てのblocking findingsを列挙)
### Non-blocking findings(参考情報: N件)
#### finding-N [SEVERITY] category
**指摘:** {summary}
**詳細:** {detail}
(上記の形式で全てのnon-blocking findingsを列挙)
### Auto-waived(自動除外: N件)
---
フィードバックをお願いします。例:
- 「finding-1は対象外としてください」→ 該当指摘を除外
- 「以後、互換性に関する指摘は除外でお願いします」→ 永続waiver追加
- 「全て修正をお願いします」→ 全指摘を受け入れて修正へ
表示のポイント:
フィードバックに「以後」「今後」「今回以降」「以降」のキーワードが含まれる場合、waiver ruleとしてaccumulatedWaiversに追加してください:
フィードバックがある場合は「フィードバック反映プロンプト」でCodexセッションを再開し、調整後のfindingsを受け取ってください。
blocking findingsが1件以上ある場合、Editツール等を使ってplanFileを直接修正してください。
| 条件 | アクション |
|---|---|
| blocking findings = 0 | 完了と報告して終了 |
| 停滞検出 | 停滞を報告して終了 |
| currentRound > maxRounds | 最大ラウンド数到達と報告して終了 |
blocking findingsが残っている場合は currentRound をインクリメントしてステップ2.1に戻ってください。
Codex実行時のJSONL出力($PLANLOOP_TMPDIR/codex-jsonl.txt)から、ツール使用状況をツール名レベルで検証してください。
検証コマンド(Bashで実行):
# GitHub CLI: command_execution イベントから gh コマンドを特定
grep '"command_execution"' "$PLANLOOP_TMPDIR/codex-jsonl.txt" | grep -ci '"gh '
# Figma MCP: mcp_tool_call イベントから figma ツールを特定
grep '"mcp_tool_call"' "$PLANLOOP_TMPDIR/codex-jsonl.txt" | grep -ci '"figma'
# Context7 MCP: mcp_tool_call イベントから context7/resolve-library を特定
grep '"mcp_tool_call"' "$PLANLOOP_TMPDIR/codex-jsonl.txt" | grep -ci -E '"(context7|resolve-library)'
# Web検索
grep -ci '"web_search"' "$PLANLOOP_TMPDIR/codex-jsonl.txt"
チェックルール:
gh コマンド使用が requiredrequired エビデンス未充足時: レビュー結果を採用せず、ユーザーに「必須の情報源を確認していません。再実行しますか?」と確認してください。再実行時はプロンプトに「必ず以下の情報源を確認してからレビューを行ってください」と追加。 suggested の不足は参考情報として報告するのみ。
ループ終了時に以下のサマリーを表示してください:
## レビューループ完了
- ステータス: {completed | stopped}
- 終了理由: {no_blocking_findings | stagnation | max_rounds}
- 総ラウンド数: N
- 適用Waiver: N件
### ラウンド別サマリー
- Round 1: N件 → トリアージ → N件blocking → 修正
- Round 2: N件 → N件blocking → 修正
- Round 3: N件 → 0件blocking → 完了
| エラー | 対応 |
|---|---|
| planFile/promptFileが見つからない | 報告して終了 |
| Codex CLI未インストール | npm install -g @openai/codex を案内 |
| Codexエラー終了 | エラー内容を表示、リトライを提案 |
| JSONパース失敗 | テキストから手動で構造化 |
| resume失敗(thread_idでのセッション再開失敗) | fresh codex exec(--output-schema 付き)にフォールバック |
| requiredエビデンス未充足 | ユーザーに報告し再実行 or 続行を確認 |
| 設定ファイルエラー | デフォルト値にフォールバック |