@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 +8 -0
- package/harness-skills/mstar-host/references/omp.md +6 -19
- package/harness-skills/mstar-host/references/parallel-dispatch.md +1 -1
- package/harness-skills/mstar-sdd/SKILL.md +1 -1
- package/harness-skills/mstar-sdd/references/implementer-continuation-prompt.md +5 -5
- package/harness-skills/mstar-sdd/references/implementer-prompt.md +5 -4
- package/harness-skills/mstar-sdd/references/task-reviewer-prompt.md +6 -5
- package/package.json +1 -1
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
|
-
**
|
|
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
|
-
|
|
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
|
|
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
|
|
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 — **`
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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.
|