ship

工程开发 社区 v1.0.0
解读按原文结构重写,命令、链接、术语均保留;右侧可核对作者原始 SKILL.md

ship 是 gstack 的一键合并发版工作流——执行后完全非交互,把测试、覆盖率审计、计划完成度核对、pre-landing review、adversarial review、版本号、CHANGELOG、TODOS 维护、PR 创建与更新一路跑完,最后只输出 PR URL。作者明确:用户输 /ship 就等于 "DO IT",不要再问确认。

设计思路

作者把所有「能自动决策的」全部自动化:脏改自动 commit、版本自动选 MICRO / PATCH、CHANGELOG 自动从 diff 生成、commit message 自动写、多文件变更自动拆 bisectable commit、TODOS 自动 mark。只在真正需要人判断时才停:误在 base 分支 / 自动合不了的 conflict / 分支内测试失败 / pre-landing review 出 ASK / 需要 MINOR 或 MAJOR / Greptile 评论歧义 / AI 评估覆盖率低于阈值 / 计划项 NOT DONE 无 override / 计划验证失败 / TODOS.md 缺失或杂乱要否重整。

幂等

重跑 /ship 表示「整张 checklist 再跑一遍」。验证步骤每次都跑(测试、覆盖率审计、计划完成度、pre-landing review、adversarial review、VERSION/CHANGELOG 检查、TODOS、document-release);只有动作幂等:Step 12 已 bump 就跳 bump 但仍要读版本;Step 17 已 push 就跳 push;Step 19 已有 PR 就 update body 而不是新建。从不因前一次 /ship 跑过就跳验证。

工作流(节选关键步)

Step 0 检平台 / base;Step 1 Pre-flight(base 分支就 abort);Step 2 Distribution Pipeline Check;Step 3 把 base 分支 merge 进来再跑测试;Step 4 Test Framework Bootstrap;Step 5 在 merge 后跑测试,pre-existing 失败走 Test Failure Ownership Triage;后续是 coverage audit、plan completion、Step 12 版本 bump、Greptile 接入、PR 创建/更新。

适合的场景

  • 单 PR 合并节奏稳定的小团队,希望把所有验证 + PR 维护交给 agent
  • AI agent 协作下,每条 task 完成后即跑一次 /ship 验证整体健康
  • 想保证「PR 永远附 CHANGELOG / 版本号 / 覆盖率说明」

不适合

  • 仓库无清晰主分支 / 测试体系尚未建立——本技能很多步会卡
  • 强协作流程(CODEOWNERS 强 review)下,自动化合并 PR 会绕过人工评审

配套

review(pre-landing review 的具体执行)、requesting-code-review / receiving-code-review(在 /ship 内部抓 review)、land-and-deploy(合并后的部署链路)、landing-report(合并后的发布说明)、unfreeze(从冻结分支 / WIP 状态上 /ship 前的清场)。

流狐档案 作者与许可取自来源;运行、权限和网络为流狐检测或估算
流狐分类
工程开发
作者声明 Agent
未找到明确声明;不据此推断已兼容或已测试
静态检查
88 / 100 · 启发式扫描,不代表运行安全
作者 / 版本 / 许可
@garrytan · v1.0.0 · 未声明 license
流狐 Token 估算
较高消耗
流狐接入估算
需手动接入
是否需要外部 API Key
需要 · Vendor-specific
检测到的系统要求
macOS · Linux · Windows
底层运行要求
Node.js · Bun
检测到的文件与系统行为
  • 只读
  • 允许写入 / 修改
  • Shell 执行
检测到的网络行为
允许外网请求
安装命令数
无(仅作为资料)

档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。

需要注意: 未限定 allowed-tools,默认拥有全部工具权限。

输出预览 ship.preview
# Writing Style (skip entirely if EXPLAINLEVEL: terse appears in the preamble echo OR the user's current message explicitly requests terse / no-explanations output)

- Gloss curated jargon on first use per skill invocation, even if the user pasted the term.
- Frame questions in outcome terms: what pain is avoided, what capability unlocks, what user experience changes.
- Use short sentences, concrete nouns, active voice.
- Close decisions with user impact: what the user sees, waits for, loses, or gains.
- User-turn override wins: if the current message asks for terse / no explanations / just the answer, skip this section.
- Terse mode (EXPLAIN_LEVEL: terse): no glosses, no outcome-framing layer, shorter responses.

讨论

基于 GitHub Discussions。登录 GitHub 即可参与讨论、点赞、订阅更新。