mcpField
F
finish-line

finish-line

github.com/remix-run开发56.6k99 次安装今天更新
代码仓库

关于 finish-line

用于在 remix-run/react-router 中处理受阻社区 PR 的技能,同时遵循贡献者所有权和仓库规范。它会梳理阻塞原因、评估测试覆盖,并要求批准后再提交针对性补充。

主要功能

  1. 01检查 PR 状态与背景
  2. 02识别合并阻塞原因
  3. 03评估针对性测试覆盖
  4. 04添加已获批准的维护者补充
  5. 05准备变更文件与文档
  6. 06遵守贡献者分支所有权

适用场景

  1. 01梳理受阻的社区 PR
  2. 02补充缺失的测试或变更文件
  3. 03确认贡献者分支是否可写
  4. 04准备维护者补充内容供审批

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/remix-run/react-router --skill finish-line

安装后在 Claude Code 中输入/finish-line确认已加载。

详细介绍

终点线

概述

在 remix-run/react-router 中完成被阻塞的社区 PR,同时尊重贡献者的所有权以及仓库的 PR 打包约定。

将 $ARGUMENTS 中的 PR 编号或 URL 视为目标 PR。如果未提供目标,请在做任何事之前先询问。

分诊

  1. 使用 git status --short --branch 检查本地状态。如果存在无关的脏文件,不要覆盖或暂存它们。
  2. 在做分支决策之前,先拉取当前的 main:
git fetch origin main
  1. 收集 PR 上下文:
gh pr view <pr> --repo remix-run/react-router --json number,title,body,state,isDraft,author,baseRefName,headRefName,headRepository,headRepositoryOwner,maintainerCanModify,mergeStateStatus,reviewDecision,labels,files,commits,statusCheckRollup,url
gh pr checks <pr> --repo remix-run/react-router
gh pr diff <pr> --repo remix-run/react-router --stat
gh pr view <pr> --repo remix-run/react-router --comments
  1. 识别合并阻塞项。特别是:
  • 如果 PR 只需要仓库维护者的补充内容,例如测试、change file 或文档,请使用贡献者分支工作流。
  • 如果贡献者分支无法修改,请总结证据并询问用户是等待贡献者,还是在维护者分支上重新创建工作。
  • 如果阻塞项不明确,请总结证据并询问用户走哪条路径。
  1. 在决定终点线变更之前评估测试覆盖:
    • 检查 PR diff、变更的文件、现有的相近测试、审查评论以及失败的检查,以了解测试预期。
    • 如果 PR 更改了运行时行为、构建/插件行为、路由语义、生成的类型、RSC 行为、文档渲染,或任何可能回归的 bug/功能面,请添加或保留一个聚焦的测试,除非已经存在等效的覆盖。
    • 如果已包含测试,请验证它们是否覆盖了变更的行为,并覆盖了受影响的 React Router 模式:Declarative、Data、Framework、RSC Data 和/或 RSC Framework。
    • 如果不需要测试,因为变更是仅文档、仅打包、change file 或其他不可执行行为,请在最终报告中注明该理由。
    • 如果需要有用的测试但对于终点线范围而言过大或风险过高,请停下来并在扩大 PR 之前询问用户。

贡献者分支工作流

当缺失的工作是维护者的小幅后续补充,例如测试、change file 或文档,且贡献者分支可以修改时,使用此路径。

  1. 检出 PR 分支:
gh pr checkout <pr-number> --repo remix-run/react-router
  1. 确认分支和本地状态:
git status --short --branch
git branch --show-current
  1. 只进行缺失的终点线变更,包括在覆盖评估要求时添加聚焦的测试。不要重构贡献者的工作,除非这是解除合并阻塞所必需的且用户同意。
  2. 在推送之前与用户确认确切内容:
    • 对于 change file,显示包路径、文件名、变更类型以及完整的 markdown 内容。
    • 对于文档,显示受影响的文件以及相关的说明/API 片段。
    • 对于测试,显示测试文件路径、覆盖的行为以及覆盖的模式。
    • 明确请求批准以提交并推送回 PR 分支。
  3. 批准后,在适当情况下运行聚焦的验证,提交维护者的后续补充,并推送到 PR 分支。如果 git push 因贡献者分支无法修改而失败,请停下来并报告失败,而不是打开一个替代 PR,除非用户批准该转向。

Change Files

在受影响的包下创建 change files:

packages/<package>/.changes/<type>.<unique-meaningful-name>.md

使用 patch、minor、major 或 unstable 作为 <type>。对于 bug 修复和范围较窄的行为修复,默认使用 patch。保持内容简洁:

Brief description of the user-facing change

如果 PR 跨越多个包,优先选择具有直接面向用户的 API 或运行时行为的包。当包或变更类型不明显时,请询问用户。

文档

普通 bug 修复默认不添加文档。当 PR 更改了已有文档记录的 API、引入了用户需要了解的新行为、修改了示例,或用户/审查者明确要求文档时,才添加文档。

遵循仓库文档规则:

  • 编辑源文档或 JSDoc,而不是生成的 docs/api/ 输出。
  • 为 React Router 行为添加文档时,注明模式上下文:Declarative、Data、Framework、RSC Data 或 RSC Framework。
  • 对于从 JSDoc 生成的 API 文档,编辑 packages/react-router/lib/ 中的注释,并注明可能需要运行 pnpm run docs。

最终报告

报告所采取的路径和当前 PR 状态:

  • 原始 PR 编号和阻塞项。
  • 更改是推送到贡献者分支,还是打开了替代 PR。
  • 适用时提供分支、提交哈希和 PR URL。
  • 对旧 PR 采取的任何评论/关闭操作。
  • 已执行或跳过的验证。
  • 测试覆盖决策:已添加、已存在,或有意省略并说明理由。

评论

支持 Markdown