关于 pr-reference
用于生成 PR 参考资料的 Skill,可汇总 Git 提交元数据和差异并输出结构化 XML,提供 Bash 与 PowerShell 脚本。适用于准备代码审查、撰写 PR 描述、发现工作项及分析变更文件。
主要功能
- 01从提交元数据和差异生成 XML
- 02提供 Bash 与 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 输出绝对路径的文件链接。
前置条件
存储库必须至少有一个与基准分支存在差异的提交。
| 平台 | 运行时 |
|---|---|
| macOS / Linux | Bash(预装) |
| Windows | PowerShell 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 | -BaseBranch | origin/main(bash)/ main(PowerShell) | 用于比较的目标分支。使用 auto 自动检测远程默认分支。 |
| 合并基准 | --merge-base | -MergeBase | false | 使用 git merge-base 进行三方比较 |
| 排除 Markdown | --no-md-diff | -ExcludeMarkdownDiff | false | 从差异中排除 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 | -Type | all | 要包含的更改类型(以逗号分隔:added、modified 等) |
| 排除类型 | --exclude-type | -ExcludeType | (none) | 要排除的更改类型。与非 all 的 --type 互斥 |
| 格式 | --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 架构、元素参考、输出路径变体和工作流集成模式,请参阅参考指南。
故障排除
| 症状 | 原因 | 解决方法 |
|---|---|---|
| “No commits found” 或 XML 为空 | 与基分支相比没有分叉提交 | 使用 git log base..HEAD 确认当前分支有领先于基分支的提交 |
| 出现 “Branch not found” 错误 | 本地缺少基分支引用 | 运行 git fetch origin 更新远程跟踪引用 |
| 出现 “git: command not found” | git 不在 PATH 中 | 安装 git,或确认 PATH 包含 git 二进制文件所在目录 |
评论
支持 Markdown