| name | verify-merge |
| description | This skill should be used when the user asks to "verify merge", "マージの確認", "コンフリクト解消を確認", "意図しない変更が入ってないか確認", "check merge resolution", or wants to detect unintended changes introduced during conflict resolution. This is a post-merge verification skill — it checks the result of an already-completed merge, not performs the merge itself. |
Verify Merge Resolution
merge 済みの PR に対して、PR diff(ベースブランチとの全差分)を中身レベルで検証し、意図しない変更の混入やコンフリクト解消の誤りを検出する。
$ARGUMENTS
背景
git merge <base> の結果には、以下の問題が混入しうる。
- ベースブランチ側の変更を誤って取り込む
- 自分の変更が消える(conflict marker の解消時に自分側を捨ててしまう)
- mergiraf による自動解決が意味的に誤っている
開発環境では * merge=mergiraf(全ファイル対象)がグローバル設定されているため、git merge 時にコンフリクトが発生すると mergiraf が構文レベルで自動解決する。コンフリクトマーカーは残らないが、意味的に誤った解決(両方の変更を結合した結果ロジックが壊れる、片方の変更が静かに消える)が起こりうる。
実行手順
function verify_merge(pr_ref):
pr = resolve_pr(pr_ref)
base = pr.baseRefName
repo_flag = resolve_repo_flag(pr_ref)
run("git fetch origin")
files = run("gh pr diff {pr.number} {repo_flag} --name-only")
agents = []
for batch in chunk(files, 5):
agents.append(spawn_agent(
type: "general-purpose",
model: "sonnet",
description: "diff 検証 ({batch_index})",
prompt: build_verify_prompt(batch, pr.number, base, repo_flag)
))
results = await_all(agents)
aggregate_and_report(results)
diff の取得
gh pr diff <pr_number> --name-only
サブエージェントに並列委譲
全ファイルを最大 5 ファイルずつのバッチに分けてサブエージェントを起動する。1 メッセージ内に複数の Agent ツールコールを含めて同時起動する。
assets/verify-diff.md のリファレンスを prompt に含める
- バッチ内の各ファイルパス、PR 番号、ベースブランチを渡す
prompt に含める内容:
以下のファイルについて、PR diff の内容を検証してください。
PR番号: <pr_number>
ベースブランチ: <base>
<repo_flag があれば記載>
対象ファイル:
<バッチ内のファイルパス一覧>
## 手順
<assets/verify-diff.md の内容をここに展開>
レポート集約
すべてのサブエージェントの結果を集約して報告する。
問題が検出された場合:
- 各問題について、ファイルパス・該当箇所・説明を含める
問題なしの場合:
- 「全ファイルの diff を検証した結果、意図しない変更やコンフリクト解消の誤りは検出されませんでした」と報告する
引数
- PR 番号、PR URL、またはブランチ名を受け取る
- 引数なしの場合は現在のブランチに紐づく PR を自動検出する(
gh pr view --json number)
- 他リポジトリの PR URL が渡された場合は、そのリポジトリに対して
gh pr diff / gh pr view を実行する
注意事項
- このスキルは検出と報告のみを行う。修正はユーザーの判断に委ねる
- サブエージェントは
model: "sonnet" で general-purpose タイプを使用する
- バッチサイズは 5 ファイル。同時起動するサブエージェント数は最大 5(AGENTS.md の制約に従う)