关于 heyeddi-pr-respond
用于处理队友、机器人和 HeyEddi CI 的 Pull Request 审查。它协调 CI 修复、意见分类、代码更改、提交推送及线程回复,并要求合并前获得明确授权。
主要功能
- 01获取并整理审查评论
- 02优先修复可处理的 CI 失败
- 03分类审查项并应用修改
- 04回复标记为已修复前先提交并推送
- 05发布并验证线程回复
- 06未经本轮授权不得合并
适用场景
- 01回复 PR 内联审查评论
- 02处理审查摘要中的问题
- 03排查 PR 工作中的 CI 失败
- 04合并前准备修复与回复
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ heyeddi-com/ heyeddi-skills --skill heyeddi-pr-respond安装后在 Claude Code 中输入/heyeddi-pr-respond确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
manifest.jsoncontext/ANTI_PATTERNS.mdEXAMPLES.mdPROSE_ANTI_SLOP.mdVOCABULARY.mdfixtures/sample-pr-comments.jsonreference/subagents.mdworkflow.mdscripts/_auto_sync.py_replies_parse.py_skill_cli.py_temp_store.py_untrusted_doc.pyassert_fixes_pushed.pyassert_no_merge.pybuild_comment_inventory.pydiscover_and_verify.pyfetch_pr_comments.pyfilter_comments.pypost_thread_replies.pyverify_response.py详细介绍
HeyEddi PR 回复
PR 作者针对所有评审来源的回复——包括人工队友、机器人和 HeyEddi CI(行内评论 + 根级摘要)。
只有一种回复技能。不要将人工评审和 CI 拆分成不同的工作流。
默认行为(无需确认)
处理任何 PR 时,不要询问是否要修复发现的问题、检查 CI 或发布串回复——始终执行这三项操作。
- 始终先运行
@heyeddi-ci-fails(获取、诊断并修复可操作的 CI 失败) - 自动修复有效的评审意见
- 自动提交并推送
- 自动在对应讨论串中发布每条回复
- 只有合并需要在当前轮次中获得合并授权
不创建项目临时文件
绝不要写入 .heyeddi/docs/pr-*(跟踪记录、回复、已发布内容、评论)。GitHub 讨论串是唯一可信来源(SSOT)。
| 数据 | 存放位置 |
|---|---|
| 评论缓存 | 系统临时目录(fetch_pr_comments stdout 路径) |
| 清单 | build_comment_inventory stdout(可选的临时缓存) |
| 跟踪记录 | 仅在聊天中 |
| 回复草稿 | 传给 post_thread_replies / verify_response 的 --replies-text |
| 发布日志 | 仅限 post_thread_replies stdout JSON |
如果 .heyeddi/docs/ 下存在旧版 pr-* / pr-*-ci-* 文件,请将其删除。
根级评审摘要(HeyEddi CI 等)
评审提交正文通常会列出如下发现的问题:
**Commented on the diff**
1. 🔴 Bug title — `path/to/file.py:185`
必须执行:
- 获取后运行
build_comment_inventory——解析根级摘要 + 行内 ID。 - 每个可发布条目都要进行修复/拒绝分析;必要时修改代码,并草拟
## Comment <id>回复。 - 孤立条目仍需在代码中进行修复/拒绝处理,并出现在
## Summary中。 - 不要在发布一条顶级回复后,就将根级摘要视为已处理完毕。
关键:发布“已修复”回复前,先提交并推送
评审者和 HeyEddi 只能看到远程 HEAD。
- 修复清单中标记为 fix/partial 的每个条目
- 提交——不要询问
- 推送到 PR 分支
- 在对应讨论串中发布回复
硬性门槛:assert_fixes_pushed --check(除非使用 --dry-run / --allow-unpushed,否则 post_thread_replies 内部也会执行)。
关键:仅在对应讨论串中回复
- 使用
gh api …/pulls/<N>/comments/<ID>/replies - 不要针对每条发现的问题使用
gh pr comment - 不要发送“已确认收到评审附件……”之类的垃圾内容
必须遵循的工作流
@heyeddi-ci-fails first → fetch + diagnose + fix CI failures + push
fetch_pr_comments --pr <N>
build_comment_inventory --pr <N> --write-cache
→ tracking table in chat (every item: id, type, fix|decline, status)
for each item: analyze vs PR goals → fix | decline | partial | out-of-scope
apply code/docs fixes when fix
@heyeddi-setup verify_setup --check → always-on prefs hard gate (before commit/push)
@engineering-excellence check_engineering_plan / audit_engineering --check → always-on (errors fail)
discover_and_verify [--run] → evidenced commands only
assert_no_merge --check → unless user said authorize merge
→ if any fix: commit + push (automatic — do not ask; honor agent.commit/push)
assert_fixes_pushed --check
→ compose ## Comment <id> for every postable_reply_id + ## Summary last
post_thread_replies --pr <N> --replies-text '...'
verify_response --pr <N> --replies-text '...' --use-inventory --live --check
→ optional one Summary after verify
绝不要在当前轮次未获得合并授权的情况下合并。
HeyEddi CI 误报
在对应讨论串中回复并说明拒绝理由;建议进行讨论,或联系 [email protected]。没有虚假的 FP API。
工具
| 工具 | 用途 |
|---|---|
fetch_pr_comments | 获取行内评论、评审和讨论 → 临时缓存 |
build_comment_inventory | 解析根级摘要 + 行内评论;列出所有条目 |
filter_comments | 可选参数 --scope heyeddi(默认值为 all) |
discover_and_verify | 查找并验证有依据的测试/构建命令 |
assert_no_merge | 合并硬性门槛 |
assert_fixes_pushed | 发布“已修复”回复前的提交+推送门槛 |
post_thread_replies | 在对应讨论串中发布所有草稿 |
verify_response | 如果缺少任何可发布的 ID,则硬性失败 |
要求
- 已通过身份验证的
ghCLI
完成任务后:建议接下来运行的技能
完成此技能对应的用户请求后,建议接下来运行以下内容:
python .agents/skills/heyeddi/scripts/suggest_next_skill.py \
--current-skill heyeddi-pr-respond --project-root .
评论
支持 Markdown