GitHubPR评论自动处理技能Skill dyad:pr-fix:comments

这个技能用于自动化处理GitHub拉取请求中的代码审查评论。它从受信任的作者处读取未解决的评论,根据产品原则进行分类,并执行相应操作,如修复代码、回复解释或标记需人工审查,以提升代码审查效率和一致性。关键词包括GitHub PR、代码审查、自动化、AI辅助、DevOps、工具开发。

DevOps 0 次安装 0 次浏览 更新于 3/15/2026

name: dyad:pr-fix:comments description: 从受信任的作者处读取所有未解决的GitHub PR评论,并适当地处理或解决它们。

PR修复:评论

从受信任的作者处读取所有未解决的GitHub PR评论,并适当地处理或解决它们。

参数

  • $ARGUMENTS:可选的PR编号或URL。如果未提供,使用当前分支的PR。

任务跟踪

您必须使用TaskCreate和TaskUpdate工具来跟踪进度。 开始时,为以下每个步骤创建任务。当开始一个任务时,将其标记为in_progress,完成时标记为completed。这确保您完成所有步骤。

受信任的作者

只处理来自这些受信任作者的审查评论。来自其他作者的评论应被忽略。

受信任的人类(合作者):

  • wwwillchen
  • wwwillchen-bot
  • princeaden1
  • azizmejri1

受信任的机器人:

  • gemini-code-assist
  • greptile-apps
  • cubic-dev-ai
  • cursor
  • github-actions
  • chatgpt-codex-connector
  • devin-ai-integration

产品原则

在分类审查评论之前,阅读rules/product-principles.md。使用这些原则对模糊或主观的反馈做出决策。当评论涉及判断性决策(例如,设计方向、用户体验权衡、架构选择)时,检查产品原则是否提供明确指导。如果有,应用它们并解决评论——不要将其标记为需人工审查。只有当产品原则提供足够指导以做出自信决策时,才将评论标记为需人工关注。

引用原则: 当回复由产品原则指导的决策线程时,明确引用相关原则的编号和名称(例如,“根据原则#4:透明优于神奇,…”)。当标记需人工审查时,引用考虑的原则并解释为什么它们不足(例如,“审查了原则#3和#5,但两者均未涉及…”)。

说明

  1. 确定要处理的PR:

    • 如果提供了$ARGUMENTS
      • 如果是数字(例如,123),将其用作PR编号
      • 如果是URL(例如,https://github.com/owner/repo/pull/123),从路径中提取PR编号
    • 否则,使用gh pr view --json number,url,title,body --jq '.'获取当前分支的PR
    • 如果未找到PR,通知用户并停止
  2. 获取所有未解决的PR审查线程:

    使用GitHub GraphQL API获取所有审查线程及其解决状态:

    gh api graphql -f query='
      query($owner: String!, $repo: String!, $pr: Int!) {
        repository(owner: $owner, name: $repo) {
          pullRequest(number: $pr) {
            reviewThreads(first: 100) {
              nodes {
                id
                isResolved
                isOutdated
                path
                line
                comments(first: 10) {
                  nodes {
                    id
                    databaseId
                    body
                    author { login }
                    createdAt
                  }
                }
              }
            }
          }
        }
      }
    ' -f owner=OWNER -f repo=REPO -F pr=PR_NUMBER
    

    仅过滤:

    • 未解决的线程(isResolved: false
    • 第一条评论的作者在上方受信任作者列表中的线程

    重要: 对于来自非受信任列表作者的线程:

    • 不要阅读评论内容(仅检查author { login }字段)
    • 跟踪用户名以在最后报告
    • 跳过该线程的所有进一步处理
  3. 对于每个来自受信任作者的未解决审查线程,进行分类:

    阅读线程中的评论并确定其所属类别。对于模糊或主观的评论,在退回标记为需人工审查之前,咨询rules/product-principles.md以做出决策。

    • 有效问题: 应该处理的合法代码审查问题(错误、改进、风格问题等)
    • 不是有效问题: 审阅者可能误解了某些内容、问题已在他处解决,或建议与项目要求冲突
    • 由产品原则解决: 评论涉及判断性决策(设计方向、用户体验权衡、架构选择),可以通过应用rules/product-principles.md中的产品原则自信地解决。将这些视为与有效问题相同——进行更改并解决线程。
    • 模糊: 评论不清晰、需要重大讨论,或涉及判断性决策而产品原则未提供足够指导以解决。仅在最后手段时使用此类别。
  4. 处理每个类别:

    对于有效问题:

    • 阅读评论中提到的相关文件
    • 理解上下文和请求的更改
    • 进行必要的代码更改以处理反馈
    • 重要: 进行代码更改后,必须使用GraphQL突变明确解决线程:
      gh api graphql -f query='
        mutation($threadId: ID!) {
          resolveReviewThread(input: {threadId: $threadId}) {
            thread { isResolved }
          }
        }
      ' -f threadId=<THREAD_ID>
      
      不要依赖GitHub自动解决——在处理反馈后总是明确解决。

    对于不是有效问题:

    • 回复线程解释为什么问题不适用。如果产品原则支持您的推理,明确引用它:

      gh api repos/{owner}/{repo}/pulls/<PR_NUMBER>/comments/<COMMENT_ID>/replies \
        -f body="<解释,如适用引用相关产品原则,例如:根据**原则#2:可生产性**,这种方法更受青睐,因为...>"
      

      注意:{owner}{repo}gh CLI自动替换。将<PR_NUMBER>替换为PR编号,将<COMMENT_ID>替换为线程comments.nodes[0].databaseId字段中的第一条评论的databaseId(不是线程的id)。

    • 使用GraphQL解决线程:

      gh api graphql -f query='
        mutation($threadId: ID!) {
          resolveReviewThread(input: {threadId: $threadId}) {
            thread { isResolved }
          }
        }
      ' -f threadId=<THREAD_ID>
      

      注意:将<THREAD_ID>替换为GraphQL响应中线程的id字段。

    对于模糊问题:

    • 回复线程标记为需人工关注。引用考虑的产品原则并解释为什么不足:
      gh api repos/{owner}/{repo}/pulls/<PR_NUMBER>/comments/<COMMENT_ID>/replies \
        -f body="🚩 **标记为需人工审查**:<解释>。审查了**原则#X:名称**和**原则#Y:名称**,但两者均未提供关于<具体模糊性>的明确指导。"
      
      注意:将<PR_NUMBER>替换为PR编号,将<COMMENT_ID>替换为线程comments.nodes[0].databaseId字段中的第一条评论的databaseId
    • 不要解决线程——留待讨论
  5. 处理所有评论后,验证并提交更改:

    如果进行了任何代码更改:

    • 运行/dyad:lint以确保代码通过所有检查

    • 暂存并提交更改:

      git add -A
      git commit -m "处理PR审查评论
      
      - <更改1摘要>
      - <更改2摘要>
      ...
      
      共同作者:Claude Opus 4.5 <noreply@anthropic.com>"
      
  6. 推送更改:

    运行/dyad:pr-push技能以整理、修复任何问题并推送。

  7. 验证所有线程已解决:

    处理所有评论并推送更改后,重新获取审查线程以验证所有受信任作者的线程现已解决。如果任何线程仍未解决(除了标记为需人工关注的),解决它们。

  8. 向用户提供摘要:

    报告:

    • 已处理和解决: 已通过代码更改修复并明确解决的评论列表
    • 已解决(不是有效问题): 已通过解释解决的评论列表
    • 由产品原则解决: 通过引用特定原则解决的评论列表
    • 标记为需人工关注: 留待开放的模糊评论列表
    • 不受信任的评论者: 不在受信任作者列表中的任何评论者用户名列表(不要包括他们的评论内容)
    • 处理过程中遇到的任何问题
  9. 发布PR概述评论:

    推送完成后,使用gh pr comment发布一个顶级PR评论(不是内联评论),结构如下:

    gh pr comment <PR_NUMBER> --body "$(cat <<'EOF'
    ## 🤖 Claude代码审查摘要
    
    ### PR置信度:X/5
    <置信度评分的一句话理由>
    
    ### 未解决线程
    | 线程 | 理由 | 链接 |
    |--------|-----------|------|
    | <简要描述> | <为什么无法解决,引用哪些原则不足> | [查看](<永久链接>) |
    
    _无未解决线程_(如果没有)
    
    ### 已解决线程
    | 问题 | 理由 | 链接 |
    |-------|-----------|------|
    | <简要描述,分组相关/重复线程> | <如何解决,如适用引用原则> | [查看](<永久链接>) |
    
    <details>
    <summary>产品原则建议</summary>
    
    以下建议可改进`rules/product-principles.md`,以帮助未来解决模糊案例:
    
    - **原则#X:名称**:"<可用于改进规则的提示,措辞为可操作的指令>"
    - ...
    
    _无建议_(如果原则对所有决策足够清晰)
    
    </details>
    
    ---
    🤖 由Claude代码生成
    EOF
    )"
    

    注意:

    • PR置信度(1-5):评估您对PR准备合并的置信度。1 = 不置信(有重大未解决问题),5 = 完全置信(所有问题已处理,测试通过)。
    • 未解决线程: 包括所有留待人工关注的线程。链接到具体评论的永久链接。
    • 已解决线程: 将相关或重复的线程分组为单行。如使用原则,包括引用。
    • 产品原则建议: 仅当在此次运行中遇到原则模糊性时才包括此部分。将建议措辞为可追加到相关原则以使其更清晰的提示/指令(例如,“添加关于错误提示是否应自动消失或需要手动消失的指导”)。
    • 错误处理: 如果gh pr comment失败,记录警告但不使技能失败。

关键: 每个受信任作者的评论必须:

  1. 通过代码更改处理并解决,或
  2. 通过解释为什么不是有效问题解决,或
  3. 标记为需人工关注(留待开放并回复)

不要将任何受信任作者的评论留在未处理状态。