Ship it 是一个面向代码交付流程的智能体技能,适用于需要把已完成的代码变更正式交付出去的场景。当用户要求交付一个已完成的变更、提交并创建 PR,或推送变更并观察 CI 时,可以使用该技能。如果只是监控一个已存在的 PR,则应使用 babysit。
主要能力
该技能覆盖完整的交付链路:在功能分支上提交变更、推送、创建或复用 PR、运行仓库配置的审查与本地验证,并在 CI 运行期间完成必要检查,最后监控 CI 直到结束。对于完整交付请求,最终目标是变更已提交、已推送、以非草稿状态作为就绪的 PR 打开,并且 CI 通过。
使用方式
提交变更时,应在功能分支而非默认分支上工作。如果当前功能分支已经承载该变更,则继续使用;否则遵循仓库的命名约定,没有约定时使用 agent/ 前缀。需要检查 diff 和工作树,保留无关的用户改动,显式暂存路径,并将相关文件分组为逻辑提交。提交信息使用祈使句主语,在主题不明显时解释变更原因,遵循当前归属和标点指令,提交正文约 80 列换行,但 PR 段落不硬换行。
打开或复用 PR 时,先推送并检查是否已有 PR,命令为 gh pr list --state open --head <branch> --json number,title,url,isDraft,baseRefName,headRefName。复用已有 PR;如果它是草稿,除非用户要求保持草稿,否则用 gh pr ready 标记为就绪。如果没有 PR,则用 gh pr create 创建非草稿 PR,仅在用户明确要求草稿时使用 --draft。默认以默认分支为 base,除非这是现有堆叠中的依赖层或用户指定了其他 base。PR 正文应解释为什么需要该变更以及改了什么,适用时用 Fixes #<n> 引用来源 issue,编辑正文时保留已有上下文,除非被要求否则不添加标签或审查者。
运行审查与验证时,对于完整交付请求,在打开或复用 PR 并设置预期就绪状态后,如果项目定义了签核工作流则运行它,使用仓库当前的审查策略,没有门禁时不要自行发明。阅读仓库的检查命令,运行必需的本地检查和覆盖变更行为的测试,构建前生成所需代码。变更触及集成边界时包含集成测试,确认相关测试确实运行而非被静默跳过。已有自动化端到端测试可提供运行时证据,没有独特风险要检查时不要手动重复其覆盖。对未覆盖的集成或视觉风险使用手动交互,测试代表性受影响流程而非共享组件的每条路由,变更影响响应式布局时检查响应式布局。CLI 或 API 行为可用聚焦测试或真实命令/请求提供证据。没有运行时表面的变更应说明无需运行时捕获。报告本地环境缺口,让 CI 覆盖需要其平台的检查。检查通过后,仅针对新编辑、失败或未解决风险重复或扩大验证,不要为改进验证流程而重构无关代码。提交并推送必要修复。
添加证据时,对于完整交付请求,添加 Testing 部分,包含确切命令、结果和相关缺口。自动化输出足够时使用现有输出。内联简洁文本证据放在带语言标签的围栏中:命令记录用 console,JSON 用 json,其他输出用 text。发布前从证据中移除密钥和私有数据。用 gh --attach 附加有用的截图或录屏,而非 gh-image,并遵循 github-image-upload 了解支持的媒体、附件语法和验证。文本证据已覆盖变更时无需媒体。不要提交证据文件。调用此完整工作流即授权将其证据添加到 PR。证据保留在 PR 正文中,保留其已有解释,任何必需的归属页脚放在最后。用 gh pr view 验证预期的 PR base、head、状态和证据。
监控已发布的 PR 时,在发布并验证 PR 后,使用 babysit 在等待前检查合并冲突,并观察 CI 直到完成。观察完整检查集,避免过滤视图隐藏失败。仅监控请求应报告冲突而不解决。对于请求范围内的失败,诊断、修复、运行受影响检查、提交、推送并再次观察。所记录行为变化时刷新证据。保留必需检查,不要绕过它们,也不要在检查失败、被取消或未按预期运行时声称成功。报告无关失败,而不是在没有指示的情况下扩大工作范围。如果访问或基础设施阻碍进展,指出阻碍和仍未解决的检查。
报告时,链接 PR 并说明其实际就绪状态和 CI 结果,总结有意义的变更和验证缺口。只有当完整适用的检查集支持该结论时,才说 CI 是绿色的。
适用场景与限制
该技能适用于完整交付请求,也支持较窄的请求并保持其范围:仅修复 CI 时,修复受影响分支和检查,不创建 PR,也不改变其草稿/就绪状态、base、标题或无关内容;仅监控时,报告结果而不做修复。明确要求保持草稿优先于完整工作流。除非被要求,否则不要合并 PR。仅在存在实质性歧义、需要审批或无法用现有访问解决的阻碍时暂停。