@mstar-harness/opencode 1.8.6 → 1.8.7

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 CHANGED
@@ -6,6 +6,14 @@ The monorepo root [CHANGELOG.md](../../CHANGELOG.md) summarizes cross-surface re
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.8.7] - 2026-08-06
10
+
11
+ ### Bundled harness skills (`harness-skills/` at publish)
12
+
13
+ - Version alignment with harness **1.8.7** (no OpenCode package API change).
14
+
15
+ See root [CHANGELOG.md](../../CHANGELOG.md) **1.8.7**.
16
+
9
17
  ## [1.8.6] - 2026-08-06
10
18
 
11
19
  ### Bundled harness skills (`harness-skills/` at publish)
@@ -77,7 +77,7 @@ task(
77
77
 
78
78
  Single-task shorthand may exist depending on host version — always match the live schema. Parallel **N** Morning Star assignees ⇒ **one** `task` call with **N** `tasks[]` entries **or** **N** `task` calls in one assistant message when the host requires that shape. Count emitted dispatches = **N**.
79
79
 
80
- **Construct the envelope first (production cue prevents the omission at the source, not just at the gate).** When building a `tasks[]` entry, write **`agent`** + **`name`** as the first fields, *before* the long `task` body. The Assignment body is hundreds of lines of structured text and dominates working memory; `agent`/`name` are one-line envelope fields with no intrinsic saliency and no auto-check writing the body first and the envelope last is how `agent` gets silently dropped (omp then defaults to generic `task`). The pre-send field gate (see **C5** below) catches it, but **envelope-first is the cheaper failure mode**: it makes the high-stakes-but-low-saliency field structural, so it cannot be forgotten by attention drift while authoring the body.
80
+ **Envelope-first**: write `agent` + `name` as the first fields of each `tasks[]` entry, before the long `task` body — the body crowds them out and `agent` gets silently dropped (omp defaults to generic `task`, no error). SSOT `parallel-dispatch.md` § Mandatory order.
81
81
 
82
82
  ## Role agents (C5 — hard constraint)
83
83
 
@@ -150,26 +150,13 @@ task(
150
150
  Review & Edit / Prepare specialist chain (sequential, **N=1** each turn — re-set **`agent`** on **every** dispatch; at N=1 the count gate is trivial, so the **field** gate is the only protection):
151
151
 
152
152
  ```text
153
+ # pass 1 — product-manager
153
154
  task(
154
155
  context: "Review & Edit — product scope",
155
- tasks: [{
156
- name: "ReviewEditProduct",
157
- agent: "product-manager",
158
- task: "<Assignment: Execute as product-manager; Act as + skill load>"
159
- }]
160
- )
161
- # pass 2 — architect (re-set agent on EVERY dispatch; a bare tasks:[{task:"…"}] with no agent silently falls back to generic task — C5 anti-pattern)
162
- task(
163
- context: "Review & Edit — architecture",
164
- tasks: [{ name: "ReviewEditArchitect", agent: "architect",
165
- task: "<Assignment: Execute as architect; Act as + skill load>" }]
166
- )
167
- # pass 3 — writing-specialist
168
- task(
169
- context: "Review & Edit — writing",
170
- tasks: [{ name: "ReviewEditWriting", agent: "writing-specialist",
171
- task: "<Assignment: Execute as writing-specialist; Act as + skill load>" }]
156
+ tasks: [{ name: "ReviewEditProduct", agent: "product-manager",
157
+ task: "<Assignment: Execute as product-manager; Act as + skill load>" }]
172
158
  )
159
+ # repeat for architect, writing-specialist, … — each a separate N=1 dispatch with agent re-set
173
160
  ```
174
161
 
175
162
  For explore-only orientation (no Morning Star role deliverable):
@@ -203,7 +190,7 @@ Cannot emit required **N** → **`Blocked`**.
203
190
 
204
191
  ### SDD implement (serial)
205
192
 
206
- - **`Execution mode: sdd`**: one implementer `task` entry per task id with `agent` matching the implementer role when listed; task reviewer = new entry (no sticky resume unless host resume/id is available and recorded). Serial rule → **`parallel-dispatch.md`** § SDD implement.
193
+ - **`Execution mode: sdd`**: one implementer `task` entry per task id with `agent` matching the implementer role when listed; task reviewer = new entry with `agent: "reviewer"` (omp L2 review; not qc-specialist*) or `agent: "task"` as last resort + C5b — no sticky resume unless host resume/id is available and recorded. Serial rule → **`parallel-dispatch.md`** § SDD implement.
207
194
  - **Never** multiple implementer entries in one message for the same plan.
208
195
 
209
196
  ## Clarify
@@ -15,7 +15,7 @@ Printing `## Assignment` in the main thread **without** matching host invocation
15
15
 
16
16
  ## Mandatory order (dispatch turn)
17
17
 
18
- 1. Finalize all `N` Assignment payloads (after any prerequisite turn). **Build each invoke entry envelope-first**: set the role-binding field (omp `agent` / Cursor `subagent_type` / OpenCode `subagent` / Kimi·ZCode `subagent_type`) + `name` *before* writing the long Assignment body — the body is high-volume and will crowd out the one-line envelope field from working memory.
18
+ 1. Finalize all `N` Assignment payloads (after any prerequisite turn). **Build each invoke entry envelope-first**: set the role-binding field (omp `agent` / Cursor `subagent_type` / OpenCode `subagent` / Kimi·ZCode `subagent_type`) + `name` *before* writing the long Assignment body.
19
19
  2. Count distinct `Execute as` sessions (`N`).
20
20
  3. Issue **`N` host invocations first** — OpenCode: **N `task` tool** calls with **subagent**; Cursor: **N `Task`** with `subagent_type` (JSON field shape → `cursor.md` § Task invoke schema); Kimi: **N `Agent`** calls (each prompt carries **Act as** + skill load; `subagent_type` ∈ {`coder`,`explore`,`plan`} only — see `kimi.md` C5/C5b); omp: **one `task` call with N `tasks[]`** (or N `task` calls) with `agent` = live-schema role id matching `Execute as` when listed (else generic built-in) + **Act as** / skill load (see `omp.md` C5/C5b); each with one Assignment body. For parallel work, **all `N` tool calls in one assistant message** when the host allows.
21
21
  4. Optionally post a short **Status Update** after invocations (audit trail only — does not replace step 3).
@@ -45,7 +45,7 @@ Batch all findings for the human in one message. If clean, proceed silently.
45
45
  - **`SDD implementer session: fresh`** (default) — new subagent; templates: `references/implementer-prompt.md`
46
46
  - **`SDD implementer session: sticky`** — first task: same as fresh + write `{SDD_DIR}/implementer-session.json` with `host_agent_id`; later tasks: host **resume** + `references/implementer-continuation-prompt.md` (see **`references/sticky-implementer-session.md`**)
47
47
  5. On `DONE`: `scripts/review-package BASE HEAD` → diff file
48
- 6. Dispatch **fresh** task reviewer — **`subagent_type: generalPurpose`** (L2; **not** `qc-specialist*`) — brief, report, diff, Global Constraints — `references/task-reviewer-prompt.md` — **never** sticky resume for reviewers
48
+ 6. Dispatch **fresh** task reviewer — role **`generalPurpose`** (L2; **not** `qc-specialist*`; host role field → `mstar-host` C5) — brief, report, diff, Global Constraints — `references/task-reviewer-prompt.md` — **never** sticky resume for reviewers
49
49
  7. Fix loop for Critical/Important; re-review until approved
50
50
  8. Append `progress.md`; update `status.json` `task_commits[]` and `implementer-session.json` `last_task` if sticky
51
51
  9. Next task
@@ -3,11 +3,11 @@
3
3
  Use when PM continues **`SDD implementer session: sticky`** for Task N>1. Host: **resume** same agent when supported (`sticky-implementer-session.md`).
4
4
 
5
5
  ```
6
- Task / subagent:
7
- resume: [HOST_AGENT_ID from implementer-session.json]
8
- description: "SDD continue Task N: <name>"
9
- model: [same tier as session start unless PM upgrades]
10
- prompt: |
6
+ Dispatch:
7
+ Resume: [HOST_AGENT_ID from implementer-session.json]
8
+ Name: <CamelCaseId> # omp/Cursor name
9
+ Model: [same tier as session start unless PM upgrades]
10
+ Prompt body:
11
11
  <SUBAGENT-STOP> Skip PM orchestration skills. You are a leaf implementer continuing a sticky SDD session.</SUBAGENT-STOP>
12
12
 
13
13
  Continue as the same implementer on plan <plan-id>, Working branch: <branch>.
@@ -5,10 +5,11 @@ Use when PM dispatches an SDD implementer (`mstar-sdd`) — **first task** or **
5
5
  For **sticky** continuation (task 2+), use **`implementer-continuation-prompt.md`** instead.
6
6
 
7
7
  ```
8
- Task / subagent:
9
- description: "SDD implement Task N: <name>"
10
- model: [REQUIRED per Model tier in Assignment and mstar-sdd SKILL]
11
- prompt: |
8
+ Dispatch:
9
+ Role: <Execute as role-id> # omp agent / Cursor subagent_type / OpenCode subagent → mstar-host C5
10
+ Name: <CamelCaseId> # omp/Cursor name
11
+ Model: [REQUIRED — per Model tier in Assignment and mstar-sdd SKILL]
12
+ Prompt body:
12
13
  <SUBAGENT-STOP> Skip PM orchestration skills. You are a leaf implementer.</SUBAGENT-STOP>
13
14
 
14
15
  You are implementing Task N: <name>
@@ -3,11 +3,12 @@
3
3
  One reviewer per task: spec compliance + code quality (`mstar-sdd`).
4
4
 
5
5
  ```
6
- Task / subagent:
7
- subagent_type: generalPurpose
8
- description: "SDD review Task N (spec + quality)"
9
- model: [REQUIRED standard tier default; capable if diff is large/subtle]
10
- prompt: |
6
+ Dispatch:
7
+ Role: generalPurpose # L2 SDD task reviewer; NOT qc-specialist*
8
+ # omp: agent = "reviewer" or "task" + C5b; Cursor: subagent_type = "generalPurpose" → mstar-host C5
9
+ Name: <CamelCaseId> # omp/Cursor name
10
+ Model: [REQUIRED — standard tier default; capable if diff is large/subtle]
11
+ Prompt body:
11
12
  <SUBAGENT-STOP> Skip PM orchestration. Read-only review.</SUBAGENT-STOP>
12
13
 
13
14
  Review one task implementation: spec compliance first, then quality.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mstar-harness/opencode",
3
- "version": "1.8.6",
3
+ "version": "1.8.7",
4
4
  "description": "Morning Star harness OpenCode plugin (skills bootstrap and agent loading).",
5
5
  "license": "MIT",
6
6
  "repository": {