SuperAPI AI 工具集

pr-implement

编程与开发

查看项目

更新于 10-15 15:46

技能介绍

PR Implement Skill 是一个面向开源贡献的基于 fork 的实现技能,核心特征是在实现计划前后强制执行隔离检查(isolation check),以保证 PR 干净、聚焦。

用途

该技能用于执行一份贡献计划,并通过 fork 隔离来确保 PR 的整洁与聚焦。它在实现开始前与进行中运行隔离检查。其输入为来自 $plan 的计划产物(在 $pr-research 之后生成)或仓库 URL。

适用场景

  • 实现一项已规划的开源贡献。
  • 需要隔离强制执行以获得干净的 PR。
  • 在完成 $pr-research 和 $plan 之后使用。

不适用场景:

  • 内部项目工作(应使用 $implement)。
  • 尚未规划的情况(应先运行 $pr-research 再运行 $plan)。

工作流程

流程包含以下阶段:

-1. 前置工作检查(阻塞)-> 检查是否存在竞争性的 PR。 0. 输入发现 -> 查找计划产物或仓库。

  1. Fork 设置 -> 确保 fork 存在且为最新。
  2. 工作区创建 -> 创建隔离的工作区(worktree)。
  3. 隔离预检查(阻塞)-> 若存在混合关注点则阻止。
  4. 实现 -> 执行计划。
  5. 隔离后检查(阻塞)-> 若出现范围蔓延则阻止。
  6. 提交准备 -> 以正确的提交类型暂存。
  7. 交接 -> 准备进入 $pr-prep。

阶段 -1:前置工作检查(阻塞)

使用命令搜索该主题上处于打开状态的 PR:

gg pr list -R <owner/repo> --state open --search "<topic>" --limit 10

并检查目标 issue 状态:

gh issue view <issue-number> -R <repo> --json state,assignees

根据发现采取行动:

  • 存在打开的 PR -> 协调或等待。
  • Issue 已被分配 -> 协调或寻找替代方案。
  • 无竞争性工作 -> 继续。

阶段 3:隔离预检查(阻塞)

提交类型分析:

git log --oneline main..HEAD | sed 's/^[^ ]* //' | grep -oE '^[a-z]+(([^)]+))?:' | sort -u

文件主题分析:

git diff --name-only main..HEAD | cut -d'/' -f1-2 | sort -u

检查项与通过标准:

  • 单一提交类型:0 或 1 个前缀。
  • 主题化文件:全部符合计划范围。
  • 分支新鲜度:基于近期 main。

若预检查失败则不要继续(DO NOT PROCEED IF PRE-CHECK FAILS)。

阶段 4:实现

实现准则:

  • 单一关注点:每个提交 = 一个逻辑变更。
  • 匹配约定:严格遵循项目风格。
  • 增量测试:每次变更后运行测试。

提交约定:

git commit -m "type(scope): brief description

Longer explanation if needed.

Related: #issue-number"

阶段 5:隔离后检查(阻塞)

再次执行提交类型分析:

git log --oneline main..HEAD | sed 's/^[^ ]* //' | grep -oE '^[a-z]+(([^)]+))?:' | sort -u

并查看摘要统计:

git diff --stat main..HEAD

检查项与通过标准:

  • 单一提交类型:所有提交共享同一前缀。
  • 主题化文件:所有文件均与 PR 范围相关。
  • 原子范围:可在一句话内解释清楚。

阶段 7:交接

实现完成且隔离检查通过后,交接信息包含:

  • 分支:origin/$BRANCH_NAME
  • 提交:N 个提交,+X/-Y 行
  • 下一步:$pr-prep

反模式

应避免的做法及替代方案:

  • 跳过隔离预检查 -> 先运行阶段 3。
  • 跳过隔离后检查 -> 在 push 前运行阶段 5。
  • 在提交中混合关注点 -> 每个 PR 只用一个类型前缀。
  • 无计划直接实现 -> 先运行 $pr-research 再运行 $plan。

示例

示例一:根据贡献计划实现。用户说:“Implement this external PR plan with isolation checks.” 流程为:运行分支与范围隔离预检查;仅在计划的文件/区域内实现;运行后检查并准备交接给 PR 准备阶段。

示例二:强制执行单一关注点提交集。用户说:“Make sure this branch is still single-purpose before I prep the PR.” 流程为:对照声明的范围检查提交/文件模式;标记混合关注点并建议拆分步骤;产出干净的交接给 $pr-prep。

故障排除

  • 隔离检查失败:原因是分支上存在无关变更 -> 将无关编辑移到单独分支/PR。
  • 提交混合关注点:原因是实现偏离计划 -> 按关注点重新拆分提交并重新验证。
  • 范围持续扩大:原因是计划边界薄弱 -> 重新锚定到“范围外”并停止额外变更。
  • 难以交接:原因是缺少摘要/测试上下文 -> 添加简洁的变更摘要与验证说明。

参考文档

references/pr-implement.feature —— 可执行规范:在 fork 分支上执行计划,实现前与实现中强制隔离,产出有范围且聚焦的 PR(soc-qk4b)。