AgentSkillsCN

fixing-pr

查看 Pull Request 的 CI 状态与评审意见,并根据需要进行修正与回复。若已满足完成条件,则自动合并 PR。适用于在 PR 创建后需应对 CI 失败或评审意见,或在执行 `/fixing-pr` 命令时使用。

SKILL.md
--- frontmatter
name: fixing-pr
description: プルリクエストのCI状態とレビューコメントを確認し、必要な修正と返信を行います。完了条件を満たした場合は自動的にPRをマージします。PR作成後にCI失敗やレビューコメントへの対応が必要な場合や、`/fixing-pr` コマンドが実行された場合に使用してください。
layer: feature

手順

このチェックリストをコピーし、進行状況の追跡に使用してください:

タスク進捗:

  • ステップ1:プルリクエストの番号を特定する
  • ステップ2:PRブランチがベースブランチより遅れていないか確認する
  • ステップ3:CIの終了を待機する
  • ステップ4:CIの結果を詳細に把握する
  • ステップ5:レビューコメントを把握する
  • ステップ6:承認済み・outdated対応済みスレッドのresolveを行う
  • ステップ7:方針に従って対応を行う
  • ステップ8:完了条件を満たしているか確認する
  • ステップ9:Issueとの紐付けを確認する
  • ステップ10:マージ前にbehind状態を再確認する
  • ステップ11:PRのマージを行う
  1. プルリクエストの番号を特定する。
    • github スキルを参照し、現在のブランチからPR番号を取得する。
    • PRが存在しない場合はユーザーに報告し、作業を中断する。
  2. PRブランチがベースブランチより遅れていないか確認する。
    • github スキルを使用してPRの状態を確認し、behind状態かどうかを把握する。
    • 遅れている場合、ベースブランチをマージする。
  3. CIの終了を待機する。
    • github スキル(pr-checks-watch.sh)を使用してPRの全チェックが完了するまで待機する。
  4. github スキルを使用してCIの結果を確認する。
    • 一時的な問題(インフラ障害、flaky test等)の場合は gh run rerun <run-id> で再実行し、手順3に戻る。同一ワークフローの再実行は最大2回まで。
    • コード修正が必要な場合は、対応方針を決めて手順7で修正する。
  5. github スキルを使用してレビューコメントを把握し、対応方針を決める。
    • 改修提案かつ対応が必要: コード修正と返信
    • 改修提案かつ対応が不要: 理由を添えて返信
    • 対応内容が承認された: Resolve
    • IsOutdated=true かつ対応済み(コード修正・返信完了): Resolve
    • botレビュアーからのコメントかつ改修提案への対応済み(コード修正・返信完了): Resolve
  6. 承認済みスレッド、outdated対応済みスレッド、およびbot対応済みスレッドを resolve する。
  7. 手順4と5で決めた方針に従って対応を行う。
    • CI失敗への対応とレビューコメントへのコード修正をまとめて行い、コミット・プッシュする。
    • 各レビューコメントスレッドへ返信を行う。
  8. 完了条件を満たしているか確認する。
    • CIが未完了の場合は github スキル(pr-checks-watch.sh)を使用してCIの完了を待機してから手順2に戻る。
    • その他の条件を満たしていない場合は未完了の条件をユーザーに報告し、30秒待機してから手順2に戻る。
    • 手順2からの再実施は最大10回まで。10回を超えた場合はユーザーに報告し、作業を中断する。
  9. Issueとの紐付けを確認する。
    • github スキル(github-graphql.sh)を使用して、PRの closingIssuesReferences を取得する。
    • 紐付けがある場合は手順10へ進む。
    • 紐付けがない場合(closingIssuesReferences が空)、ユーザーに警告し、続行の承認を得る。
    • ユーザーが続行を承認した場合は手順10へ進む。承認しない場合は作業を中断する。
  10. マージ前にbehind状態を再確認する。
    • github スキルを使用してPRの状態を再取得し、behind状態かどうかを確認する。
    • behind状態が null の場合は10秒待機してから再取得する(最大3回まで)。
    • behind状態が true の場合はベースブランチをマージし、手順3に戻る(手順8の回数制限の対象)。
    • behind状態が false の場合は手順11へ進む。
  11. PRのマージを行う。
    • github スキル(pr-merge.sh)を使用してPRをマージする。マージ方式はリポジトリのデフォルト設定に従う。
    • マージに成功した場合は完了をユーザーに報告する。
    • マージに失敗した場合、behind状態であればベースブランチをマージし、手順3に戻る(手順8の回数制限の対象)。それ以外の場合は失敗理由を報告し、作業を中断する。

完了条件

以下の全てを満たすこと:

  • PRブランチがベースブランチに対して遅れていない(behind状態でない)
  • outdatedのものも含め、レビュースレッドが全て resolve されている
  • 改修提案への対応が完了し、返信済み
  • 対応不要なコメントへの返信が完了している
  • CI が全て成功している

注意点

  • 承認されるまではResolveすることは禁止
    • ただし、改修提案への対応済み(コード修正・返信完了)のスレッドは、以下の場合に例外としてResolve可能:
      • IsOutdated=trueである
      • botレビュアーからのコメントである
  • 返信時はスレッドの投稿者全員に対してメンションすること
  • マージ後にブランチの自動削除は行わない