opencode-ship 1.1.4 → 1.1.5
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.
- package/CHANGELOG.md +9 -0
- package/README.md +1 -1
- package/THIRD_PARTY_NOTICES.md +1 -1
- package/assets/agents/ship-plan.md +18 -14
- package/dist/cli.js +3 -3
- package/dist/core.js +1 -1
- package/dist/plugin.js +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to `opencode-ship` are recorded here.
|
|
4
4
|
|
|
5
|
+
## 1.1.5 — `ship-plan` is product-only
|
|
6
|
+
|
|
7
|
+
> Branch: `feat/1.1.5-ship-plan-prompt`.
|
|
8
|
+
|
|
9
|
+
- **`ship-plan` prompt is product-only.** `1.1.4` shipped the `ship-plan` primary agent with a generic "ask clarifying questions when tradeoffs need the user's call" prompt and a "tell the user the file path and ask for confirmation before any edits" step. Both leaked workflow concerns into the chat: the model asked "open GitHub issues 0–6 or first Task 0 (commit /final)", "use this Tab (Build is for implementation)", and surfaced permission-glob internals ("`docs/superpowers/plans/` is deny; allowlist is `.opencode/plans/*.md`"). The Plan tab is the **product** half of the workflow; the user is there to talk about the product, not be taught the workflow. The rewrite replaces those lines with a strict contract: the prompt is allowed to ask only product questions (scope, UX, who it is for, what done looks like) and one final product question ("does the plan match the product you want?") before stopping. The prompt never asks how to run the work (issues vs Task N, subagent vs inline, Tab / Build, `ship-deliver`, "what next"), never mentions permission globs / deny lists / allowlists, never creates GitHub issues, never claims OpenCode's native `plan_exit`, and never offers to implement.
|
|
10
|
+
- **Handoff is a file, not a chat menu.** The Plan tab writes `.opencode/plans/<filename>.md` and stops. A later Build session is told `implement this plan <path>` (or `implement issue N` for the Issue path). The Plan tab does not offer "which approach?" or "subagent vs inline" — those are upstream Superpowers choices that ship does not copy. If a PR needs `Closes #N`, that issue is created by Build (`delivery_issue`), not by Plan.
|
|
11
|
+
- **Subagent dispatch is internal.** `ship-plan` keeps its `task: explore` / `general` allowlist so it can dispatch read-only investigators and write scratch notes, but the prompt no longer asks the user whether to use subagents. The decision is made by the planning agent itself from the size of the request.
|
|
12
|
+
- **`tests/package/neutral-consumer.test.mjs` regression.** The post-init probe now asserts the new prompt lines are present and the old workflow-leaking lines are absent. The 1.1.3 stale-record removal path is unchanged, so `opencode-ship update` from prior 1.1.x installs still cleans the leftover `*` wildcards the same way it did before this release.
|
|
13
|
+
|
|
5
14
|
## 1.1.4 — `ship-plan` primary planning agent
|
|
6
15
|
|
|
7
16
|
> Branch: `feat/1.1.4-ship-plan`.
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> npm-distributed OpenCode installer and delivery plugin: a single command materialises the lifecycle plugin, reviewer/verifier agents, and skills into any consumer repository, with a recoverable lock and never silently overwrites managed files.
|
|
4
4
|
>
|
|
5
|
-
> **Status:** `1.1.
|
|
5
|
+
> **Status:** `1.1.5` is on `npm dist-tag latest` and tightens the `ship-plan` primary planning agent so the Plan tab is product-only: it asks about the product, writes `.opencode/plans/*.md`, and stops. It never asks the user how to run the work (issues vs Task N, subagent vs inline, Tab / Build, `ship-deliver`), never mentions permission globs, and never offers to implement. From 1.1.4 `ship-plan` is the write-capable planning agent; OpenCode's built-in lowercase `plan` Tab is disabled. `1.1.3` supersedes the `1.1.2 stabilization` line by dropping the broken `permission: { "*": "deny" }` wildcard and adding a stale-pointer removal path so `update` cleans the orphan key on the first run. The `1.1.0` tag is immutable. Consumers of `opencode-delivery@0.1.x` should run `pnpm dlx opencode-ship@latest init` from the same checkout; migration recognises the legacy artifacts and adopts them when their bytes match.
|
|
6
6
|
>
|
|
7
7
|
> Consumers should use `opencode-ship@1.1.0` (or `@latest`) until `1.1.1` ships. The previous `1.0.0` is on `next`; consumers who pinned to `1.0.x` will continue to receive updates on that channel.
|
|
8
8
|
|
package/THIRD_PARTY_NOTICES.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Third-Party Notices
|
|
2
2
|
|
|
3
|
-
`opencode-ship@1.1.
|
|
3
|
+
`opencode-ship@1.1.5` ships the complete Matt Pocock and Superpowers
|
|
4
4
|
methodology under the MIT license, plus the Ship-owned installer,
|
|
5
5
|
plugin, agents, and skills. The complete immutable pin list is in
|
|
6
6
|
`vendor/sources.json`; the upstream snapshots are under
|
|
@@ -35,32 +35,36 @@ permission:
|
|
|
35
35
|
|
|
36
36
|
# Ship Plan
|
|
37
37
|
|
|
38
|
-
You are the primary planning agent
|
|
38
|
+
You are the primary planning agent. You talk about the product. You never talk about the workflow.
|
|
39
39
|
|
|
40
40
|
## What you do
|
|
41
41
|
|
|
42
|
-
1. Read the user's request and any context
|
|
43
|
-
2. Explore
|
|
44
|
-
3. Ask
|
|
45
|
-
4. Write
|
|
46
|
-
5. Tell the user the file path
|
|
42
|
+
1. Read the user's request and any `@file` context they cite.
|
|
43
|
+
2. Explore with read-only bash (git / ls / cat / gh issue view / gh pr view) and `task explore` / `task general`. Never `cat` secrets. You decide when to dispatch those subagents; never ask the user whether to use them.
|
|
44
|
+
3. Ask product questions only, one per turn via `question`: scope, UX, who it is for, what done looks like. When you must choose, recommend in one sentence.
|
|
45
|
+
4. Write the plan to `.opencode/plans/<filename>.md`. Filename: lowercase, dashes, no spaces, ends in `.md` (e.g. `2026-08-20-customer-final-ux.md`).
|
|
46
|
+
5. Tell the user the file path. Ask one question: whether the plan matches the product they want. Then stop.
|
|
47
47
|
|
|
48
48
|
## What you never do
|
|
49
49
|
|
|
50
|
-
- Never edit
|
|
50
|
+
- Never edit anything outside `.opencode/plans/*.md`.
|
|
51
51
|
- Never run mutating bash (`git commit`, `git push`, `npm install`, `rm`, `pnpm add`, …).
|
|
52
|
-
- Never
|
|
53
|
-
- Never
|
|
52
|
+
- Never ask how to run the work: no GitHub issues vs Task N, no Tab / Build, no subagent vs inline, no `ship-deliver`, no "what next".
|
|
53
|
+
- Never mention permission globs, deny lists, allowlists, or why a path was denied.
|
|
54
|
+
- Never create GitHub issues. A later Build session does that if a PR needs `Closes #N`.
|
|
55
|
+
- Never claim OpenCode's native `plan_exit`. This is a replacement for the read-only native Plan Tab, not the experimental one.
|
|
56
|
+
- Never invoke `task plan` or `task build`. Build runs the plan, in a different session.
|
|
57
|
+
- Never offer to implement.
|
|
54
58
|
|
|
55
59
|
## Style
|
|
56
60
|
|
|
57
|
-
- Write for
|
|
61
|
+
- Write for a later session that will be told `implement this plan <path>`. Be concrete: file paths, function names, the exact commit messages.
|
|
58
62
|
- Prefer small, vertical slices over big-bang rewrites.
|
|
59
|
-
- Quote the source lines you
|
|
60
|
-
-
|
|
63
|
+
- Quote the source lines you will touch.
|
|
64
|
+
- Pick one approach in the file; do not enumerate alternatives.
|
|
61
65
|
|
|
62
66
|
## Hard rules
|
|
63
67
|
|
|
64
|
-
- One question per turn via `question`.
|
|
68
|
+
- One question per turn via `question`. Product only.
|
|
65
69
|
- If a write fails, surface the error verbatim. Do not retry silently.
|
|
66
|
-
-
|
|
70
|
+
- Do not claim a file is written until `bash` confirms it.
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// opencode-ship CLI v1.1.
|
|
2
|
+
// opencode-ship CLI v1.1.5
|
|
3
3
|
var __defProp = Object.defineProperty;
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __esm = (fn, res) => function __init() {
|
|
@@ -110,7 +110,7 @@ import { fileURLToPath as fileURLToPath2 } from "node:url";
|
|
|
110
110
|
var PACKAGE_VERSION, TEMPLATE_SET;
|
|
111
111
|
var init_version = __esm({
|
|
112
112
|
"src/version.js"() {
|
|
113
|
-
PACKAGE_VERSION = "1.1.
|
|
113
|
+
PACKAGE_VERSION = "1.1.5";
|
|
114
114
|
TEMPLATE_SET = `v${PACKAGE_VERSION}`;
|
|
115
115
|
}
|
|
116
116
|
});
|
|
@@ -5249,7 +5249,7 @@ async function assembleLock({ repoRoot, plan, lock, configPlan, rootPlan, profil
|
|
|
5249
5249
|
manager: {
|
|
5250
5250
|
schemaVersion: CURRENT_LOCK_SCHEMA,
|
|
5251
5251
|
name: "opencode-ship",
|
|
5252
|
-
version: "1.1.
|
|
5252
|
+
version: "1.1.5",
|
|
5253
5253
|
templateSet: TEMPLATE_SET_ID,
|
|
5254
5254
|
profile: resolvedProfile,
|
|
5255
5255
|
appliedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
package/dist/core.js
CHANGED
package/dist/plugin.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
// opencode-ship v1.1.
|
|
1
|
+
// opencode-ship v1.1.5
|
|
2
2
|
var __defProp = Object.defineProperty;
|
|
3
3
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
4
4
|
var __esm = (fn, res) => function __init() {
|
|
@@ -19328,7 +19328,7 @@ function selectRuntimeAdapter({ config: config2, shipAdapter, legacyAdapter }) {
|
|
|
19328
19328
|
import { readFileSync as readFileSync4, existsSync as existsSync27 } from "node:fs";
|
|
19329
19329
|
import { dirname as dirname12, resolve as resolve21 } from "node:path";
|
|
19330
19330
|
import { fileURLToPath } from "node:url";
|
|
19331
|
-
var PACKAGE_VERSION = "1.1.
|
|
19331
|
+
var PACKAGE_VERSION = "1.1.5";
|
|
19332
19332
|
var TEMPLATE_SET = `v${PACKAGE_VERSION}`;
|
|
19333
19333
|
|
|
19334
19334
|
// src/plugin.js
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "opencode-ship",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.5",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "npm-distributed OpenCode installer that materializes the delivery plugin, reviewer/verifier agents, skills, ship config and lock into any consumer repository.",
|
|
6
6
|
"license": "MIT",
|