opencode-ship 1.1.8 → 1.1.9-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +10 -10
  3. package/THIRD_PARTY_NOTICES.md +1 -1
  4. package/assets/agents/ship-controller.md +50 -28
  5. package/assets/agents/ship-final-spec-reviewer.md +11 -11
  6. package/assets/agents/ship-final-standards-reviewer.md +11 -11
  7. package/assets/agents/ship-plan.md +24 -5
  8. package/assets/agents/ship-planner.md +46 -20
  9. package/assets/agents/{delivery-reviewer.md → ship-reviewer.md} +16 -16
  10. package/assets/agents/ship-task-builder.md +11 -11
  11. package/assets/agents/ship-task-reviewer.md +12 -12
  12. package/assets/agents/{delivery-verifier.md → ship-verifier.md} +13 -13
  13. package/assets/commands/setup-ship-workflow.md +6 -5
  14. package/assets/commands/ship-deliver.md +21 -9
  15. package/assets/defaults/workflow-models.history.json +7 -0
  16. package/assets/defaults/workflow-models.json +5 -0
  17. package/assets/skills/brainstorming/SKILL.md +10 -7
  18. package/assets/skills/dispatching-parallel-agents/SKILL.md +1 -1
  19. package/assets/skills/engineering-workflow/SKILL.md +10 -4
  20. package/assets/skills/executing-plans/SKILL.md +18 -63
  21. package/assets/skills/planning-research-checkpoint/SKILL.md +16 -13
  22. package/assets/skills/receiving-code-review/SKILL.md +1 -1
  23. package/assets/skills/requesting-code-review/SKILL.md +1 -1
  24. package/assets/skills/setup-ship-workflow/SKILL.md +27 -33
  25. package/assets/skills/{delivery-workflow → ship-workflow}/SKILL.md +37 -11
  26. package/assets/skills/skill-discovery/SKILL.md +17 -89
  27. package/assets/skills/subagent-driven-development/SKILL.md +6 -2
  28. package/assets/skills/systematic-debugging/SKILL.md +1 -1
  29. package/assets/skills/test-driven-development/SKILL.md +1 -1
  30. package/assets/skills/verification-before-completion/SKILL.md +1 -1
  31. package/assets/skills/wayfinder/SKILL.md +7 -1
  32. package/assets/skills/writing-plans/SKILL.md +31 -20
  33. package/dist/cli.js +1476 -174
  34. package/dist/core.js +99 -7
  35. package/dist/plugin.js +18510 -17921
  36. package/package.json +2 -1
  37. package/schema/project-adapter.example.json +2 -2
  38. package/schema/project-opencode-shim.json +2 -0
  39. package/schema/ship-lock.schema.json +23 -2
  40. package/tests/plugin/expected-tools.mjs +46 -5
  41. package/tests/plugin/plugin-load.test.mjs +27 -5
  42. package/vendor/sources.json +21 -21
@@ -1,11 +1,17 @@
1
1
  ---
2
- description: Start a delivery workflow. First checks the setup-pending marker, then dispatches the durable ship-controller through ship_deliver.
2
+ description: Start a ship workflow. First checks the setup-pending marker, then dispatches the durable ship-controller through ship_deliver.
3
3
  ---
4
4
 
5
5
  # ship-deliver
6
6
 
7
7
  `ship-deliver <issue-number>` is the canonical entry point
8
- for a delivery workflow.
8
+ for a ship workflow.
9
+
10
+ Never ask how to run the work: no Subagent-Driven vs Inline, no Tab vs
11
+ Build, no GitHub issues vs Task N, no "what next", no visual-companion
12
+ upsell, no Deep Research unless the user asked to research.
13
+ After the user approves a plan, call ship_deliver. Do not offer
14
+ execution-mode menus.
9
15
 
10
16
  ## Procedure
11
17
 
@@ -25,15 +31,20 @@ If the marker is present:
25
31
 
26
32
  If the marker is absent, continue.
27
33
 
34
+ `ship_plan_start` runs stack skill sync before creating a workflow. Do not run the `skill-discovery` skill or `npx skills find` as a separate step.
35
+
28
36
  ### 1. Dispatch the controller
29
37
 
30
- Call `ship_deliver` with the issue number. Do not implement the issue through the legacy `delivery_issue` / `delivery_worktree` / `delivery_pr` path.
38
+ Call `ship_deliver` with the issue number. Do not implement the issue through Build-owned `ship_issue` / `ship_worktree` / `ship_pr` calls.
31
39
 
32
40
  1. Check setup-pending.
33
41
  2. Call `ship_deliver(issueNumber)`.
34
42
  3. Surface the controller session and `wf-<issue>` workflow id.
35
- 4. Await the explicit plan approval prompt.
36
- 5. Resume only through `ship-controller`.
43
+ 4. After issue ensure, print `Track: issue #<number>.`
44
+ 5. Await the explicit plan approval prompt.
45
+ 6. Resume only through `ship-controller`. After each successful
46
+ tool, print the matching `progressLine` as a normal chat
47
+ sentence. Do not wrap in JSON. Do not explain the stage.
37
48
 
38
49
  ### 2. Plan + approve
39
50
 
@@ -41,15 +52,16 @@ The controller starts or resumes durable workflow state, dispatches the planner,
41
52
 
42
53
  ### 3. Execute
43
54
 
44
- The controller drives each task through the cheap builder, task reviewer, commit binding, and same-HEAD Standards + Spec + verifier + required CI gates.
55
+ The controller drives each task through the cheap builder, task reviewer, commit binding, and same-HEAD Standards + Spec + verifier + required CI gates. Print `Build: task <k>/<n> <title>.` and `Review: pass.` or `Review: fail (see notes).` per task, then `Verify: pass.` or `Verify: fail.` once.
45
56
 
46
57
  ### 4. Ready
47
58
 
48
- Stop at Ready. Surface PR URL, worktree path, verifier SHA, and the explicit-merge instruction.
59
+ Stop at Ready. Print `Ready: PR #<number>.` Surface PR URL, worktree path, verifier SHA, and the explicit-merge instruction.
49
60
 
50
61
  ### 5. Merge
51
62
 
52
63
  On explicit `merge it`: fresh gate recheck, squash merge, and cleanup.
64
+ Print `Merge: <sha>.` then `Cleanup: done.`
53
65
 
54
66
  ## Hard rules
55
67
 
@@ -57,8 +69,8 @@ On explicit `merge it`: fresh gate recheck, squash merge, and cleanup.
57
69
  - **Never auto-approve a plan.** The user always reviews the plan.
58
70
  - **Never mark Ready or merge without a passing Standards review, a passing Spec review, a passing verifier run, and a passing required-CI check, all bound to one HEAD.**
59
71
  - **Never force-push, hard-reset, stash, or `git worktree remove`.**
60
- - **Never use `gh api` or raw shell on GitHub.** Use the typed `delivery_*` tools.
61
- - **Never abandon an attempt without an explicit user request after the PR is closed unmerged.** The controller may then call `delivery_abandon`.
72
+ - **Never use `gh api` or raw shell on GitHub.** Use the typed `ship_*` tools.
73
+ - **Never abandon an attempt without an explicit user request after the PR is closed unmerged.** The controller may then call `ship_abandon`.
62
74
 
63
75
  ## Stop conditions
64
76
 
@@ -0,0 +1,7 @@
1
+ [
2
+ {
3
+ "planner": "openai/gpt-5.6-sol",
4
+ "builder": "minimax/MiniMax-M3",
5
+ "finalReviewer": "openai/gpt-5.6-sol"
6
+ }
7
+ ]
@@ -0,0 +1,5 @@
1
+ {
2
+ "planner": "openai/gpt-5.6-sol",
3
+ "builder": "minimax-coding-plan/MiniMax-M3",
4
+ "finalReviewer": "openai/gpt-5.6-sol"
5
+ }
@@ -9,6 +9,12 @@ Help turn ideas into fully formed designs and specs through natural collaborativ
9
9
 
10
10
  Start by understanding the current project context, then ask questions one at a time to refine the idea. Once you understand what you're building, present the design and get user approval.
11
11
 
12
+ Never ask how to run the work: no Subagent-Driven vs Inline, no Tab vs
13
+ Build, no GitHub issues vs Task N, no "what next", no visual-companion
14
+ upsell, no Deep Research unless the user asked to research.
15
+ After the user approves a plan, call ship_deliver. Do not offer
16
+ execution-mode menus.
17
+
12
18
  <HARD-GATE>
13
19
  Do NOT invoke any implementation skill, write any code, scaffold any project, or take any implementation action until you have presented a design and the user has approved it. This applies to EVERY project regardless of perceived simplicity.
14
20
  </HARD-GATE>
@@ -22,7 +28,7 @@ Every project goes through this process. A todo list, a single-function utility,
22
28
  You MUST create a task for each of these items and complete them in order:
23
29
 
24
30
  1. **Explore project context** — check files, docs, recent commits
25
- 2. **Offer the visual companion just-in-time** — NOT upfront. The first time a question would genuinely be clearer shown than described, offer it then (its own message); on approval its browser tab opens for you. If no visual question ever arises, never offer it. See the Visual Companion section below.
31
+ 2. **Visual companion** — do not offer unless the user asked for a mockup. See the Visual Companion section below.
26
32
  3. **Ask clarifying questions** — one at a time, understand purpose/constraints/success criteria
27
33
  4. **Propose 2-3 approaches** — with trade-offs and your recommendation
28
34
  5. **Present design** — in sections scaled to their complexity, get user approval after each section
@@ -128,17 +134,14 @@ Wait for the user's response. If they request changes, make them and re-run the
128
134
 
129
135
  **Implementation:**
130
136
 
131
- - Invoke the writing-plans skill to create a detailed implementation plan
137
+ - After spec approval, invoke the writing-plans skill. Do not ask which skill to use.
132
138
  - Do NOT invoke any other skill. writing-plans is the next step.
133
139
 
134
140
  ## Visual Companion
135
141
 
136
142
  A browser-based companion for showing mockups, diagrams, and visual options during brainstorming. Available as a tool — not a mode. Accepting the companion means it's available for questions that benefit from visual treatment; it does NOT mean every question goes through the browser.
137
143
 
138
- **Offering the companion (just-in-time):** Do NOT offer it upfront. Wait until a question would genuinely be clearer shown than told — a real mockup / layout / diagram question, not merely a UI *topic*. The first time that happens, offer it then, as its own message:
139
- > "This next part might be easier if I show you — I can put together mockups, diagrams, and comparisons in a browser tab as we go. It's still new and can be token-intensive. Want me to? I'll open it for you."
140
-
141
- **This offer MUST be its own message.** Only the offer — no clarifying question, summary, or other content. Wait for the user's response. If they accept, start the server with `--open` so their browser opens to the first screen automatically. If they decline, continue text-only and don't offer again unless they raise it.
144
+ **Offering the companion:** Do not offer unless the user asked for a mockup. If they did, start the server with `--open` so their browser opens to the first screen automatically. Never upsell it.
142
145
 
143
146
  **Per-question decision:** Even after the user accepts, decide FOR EACH QUESTION whether to use the browser or the terminal. The test: **would the user understand this better by seeing it than reading it?**
144
147
 
@@ -157,4 +160,4 @@ This skill is part of the engineering profile shipped by
157
160
  Ship controller; the cheap builder (`minimax/MiniMax-M3`) cannot
158
161
  commit, push, mutate GitHub, mark Ready, or merge. The
159
162
  verification-before-completion rule is enforced by
160
- `delivery_verify`, not by the model self-asserting completion.
163
+ `ship_verify`, not by the model self-asserting completion.
@@ -173,4 +173,4 @@ This skill is part of the engineering profile shipped by
173
173
  Ship controller; the cheap builder (`minimax/MiniMax-M3`) cannot
174
174
  commit, push, mutate GitHub, mark Ready, or merge. The
175
175
  verification-before-completion rule is enforced by
176
- `delivery_verify`, not by the model self-asserting completion.
176
+ `ship_verify`, not by the model self-asserting completion.
@@ -13,7 +13,13 @@ Scaffold the per-repo configuration that the engineering skills assume:
13
13
  - **Triage labels** — the strings used for the five canonical triage roles
14
14
  - **Domain docs** — where `CONTEXT.md` and ADRs live, and the consumer rules for reading them
15
15
 
16
- This is a prompt-driven skill, not a deterministic script. Explore, present what you found, confirm with the user, then write.
16
+ This is a prompt-driven skill, not a deterministic script. Explore, then write. Do not ask how to run the work.
17
+
18
+ Never ask how to run the work: no Subagent-Driven vs Inline, no Tab vs
19
+ Build, no GitHub issues vs Task N, no "what next", no visual-companion
20
+ upsell, no Deep Research unless the user asked to research.
21
+ After the user approves a plan, call ship_deliver. Do not offer
22
+ execution-mode menus.
17
23
 
18
24
  ## Process
19
25
 
@@ -38,9 +44,9 @@ Lead each section with the recommended answer so the user can accept it in a wor
38
44
 
39
45
  **Section A — Issue tracker.**
40
46
 
41
- > Explainer: The "issue tracker" is where issues live for this repo. Skills like `to-tickets`, `triage`, `to-spec`, and `qa` read from and write to it — they need to know whether to call `gh issue create`, write a markdown file under `.scratch/`, or follow some other workflow you describe. Pick the place you actually track work for this repo.
47
+ > Explainer: The "issue tracker" is where issues live for this repo. Skills like `to-tickets`, `triage`, `to-spec`, and `qa` read from and write to it — they need to know whether to call `gh issue create`, write a markdown file under `.scratch/`, or follow some other workflow you describe.
42
48
 
43
- Default posture: these skills were designed for GitHub. If a `git remote` points at GitHub, propose that. If a `git remote` points at GitLab (`gitlab.com` or a self-hosted host), propose GitLab. Otherwise (or if the user prefers), offer:
49
+ If a `git remote` points at GitHub, write the GitHub tracker without asking. If a `git remote` points at GitLab (`gitlab.com` or a self-hosted host), propose GitLab. Otherwise offer:
44
50
 
45
51
  - **GitHub** — issues live in the repo's GitHub Issues (uses the `gh` CLI)
46
52
  - **GitLab** — issues live in the repo's GitLab Issues (uses the [`glab`](https://gitlab.com/gitlab-org/cli) CLI)
@@ -76,7 +82,7 @@ Let them edit before writing.
76
82
 
77
83
  - If `CLAUDE.md` exists, edit it.
78
84
  - Else if `AGENTS.md` exists, edit it.
79
- - If neither exists, ask the user which one to create don't pick for them.
85
+ - If neither exists, create `AGENTS.md` without asking.
80
86
 
81
87
  Never create `AGENTS.md` when `CLAUDE.md` already exists (or vice versa) — always edit the one that's already there.
82
88
 
@@ -1,73 +1,28 @@
1
1
  ---
2
2
  name: executing-plans
3
- description: Use when you have a written implementation plan to execute in a separate session with review checkpoints
3
+ description: Hand an approved implementation plan to ship_deliver. Use when the user opens a new chat and says implement this plan. Never implement or commit in this session.
4
4
  ---
5
5
 
6
6
  # Executing Plans
7
7
 
8
- ## Overview
8
+ This skill does not implement. It starts Ship.
9
9
 
10
- Load plan, review critically, execute all tasks, report when complete.
10
+ Never ask how to run the work: no Subagent vs Inline, no Tab vs Build,
11
+ no GitHub issues vs Task N, no "what next".
12
+ Never commit. Never push. Never edit source. Never work on `main`.
11
13
 
12
- **Announce at start:** "I'm using the executing-plans skill to implement this plan."
14
+ ## Procedure
13
15
 
14
- **Note:** Tell your human partner that Superpowers works much better with access to subagents (Claude Code, Codex CLI, Codex App, Copilot CLI, and Gemini CLI all qualify; see the per-platform tool refs in `../using-superpowers/references/`). If subagents are available, use superpowers:subagent-driven-development instead of this skill.
16
+ 1. Read the plan path the user named, or the latest `.opencode/plans/*.md`.
17
+ 2. Print `Plan: <path>`.
18
+ 3. Ensure a GitHub issue exists: call `ship_issue` with
19
+ `title` from the plan heading, `body` containing the plan path,
20
+ `baseBranch` from `.opencode/ship.config.json` `project.defaultBranch`,
21
+ `branch` `fix/<slug-from-title>`, `taskId` a slug from the title.
22
+ Print `Track: issue #N.`
23
+ 4. Call `ship_deliver` with that `issueNumber`. Print its `progress`
24
+ and `next` lines so the user sees the stage.
25
+ 5. Stop. The controller prints Build / Review / Verify / Ready.
15
26
 
16
- ## The Process
17
-
18
- ### Step 1: Load and Review Plan
19
- 1. Ensure an isolated workspace: use superpowers:using-git-worktrees to create one or verify the existing one
20
- 2. Read plan file
21
- 3. Review critically - identify any questions or concerns about the plan
22
- 4. If concerns: Raise them with your human partner before starting
23
- 5. If no concerns: Create todos for the plan items and proceed
24
-
25
- ### Step 2: Execute Tasks
26
-
27
- For each task:
28
- 1. Mark as in_progress
29
- 2. Follow each step exactly (plan has bite-sized steps)
30
- 3. Run verifications as specified
31
- 4. Mark as completed
32
-
33
- ### Step 3: Complete Development
34
-
35
- After all tasks complete and verified:
36
- - Announce: "I'm using the finishing-a-development-branch skill to complete this work."
37
- - **REQUIRED SUB-SKILL:** Use superpowers:finishing-a-development-branch
38
- - Follow that skill to verify tests, present options, execute choice
39
-
40
- ## When to Stop and Ask for Help
41
-
42
- **STOP executing immediately when:**
43
- - Hit a blocker (missing dependency, test fails, instruction unclear)
44
- - Plan has critical gaps preventing starting
45
- - You don't understand an instruction
46
- - Verification fails repeatedly
47
-
48
- **Ask for clarification rather than guessing.**
49
-
50
- ## When to Revisit Earlier Steps
51
-
52
- **Return to Review (Step 1) when:**
53
- - Partner updates the plan based on your feedback
54
- - Fundamental approach needs rethinking
55
-
56
- **Don't force through blockers** - stop and ask.
57
-
58
- ## Remember
59
- - Review plan critically first
60
- - Follow plan steps exactly
61
- - Don't skip verifications
62
- - Reference skills when plan says to
63
- - Stop when blocked, don't guess
64
- - Never start implementation on main/master branch without explicit user consent
65
-
66
- ## Ship integration
67
-
68
- This skill is part of the engineering profile shipped by
69
- `opencode-ship@1.0`. Execution is driven by the deterministic
70
- Ship controller; the cheap builder (`minimax/MiniMax-M3`) cannot
71
- commit, push, mutate GitHub, mark Ready, or merge. The
72
- verification-before-completion rule is enforced by
73
- `delivery_verify`, not by the model self-asserting completion.
27
+ If `ship_deliver` is missing, stop and say so. Do not fall back to
28
+ local commits or subagent-driven-development.
@@ -1,12 +1,21 @@
1
1
  ---
2
2
  name: planning-research-checkpoint
3
- description: Offers a single, optional Deep Research gate before non-trivial plans proceed to implementation. Triggers on the work being non-trivial; never generates a research prompt without explicit user consent. Use when the parent agent has finished the plan-mode brief and the work touches architecture, lifecycle design, or an unfamiliar domain.
3
+ description: Optional Deep Research gate before non-trivial plans proceed to implementation. Default is no research. Run research only if the user said "research" or "istrazi". Use when the parent agent has finished the plan-mode brief and the work touches architecture, lifecycle design, or an unfamiliar domain.
4
4
  ---
5
5
 
6
6
  # planning-research-checkpoint
7
7
 
8
8
  You trigger exactly once per non-trivial planning session. Trivial sessions (typo fixes, docstring changes, single-file edits, follow-up PRs on already-decided work) skip this gate silently.
9
9
 
10
+ Default is no research. Do not ask “Run Deep Research?”.
11
+ Run research only if the user said “research” / “istrazi”.
12
+
13
+ Never ask how to run the work: no Subagent-Driven vs Inline, no Tab vs
14
+ Build, no GitHub issues vs Task N, no "what next", no visual-companion
15
+ upsell, no Deep Research unless the user asked to research.
16
+ After the user approves a plan, call ship_deliver. Do not offer
17
+ execution-mode menus.
18
+
10
19
  ## When you trigger
11
20
 
12
21
  - The plan touches architecture, lifecycle, API surface, or test strategy
@@ -23,19 +32,13 @@ Do **not** trigger on:
23
32
  ## Procedure
24
33
 
25
34
  1. Read the current session's plan from the parent context. Do **not** ask the user to re-state it.
26
- 2. **Ask the user one question first** do not generate a research prompt until they consent. Use exactly this wording:
27
- > This looks non-trivial. Run Deep Research before continuing? **[yes / no]**
28
- 3. If the answer is **no**:
29
- - Proceed with the plan as written.
30
- - Do not mention the offer again this session.
31
- - Do not generate any research prompt — the explicit goal is to save the user's tokens.
32
- 4. If the answer is **yes**:
35
+ 2. If the user did not say “research” or “istrazi”, proceed with the plan as written. Do not mention research. Do not generate any research prompt.
36
+ 3. If the user said “research” or “istrazi”:
33
37
  - Output a single Markdown block titled "Research checkpoint" containing:
34
38
  - The plan summary in <= 3 bullets
35
39
  - A **one-line** decision the research is meant to inform
36
40
  - A draft Deep Research prompt in a copyable ```text fenced block
37
- - Ask the user one question: "Run the research, or proceed without?"
38
- - Wait for the result. Persist a concise dated summary into the consumer project's `docs/research/` only if the research materially shapes an ADR or other architectural decision; otherwise treat the result as session-local.
39
- 5. Never ask the user to formulate the prompt themselves. The draft is yours to write when consent is given.
40
- 6. Never loop. One offer, one outcome, continue.
41
- 7. Never persist the full research output. The summary you write must be yours, dated, and bounded.
41
+ - Run the research. Wait for the result. Persist a concise dated summary into the consumer project's `docs/research/` only if the research materially shapes an ADR or other architectural decision; otherwise treat the result as session-local.
42
+ 4. Never ask the user to formulate the prompt themselves. The draft is yours to write when they asked to research.
43
+ 5. Never loop. One outcome, continue.
44
+ 6. Never persist the full research output. The summary you write must be yours, dated, and bounded.
@@ -211,4 +211,4 @@ This skill is part of the engineering profile shipped by
211
211
  Ship controller; the cheap builder (`minimax/MiniMax-M3`) cannot
212
212
  commit, push, mutate GitHub, mark Ready, or merge. The
213
213
  verification-before-completion rule is enforced by
214
- `delivery_verify`, not by the model self-asserting completion.
214
+ `ship_verify`, not by the model self-asserting completion.
@@ -101,4 +101,4 @@ This skill is part of the engineering profile shipped by
101
101
  Ship controller; the cheap builder (`minimax/MiniMax-M3`) cannot
102
102
  commit, push, mutate GitHub, mark Ready, or merge. The
103
103
  verification-before-completion rule is enforced by
104
- `delivery_verify`, not by the model self-asserting completion.
104
+ `ship_verify`, not by the model self-asserting completion.
@@ -11,17 +11,23 @@ and before any `ship-deliver`. It is prompt-driven, idempotent, and refuses
11
11
  to return until every step is committed or explicitly skipped.
12
12
 
13
13
  The setup contract is GitHub-only. The skill refuses to drive GitLab,
14
- Jira, Linear, or local markdown because the controller's own delivery
14
+ Jira, Linear, or local markdown because the controller's own ship
15
15
  tool belt is GitHub-bound. A team that needs a different tracker should
16
16
  hold off on `opencode-ship@1.1.2` until 1.2 ships the next tracker.
17
17
 
18
+ Never ask how to run the work: no Subagent-Driven vs Inline, no Tab vs
19
+ Build, no GitHub issues vs Task N, no "what next", no visual-companion
20
+ upsell, no Deep Research unless the user asked to research.
21
+ After the user approves a plan, call ship_deliver. Do not offer
22
+ execution-mode menus.
23
+
18
24
  ## When you trigger
19
25
 
20
26
  - The user runs `/setup-ship-workflow` or types "set up ship" / "continue setup".
21
27
  - The installer creates `.opencode/ship.setup-pending.json` after `init`.
22
28
  - The controller also routes `ship-deliver` to this skill until the marker is cleared.
23
29
 
24
- Do **not** trigger on a normal planning or delivery request.
30
+ Do **not** trigger on a normal planning or ship request.
25
31
 
26
32
  ## Process
27
33
 
@@ -51,9 +57,9 @@ Also check:
51
57
 
52
58
  ### 2. Section A — GitHub repository
53
59
 
54
- The default is the GitHub repository that owns `git remote`. Confirm the
55
- detected `owner/repo` slug against the user's answer. If the user has
56
- multiple remotes, ask which one is the ship target.
60
+ If `git remote` is GitHub, write the GitHub tracker without asking,
61
+ using the detected `owner/repo` slug. If the user has multiple remotes,
62
+ ask which one is the ship target.
57
63
 
58
64
  Write `docs/agents/issue-tracker.md` with the resolved `owner/repo`,
59
65
  `default branch`, and the canonical `gh` commands:
@@ -95,44 +101,32 @@ Write `docs/agents/domain.md`.
95
101
 
96
102
  ### 5. Section D — AI model roles
97
103
 
98
- Three questions, one at a time. Default to `openai/gpt-5.6-sol` and
99
- `minimax/MiniMax-M3`; offer alternative families only when the user
100
- explicitly states they have no credentials for the defaults.
104
+ `init` already filled `workflow.models` from packaged defaults. Do not
105
+ ask the user to type three ids. Ask only whether they want an override.
101
106
 
102
- | Role | Default | Suggestion |
107
+ | Role | Packaged default | Suggestion |
103
108
  |---|---|---|
104
109
  | planner | `openai/gpt-5.6-sol` | strong model for plan writing |
105
- | builder | `minimax/MiniMax-M3` | cheap/fast model for code |
110
+ | builder | `minimax-coding-plan/MiniMax-M3` | cheap/fast model for code |
106
111
  | finalReviewer | `openai/gpt-5.6-sol` | strong model for final Standards + Spec review |
107
112
 
113
+ If the user keeps the defaults, leave `workflow.models` unchanged.
114
+ CLI `--planner-model` / `--builder-model` / `--final-reviewer-model`
115
+ mark that role as an override in the lock. To override later, edit
116
+ `.opencode/ship.config.json` or run `opencode-ship update` with those
117
+ flags (do not use `--force-config` just to change a model id).
118
+
108
119
  Alternatives to mention if the user has no OpenAI/MiniMax:
109
120
 
110
121
  - Anthropic: `anthropic/claude-opus-4.1`, `anthropic/claude-sonnet-4.5`
111
122
  - Google: `google/gemini-2.5-pro`, `google/gemini-2.5-flash`
112
123
  - Or any `<provider>/<model>` string the user has credentials for
113
124
 
114
- After the user answers, update `.opencode/ship.config.json`:
115
-
116
- ```json
117
- {
118
- "schemaVersion": 2,
119
- "profile": "engineering",
120
- "project": { ... },
121
- "delivery": { ... },
122
- "workflow": {
123
- "models": {
124
- "planner": "<answer>",
125
- "builder": "<answer>",
126
- "finalReviewer": "<answer>"
127
- },
128
- "approval": { "mirrorToIssue": true, "maxFailedRounds": 3 }
129
- }
130
- }
131
- ```
125
+ If they choose an override, run:
132
126
 
133
- Then run `opencode-ship update --planner-model <a> --builder-model <b>
134
- --final-reviewer-model <c> --force-config` to write the change with full
135
- transactional coverage.
127
+ ```
128
+ opencode-ship update --planner-model <a> --builder-model <b> --final-reviewer-model <c>
129
+ ```
136
130
 
137
131
  ### 6. Section E — Provider auth probe
138
132
 
@@ -169,7 +163,7 @@ Pick the file to edit:
169
163
 
170
164
  - If `CLAUDE.md` exists, edit it.
171
165
  - Else if `AGENTS.md` exists, edit it.
172
- - If neither, ask the user to pick one — never create both.
166
+ - If neither exists, create `AGENTS.md` without asking.
173
167
 
174
168
  If an `## Ship workflow` block exists, update in place. Otherwise append:
175
169
 
@@ -181,7 +175,7 @@ active model roles and approval policy. Issues live in GitHub.
181
175
  See `docs/agents/issue-tracker.md`. Triage labels are documented in
182
176
  `docs/agents/triage-labels.md`.
183
177
 
184
- For a single-issue delivery, the user invokes `/setup-ship-workflow`
178
+ For a single-issue ship, the user invokes `/setup-ship-workflow`
185
179
  once, then `ship-deliver <issue-number>` (or types "Ship issue N"). The
186
180
  controller dispatches the planner, builder, and reviewers; no further
187
181
  user action is required until Ready.
@@ -1,15 +1,24 @@
1
1
  ---
2
- name: delivery-workflow
3
- description: Orchestrates the canonical delivery lifecycle from issue creation through Ready PR. Use when the user asks for "implement issue N", "work on ready issues", "delivery", "autonomous delivery", or after a plan-mode session confirms the work scope.
2
+ name: ship-workflow
3
+ description: Orchestrates the canonical ship lifecycle from issue creation through Ready PR. Use when the user asks for "implement issue N", "work on ready issues", "ship", "implement this plan", "execute the plan", "ok implement", or after a plan-mode session confirms the work scope.
4
4
  ---
5
5
 
6
- # delivery-workflow
6
+ # ship-workflow
7
7
 
8
8
  You drive the opencode-ship package from a one-line user request to a green, conflict-free, ready-to-merge pull request by dispatching the durable controller.
9
9
 
10
+ Never ask how to run the work: no Subagent-Driven vs Inline, no Tab vs
11
+ Build, no GitHub issues vs Task N, no "what next", no visual-companion
12
+ upsell, no Deep Research unless the user asked to research.
13
+ After the user approves a plan, call ship_deliver. Do not offer
14
+ execution-mode menus.
15
+
10
16
  ## When you trigger
11
17
 
12
18
  - "Implement issue N", "work on issue N", "deliver issue N"
19
+ - "implement this plan"
20
+ - "execute the plan"
21
+ - "ok implement"
13
22
  - "Pick the next ready issue and implement it"
14
23
  - "Open a PR for #N"
15
24
  - "Mark PR #N ready"
@@ -26,28 +35,45 @@ Do **not** trigger on:
26
35
 
27
36
  | Step | Tool | Notes |
28
37
  |---|---|---|
29
- | 1. Cleanup merged worktrees | `delivery_inspect` / `delivery_cleanup` | Only for provably merged attempts |
38
+ | 1. Cleanup merged worktrees | `ship_inspect` / `ship_cleanup` | Only for provably merged attempts |
30
39
  | 2. Setup gate | `/ship-deliver` | Refuse if `.opencode/ship.setup-pending.json` exists |
31
40
  | 3. Dispatch controller | `ship_deliver` | Canonical Build-to-controller entrypoint |
32
41
  | 4. Plan + approve | controller / `ship_plan_approve` | Never auto-approve |
33
42
  | 5. Execute in linked worktree | controller | Builder, task review, commit, verifier, CI, dual-axis final review |
34
- | 6. Ready | `delivery_ready` | Controller-owned; same-HEAD gates required |
43
+ | 6. Ready | `ship_ready` | Controller-owned; same-HEAD gates required |
35
44
  | 7. Stop at Ready | (this skill) | Do not merge without an explicit user request |
36
- | 8. Merge | `delivery_merge` | Explicit user request only |
37
- | 9. Cleanup | `delivery_cleanup` | After a successful merge |
38
- | 10. Abandon closed unmerged attempts | `delivery_abandon` | Only after the user explicitly closes the PR and requests abandon |
45
+ | 8. Merge | `ship_merge` | Explicit user request only |
46
+ | 9. Cleanup | `ship_cleanup` | After a successful merge |
47
+ | 10. Abandon closed unmerged attempts | `ship_abandon` | Only after the user explicitly closes the PR and requests abandon |
48
+
49
+ Do not call `ship_worktree`, `ship_pr`, `ship_ready`, or `ship_merge` from Build to implement an issue. Those mutations belong to `ship-controller` after `ship_deliver`.
50
+
51
+ ## Progress
52
+
53
+ After each successful tool in the lifecycle, print the matching
54
+ `progressLine` as a normal chat sentence. Do not wrap in JSON. Do not
55
+ explain the stage.
56
+
57
+ - Track: after issue ensure — `Track: issue #<number>.`
58
+ - Build: per task — `Build: task <k>/<n> <title>.`
59
+ - Review: per task — `Review: pass.` or `Review: fail (see notes).`
60
+ - Verify: once — `Verify: pass.` or `Verify: fail.`
61
+ - Ready — `Ready: PR #<number>.`
62
+ - Merge — `Merge: <sha>.`
63
+ - Cleanup — `Cleanup: done.`
39
64
 
40
- Do not call `delivery_worktree`, `delivery_pr`, `delivery_ready`, or `delivery_merge` from Build to implement an issue. Those mutations belong to `ship-controller` after `ship_deliver`.
65
+ `shape` and `approve` have no line. Use `progressLine` from
66
+ `src/runtime/stages.js`.
41
67
 
42
68
  ## Hard rules
43
69
 
44
70
  1. Every PR carries a `Closes #N` reference. If the issue does not exist, the controller creates it first.
45
- 2. The lifecycle stops at Ready by default. An explicit "merge it" is the only thing that triggers `delivery_merge`.
71
+ 2. The lifecycle stops at Ready by default. An explicit "merge it" is the only thing that triggers `ship_merge`.
46
72
  3. Force-push, hard-reset, stash, and `git worktree remove` are denied. Use typed cleanup/abandon tools.
47
73
  4. You never edit `main` directly. You never bypass the reviewer/verifier gates.
48
74
  5. The typed tools are the only sanctioned way to mutate GitHub state. Do not invoke `gh pr merge`, `gh api`, or raw Git plumbing directly.
49
75
  6. When a gate fails, fix the cause and re-run only the failed gate; never skip.
50
- 7. If `delivery_merge` returns a `MergeError`, surface it verbatim. Do not invent a workaround.
76
+ 7. If `ship_merge` returns a `MergeError`, surface it verbatim. Do not invent a workaround.
51
77
 
52
78
  ## Stop conditions
53
79