Skip to content

feat: PR ヘルスモニターを追加する#99

Merged
book000 merged 4 commits intobook000:masterfrom
akubiusa:feat/pr-health-monitor
Mar 8, 2026
Merged

feat: PR ヘルスモニターを追加する#99
book000 merged 4 commits intobook000:masterfrom
akubiusa:feat/pr-health-monitor

Conversation

@akubiusa
Copy link
Copy Markdown
Contributor

@akubiusa akubiusa commented Mar 8, 2026

概要

PR 作成後のレビュー対応フローを自動化する pr-health-monitor スキルと handle-pr-reviews コマンドを追加します。
Copilot レビューをバックグラウンドで待機し、検出時に自動的にスレッド対応・resolve を実行します。

変更内容

新規追加

~/.claude/skills/pr-workflow/pr-health-monitor.md

/pr-health-monitor <PR 番号または URL> で実行するスキルです。PR 作成後のチェックリストを自動化します。

  • Task ツールを使った並列実行:
    • Task A: Copilot レビュー依頼 → バックグラウンドで待機スクリプト起動
    • Task B: gh pr checks --watch による CI 確認
    • Task C: コンフリクト確認
    • Task D: PR 本文更新
    • Task E: /code-review:code-review によるコードレビュー
  • Copilot レビュー検出時、tmux 経由で /handle-pr-reviews が自動実行される

~/.claude/commands/handle-pr-reviews.md

/handle-pr-reviews <PR 番号または URL> で実行するコマンドです。
Copilot レビュー検出後に wait-for-copilot-review.sh から自動起動されます。

  • GraphQL で全未解決レビュースレッドを取得(最大 100 件、超過時はページネーション必要と明記)
  • 各スレッドに対して:
    • 対象ファイルを Read ツールで確認
    • 必要に応じてコード修正(Edit ツール)
    • addPullRequestReviewThreadReply mutation で返信投稿
    • resolveReviewThread mutation で resolve
  • -f body= を使ったパラメータ化 GraphQL により、特殊文字・改行を含む返信も安全に投稿
  • git add -p(対話的)ではなく明示的なファイル指定でステージング
  • 最新コメントは .comments.nodes | last で取得(nodes[0] では新しい返信を見落とす可能性があるため修正)
  • ハードコードされたパスなし: git remote get-url origin 確認 → find "$HOME" -maxdepth 8 スキャンでローカルリポジトリを動的検出
  • URL からの変数抽出は grep -oP\K 記法を使った個別抽出(キャプチャグループ方式は使用不可のため修正)

変更

~/.claude/skills/pr-workflow/scripts/wait-for-copilot-review.sh

  • Copilot レビュー検出時の tmux 通知をコマンド形式に変更:
    /handle-pr-reviews https://github.com/OWNER/REPO/pull/PR_NUMBER
    → これにより Claude Code が自動的に /handle-pr-reviews を実行する

動作フロー

PR 作成
  ↓
/pr-health-monitor <PR_NUMBER>
  ↓ 並列実行
  ├─ request-review-copilot → Copilot にレビュー依頼
  │   └─ wait-for-copilot-review.sh をバックグラウンド起動
  ├─ gh pr checks --watch (CI 確認)
  ├─ コンフリクト確認
  ├─ PR 本文更新
  └─ /code-review:code-review
  
  [バックグラウンド: 30 秒ごとに Copilot レビューを確認]
  ↓ 検出時
  tmux send-keys → /handle-pr-reviews https://...
  ↓
  全レビュースレッドに返信 + resolve + CI 最終確認

確認方法

  • ~/.claude/commands/handle-pr-reviews.md が存在すること
  • ~/.claude/skills/pr-workflow/pr-health-monitor.md が存在すること
  • ~/.claude/skills/pr-workflow/scripts/wait-for-copilot-review.sh が実行可能であること

akubiusa and others added 2 commits March 9, 2026 03:21
- skills/pr-workflow/pr-health-monitor.md を追加
  - PR 作成後の CI 確認・Copilot 待機・コードレビュー・コンフリクト確認・PR 本文更新を Task で並列実行するスキル
- commands/handle-pr-reviews.md を追加
  - Copilot レビュー検出時に自動実行されるコマンド
  - 全未解決スレッドを取得しコード修正・返信・resolve・CI 確認を体系的に処理する
- wait-for-copilot-review.sh の tmux 通知をコマンド形式に変更
  - 成功時: 自然言語の代わりに `/handle-pr-reviews URL` を tmux に送信
  - Claude Code がコマンドを受け取り自動で対応できるようにする
  - タイムアウト時は手動確認を促す自然言語のまま維持

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
chezmoi re-add により executable_ プレフィックス付きにリネームし、
ファイルに実行権限(chmod +x)を付与する

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
## 原因

Gemini CLI が過去のバージョンでセッション保持警告の確認フラグとして
warningAcknowledged を設定ファイルに書き込んでいた。
PR google-gemini/gemini-cli#20853 でその警告機能ごと削除されたが、
dotfiles に書き込まれたフィールドがそのまま残っていた。

公式スキーマの sessionRetention には warningAcknowledged が定義されておらず、
additionalProperties: false のため CI バリデーションが失敗していた。

## 対策

- dot_gemini/settings.json: warningAcknowledged フィールドを削除
- tests/syntax/test_json_schema.sh: general セクション以下の
  additionalProperties 制約を再帰的に除去するよう修正
  (Gemini CLI 書き込みフィールドをネストした階層も許容するため)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

PR 作成後のレビュー対応フローを自動化する「PR ヘルスモニター」と、Copilot レビュー検出後にレビュースレッド対応を一括処理するコマンドを追加し、既存の Copilot レビュー待機スクリプトを自動実行フローに合わせて更新する PR です。

Changes:

  • /pr-health-monitor スキルを追加し、CI 監視・コンフリクト確認・PR 本文更新・コードレビュー・Copilot レビュー待機を並列で進める手順を整備
  • /handle-pr-reviews コマンドを追加し、未解決レビュースレッド取得〜返信〜resolve〜CI 最終確認までの手順を体系化
  • Copilot レビュー検出時の tmux 通知を、自然文から /handle-pr-reviews <PR URL> 形式へ変更

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 8 comments.

File Description
home/dot_claude/skills/pr-workflow/scripts/executable_wait-for-copilot-review.sh Copilot レビュー検出時に tmux へ /handle-pr-reviews を送るよう通知内容を変更
home/dot_claude/skills/pr-workflow/pr-health-monitor.md PR 作成後チェックリストを並列実行する新スキルを追加
home/dot_claude/commands/handle-pr-reviews.md 未解決レビュースレッドの取得・返信・resolve・CI 確認を行う新コマンドを追加

- `CI確認` を `CI 確認`、`PR作成後` を `PR 作成後`、`Copilotレビュー` を `Copilot レビュー` に修正(日本語・英数字間のスペースルール)
- `.comments.nodes[0]` を `.comments.nodes | last` に変更し、最新コメントを参照するよう修正
- `reviewThreads(first: 100)` の上限とページネーション必要性をコメントで明記
- `pr-health-monitor.md` の Step 0 URL パース例を `grep -oP` キャプチャグループ方式から個別抽出方式に修正
- `<PR番号またはURL>` を `<PR 番号または URL>` に修正

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@book000 book000 merged commit 7ad16c1 into book000:master Mar 8, 2026
7 checks passed
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.

3 participants