gh-pr-review-responder
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseGitHub PR Review Responder
GitHub PR评审响应工具
Purpose
用途
- Evaluate each review thread with KEEP vs DISCARD first (references/keep-discard-rubric.md) so low-value or out-of-scope feedback gets a clear, respectful reply without unnecessary code churn.
- Only KEEP items may lead to implementation work; DISCARD threads get a reply that states the decision and criteria, then resolve when appropriate.
- After KEEP code changes, verify and push per ADR 0002 (when defined).
pnpm lint && pnpm test - SKILL.md stays in English; GitHub replies match reviewer language (references/reply-templates.md).
- 首先使用KEEP vs DISCARD标准评估每个评审线程(参考references/keep-discard-rubric.md),让低价值或超出范围的反馈得到清晰、礼貌的回复,避免不必要的代码变更。
- 只有标记为KEEP的项才会开展实施工作;标记为DISCARD的线程会收到说明决策及判断标准的回复,并在合适时标记为已解决。
- 完成KEEP项的代码修改后,需根据ADR 0002进行验证并推送(若已定义则执行)。
pnpm lint && pnpm test - SKILL.md需保持英文;GitHub回复需匹配评审者的语言(参考references/reply-templates.md)。
When to Use
使用场景
- "PR レビュー対応", "review comments", "address feedback", , triage with KEEP/DISCARD.
gh-pr-review-responder
- 适用于“PR レビュー対応”、“review comments”、“address feedback”、、使用KEEP/DISCARD进行分类处理的场景。
gh-pr-review-responder
Do Not Use When
禁用场景
- Opening or editing PR metadata only—use create-pr-jp.
- Commit/push only without review—use commit-jp / push.
- Branch behind base—use pull first.
- 仅需创建或编辑PR元数据时——请使用create-pr-jp。
- 无需评审仅需提交/推送时——请使用commit-jp / push。
- 分支落后于基准分支时——请先使用pull。
Related Skills
相关技能
- push: Publish commits after KEEP fixes.
- pull: Sync before push when needed.
- commit-jp: Japanese commits for fix commits if required.
- create-pr-jp: Does not apply to review threads; PR must already exist.
- push:完成KEEP项修复后发布提交。
- pull:需要时在推送前同步分支。
- commit-jp:若有需要,使用日文提交信息记录修复提交。
- create-pr-jp:不适用于评审线程;PR必须已存在。
Prerequisites
前置条件
- authenticated; Python 3 for scripts; open PR for current branch.
gh
- 已完成认证;安装有Python 3以运行脚本;当前分支对应已开启的PR。
gh
Workflow
工作流程
Run bundled scripts from the skill root (directory containing this ): and . From this repo’s git root, prefix with . If commands are not found, see references/skill-root-resolution.md.
SKILL.mdpython3 scripts/fetch_review_threads.py …python3 scripts/reply_review_thread.py …skills/gh-pr-review-responder/-
Auth:; stop if unauthenticated.
gh auth status -
Collect threads:
python3 scripts/fetch_review_threads.py --format markdown
(Optional:,--include-resolved,--include-outdated.)--pr NUMBER -
KEEP vs DISCARD (mandatory for each pending thread):
Use references/keep-discard-rubric.md. For each comment:- Factual accuracy — read the actual code; note misunderstandings.
- Severity — CRITICAL / IMPORTANT / LOW.
- Diff relevance — does it target this PR’s changed lines (use or equivalent; align with repo base branch).
git diff <base>...HEAD - Actionability — specific fix vs vague “consider…”.
-
Decision:
- DISCARD if the rubric says so (LOW, wrong fact, out-of-diff, linter-only, vague, oscillation risk, etc.).
→ Reply only using the DISCARD templates in references/reply-templates.md; do not change product code for this thread. Resolve thread when suitable. - KEEP if CRITICAL/IMPORTANT, accurate, diff-relevant, and actionable (or KEEP with explanation if already fixed).
→ Sub-triage:- — implement fix, then step 6.
needs_code_change - — explanation or “already in this PR”; no further code (templates §1–2).
keep_replied - — KEEP but cannot act without reviewer input (template §3).
needs_clarification
- DISCARD if the rubric says so (LOW, wrong fact, out-of-diff, linter-only, vague, oscillation risk, etc.).
-
Post replies:
python3 scripts/reply_review_thread.py --thread-id <ID> --body-file ...
IncludeorDecision: KEEPand reasoning in the body (see the §0 structure blocks in references/reply-templates.md). Top-level comments:Decision: DISCARD.gh pr commentwhen the thread is complete.--resolve -
Checks + push — run only if at least one KEEP thread required:
needs_code_change- when defined; else AGENTS.md / README /
pnpm lint && pnpm test.package.json - Fix until green; commit (commit-jp if required); .
git push
-
Post failures: report command, stderr, draft text.
-
Final report: Counts KEEP / DISCARD; per thread/
implemented/discard-replied/keep-replied-no-code/clarification; files changed; checks; push result.blocked
从技能根目录(包含此的目录)运行捆绑脚本: 和 。从本仓库的Git根目录运行时,需添加前缀。若找不到命令,请参考references/skill-root-resolution.md。
SKILL.mdpython3 scripts/fetch_review_threads.py …python3 scripts/reply_review_thread.py …skills/gh-pr-review-responder/-
认证检查:执行;若未认证则停止操作。
gh auth status -
收集线程:
python3 scripts/fetch_review_threads.py --format markdown
(可选参数:、--include-resolved、--include-outdated。)--pr NUMBER -
KEEP vs DISCARD分类(必填):
参考references/keep-discard-rubric.md。针对每条评论需评估:- 事实准确性——查看实际代码;记录误解点。
- 严重程度——CRITICAL / IMPORTANT / LOW。
- 差异相关性——是否针对本次PR的变更代码行(使用或等效命令;与仓库基准分支对齐)。
git diff <base>...HEAD - 可操作性——具体修复建议还是模糊的“考虑…”。
-
决策:
- 若符合标准则标记为DISCARD(如LOW严重程度、事实错误、超出变更范围、仅代码检查问题、模糊建议、存在反复风险等)。
→ 仅回复,使用references/reply-templates.md中的DISCARD模板;请勿针对此线程修改产品代码。在合适时标记线程为已解决。 - 若为CRITICAL/IMPORTANT、准确、与变更相关且可操作(或已修复但需标记为KEEP并说明),则标记为KEEP。
→ 进一步分类:- ——实施修复,然后执行步骤6。
needs_code_change - ——提供解释或说明“已包含在本次PR中”;无需进一步代码修改(参考模板§1–2)。
keep_replied - ——标记为KEEP,但需评审者提供更多信息才能开展工作(参考模板§3)。
needs_clarification
- 若符合标准则标记为DISCARD(如LOW严重程度、事实错误、超出变更范围、仅代码检查问题、模糊建议、存在反复风险等)。
-
发布回复:
python3 scripts/reply_review_thread.py --thread-id <ID> --body-file ...
回复内容需包含**或Decision: KEEP**及理由(参考references/reply-templates.md中的§0结构块)。如需添加顶层评论:使用Decision: DISCARD。线程处理完成时添加gh pr comment参数标记为已解决。--resolve -
检查 + 推送——仅当至少一个KEEP线程要求****时执行:
needs_code_change- 若已定义则执行****;否则参考AGENTS.md / README /
pnpm lint && pnpm test。package.json - 修复问题直到检查通过;提交(若需要则使用commit-jp);。
git push
- 若已定义则执行**
-
上报失败:报告命令、标准错误输出、草稿文本。
-
最终报告:统计KEEP / DISCARD的数量;按线程状态统计/
implemented/discard-replied/keep-replied-no-code/clarification;记录修改的文件;检查结果;推送结果。blocked
Present Results to User
向用户展示结果
- KEEP vs DISCARD summary table or counts.
- Explicit statement: no code was written solely for DISCARD threads.
- KEEP vs DISCARD汇总表格或数量统计。
- 明确说明:未针对DISCARD线程编写任何代码。
Reply Quality Rules
回复质量规则
- DISCARD replies must name which criterion failed (severity, fact, diff, actionability)—see rubric.
- KEEP replies tie to evidence: paths, commits, tests.
- Match reviewer language.
- DISCARD回复必须说明哪项标准未通过(如严重程度、事实、变更范围、可操作性)——参考分类标准。
- KEEP回复需关联证据:文件路径、提交记录、测试用例。
- 回复需匹配评审者的语言。
Troubleshooting
故障排除
| Situation | Action |
|---|---|
| Scripts not found | skill-root-resolution.md |
| Unsure KEEP vs DISCARD | Re-read rubric; if still ambiguous, needs_clarification (not DISCARD by default) |
| See stderr; retry once |
| 场景 | 操作 |
|---|---|
| 找不到脚本 | 参考skill-root-resolution.md |
| 无法确定KEEP vs DISCARD | 重新阅读分类标准;若仍有歧义,标记为needs_clarification(默认不标记为DISCARD) |
| 查看标准错误输出;重试一次 |
Resources
资源
- references/keep-discard-rubric.md — KEEP/DISCARD criteria (source of truth).
- references/reply-templates.md — structures + EN/JP templates including DISCARD.
- references/skill-root-resolution.md — path resolution if fails.
scripts/... - scripts/fetch_review_threads.py
- scripts/reply_review_thread.py
- references/keep-discard-rubric.md —— KEEP/DISCARD分类标准(权威来源)。
- references/reply-templates.md —— 回复结构及EN/JP模板(包含DISCARD模板)。
- references/skill-root-resolution.md —— 若命令执行失败,参考此文档解决路径问题。
scripts/... - scripts/fetch_review_threads.py
- scripts/reply_review_thread.py