| name | fix-comment |
| description | GitHub 评论修复技能,用于获取 PR 的 Copilot 评论并分析修复问题 |
GitHub 评论修复技能
我是一个 GitHub PR 评论处理专家,专门获取 Copilot 评论并分析修复相关问题。
我的能力
当你需要处理 GitHub PR 中的 Copilot 评论时,我会:
- 解析 PR 信息 - 从输入中提取 PR 编号或 URL
- 获取分支名 - 获取 PR 对应的分支名
- 管理 worktree - 检查/创建/清理 git worktree
- 分析评论 - 获取 PR 评论并分析是否真的存在问题
- 修复问题 - 如果确实存在问题,修复代码并提交推送
- 清理环境 - 清理创建的 worktree,保持工作区整洁
使用方式
使用格式:/fix-comment [PR编号或URL]
示例:
/fix-comment 1358
/fix-comment https://github.com/shenjingnan/xiaozhi-client/pull/1358
执行流程
第一步:解析 PR 编号并获取 PR URL
第二步:获取 PR 信息并创建 worktree
gh pr view <pr-number> --json headRefName -q '.headRefName'
分支名转换规则:
- PR 分支名如
fix/foo → worktree 目录名 fix_foo
- 使用
_ 替换分支名中的 /
检查 worktree 是否存在:
git worktree list --porcelain | grep "worktrees/"
git worktree list
情况 A:worktree 已存在
情况 B:worktree 不存在,检查本地分支
-
本地已有该分支:
git worktree add ./worktrees/<dir-name> <pr-branch>
-
本地没有该分支:
git fetch origin
git worktree add ./worktrees/<dir-name> -b <pr-branch> origin/<pr-branch>
worktree 已存在但有改动:
- 提示用户当前 worktree 有未提交的更改
- 询问是否 stash 继续或终止
远端分支已删除:
第三步:进入 worktree 目录
cd ./worktrees/<dir-name>
git pull
第四步:获取并分析评论
- 获取 PR # 的所有待解决的评论,主要是 Copilot 的评论
- 分析这些评论是否真的存在问题
- 如果的确存在问题,调整代码
- 如果认为这是无关紧要的问题,或者是过度评论,可以不进行处理
如果分析评论后决定不修复,输出以下通知:
══════════════════════════════════════════════════════════════
PR #<pr-number> 评论分析完成
══════════════════════════════════════════════════════════════
状态: 无需修复
PR 链接: https://github.com/shenjingnan/xiaozhi-client/pull/<pr-number>
原因: <说明为什么不需要修复>
══════════════════════════════════════════════════════════════
第五步:提交并推送更改
在 worktree 中完成修复后:
git add -A
git commit -m "fix: 修复 PR 评论中的问题"
git push
在 git push 成功后,输出以下显著的通知:
══════════════════════════════════════════════════════════════
PR #<pr-number> 评论修复完成
══════════════════════════════════════════════════════════════
状态: 修复已推送
PR 链接: https://github.com/shenjingnan/xiaozhi-client/pull/<pr-number>
分支: <pr-branch>
提交: <commit-hash> - <commit-message>
══════════════════════════════════════════════════════════════
第六步:清理 worktree
完成修复后,清理创建的 worktree:
cd ../..
git worktree remove ./worktrees/<dir-name>
可选:删除本地分支(如果分支已合并或不需要保留):
git branch -d <pr-branch>
失败场景处理
如果处理过程中出现错误,也需要输出失败通知:
══════════════════════════════════════════════════════════════
PR #<pr-number> 评论处理失败
══════════════════════════════════════════════════════════════
状态: 处理失败
PR 链接: https://github.com/shenjingnan/xiaozhi-client/pull/<pr-number>
失败原因: <失败原因说明>
══════════════════════════════════════════════════════════════
注意事项
- 使用 worktree 可以并行处理多个 PR 评论任务,互不干扰
- 需要安装
gh CLI 工具
- 需要已认证 GitHub 账户
- worktree 目录位于项目根目录的
worktrees/ 文件夹下