pr-reference について
Git のコミットメタデータと差分を集め、構造化 XML を生成する PR 参照作成スキルです。Bash と PowerShell のスクリプトを備え、レビュー準備、PR 説明、作業項目の発見、変更ファイルの分析に使えます。
主な機能
- 01コミット情報と差分から XML を生成
- 02Bash と PowerShell の実装
- 03比較先ブランチとマージベースの指定
- 04拡張子やパスによるファイル除外
- 05変更ファイルの一覧と差分チャンクの確認
活用シーン
- 01コードレビュー用の構造化コンテキスト作成
- 02コミット履歴から PR 説明を作成
- 03ブランチ変更から作業項目を発見
- 04大規模な差分から対象ファイルを確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ microsoft/ hve-core --skill pr-referenceインストール後、Claude Code で/pr-referenceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/REFERENCE.mdscripts/generate.ps1generate.shlist-changed-files.ps1list-changed-files.shread-diff.ps1read-diff.shshared.psm1tests/generate.Tests.ps1list-changed-files.Tests.ps1read-diff.Tests.ps1shared.Tests.ps1詳細
PR 参照生成スキル
概要
git からコミットのメタデータと差分の出力を取得し、構造化された XML ドキュメントを生成します。bash と PowerShell の両方の実装が用意されています。
用途:
- コミット履歴からの PR の説明文の生成
- 構造化された差分コンテキストを使ったコードレビューの準備
- ブランチの変更を分析した作業項目の特定
- 変更されたファイルのセキュリティ分析
生成が正常に完了したら、応答に XML 出力の絶対パスへのファイルリンクを含めてください。
前提条件
リポジトリには、ベースブランチから分岐したコミットが少なくとも 1 つ必要です。
| プラットフォーム | ランタイム |
|---|---|
| macOS / Linux | Bash(プリインストール済み) |
| Windows | PowerShell 7+ (pwsh) |
| クロスプラットフォーム | PowerShell 7+ (pwsh) |
クイックスタート
次のコマンドを実行すると、デフォルト設定(origin/main との比較)で PR 参照を生成できます。
scripts/generate.sh
scripts/generate.sh --base-branch auto --merge-base --exclude-ext yml,json
scripts/generate.ps1
scripts/generate.ps1 -BaseBranch auto -MergeBase -ExcludeExt yml,json
デフォルトでは、出力は .copilot-tracking/pr/pr-reference.xml に保存されます。
パラメーターリファレンス
| パラメーター | フラグ(bash) | フラグ(PowerShell) | デフォルト | 説明 |
|---|---|---|---|---|
| ベースブランチ | --base-branch | -BaseBranch | origin/main(bash)/main(PowerShell) | 比較対象のブランチです。リモートのデフォルトを検出するには auto を使用します。 |
| マージベース | --merge-base | -MergeBase | false | 3 ウェイ比較に git merge-base を使用します |
| Markdown を除外 | --no-md-diff | -ExcludeMarkdownDiff | false | 差分から Markdown ファイル(*.md)を除外します |
| 拡張子を除外 | --exclude-ext | -ExcludeExt | (none) | 除外する拡張子をカンマ区切りで指定します(例:yml,yaml,json,png) |
| パスを除外 | --exclude-path | -ExcludePath | (none) | 除外するパスのプレフィックスをカンマ区切りで指定します(例:ドキュメントや GitHub 設定のディレクトリ) |
| 出力パス | --output | -OutputPath | .copilot-tracking/pr/pr-reference.xml | カスタム出力ファイルのパス |
どちらのデフォルト設定でも、同じリモートとの比較になります。PowerShell スクリプトでは、ブランチ名のみが指定された場合に origin/<branch> が自動的に解決されます。
追加スクリプトのリファレンス
PR 参照を生成した後、これらのユーティリティスクリプトを使用して XML を照会できます。
変更されたファイルの一覧表示
リストスクリプトを実行して、差分からファイルパスを抽出します。
scripts/list-changed-files.sh # all changed files
scripts/list-changed-files.sh --type added # filter by single type
scripts/list-changed-files.sh --type added,modified,renamed # filter by multiple types
scripts/list-changed-files.sh --exclude-type deleted # exclude specific types
scripts/list-changed-files.sh --format markdown # output as markdown table
scripts/list-changed-files.ps1 # all changed files
scripts/list-changed-files.ps1 -Type Added # filter by single type
scripts/list-changed-files.ps1 -Type Added,Modified,Renamed # filter by multiple types
scripts/list-changed-files.ps1 -ExcludeType Deleted # exclude specific types
scripts/list-changed-files.ps1 -Format Json # output as JSON
| パラメーター | フラグ(bash) | フラグ(PowerShell) | デフォルト | 説明 |
|---|---|---|---|---|
| 入力パス | --input, -i | -InputPath | (auto) | pr-reference.xml へのパス |
| 種類フィルター | --type, -t | -Type | all | 対象に含める変更の種類(カンマ区切り:added、modified など) |
| 除外する種類 | --exclude-type | -ExcludeType | (none) | 除外する変更の種類。--type が all 以外の場合は併用できません |
| 形式 | --format, -f | -Format | plain | 出力形式:plain、json、または markdown |
差分内容の読み取り
読み取りスクリプトを実行して、大きな差分を分割しながら内容を確認します。
scripts/read-diff.sh --info # chunk info (count, line ranges)
scripts/read-diff.sh --chunk 1 # read a specific chunk
scripts/read-diff.sh --file src/main.ts # extract diff for one file
scripts/read-diff.sh --summary # file stats summary
scripts/read-diff.ps1 -Info # chunk info
scripts/read-diff.ps1 -Chunk 1 # read a specific chunk
scripts/read-diff.ps1 -File "src/main.ts" # extract diff for one file
出力形式
生成される XML では、コミットメタデータと統一差分出力が <commit_history> ルート要素で囲まれます。XML スキーマ全体、要素のリファレンス、出力パスのバリエーション、ワークフローとの統合パターンについては、リファレンスガイドを参照してください。
トラブルシューティング
| 症状 | 原因 | 解決方法 |
|---|---|---|
| 「コミットが見つかりません」または XML が空 | ベースブランチから分岐したコミットがありません | git log base..HEAD で、ベースブランチより先行するコミットがあることを確認してください |
| 「ブランチが見つかりません」エラー | ベースブランチの参照がローカルにありません | git fetch origin を実行して、リモート追跡参照を更新してください |
| 「git: command not found」 | git が PATH にありません | git をインストールするか、PATH に git のバイナリディレクトリが含まれていることを確認してください |