关于 ship-it
面向编码 Agent 的交付技能,指导从确认范围到测试、审查、更新 PR 和汇报状态的流程,并依据项目规则和验证结果报告交付情况。
主要功能
- 01确认范围、分支、远程端和 PR 基础分支
- 02按项目约定同步分支
- 03运行测试并审查待提交差异
- 04推送前检查机密信息
- 05创建或更新 PR 并检查 CI
- 06汇报交付状态与阻碍
适用场景
- 01准备功能分支以供交付
- 02创建 PR 前验证变更
- 03更新现有 PR 并检查 CI
- 04汇报部署或验证阻碍
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ timlai666/ skills --skill ship-it安装后在 Claude Code 中输入/ship-it确认已加载。
附带文件assets/pr-body.md
详细介绍
第 1 步 — 确认范围和项目规则
阅读项目的协作与交付说明。根据仓库设置和用户意图,确认预期结果、当前分支、目标远程仓库和 PR 基础分支;基础分支未知时,不要猜测为 main。
使用项目现有的交付文档。没有其他约定时,查找 delivery-status.md;旧项目还可使用 delivery-plan.md。阅读当前阶段、预期输出和验收要求,而不只是开头几行。如果差异与约定范围冲突,应在交付前与用户解决这一决定。不要仅为此检查而创建状态文件。
如果存在 delivery-plan.md,请遵循旧版状态迁移规则,检查已保存的决定;如有未解决事项,请询问,并在更改状态安排前记录用户的选择。
检查工作区更改和待推送提交。仅纳入预期工作。对于已获授权的提交,无需再次询问;不要悄悄暂存、丢弃或纳入无关更改。如果工作位于基础分支上,应建立合适的 PR 分支,不要重置现有工作。
创建提交时,编写提交消息前请遵循提交消息规则。
将 _SHIP_REMOTE、_SHIP_BASE 和 _SHIP_BRANCH 设置为已核实的值后:
git status --short
git diff "$_SHIP_REMOTE/$_SHIP_BASE...HEAD" --stat
git log "$_SHIP_REMOTE/$_SHIP_BASE..HEAD" --oneline
第 2 步 — 按需同步
获取目标基础分支,并检查是否需要同步。遵循项目的合并或变基惯例;不要自动将基础分支合并到每个分支中。未经授权,不要改写共享历史。
git fetch "$_SHIP_REMOTE" "$_SHIP_BASE"
根据预期行为和双方的更改解决冲突,然后验证解决结果。只有在无法根据现有证据判断重要的行为或范围决策时,才进行询问。
第 3 步 — 验证行为并审查最终差异
根据更改和风险运行适当的测试。按照项目规则运行完整测试套件。只有在先前结果涵盖当前代码和相关环境时,才可复用;后续编辑或冲突解决后,应重新运行受影响的检查。
检查重要行为、边界条件和错误处理是否都有覆盖。如果这些行为缺少证据,应补充有意义的测试,而不是要求每条新增代码路径都必须有测试,或只测试实现细节。
修复由此分支引入的故障。为已有故障或环境阻碍建立证据,遵循项目交付规则,并报告任何剩余的门槛,不要把部分结果说成全部通过。
除非已有审查涵盖相同差异,否则请对待推送的差异运行 diff-inspector。审查后续更改及其影响。根据严重程度和项目规则处理已确认的问题,并区分尚未解决的疑问与已确认的缺陷。
第 4 步 — 推送并创建或更新 PR
推送前,检查即将推送的提交和差异,查找密钥、令牌、凭据和敏感连接字符串等机密信息。如果发现机密信息,请停止推送并报告其位置,但不要复述机密值。
git push "$_SHIP_REMOTE" "$_SHIP_BRANCH"
创建 PR 前,先检查该分支是否已有 PR。遵循仓库的 PR 模板。如果没有模板,请使用PR 正文模板,填写实际变更和验证结果。根据变更调整详细程度,并删除不相关的部分。
不要在 PR 标题或描述中添加共同作者署名、Co-authored-by 署名行或 Agent 签名。
使用已通过身份验证的 GitHub CLI 时,将填写完成的正文保存到临时文件,并将其路径用作 _SHIP_PR_BODY。根据实际变更设置 _SHIP_TITLE:
gh pr create --base "$_SHIP_BASE" --head "$_SHIP_BRANCH" \
--title "$_SHIP_TITLE" --body-file "$_SHIP_PR_BODY"
对于已有 PR,请使用填写完成的正文文件,通过 gh pr edit 更新。如果 CLI 不可用或未通过身份验证,请使用可用且经过授权的替代方式,或提供填写完成的标题和正文供手动提交。报告实际成功完成的操作。
第 5 步 — 检查 CI 并记录经验
读取最终 PR 的检查结果,并报告其状态是通过、失败、待处理还是不可用:
gh pr checks "$_SHIP_PR_URL"
如果交付要求包括等待必需的 CI,请主动持续监控这些检查,直到得出结果,并在范围内处理失败:
gh pr checks "$_SHIP_PR_URL" --watch
如果要求验证部署,请找出针对目标修订版本和环境的部署工作流运行。将 _SHIP_RUN_ID 设置为已确认的运行 ID,并明确监控该运行:
gh run watch "$_SHIP_RUN_ID" --exit-status
检查失败的检查项或任务,并在范围内解决问题。报告成功前,验证部署是否达到了要求的结果;无关工作流通过不能作为部署已成功的证据。如果监控受阻或中断,请报告最后观察到的状态、PR 或运行的 URL,以及仍未验证的事项。
在此收尾检查点运行 project-memory,并遵循其记录标准。保存符合条件的项目专属经验,并报告已保存的条目。如果没有符合条件的内容,则无需说明。
交付报告
报告分支和范围、实际测试与审查结果、PR URL、CI 状态以及未解决的要求。根据证据区分已推送、已创建或更新 PR、已合并和已部署。创建 PR 并不能证明其已合并或已部署。