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,104 +1,32 @@
1
1
  ---
2
2
  name: skill-discovery
3
- description: Discover and conditionally install skills from the open agent skills ecosystem before non-trivial work. Use when the parent agent is starting a new task and wants to ensure the most relevant public skills (React, testing, deployment, etc.) are available to the cheap builder.
3
+ description: Documentation for automatic stack skill discovery. Discovery runs inside init and ship_plan_start via syncSkills; do not treat this skill as a step the model must remember.
4
4
  ---
5
5
 
6
6
  # skill-discovery
7
7
 
8
- Discover skills from the open agent skills ecosystem (`npx skills`) that match the current task objective, then install the trusted ones locally. The hard rule is that this skill is **suggest-first, install-conditionally**: trusted sources may auto-install; everything else must be approved by the user.
8
+ Trusted stack skills are discovered and installed by `syncSkills`, not by remembering to run `npx skills find`. `init` runs the pipeline after a successful commit. `ship_plan_start` runs the same pipeline before creating a workflow, so discovery cannot be skipped.
9
9
 
10
- ## When you trigger
10
+ This skill is documentation only. Do not run a separate discovery pass unless the user asks.
11
11
 
12
- - The parent agent (typically `ship-deliver` or `ship-task-builder`) is about to dispatch a new task.
13
- - The task objective references a domain where a public skill likely exists (web frameworks, testing, deployment, design, etc.).
14
- - The user has not yet opted out of skill discovery for this session.
12
+ ## What the pipeline does
15
13
 
16
- Do **not** trigger on:
14
+ 1. Map `package.json` dependencies to 1–5 short queries (`react`, `nextjs`, `vitest`, …).
15
+ 2. On `ship_plan_start`, append extra queries from issue text without replacing the stack.
16
+ 3. Query the public skills registry and partition with `isAutoInstallable`.
17
+ 4. Auto-install trusted owners (`vercel-labs`, `anthropics`, `obra`, `mattpocock`, `ComposioHQ`) with `minInstalls >= 1000`, max 5 per pass, into `.opencode/skills/<name>/`.
18
+ 5. Skip untrusted owners, managed-skill name collisions, existing destinations, and policy rejects.
17
19
 
18
- - Trivial edits, doc rewrites, single-line fixes
19
- - Tasks that are already covered by a vendored skill from the engineering catalog
20
+ ## Untrusted candidates
20
21
 
21
- ## Procedure
22
-
23
- ### 1. Extract a discovery query
24
-
25
- From the current task brief (interfaces, files, technology stack), build one short query string (2–5 words). Example: `react testing`, `docker deploy`, `postgres migrations`, `tailwind components`.
26
-
27
- ### 2. Search the skills ecosystem
28
-
29
- ```bash
30
- npx skills find "<query>"
31
- ```
32
-
33
- The CLI returns candidates with source repo, install count, and skill name. Parse the output, do not transcribe it.
34
-
35
- ### 3. Score and filter
36
-
37
- The install allowlist and quality threshold live in `ship.config.json` under `skillDiscovery`:
38
-
39
- ```json
40
- {
41
- "skillDiscovery": {
42
- "trustedOwners": [
43
- "vercel-labs",
44
- "anthropics",
45
- "obra",
46
- "mattpocock",
47
- "ComposioHQ"
48
- ],
49
- "minInstalls": 1000,
50
- "blocklist": ["known-bad-owner/example"]
51
- }
52
- }
53
- ```
54
-
55
- **Auto-install** is allowed only if all of the following are true:
56
-
57
- - source owner is in `trustedOwners`
58
- - install count >= `minInstalls` (default 1000)
59
- - skill name does not conflict with a managed `opencode-ship` skill
60
- - the user has not previously blocked this skill in this repo
61
-
62
- Otherwise:
63
-
64
- - If the source is untrusted but the skill looks relevant, present 1–3 candidates to the user and wait for a yes/no.
65
- - If no candidates match, continue without installation.
66
-
67
- ### 4. Install project-locally
68
-
69
- Auto-approved candidates install to `.opencode/skills/<skill>/SKILL.md` (project-local). The typed tool `ship_skill_install` records every install in the run ledger so `doctor` and `uninstall` can audit it.
70
-
71
- Manual install if the user prefers global:
72
-
73
- ```bash
74
- npx skills add <owner/repo@skill> -g -y
75
- ```
76
-
77
- Prefer project-local unless the user explicitly asks for global.
78
-
79
- ### 5. Report
80
-
81
- After discovery, emit a one-line summary in the run:
82
-
83
- ```text
84
- Skill discovery: <n> candidates, <m> installed (<owner/skill list>).
85
- ```
86
-
87
- If 0 installed, say `Skill discovery: 0 installed, continuing with catalog skills only.`
22
+ - `init`: print untrusted package/skill names; do not wait.
23
+ - `ship_plan_start`: return them on the success envelope as `skills.skippedUntrusted`. Ask the user yes/no before any extra install.
88
24
 
89
25
  ## Hard rules
90
26
 
91
- - Never run `npx skills add` for an untrusted source without explicit user approval.
92
- - Never install a skill that shadows a managed opencode-ship skill (name collision).
93
- - Never run discovery when offline or when the registry is unreachable. Warn and continue.
27
+ - Never auto-install an untrusted owner.
28
+ - Never shadow a managed opencode-ship skill.
29
+ - Never overwrite an existing `.opencode/skills/<name>` directory.
94
30
  - Never install more than 5 skills in one discovery pass.
95
- - Never persist discovery results to `ship.config.json`. The discovery is per-task, not per-repo.
96
-
97
- ## Permissions
98
-
99
- This skill expects the following bash allowances on the host (configured in `ship-controller` frontmatter):
100
-
101
- - `npx skills find *`
102
- - `npx skills add *`
103
- - `ls .opencode/skills`
104
- - `cat .opencode/skills/*/SKILL.md`
31
+ - Registry / `skills` CLI failure is a warning. Continue with catalog skills only.
32
+ - Prefer project-local `.opencode/skills` unless the user explicitly asks for `~/.config/opencode`.
@@ -1,10 +1,14 @@
1
1
  ---
2
2
  name: subagent-driven-development
3
- description: Use when executing implementation plans with independent tasks in the current session
3
+ description: Do not use when opencode-ship is installed. Use ship_deliver. (Upstream Superpowers executor; ship consumers must not run it.)
4
4
  ---
5
5
 
6
6
  # Subagent-Driven Development
7
7
 
8
+ If this repo has `.opencode/plugins/opencode-ship.js`, do not use this
9
+ skill. Call `ship_deliver` (via executing-plans / ship-workflow)
10
+ instead. Never implement or commit in the current session.
11
+
8
12
  Execute plan by dispatching a fresh implementer subagent per task, a task review (spec compliance + code quality) after each, and a broad whole-branch review at the end.
9
13
 
10
14
  **Why subagents:** You delegate tasks to specialized agents with isolated context. By precisely crafting their instructions and context, you ensure they stay focused and succeed at their task. They should never inherit your session's context or history — you construct exactly what they need. This also preserves your own context for coordination work.
@@ -509,4 +513,4 @@ This skill is part of the engineering profile shipped by
509
513
  Ship controller; the cheap builder (`minimax/MiniMax-M3`) cannot
510
514
  commit, push, mutate GitHub, mark Ready, or merge. The
511
515
  verification-before-completion rule is enforced by
512
- `delivery_verify`, not by the model self-asserting completion.
516
+ `ship_verify`, not by the model self-asserting completion.
@@ -289,4 +289,4 @@ This skill is part of the engineering profile shipped by
289
289
  Ship controller; the cheap builder (`minimax/MiniMax-M3`) cannot
290
290
  commit, push, mutate GitHub, mark Ready, or merge. The
291
291
  verification-before-completion rule is enforced by
292
- `delivery_verify`, not by the model self-asserting completion.
292
+ `ship_verify`, not by the model self-asserting completion.
@@ -326,4 +326,4 @@ This skill is part of the engineering profile shipped by
326
326
  Ship controller; the cheap builder (`minimax/MiniMax-M3`) cannot
327
327
  commit, push, mutate GitHub, mark Ready, or merge. The
328
328
  verification-before-completion rule is enforced by
329
- `delivery_verify`, not by the model self-asserting completion.
329
+ `ship_verify`, not by the model self-asserting completion.
@@ -126,4 +126,4 @@ This skill is part of the engineering profile shipped by
126
126
  Ship controller; the cheap builder (`minimax/MiniMax-M3`) cannot
127
127
  commit, push, mutate GitHub, mark Ready, or merge. The
128
128
  verification-before-completion rule is enforced by
129
- `delivery_verify`, not by the model self-asserting completion.
129
+ `ship_verify`, not by the model self-asserting completion.
@@ -6,6 +6,12 @@ disable-model-invocation: true
6
6
 
7
7
  A loose idea has arrived — too big for one agent session, and wrapped in fog: the way from here to the **destination** isn't visible yet. Wayfinding is about finding that way, not charging at the destination. This skill charts the way as a **shared map** on the repo's issue tracker, then works its **decision tickets** — questions whose resolution is a decision, not slices of a build to execute — one at a time until the route is clear.
8
8
 
9
+ Never ask how to run the work: no Subagent-Driven vs Inline, no Tab vs
10
+ Build, no GitHub issues vs Task N, no "what next", no visual-companion
11
+ upsell, no Deep Research unless the user asked to research.
12
+ After the user approves a plan, call ship_deliver. Do not offer
13
+ execution-mode menus.
14
+
9
15
  The destination varies per effort, and naming it is the first act of charting — it shapes every ticket. It might be a spec to hand off and iterate on, a decision to lock before planning starts, or a change made in place like a data-structure migration. The map is domain-agnostic — engineering work, course content, whatever fits the shape.
10
16
 
11
17
  ## Plan, don't do
@@ -109,7 +115,7 @@ Two modes. Either way, **never resolve more than one ticket per session** — wi
109
115
  User invokes with a loose idea.
110
116
 
111
117
  1. **Name the destination.** Run a `/grilling` and `/domain-modeling` session to pin down what this map is finding its way to — the spec, decision, or change. The destination fixes the scope, so it's settled first.
112
- 2. **Map the frontier.** Grill again, **breadth-first** this time: fan out across the whole space rather than deep on any one thread, surfacing the open decisions and the first steps takeable now. **If this surfaces no fog** — the way to the destination is already clear, the whole journey small enough for one session — you don't need a map. Stop and ask the user how they'd like to proceed.
118
+ 2. **Map the frontier.** Grill again, **breadth-first** this time: fan out across the whole space rather than deep on any one thread, surfacing the open decisions and the first steps takeable now. **If this surfaces no fog** — the way to the destination is already clear, the whole journey small enough for one session — you don't need a map. Continue into `ship_deliver`, or stop after the map exists.
113
119
  3. **Create the map** (label `wayfinder:map`): Destination and Notes filled in, Decisions-so-far empty, the fog sketched into **Not yet specified**.
114
120
  4. **Create the tickets you can specify now** as child issues of the map — then wire blocking edges in a **second pass** (issues need ids before they can reference each other). Wiring sorts them into the frontier and the blocked; everything you can't yet specify stays in the fog — the **Not yet specified** section.
115
121
  5. **Fire the research subagents.** For each `research` ticket you just created, spin up a `/research` subagent to resolve it in parallel, capturing its findings on a throwaway `research/<name>` branch with a context pointer from the ticket.
@@ -149,29 +149,40 @@ If you find issues, fix them inline. No need to re-review — just fix and move
149
149
 
150
150
  ## Execution Handoff
151
151
 
152
- After saving the plan, offer execution choice:
153
-
154
- **"Plan complete and saved to `docs/superpowers/plans/<filename>.md`. Two execution options:**
155
-
156
- **1. Subagent-Driven (recommended)** - I dispatch a fresh subagent per task, review between tasks, fast iteration
157
-
158
- **2. Inline Execution** - Execute tasks in this session using executing-plans, batch execution with checkpoints
159
-
160
- **Which approach?"**
161
-
162
- **If Subagent-Driven chosen:**
163
- - **REQUIRED SUB-SKILL:** Use superpowers:subagent-driven-development
164
- - Fresh subagent per task + two-stage review
165
-
166
- **If Inline Execution chosen:**
167
- - **REQUIRED SUB-SKILL:** Use superpowers:executing-plans
168
- - Batch execution with checkpoints for review
152
+ After saving the plan, tell the user the file path in one sentence
153
+ using: `Plan: <path>`. Ask one product question: whether the plan
154
+ matches what they want. Then stop.
155
+
156
+ Never ask how to run the work: no Subagent vs Inline, no Tab vs
157
+ Build, no GitHub issues vs Task N, no "what next".
158
+
159
+ ### After the user confirms the plan
160
+
161
+ The plan is product-shaped, not workflow-shaped. The next step is
162
+ a single fork — does the user want to start building now in this
163
+ chat, or continue later in a new chat?
164
+
165
+ 1. Ask **one** `question`: "Start building now in this chat, or
166
+ continue later?" Recommend "Start now" — this chat waits until
167
+ the controller finishes and prints the PR Ready.
168
+ 2. On **Start now**: call `ship_issue` (use the plan heading as
169
+ the title and the plan path as the body) and then call
170
+ `ship_deliver` with that issue number. Print the envelope
171
+ `progress` and `next` lines so the user sees the stage. Stop
172
+ talking about how the work runs; the controller prints Build /
173
+ Review / Verify / Ready per task.
174
+ 3. On **Continue later**: print exactly two lines and stop.
175
+
176
+ ```
177
+ Plan: <path>
178
+ To build this later, start a new chat and say: Implement the approved plan at <path>
179
+ ```
169
180
 
170
181
  ## Ship integration
171
182
 
172
183
  This skill is part of the engineering profile shipped by
173
184
  `opencode-ship@1.0`. Execution is driven by the deterministic
174
- Ship controller; the cheap builder (`minimax/MiniMax-M3`) cannot
175
- commit, push, mutate GitHub, mark Ready, or merge. The
185
+ Ship controller; the cheap builder (`minimax-coding-plan/MiniMax-M3`)
186
+ cannot commit, push, mutate GitHub, mark Ready, or merge. The
176
187
  verification-before-completion rule is enforced by
177
- `delivery_verify`, not by the model self-asserting completion.
188
+ `ship_verify`, not by the model self-asserting completion.