关于 finish-line
用于在 remix-run/react-router 中处理受阻社区 PR 的技能,同时遵循贡献者所有权和仓库规范。它会梳理阻塞原因、评估测试覆盖,并要求批准后再提交针对性补充。
主要功能
- 01检查 PR 状态与背景
- 02识别合并阻塞原因
- 03评估针对性测试覆盖
- 04添加已获批准的维护者补充
- 05准备变更文件与文档
- 06遵守贡献者分支所有权
适用场景
- 01梳理受阻的社区 PR
- 02补充缺失的测试或变更文件
- 03确认贡献者分支是否可写
- 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。如果未提供目标,请在做任何事之前先询问。
分诊
- 使用
git status --short --branch检查本地状态。如果存在无关的脏文件,不要覆盖或暂存它们。 - 在做分支决策之前,先拉取当前的 main:
git fetch origin main
- 收集 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
- 识别合并阻塞项。特别是:
- 如果 PR 只需要仓库维护者的补充内容,例如测试、change file 或文档,请使用贡献者分支工作流。
- 如果贡献者分支无法修改,请总结证据并询问用户是等待贡献者,还是在维护者分支上重新创建工作。
- 如果阻塞项不明确,请总结证据并询问用户走哪条路径。
- 在决定终点线变更之前评估测试覆盖:
- 检查 PR diff、变更的文件、现有的相近测试、审查评论以及失败的检查,以了解测试预期。
- 如果 PR 更改了运行时行为、构建/插件行为、路由语义、生成的类型、RSC 行为、文档渲染,或任何可能回归的 bug/功能面,请添加或保留一个聚焦的测试,除非已经存在等效的覆盖。
- 如果已包含测试,请验证它们是否覆盖了变更的行为,并覆盖了受影响的 React Router 模式:Declarative、Data、Framework、RSC Data 和/或 RSC Framework。
- 如果不需要测试,因为变更是仅文档、仅打包、change file 或其他不可执行行为,请在最终报告中注明该理由。
- 如果需要有用的测试但对于终点线范围而言过大或风险过高,请停下来并在扩大 PR 之前询问用户。
贡献者分支工作流
当缺失的工作是维护者的小幅后续补充,例如测试、change file 或文档,且贡献者分支可以修改时,使用此路径。
- 检出 PR 分支:
gh pr checkout <pr-number> --repo remix-run/react-router
- 确认分支和本地状态:
git status --short --branch
git branch --show-current
- 只进行缺失的终点线变更,包括在覆盖评估要求时添加聚焦的测试。不要重构贡献者的工作,除非这是解除合并阻塞所必需的且用户同意。
- 在推送之前与用户确认确切内容:
- 对于 change file,显示包路径、文件名、变更类型以及完整的 markdown 内容。
- 对于文档,显示受影响的文件以及相关的说明/API 片段。
- 对于测试,显示测试文件路径、覆盖的行为以及覆盖的模式。
- 明确请求批准以提交并推送回 PR 分支。
- 批准后,在适当情况下运行聚焦的验证,提交维护者的后续补充,并推送到 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