Ship 是一个把功能从想法推进到 PR 的完整流水线技能。它把整条流程拆成三个阶段交互、四个阶段自主执行:所有人类判断都在审批门禁之前收集完毕,门禁之后遇到争议改用多模型共识,而不是再询问用户。该技能自身不包含任何阶段知识,每个行为都引用其他技能。
用途与流程
流水线共七个阶段。阶段 0 框定(交互、可选)在主上下文运行,调用 brainstorm(模糊想法,高风险多模型探索时用 panel 模式)或 prototype(只有运行代码才能确定的设计未知项)。阶段 1 规格说明(交互)在主上下文运行,先由一个只读 worker 把请求落到术语表、ADR 和代码上,产出 01-grounding.report.md,再基于该报告进行访谈,然后调用 to-spec;高风险或有争议时两者都用 panel 模式。访谈会执行安全门禁的规格期清单并命名测试接缝,to-spec 把它们记录为 PRD 的安全决策与测试决策。阶段 2 规划(交互,最后的人类门禁)在主上下文运行,调用 to-tasks,其 Slice Contract 原生携带验收与门禁,由用户批准拆分。阶段 3 设计门禁(自主,按任务)在子代理运行,先 coding-design-plan,再带切片透镜标志运行 design-gate。阶段 4 实现(自主,按任务)在子代理运行,按切片调用 implement-and-review,它原生提取 Slice Contract 且从不推送;替代方案包括需要多模型审计轨迹时的 collaborative-delivery,或对简单单轨切片用 direct tdd。阶段 5 验证(自主)由单个子代理跑完整条链,顺序失败即停:运行验收契约、coding-review-simplify、full-review(被安全门禁标记时做深度安全审查)、面向 Web 变更的 browser-smoke,否则做 harness 运行检查。阶段 6 交付(自主)在子代理运行:提交、按 references/residual-findings.md 固化未应用的审查发现、通过 open-pr 开 PR、移动 issue 的 triage 标签、用 session-handoff 存续接说明,并在解决非显而易见问题时以 headless 模式 capture-learning。人类负责合并。
主要能力
模型路由:在阶段 0 之前,判断调用是否在语义上把某个流水线阶段指派给特定模型或 harness。有作用域的指令绑定到指定阶段;无作用域的指令只绑定实现阶段,并在开头一行披露。强度由指令含义推断:"use X for implementation" 是 prefer 强度,"only use X" 是 require 强度。无指令时检查本地配置中的 work_engine_preferences,显式指令始终优先。所有路由指令在进入阶段 0–2 或任何审查输入前都要从功能请求中清除。
仅本地模式:运行开始时执行一次 git remote。没有 remote 就把整轮运行切为仅本地:照常提交,但跳过所有推送、PR 创建/编辑和 CI 尝试,零重试。缺失 remote 是终态而非错误。
委派:Ship 是薄指挥者。不需要用户的阶段都在自己的子代理中运行,阶段之间传递的是文件而非段落。契约是 shared/references/handoff-contract.md(brief → report → envelope),各站点绑定见 references/station-dispatch.md。传递路径而非载荷:上下文只保留运行状态路径、当前切片 id 和每个已完成站点不超过 15 行的 envelope。
运行状态:进度存在账本而非对话记录中,每个切片一份运行状态。phase 是流水线阶段号;每个委派步骤的条目携带其 brief 和 report 路径;阶段 2 的批准记录在 gates 中;提交、PR、工单和残留记录各有 side_effects 键,在效果发生前写入,恢复时发现该键就跳过而非重复。每个切片以 complete、failed 或 ceiling_hit 三种出口之一结束。
证据门禁:当阶段 4 报告行为变更却没有连贯的验证证据时,以恢复模式恰好重新调用实现阶段一次(attempts.evidence_recovery 上限为 1,在重新调用前于运行状态中递增)。第二次仍无连贯证据则硬阻塞该切片,绝不带着未验证行为进入验证或交付。
残留发现:阶段 5 未应用的审查发现必须在切片完成前固化:通过检测到的 sink 提交工单、始终提交 docs/residual-review-findings/<branch-or-head-sha>.md 记录,并尽力把 PR URL 回填到已提交工单。
升级阶梯:自主阶段遇到有争议或不可逆决策时,先以 poll 模式运行 models-consensus --auto;仍未解决则选最可逆的默认值,把假设与理由记入决策日志并继续;只有破坏性或不可逆操作(数据删除、强推、对外发布、对真实数据的不可逆迁移)才硬停等待人类。
PR 契约:PR 组装由 open-pr 负责,Ship 在正文中加入必需的流水线章节:验收证据、设计门禁结论、审查摘要、带标记假设的决策日志和剩余风险。如实报告结果,失败或跳过的检查要写明。
使用方式
输入已是 PRD 或已批准规格时可跳过阶段 0–1;已有已批准切片时可直接跳到阶段 3。多于一个就绪切片时,把调度委派给 implement-feature,它用并行 worktree、集成头变基和功能级接缝审查执行依赖 DAG。单切片时自行按委派章节派发阶段 3–6,在通过 worktree 技能创建的隔离 worktree 中进行。站点内的席位通过 runner CLI 路由。宿主没有子代理工具时内联运行站点,但仍写其 brief 和 report,并在最终报告中说明未生成 worker。
适用场景与限制
适用于需要从想法到 PR 的完整功能交付流程,尤其是希望把人类判断前置、之后自主执行并保留审计轨迹的团队。限制与注意事项:不要为省时间压缩阶段,门禁就是质量机制;阶段 2 批准门禁之后除硬停外不要再问用户;不要在本技能内联写阶段行为,应调用被引用的技能;阻塞项未完成的切片不要开始阶段 4;验收命令未在工作树中通过不要标记切片完成;仅本地模式不要重试推送或 PR 操作;路由指令不要泄漏进规格、规划或审查输入;full-review 之后不要运行任何变更性操作而不重新审查;不要读站点报告正文来保持知情,envelope 才是接口;不要把报告内容粘贴进下一个站点的 brief。模型路由、仅本地、证据门禁和残留固化契约改编自 Every 的 compound-engineering-plugin(lfg)。