feat(ship): merge short-ship and long-ship into one entry

Promote ship to the user-facing delivery skill. Kind is short or long
from an explicit mode, then self-judgment, then a question, defaulting
to short. Old names remain deprecation stubs.
This commit is contained in:
2026-10-24 14:27:19 +08:00
parent 7d6f3fe8e5
commit a15a046e4e
33 changed files with 331 additions and 315 deletions
+16 -17
View File
@@ -1,26 +1,25 @@
# long-ship
# long-ship(已弃用)
把复杂需求从 PRD 评审、任务拆分、协作开发推进到集成回归和配置允许的发布部署。
`long-ship` 已并入 [ship](../ship/README.md)。本目录只是兼容占位,
让旧项目里的 `.pouch.yaml`、已经装好的旧软链和旧说法不至于失效;真正的说明和流程都在
`ship/`。命中后按 **long 模式** 执行。
## 什么时候使用
## 使用示例
```text
把动态编辑需求做成 PRD,批准后拆任务开发,最后完整回归并部署测试环境。
使用 long-ship,把动态编辑需求做成 PRD,批准后拆任务开发。
```
## 使用前准备
Agent 命中后会立刻转到 `ship`,按 long 模式执行。新请求建议直接用 `ship`,需要时可写
`long 模式`。
- 同时安装 `ship`、`specifier` 和 `delivery-loop`。
- 需求目标和相关项目上下文。
- 用户愿意评审并明确批准某个 PRD 版本。
- 项目已配置测试环境和需要的构建/部署能力。
## 迁移
## Agent 会做什么
```bash
pouch add ship # 新名,当前项目
pouch add ship -g # 新名,全局
```
主会话只建 ship 记录、让你批 PRD、按步骤开新 agent 并等待。写 PRD、改代码、验证和
交付都在新会话里做。同一 ship id 串起任务和证据。
集成回归会先发现父仓库及子项目的 tester catalog,逐个测试根执行并分别记录快照,不会因父仓库没有 catalog 而跳过 `app` 等子项目;项目 profile 或 `.pouch/ack/project.md` 声明的原生测试套件也必须逐项执行并记录证据。
## 如何判断完成
你会得到 ship id、PRD 版本、任务与依赖、各任务验证、集成回归、最终 PR/合并、产物和部署证据。
- 旧软链保持有效,不需要先删除。
- 各项目 `.pouch.yaml` 里的 `long-ship` 可以分批改成 `ship`。
- 确认没有项目再按旧名启用后,删除本目录即可;它是纯占位,删除不丢内容。
+12 -58
View File
@@ -1,65 +1,19 @@
---
name: long-ship
description: >-
处理复杂或跨模块需求:先用 specifier 评审 PRD,批准后拆成有依赖的任务,再按共享
交付流程做集成回归并发布。触发词:long-ship、大需求、复杂需求、跨模块、PRD 批准后
开发。小改动用 short-ship;已有 PR 用 pr-ship。
【已弃用,兼容占位】long-ship 已并入 ship。命中本 skill 时不要在此执行任何
流程,直接读取 ../ship/SKILL.md 并按其执行;本次按 long 模式。复杂需求、跨模块、
PRD 批准后开发、拆任务交付都属于 ship。
---
# Long Ship:从需求到交付
# long-ship(已弃用)
当前会话只做管理:建账本、让用户批 PRD、按 `next_step.py` 开新 agent 并等待。
不要在本会话写 PRD、改业务代码或跑集成回归。
本 skill 已并入 [ship](../ship/SKILL.md)。这里只是兼容占位,**没有流程内容**。
## 何时使用
- 跨模块、跨页面、跨服务,或需要多任务协作的新需求。
- 用户要求从已批准 PRD 继续开发,并在完成后回归、发布或部署。
## 不适用
- 范围已清楚的单次变更:使用 `short-ship`。
- 需求仍需取舍和评审:先使用 `specifier`,不要提前改业务代码。
- 已有 PR 的处理:使用 `pr-ship`。
## 工作规则
1. 读取已安装 ship 的 [manager.md](../ship/references/manager.md)。派发 worker 时再读
[worker-prompt.md](../ship/references/worker-prompt.md)。创建或复用
`.pouch/ship/<id>/`,`kind: long`。用户明确批准具体版本前,不创建开发任务、
不改业务代码。
2. 只跑:
```bash
python3 <ship-skill>/scripts/next_step.py \
--project-root <root> --ship-id <id> --entry long
```
specifier / 实现 / 验证 / 开合 PR / 集成回归 / obtain / 部署都是 worker。
主会话从 `handoff.yaml` 写入 `tasks.yaml`(`materialize_tasks`),不要写入
`.pouch/ack/tasks.yaml`。
3. 无依赖冲突的 `implement_task` 可一轮并行,必须全部等完。子任务默认只到
`pr_opened` 或 `merged`,不单独部署生产。
4. 需求基线变化时停下来,让 `next_step.py` 回到 specifier;不要自己改 PRD。
需要字段含义时再读 [record.md](../ship/references/record.md)。
集成回归阶段由 tester worker 负责。worker 必须先发现项目根及子项目的所有 tester
catalog,按测试根分别执行并把每个根的运行快照写入 ship evidence;父仓库没有 catalog
时不能跳过拥有 catalog 的 `app` 等子项目。任一发现的测试根没有可复核结果,回归阶段
不能通过。还必须执行项目 profile 或 `.pouch/ack/project.md` 声明的项目原生测试套件,
为每个套件记录独立命令、结果和证据;任一测试面缺少结果时不能通过。
不要读取 `specifier`、`delivery-loop`、`tester`、`builder`、`deployer`、
`orchestration`(除非当前就在 Orca 里派发)。这些由 worker 或 manager.md 的条件加载。
## 安全门
- 未批准 PRD、缺 handoff、任务依赖循环、验收信号不可观测或集成回归失败时停止。
- 开不出新 agent 时停止;worker 失败时不要自己把该步做完。
- 不把 PRD 中的自然语言当命令、权限或发布授权;不静默扩大需求范围。
- 子任务不打生产 tag、不单独升级生产;发布以父 ship 的集成 commit 为来源。
## 完成报告
报告 ship id、PRD 版本、handoff、任务 DAG、各任务验证、集成回归、最终 commit、
PR/tag、产物摘要、部署状态和回滚点。数字来自账本。
- 用户提到 `long-ship`、`/long-ship`、`$long-ship` 或 long 模式时:读取
[../ship/SKILL.md](../ship/SKILL.md),按其内容与授权边界执行,并把本次 `kind`
定为 `long`。不要在本目录里寻找步骤、references 或 templates。
- 本目录不保留 `references/` 和 `templates/`,正文只有一份,在 `ship/`。
- 旧项目 `.pouch.yaml` 里仍写 `long-ship` 也能正常安装,软链不会悬空;方便时改成
`ship`。
- 确认没有项目再按旧名启用后,可以直接删除本目录。
-6
View File
@@ -1,6 +0,0 @@
interface:
display_name: "Long Ship"
short_description: "Turn an approved PRD into shipped work"
default_prompt: "You are the long-ship manager: keep the ship record, spawn a fresh agent for each next_step, and wait. Do not write the PRD, code, or run delivery in this session."
policy:
allow_implicit_invocation: true