mcpField
P
pr-reference

pr-reference

github.com/microsoft开发1.6k60 次安装今天更新
代码仓库

关于 pr-reference

用于生成 PR 参考资料的 Skill,可汇总 Git 提交元数据和差异并输出结构化 XML,提供 Bash 与 PowerShell 脚本。适用于准备代码审查、撰写 PR 描述、发现工作项及分析变更文件。

主要功能

  1. 01从提交元数据和差异生成 XML
  2. 02提供 Bash 与 PowerShell 实现
  3. 03配置基准分支和合并基点比较
  4. 04按扩展名或路径排除文件
  5. 05列出变更文件并分块查看差异

适用场景

  1. 01准备结构化代码审查上下文
  2. 02根据提交历史起草 PR 描述
  3. 03从分支变更中发现工作项
  4. 04检查大型差异中的指定文件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/microsoft/hve-core --skill pr-reference

安装后在 Claude Code 中输入/pr-reference确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
REFERENCE.md
scripts/
generate.ps1
generate.sh
list-changed-files.ps1
list-changed-files.sh
read-diff.ps1
read-diff.sh
shared.psm1
tests/
generate.Tests.ps1
list-changed-files.Tests.ps1
read-diff.Tests.ps1
shared.Tests.ps1

详细介绍

PR 参考生成技能

概述

从 git 查询提交元数据和差异输出,然后生成结构化 XML 文档。提供 Bash 和 PowerShell 两种实现。

适用场景:

  • 根据提交历史生成 PR 描述
  • 使用结构化差异上下文准备代码审查
  • 分析分支变更以发现工作项
  • 分析已修改文件的安全性

成功生成后,请在回复中附上指向 XML 输出绝对路径的文件链接。

前置条件

存储库必须至少有一个与基准分支存在差异的提交。

平台运行时
macOS / LinuxBash(预装)
WindowsPowerShell 7+ (pwsh)
跨平台PowerShell 7+ (pwsh)

快速开始

运行以下命令,使用默认设置生成 PR 参考(与 origin/main 比较):

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-BaseBranchorigin/main(bash)/ main(PowerShell)用于比较的目标分支。使用 auto 自动检测远程默认分支。
合并基准--merge-base-MergeBasefalse使用 git merge-base 进行三方比较
排除 Markdown--no-md-diff-ExcludeMarkdownDifffalse从差异中排除 Markdown 文件(*.md)
排除扩展名--exclude-ext-ExcludeExt(无)要排除的扩展名,以逗号分隔(例如,yml,yaml,json,png)
排除路径--exclude-path-ExcludePath(无)要排除的路径前缀,以逗号分隔(例如,文档和 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-Typeall要包含的更改类型(以逗号分隔:added、modified 等)
排除类型--exclude-type-ExcludeType(none)要排除的更改类型。与非 all 的 --type 互斥
格式--format, -f-Formatplain输出格式: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 架构、元素参考、输出路径变体和工作流集成模式,请参阅参考指南。

故障排除

症状原因解决方法
“No commits found” 或 XML 为空与基分支相比没有分叉提交使用 git log base..HEAD 确认当前分支有领先于基分支的提交
出现 “Branch not found” 错误本地缺少基分支引用运行 git fetch origin 更新远程跟踪引用
出现 “git: command not found”git 不在 PATH 中安装 git,或确认 PATH 包含 git 二进制文件所在目录

评论

支持 Markdown