Skip to content

auto-review: skip clean merge-only commits#101

Open
fumikito wants to merge 1 commit into
mainfrom
feature/auto-review-skip-merge-only
Open

auto-review: skip clean merge-only commits#101
fumikito wants to merge 1 commit into
mainfrom
feature/auto-review-skip-merge-only

Conversation

@fumikito
Copy link
Copy Markdown
Contributor

Summary

  • claude-review.yml 共有ワークフローに is_manual インプットを追加し、auto-review (workflow_run トリガー) でクリーンな merge-only コミットをスキップする preflight ステップを実装
  • 手動トリガー (@claude auto-review 等) で is_manual: true を渡された場合は常にレビューを実行する

背景

外部パートナー PR の運用で、main からのマージ・準備コミットなど 実質的な変更を含まない merge コミット に対して Claude がレビューを投稿してノイズになっていた(例: tarosky/motorfan-content#758 で merge-only コミットに対して複数のレビュー投稿が発生)。Anthropic API コストも無駄に発生していた。

検出ロジック

  1. is_manual == true なら常にレビュー実行(手動の意思を尊重)
  2. それ以外で、HEAD の親が2つ以上(merge コミット)かつ git diff-tree --cc <head_sha> の出力が空(両親と異なる手動編集なし=クリーンマージ)→ スキップ
  3. それ以外(通常コミット、コンフリクト解決を含むマージ)→ レビュー実行

git diff-tree --cc は両親と異なる内容を持つ箇所のみ出力するため、コンフリクト解決の手動編集が含まれる場合は出力が空にならず、レビューが走る設計。

利用側の対応

  • 共有側のデフォルトは is_manual: false のため、利用側未更新でも auto-review のスキップは即時有効
  • 利用側(rich-taxonomy など 11 プラグイン)の manual-review job に is_manual: true を追加する作業は別 PR で対応予定

Test plan

  • このリポジトリ自体には claude-review.ymlworkflow_run で呼ぶ self 設定がないため、本 PR 上で merge-only スキップは発火しない(@claude アシスタント応答は可能)
  • マージ後、ダウンストリーム plugin の次回 PR で挙動確認:
    • 通常コミット → レビュー実行(従来通り)
    • main からのクリーンマージ → スキップ(workflow run の notice で確認)
    • コンフリクト解決を含むマージ → レビュー実行
  • 手動 @claude auto-review の挙動は利用側へ is_manual: true を反映した別 PR 後に検証

🤖 Generated with Claude Code

merge コミットでコンフリクト解決等の手動編集を含まない場合、auto-review (workflow_run トリガー) をスキップする。git diff-tree --cc の出力が空であることで判定。
is_manual: true で呼ばれた場合(@claude auto-review 等の手動トリガー)は常にレビューを実行する。

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant