pr-validate について
pr-validateは、プルリクエスト用ブランチが提出可能か確認するスキルです。上流との整合性、貢献ガイドライン、変更の分離と範囲、品質ゲートを評価し、結果と対処方法を報告します。
主な機能
- 01ブランチと上流の整合性を確認
- 02CONTRIBUTING.mdへの準拠を確認
- 03コミット種別の混在と無関係なファイルを検出
- 04変更内容と想定範囲を照合
- 05品質ゲートと合否を報告
活用シーン
- 01PR準備前のブランチ検証
- 02実装後の範囲逸脱の確認
- 03提出前の上流との乖離の特定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ boshu2/ agentops --skill pr-validateインストール後、Claude Code で/pr-validateを入力して読み込まれたか確認します。
同梱ファイルreferences/pr-validate.featurescripts/validate.sh
詳細
PR 検証スキル
変更が整理され、焦点が定まり、提出準備が整っていることを確認する、PR 専用の検証です。
概要
分離状態、上流との整合性、スコープの範囲、品質ゲートを確認し、PR ブランチの提出準備が整っているかを検証します。
入力:ブランチ名(デフォルト:現在のブランチ)
使用するタイミング:
$pr-prepの実行前$pr-implementの完了後- スコープクリープが疑われるとき
ワークフロー
1. Branch Discovery -> Identify branch and upstream
2. Upstream Alignment -> FIRST: Check rebase status (BLOCKING)
3. CONTRIBUTING.md -> Verify compliance (BLOCKING)
4. Isolation Check -> Single type, thematic files
5. Scope Check -> Verify changes match intended scope
6. Quality Gate -> Tests, linting (non-blocking)
7. Report Generation -> Summary with pass/fail
フェーズ 2:上流との整合性(ブロッキング — 最初に確認)
# Fetch latest upstream
git fetch origin main
# How many commits behind?
BEHIND=$(git rev-list --count HEAD..origin/main)
echo "Behind upstream: $BEHIND commits"
| チェック | 合格基準 |
|---|---|
| 差分が最小限 | 遅れが 20 コミット未満 |
| コンフリクトなし | マージ/リベースが成功する |
フェーズ 4:分離チェック(ブロッキング)
# Commit type analysis
git log --oneline main..HEAD | sed 's/^[^ ]* //' | grep -oE '^[a-z]+(\([^)]+\))?:' | sort -u
# File theme analysis
git diff --name-only main..HEAD | cut -d'/' -f1-2 | sort -u
| チェック | 合格基準 |
|---|---|
| コミットタイプが単一 | すべてのコミットが同じプレフィックスを持つ |
| 関連するファイル | 変更されたファイルがすべて PR のスコープに関連している |
| スコープが独立 | 1 文で説明できる |
フェーズ 5:スコープチェック
# Infer scope from commit messages
SCOPE=$(git log --format="%s" main..HEAD | grep -oE '\([^)]+\)' | sort -u | head -1)
# All files should be within expected scope
git diff --name-only main..HEAD | grep -v "$SCOPE"
レポート生成
合格時の出力
PR Validation: PASS
Branch: feature/suggest-validation (5 commits)
Upstream: main (in sync)
Checks:
[OK] Isolation: Single type (refactor)
[OK] Upstream: 0 commits behind
[OK] Scope: 100% in internal/suggest/
[OK] Quality: Tests pass
Ready for $pr-prep
不合格時の出力
PR Validation: BLOCKED
Checks:
[FAIL] Isolation: Mixed types (refactor, fix, docs)
[WARN] Upstream: 15 commits behind
Resolutions:
1. ISOLATION: Split branch by commit type
git checkout main && git checkout -b refactor/suggest
git cherry-pick <refactor-commits>
Run $pr-validate again after resolution.
解決策
コミットタイプの混在
# Cherry-pick to clean branch
git checkout main
git checkout -b ${BRANCH}-clean
git cherry-pick <relevant-commits-only>
上流との差分
# Rebase on latest upstream
git fetch origin main
git rebase origin/main
アンチパターン
| してはいけないこと | 代わりに行うこと |
|---|---|
| 古いブランチを分析する | まず上流を確認する |
| 検証を省略する | $pr-prep の前に実行する |
| スコープクリープを無視する | 無関係な変更を切り分ける |
| 修正とリファクタリングを混在させる | タイプごとに PR を分ける |
例
提出前に PR を検証する
ユーザーの発言:「この PR ブランチの分離状態とスコープクリープを検証してください。」
実行内容:
- 上流との整合性とブランチの最新状態を確認します。
- スコープクリープと無関係なファイル変更を検出します。
- 対処手順と合否ステータスを出力します。
準備前のゲート
ユーザーの発言:「$pr-prep を実行する前に PR の検証をしてください。」
実行内容:
- 分離チェックとスコープチェックを実行します。
- 品質ゲートを通過できる状態か確認します。
- 実行可否の推奨を返します。
トラブルシューティング
| 問題 | 原因 | 解決策 |
|---|---|---|
| 検証でブランチが古いと報告される | 上流が進んでいる | 上流からリベース/マージしてから再実行します |
| スコープクリープが検出される | 余分なファイルまたは目的の混在 | 無関係な変更を後続の PR に分割します |
| 整合性チェックに失敗する | ブランチが想定されたターゲットから分岐している | ベースブランチと受け入れ基準を調整します |
| 出力がわかりにくい | 検出事項の優先順位が付けられていない | 検出事項をブロッカーと非ブロッカーの重大度で並べ替えます |
参考ドキュメント
- references/pr-validate.feature — 実行可能な仕様:分離、上流との整合性、スコープの包含、品質ゲートのチェック → 提出準備状況の判定(soc-qk4b)
コメント
Markdown 対応