@mstar-harness/opencode 1.8.1 → 1.8.3

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,19 @@ The monorepo root [CHANGELOG.md](../../CHANGELOG.md) summarizes cross-surface re
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.8.3] - 2026-08-05
10
+
11
+ - **Bundled skills**: omp host C5 corrected — prefer live-schema Morning Star role `task.agent` values from discovered `agents/*.md`; keep C5b skill load; update shared host-role-binding + parallel-dispatch docs.
12
+ - Version alignment with harness **1.8.3** (no OpenCode package API change).
13
+
14
+ See root [CHANGELOG.md](../../CHANGELOG.md) **1.8.3**.
15
+
16
+ ## [1.8.2] - 2026-08-05
17
+
18
+ - Version alignment with harness **1.8.2** (README/host-detection docs; no OpenCode package API change).
19
+
20
+ See root [CHANGELOG.md](../../CHANGELOG.md) **1.8.2**.
21
+
9
22
  ## [1.8.1] - 2026-08-05
10
23
 
11
24
  - **Bundled skills/commands lossless optimization** (SkillsBench principles): compact `SKILL.md` bodies + progressive disclosure — extracted Phase 3/4/5 and compound workflow to `references/`; compressed `mstar-coding-behavior` and QC review lenses; deduped anti-pattern lists, leaf-role Completion Report/Git NEVER (new `_shared/leaf-executor-core.md`), host role-binding (new `_shared/host-role-binding-core.md`) and plan-mode bridges (new `_shared/plan-mode-bridge-core.md`); slimmed 4 commands to thin boot+route+delegate orchestrators (943 → 388 lines); tightened frontmatter descriptions; `Completion Report v2` → `Completion Report`. No rule, gate, or field name altered or dropped.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mstar-host
3
- description: Morning Star host adapter (OpenCode, Cursor, Codex, Kimi, ZCode, omp). Use after mstar-harness-core whenever host entry, clarify, dispatch, or plan UX differs by platform - OpenCode question/task-tool subagent invoke, Cursor /pm and CreatePlan/SwitchMode dual-write and Task parallel QC, Codex plugin skills plus Plan/Goal Mode, Kimi Agent/AgentSwarm with built-in subagent types only (coder/explore/plan) and role-in-prompt binding, ZCode Agent/AskUserQuestion/EnterPlanMode with built-in subagent types and role-in-prompt binding, omp task/ask/hub with built-in task.agent types and role-in-prompt binding, sandboxed tools, and tool discovery. Auto-detect host from session tools; then Read references/<host>.md. Always load after mstar-harness-core.
3
+ description: Morning Star host adapter (OpenCode, Cursor, Codex, Kimi, ZCode, omp). Use after mstar-harness-core whenever host entry, clarify, dispatch, or plan UX differs by platform - OpenCode question/task-tool subagent invoke, Cursor /pm and CreatePlan/SwitchMode dual-write and Task parallel QC, Codex plugin skills plus Plan/Goal Mode, Kimi Agent/AgentSwarm with built-in subagent types only (coder/explore/plan) and role-in-prompt binding, ZCode Agent/AskUserQuestion/EnterPlanMode with built-in subagent types and role-in-prompt binding, omp task/ask/hub preferring live-schema role agents (agents/*.md) with C5b skill-load binding (generic task/scout only as fallback), sandboxed tools, and tool discovery. Auto-detect host from session tools; then Read references/<host>.md. Always load after mstar-harness-core.
4
4
  ---
5
5
 
6
6
  # Morning Star Host Adapter
@@ -23,19 +23,20 @@ Load topic skills **on demand** per `mstar-roles` (do not read every `mstar-*` s
23
23
 
24
24
  ## Detect active host
25
25
 
26
- Use **capability signals** (not filesystem paths):
26
+ Detect from **session tool shapes and available commands** not from plugin markers on disk. The `*-plugin/plugin.json` files **cannot** identify the host: they all coexist in this harness source repo and in any multi-host install.
27
27
 
28
28
  | Signal | Host | Next read |
29
29
  |--------|------|-----------|
30
- | **CreatePlan** / **SwitchMode** available | `cursor` | `references/cursor.md`; Plan mode also `references/cursor-plan-mode-bridge.md` |
31
- | **`question`** tool or OpenCode-style **`task`** tool with **`subagent`** (not omp `agent`/`tasks[]`) | `opencode` | `references/opencode.md` |
32
- | **Task** + `subagent_type`, no CreatePlan | `cursor` | `references/cursor.md` |
33
- | **Codex app/CLI/plugin context**, `/plan`, `/goal`, Goal tools, `functions.*`, `codex_app.*`, `tool_search`, Browser plugin tools | `codex` | `references/codex.md`; Plan/Goal mode also `references/codex-plan-goal-mode-bridge.md` |
34
- | **`Agent`** / **`AgentSwarm`** / **`AskUserQuestion`** / **`EnterPlanMode`**, Kimi plugin (`.kimi-plugin/plugin.json`), `/morning-star-harness:*` commands | `kimi` | `references/kimi.md`; Plan mode also `references/kimi-plan-mode-bridge.md` |
35
- | **`Agent`** / **`AskUserQuestion`** / **`EnterPlanMode`** / **`TodoWrite`**, no `AgentSwarm`, ZCode plugin (`.zcode-plugin/plugin.json`), `/morning-star-harness:*` commands | `zcode` | `references/zcode.md`; Plan mode also `references/zcode-plan-mode-bridge.md` |
36
- | **`task`** tool with **`agent`** / **`tasks[]`** batch, **`ask`**, **`hub`**, omp plugin (`.omp-plugin/plugin.json` / `.claude-plugin/plugin.json`), `/skill:pm` + `/iteration-*` filename commands | `omp` | `references/omp.md`; Plan mode also `references/omp-plan-mode-bridge.md` |
30
+ | **`subagent_type`** param on the Task tool (plus **CreatePlan**/**SwitchMode** when Plan mode is active) | `cursor` | `references/cursor.md`; Plan mode also `references/cursor-plan-mode-bridge.md` |
31
+ | **`question`** tool, or **`task`** tool with **`subagent`** (singular) no `tasks[]` batch | `opencode` | `references/opencode.md` |
32
+ | **`task`** tool with **`agent`** / **`tasks[]`** batch, **`ask`**, **`hub`** | `omp` | `references/omp.md`; Plan mode also `references/omp-plan-mode-bridge.md` |
33
+ | **`Agent`** / **`AskUserQuestion`** / **`EnterPlanMode`** + **`AgentSwarm`** (Kimi-only) | `kimi` | `references/kimi.md`; Plan mode also `references/kimi-plan-mode-bridge.md` |
34
+ | **`Agent`** / **`AskUserQuestion`** / **`EnterPlanMode`** / **`TodoWrite`**, **no `AgentSwarm`** | `zcode` | `references/zcode.md`; Plan mode also `references/zcode-plan-mode-bridge.md` |
35
+ | `/plan`, `/goal` slash commands; **Goal tools**; `functions.*` / `codex_app.*` tool namespaces; `tool_search`; Browser plugin tools | `codex` | `references/codex.md`; Plan/Goal mode also `references/codex-plan-goal-mode-bridge.md` |
37
36
  | Still ambiguous | - | Read sections in **`cursor.md`**, **`opencode.md`**, **`codex.md`**, **`kimi.md`**, **`zcode.md`**, and **`omp.md`** that match tools you have; **`mstar-harness-core` wins** on conflict |
38
37
 
38
+ Order matters: check `cursor` → `opencode` → `omp` → `kimi` → `zcode` → `codex`. `subagent_type` (Cursor) vs `subagent` (OpenCode) vs `agent`/`tasks[]` (omp) is the sharpest split among the Task-based hosts.
39
+
39
40
  ## Parallel dispatch (invoke-capable hosts)
40
41
 
41
42
  When PM dispatches **N >= 2** concurrent assignees (QC tri-review, dual-track implement, etc.) and the host exposes actual invoke / Task / subagent tools, read **`references/parallel-dispatch.md`** in the dispatch round (shared with `mstar-dispatch-gates`). Without a callable invoke tool when dispatch is required → **`Blocked`**; Assignment Markdown alone is not dispatch.
@@ -1,20 +1,26 @@
1
1
  # Host role-binding core (C5/C5b)
2
2
 
3
- Shared role-binding contract for hosts that **cannot bind Morning Star roles via agent config** (Kimi, ZCode, omp). Cursor / OpenCode / Codex bind roles through agent config or `subagent_type` role ids and do **not** use this file. Read from the active host reference when dispatching.
3
+ Shared role-binding contract for **Kimi / ZCode** hosts where Morning Star role ids are **never** valid invoke types, so picking `subagent_type` alone cannot carry Assignment IDENTITY + skill load.
4
4
 
5
- ## C5 built-in invoke types only
5
+ Other hosts follow their own `references/<host>.md` and do **not** use this file for agent selection. Read this file only when the active host reference is Kimi or ZCode.
6
6
 
7
- - The host ships **built-in subagent types only**; the active host reference's C5 mapping table is the authoritative type list.
8
- - Morning Star role ids (`project-manager`, `fullstack-dev`, `qc-specialist`, …) are **not** valid invoke types on these hosts — never invent agent names.
7
+ ## C5 invoke type selection (Kimi / ZCode)
8
+
9
+ | Host | Invoke-type selection (C5) | Prompt role binding (C5b) |
10
+ |------|----------------------------|---------------------------|
11
+ | **Kimi / ZCode** | Built-in types only (`coder` / `explore` / `plan`, …). Morning Star role ids are **never** valid invoke types. | **Required** |
12
+
13
+ - **Never invent** agent / subagent names. The **live tool schema** (plus the active host reference C5 table) is SSOT every session.
14
+ - Morning Star role ids (`product-manager`, `fullstack-dev`, `qc-specialist`, …) are **not** valid invoke types — map via the host reference table (`coder` / `explore` / `plan`, …), then rely on C5b.
9
15
 
10
16
  ## C5b — role binding in prompt (required)
11
17
 
12
- Because the host cannot bind roles via agent config, every dispatch **must** carry the played Morning Star role in the **Assignment** and in the **invoke prompt**:
18
+ Every dispatch on Kimi / ZCode **must** carry the played Morning Star role in the **Assignment** and in the **invoke prompt**:
13
19
 
14
20
  1. **`Execute as: <role-id>`** in Assignment (harness routing SSOT).
15
21
  2. **`Act as <role-id>`** (or equivalent) at the top of the invoke prompt.
16
22
  3. **Skill load list** — instruct the subagent to read `mstar-roles` → `references/<role-id>.md` (or shared reference + parameters) and topic skills per that reference.
17
- 4. **`subagent_type` / `agent`** — pick from the host's built-in types only (C5 table in the host reference).
23
+ 4. **`subagent_type`** — pick from the live built-in set per the host C5 table (not a Morning Star role id).
18
24
 
19
25
  Paste-only Assignment **without** an invoke call is **not** dispatch.
20
26
 
@@ -36,9 +42,10 @@ Paste-only Assignment **without** an invoke call is **not** dispatch.
36
42
  **Plan Path**: .mstar/plans/20260717-example.md
37
43
 
38
44
  **IDENTITY:** You ARE `fullstack-dev`. Act as `fullstack-dev` for this task.
45
+
39
46
  Load: `mstar-harness-core` → `mstar-host` → `<host>.md` → `mstar-roles` → `references/fullstack-dev-shared.md` → topic skills per that reference.
40
47
 
41
48
  <task body>
42
49
  ```
43
50
 
44
- The active host reference shows the matching invoke shape (same turn).
51
+ The active host reference shows the matching invoke shape (same turn) — e.g. Kimi/ZCode `Agent` with `subagent_type: "coder"` plus this C5b body.
@@ -1,6 +1,6 @@
1
1
  # Codex host reference
2
2
 
3
- Load when **`mstar-host`** detection resolves **codex** (Codex app/CLI session, Codex plugin installed from `.codex-plugin/plugin.json`, Codex custom agents linked from `codex/agents/*.toml`, or Codex tool namespaces such as `functions.*`, `codex_app.*`, `tool_search`, `image_gen`, or Browser plugin tools).
3
+ Load when **`mstar-host`** detection resolves **codex** (Codex app/CLI session, `/plan` / `/goal` slash commands, Goal tools, or Codex tool namespaces such as `functions.*`, `codex_app.*`, `tool_search`, `image_gen`, or Browser plugin tools).
4
4
 
5
5
  Plan / Goal Mode: read **`codex-plan-goal-mode-bridge.md`** when Codex Plan Mode (`/plan`) or Goal Mode (`/goal`, goal tools, or goal progress controls) is active. Codex session plans, UI todos, and goal text are not durable harness SSOT.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Kimi host reference
2
2
 
3
- Load when **`mstar-host`** detection resolves **kimi** (Kimi Code CLI session, `.kimi-plugin/plugin.json` plugin installed, `Agent` / `AgentSwarm` / `AskUserQuestion` / `EnterPlanMode` tools, or `/morning-star-harness:*` plugin commands).
3
+ Load when **`mstar-host`** detection resolves **kimi** (Kimi Code CLI session, `Agent` / `AgentSwarm` / `AskUserQuestion` / `EnterPlanMode` tools, or `/morning-star-harness:*` plugin commands).
4
4
 
5
5
  Plan mode: read **`kimi-plan-mode-bridge.md`** when `EnterPlanMode` / `ExitPlanMode`, `/plan`, or `kimi --plan` is active.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # omp host reference
2
2
 
3
- Load when **`mstar-host`** detection resolves **omp** (Oh My Pi / `omp` session, `.omp-plugin/plugin.json` or `.claude-plugin/plugin.json` installed, **`task`** tool with **`agent`** / **`tasks[]`** batch shape, **`ask`** tool, **`hub`** tool, or `/skill:pm` / `/iteration-*` from this plugin).
3
+ Load when **`mstar-host`** detection resolves **omp** (Oh My Pi / `omp` session, **`task`** tool with **`agent`** / **`tasks[]`** batch shape, **`ask`** tool, **`hub`** tool, or `/skill:pm` / `/iteration-*` from this plugin).
4
4
 
5
5
  Plan mode: read **`omp-plan-mode-bridge.md`** when `/plan`, plan-yolo, or plan-model / read-only-with-resolve plan UX is active.
6
6
 
@@ -11,14 +11,14 @@ Parallel PM dispatch: read **`parallel-dispatch.md`** when dispatching **N ≥ 2
11
11
  - Plugin markers: **`.omp-plugin/plugin.json`** (Morning Star host marker) and **`.claude-plugin/plugin.json`** (Claude-compatible marketplace discovery). Plugin root is the **repo root**; paths stay `./skills/`, `./commands/`, `./agents/`.
12
12
  - Runtime skills: repo `skills/` discovered after `omp plugin install` / `omp plugin link` (OMP extension-package sub-discovery) or Claude marketplace install.
13
13
  - Plugin commands: repo `commands/<name>.md` → slash **`/<name>`** (e.g. `/iteration-start`). omp uses the **filename** as the command name (no `morning-star-harness:` prefix).
14
- - Plugin agents: repo `agents/*.md` may be discovered, but Morning Star role ids are **not** assumed to be valid `task.agent` values — see C5/C5b.
14
+ - Plugin agents: repo **`agents/*.md`** are discovered into the live **`task.agent`** list after install/link + reload. Morning Star **subagent** role ids (`product-manager`, `architect`, `fullstack-dev`, `qc-specialist`, …) are valid `agent` values **when listed** — see C5. `project-manager` is **`mode: primary`** (orchestration seat), not a typical `task` dispatch target.
15
15
  - **No Kimi-style `sessionStart.skill`** — enter PM manually via **`/skill:pm`** (or the `pm` skill), then **Read next** → `mstar-harness-core` → `project-manager.md`.
16
16
  - Install (user-scoped, recommended):
17
17
  - `omp plugin install github:btspoony/mstar-harness`
18
18
  - or CLI: `npx @mstar-harness/cli init --target omp --scope global` (links `~/.mstar/harness`)
19
19
  - Project scope: `omp plugin install github:btspoony/mstar-harness --scope project` or `npx @mstar-harness/cli init --target omp --scope project`.
20
20
  - Local maintainers: `omp plugin link /path/to/mstar-harness` (or the CLI-managed `~/.mstar/harness` checkout).
21
- - After install/link: `omp plugin list` should show package **`morning-star`** (root `package.json` name). Reload / new session to pick up skills and commands.
21
+ - After install/link: `omp plugin list` should show package **`morning-star`** (root `package.json` name). Reload / new session to pick up skills, commands, and agents.
22
22
 
23
23
  ## Skill loading
24
24
 
@@ -30,11 +30,25 @@ Parallel PM dispatch: read **`parallel-dispatch.md`** when dispatching **N ≥ 2
30
30
 
31
31
  Use skill names in prompts and references. Prefer `skill://<name>/…` / `/skill:<name>` over absolute local paths unless maintaining this repository.
32
32
 
33
+ ## Internal URLs
34
+
35
+ omp resolves **internal URL schemes** natively (see <https://omp.sh/#urls>), so skills and shared content stay addressable wherever omp installs the plugin — prefer URLs over absolute local paths:
36
+
37
+ | Scheme | Use |
38
+ |--------|-----|
39
+ | `skill://<name>` | Load a skill's `SKILL.md` — e.g. `skill://mstar-harness-core`, `skill://mstar-host` |
40
+ | `skill://<name>/<path>` | Read a file inside a skill — e.g. `skill://mstar-host/references/omp.md` |
41
+ | `local://<name>.md` | Share context / assignments with subagents — prefer over pasting large payloads inline |
42
+ | `artifact://<id>` / `agent://<id>` | Read a subagent's output artifact / a nested child's output |
43
+ | `history://<id>` | Read-only transcript of a (sub)agent session |
44
+
45
+ `/skill:<name>` (slash command to **invoke**) and `skill://<name>` (URL the model can **`Read`**) resolve to the same skill. Put URLs in `task` assignment bodies and skill **Read next** lists so a role subagent loads the right skill regardless of install path — this is what makes cross-host skill references portable on omp.
46
+
33
47
  ## Tools map (default agent)
34
48
 
35
49
  | omp tool | Harness use |
36
50
  |----------|-------------|
37
- | **`task`** | Primary dispatch — fan out one or more subagents (`agent` built-ins; batch via `tasks[]` + shared `context`) |
51
+ | **`task`** | Primary dispatch — fan out one or more subagents (`agent` = live-schema id; prefer Morning Star role id; batch via `tasks[]` + shared `context`) |
38
52
  | **`ask`** | Structured clarify (options + recommended); prefer over free-form when choices are known |
39
53
  | **`hub`** | Optional peer messaging / long-running process control among subagents — not a substitute for Assignment + `task` |
40
54
  | **bash** | Commands, git, tests — evidence per `mstar-coding-behavior` |
@@ -54,7 +68,7 @@ task(
54
68
  tasks: [
55
69
  {
56
70
  name: "CamelCaseId",
57
- agent: "task", # built-in only — see C5
71
+ agent: "<Execute as role-id>", # prefer live-schema role agent — see C5
58
72
  task: "<full Assignment body including Act as + skill load>"
59
73
  }
60
74
  ]
@@ -65,36 +79,87 @@ Single-task shorthand may exist depending on host version — always match the l
65
79
 
66
80
  ## Role agents (C5 — hard constraint)
67
81
 
68
- omp ships **built-in `task.agent` types**. Exact names vary by omp version **read the live `task` tool schema**. Common set (docs + current releases):
82
+ **Live `task` tool schema is SSOT every session.** Exact `agent` names vary by omp version and which `agents/*.md` were discovered after plugin install/link. Read the tool's Available Agents list before dispatch do not invent names; do not hard-code stale tables over the live list.
83
+
84
+ ### Selection order (required)
85
+
86
+ 1. **Role match first** — if Assignment `Execute as: <role-id>` appears in the live `task.agent` list, set **`agent: "<role-id>"`**. Examples commonly present after Morning Star plugin discovery: `product-manager`, `architect`, `frontend-dev`, `fullstack-dev`, `fullstack-dev-2`, `ops-engineer`, `prompt-engineer`, `qa-engineer`, `qc-specialist`, `qc-specialist-2`, `qc-specialist-3`, `writing-specialist`.
87
+ 2. **Generic built-in only as fallback** — when the role id is **absent** from the live schema, pick the closest host built-in and keep full C5b prompt binding:
88
+
89
+ | Fallback `agent` | When |
90
+ |------------------|------|
91
+ | `scout` / `explore` | Read-only orientation / codebase survey / Prepare explore |
92
+ | `reviewer` / `security-reviewer` | Optional QC assist **only if** the matching `qc-specialist*` agent is missing |
93
+ | `designer` | UI-heavy work when `frontend-dev` is missing |
94
+ | `librarian` | External library/API research assist |
95
+ | `sonic` / `quick_task` | Mechanical / low-reasoning transcription only |
96
+ | `task` (or omit if schema says omit = general worker) | Last resort general worker when no specialist fits |
69
97
 
70
- | `agent` | Typical use | Harness mapping |
71
- |---------|-------------|-----------------|
72
- | `scout` / `explore` | Fast read-only investigation | Orientation, codebase survey, Prepare explore passes |
73
- | `plan` | Architectural planning | Prepare plan-only work when appropriate |
74
- | `reviewer` / `security-reviewer` | Structured review | Optional QC assist — still bind Morning Star QC role in prompt (C5b) |
75
- | `designer` | UI/UX | Optional when Assignment is UI-heavy `frontend-dev` |
76
- | `librarian` | External library/API research | Optional research assist |
77
- | `sonic` / `quick_task` | Mechanical / low-reasoning | Mechanical transcription only |
78
- | `task` | General-purpose worker | **Default for Morning Star roles** (`product-manager`, `fullstack-dev`, `qc-specialist`, …) |
98
+ 3. **Anti-pattern** — **`agent: "task"` (or omitting agent) while a matching role agent is listed** is incorrect dispatch. Prefer the specialist; generic `task` is not the Morning Star default when role agents are available.
79
99
 
80
- Morning Star role ids (`project-manager`, `fullstack-dev`, `qc-specialist`, …) are **not** valid `task.agent` values unless the live schema explicitly lists them after a custom-agent unpack. Do not invent agent names.
100
+ ### Notes
101
+
102
+ - `project-manager` is the **primary** orchestration agent (`agents/project-manager.md` `mode: primary`). Do not dispatch PM-to-PM via `task` unless the live schema explicitly lists it **and** the Assignment requires it.
103
+ - Host generics (`scout`, `reviewer`, `designer`, …) remain useful for non-role orientation / assist — they do not replace a listed Morning Star role agent for role-owned deliverables.
81
104
 
82
105
  ### Role binding in prompt (C5b — required)
83
106
 
84
- Role-binding contract + Assignment template **`_shared/host-role-binding-core.md`** (C5/C5b). omp-specific invoke shapes, same turn:
107
+ omp C5/C5b SSOT is **this file** — do **not** use `_shared/host-role-binding-core.md` (that file is Kimi/ZCode only). Even when `agent` already matches the role id, still bind Morning Star process in the Assignment / `task` body (agent shell ≠ full role prompt; skill load is not automatic).
108
+
109
+ Required in every role dispatch:
110
+
111
+ 1. **`Execute as: <role-id>`** in Assignment (harness routing SSOT).
112
+ 2. **`Act as <role-id>`** (or equivalent) at the top of the `task` body.
113
+ 3. **Skill load list** — instruct the subagent to read `mstar-roles` → `references/<role-id>.md` (or shared reference + parameters) and topic skills per that reference.
114
+ 4. **`agent`** — live-schema role id per C5 above (not “always `task`”).
115
+
116
+ Paste-only Assignment **without** a `task` invoke is **not** dispatch.
117
+
118
+ Assignment / prompt template:
119
+
120
+ ```markdown
121
+ ## Assignment
122
+
123
+ **Execute as**: fullstack-dev
124
+ **Delegation**: forbidden
125
+ **Working branch**: feat/example
126
+ **Plan Path**: .mstar/plans/20260717-example.md
127
+
128
+ **IDENTITY:** You ARE `fullstack-dev`. Act as `fullstack-dev` for this task.
129
+
130
+ Load: `mstar-harness-core` → `mstar-host` → `omp.md` → `mstar-roles` → `references/fullstack-dev-shared.md` → topic skills per that reference.
131
+
132
+ <task body>
133
+ ```
134
+
135
+ omp invoke shapes, same turn:
85
136
 
86
137
  ```text
87
138
  task(
88
139
  context: "Morning Star dispatch for plan 20260717-example",
89
140
  tasks: [{
90
141
  name: "ImplementAuth",
91
- agent: "task",
142
+ agent: "fullstack-dev", # live-schema role id matching Execute as
92
143
  task: "<full Assignment body including Act as + skill load>"
93
144
  }]
94
145
  )
95
146
  ```
96
147
 
97
- For explore-only orientation:
148
+ Review & Edit / Prepare specialist chain (sequential, **N=1** each turn):
149
+
150
+ ```text
151
+ task(
152
+ context: "Review & Edit — product scope",
153
+ tasks: [{
154
+ name: "ReviewEditProduct",
155
+ agent: "product-manager",
156
+ task: "<Assignment: Execute as product-manager; Act as + skill load>"
157
+ }]
158
+ )
159
+ # wait for return, then architect, then writing-specialist — each with agent: "<role-id>"
160
+ ```
161
+
162
+ For explore-only orientation (no Morning Star role deliverable):
98
163
 
99
164
  ```text
100
165
  task(
@@ -108,24 +173,24 @@ task(
108
173
 
109
174
  ## PM dispatch (`task`)
110
175
 
111
- Harness **dispatch** on omp = **one or more `task` tool calls** with correct **`agent`** values and role-bound assignment text (C5b **`_shared/host-role-binding-core.md`**). N-parallel / 1-Assignment-1-invoke / paste-only mechanics → **`parallel-dispatch.md`**.
176
+ Harness **dispatch** on omp = **one or more `task` tool calls** with correct **`agent`** values and role-bound assignment text (C5 + C5b in this file). N-parallel / 1-Assignment-1-invoke / paste-only mechanics → **`parallel-dispatch.md`**.
112
177
 
113
178
  | Harness | omp |
114
179
  |---------|-----|
115
- | `Execute as: <role-id>` | Role id in Assignment + **Act as** + skill load in **task** body (C5b) |
116
- | `agent` for invoke | built-ins only (default `task`; explore → `scout`/`explore`) |
180
+ | `Execute as: <role-id>` | **`agent: "<role-id>"`** when listed in live schema; else generic built-in + C5b |
181
+ | Role identity / skills | Assignment **Act as** + skill load in **task** body (C5b) — always |
117
182
  | Parallel batch **N** | **N** `tasks[]` entries in **one** `task` call, or **N** `task` calls in **one** assistant message |
118
183
 
119
184
  ### QC default
120
185
 
121
- - **`Execution mode: sdd`**: **N=3** task entries (`qc-specialist`, `qc-specialist-2`, `qc-specialist-3`) each body **Act as** the respective QC role; prefer `agent: "task"` (or `reviewer` only when it does not drop Morning Star QC skill load). N rules → `parallel-dispatch.md`.
186
+ - **`Execution mode: sdd`**: **N=3** task entries — prefer `agent: "qc-specialist"`, `"qc-specialist-2"`, `"qc-specialist-3"` when listed; each body still **Act as** the respective QC role + QC skill load. If a seat is missing from the live schema, fall back per C5 (generic + C5b) for that seat only. N rules → `parallel-dispatch.md`.
122
187
  - **`inline`**: **N=1** per `parallel-dispatch.md`.
123
188
 
124
189
  Cannot emit required **N** → **`Blocked`**.
125
190
 
126
191
  ### SDD implement (serial)
127
192
 
128
- - **`Execution mode: sdd`**: one implementer `task` entry per task id; 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 (no sticky resume unless host resume/id is available and recorded). Serial rule → **`parallel-dispatch.md`** § SDD implement.
129
194
  - **Never** multiple implementer entries in one message for the same plan.
130
195
 
131
196
  ## Clarify
@@ -160,6 +225,8 @@ Cannot emit required **N** → **`Blocked`**.
160
225
  - Installed npm/git plugin package name is root **`morning-star`** (`package.json`); Morning Star display name remains **morning-star-harness**.
161
226
  - Marketplace (Claude) installs and `omp plugin install` are different discovery providers — prefer one install path per machine to avoid duplicate skill listings.
162
227
  - Session plan UI / todos are not durable SSOT unless mirrored to `{HARNESS_DIR}`.
163
- - No custom guaranteed Morning Star `task.agent` profilesrole binding is **always** prompt + skill load (C5b).
228
+ - After install/link, **reload / new session** so `agents/*.md` appear in the live `task.agent` liststale sessions may only show host generics and wrongly push you to `agent: "task"`.
229
+ - Role agent shell ≠ full role prompt: **C5b skill load remains required** even when `agent` already equals the role id.
164
230
  - omp has no `sessionStart.skill`; new sessions do **not** auto-load PM — invoke `/skill:pm` manually.
165
231
  - Do not confuse omp **`task.agent`** with OpenCode **`subagent`** or Cursor **`subagent_type`**.
232
+ - Do not treat Kimi/ZCode “built-ins only → always `coder`/`task`” habits as omp defaults when Morning Star role agents are listed.
@@ -17,7 +17,7 @@ Printing `## Assignment` in the main thread **without** matching host invocation
17
17
 
18
18
  1. Finalize all `N` Assignment payloads (after any prerequisite turn).
19
19
  2. Count distinct `Execute as` sessions (`N`).
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 built-in `agent` + **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.
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).
22
22
 
23
23
  ## Hard rules
@@ -1,6 +1,6 @@
1
1
  # ZCode host reference
2
2
 
3
- Load when **`mstar-host`** detection resolves **zcode** (ZCode client session, `.zcode-plugin/plugin.json` plugin installed, `Agent` / `AskUserQuestion` / `EnterPlanMode` / `TodoWrite` tools, or `/morning-star-harness:*` plugin commands).
3
+ Load when **`mstar-host`** detection resolves **zcode** (ZCode client session, `Agent` / `AskUserQuestion` / `EnterPlanMode` / `TodoWrite` tools, or `/morning-star-harness:*` plugin commands).
4
4
 
5
5
  Plan mode: read **`zcode-plan-mode-bridge.md`** when `EnterPlanMode` / `ExitPlanMode` is active.
6
6
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mstar-harness/opencode",
3
- "version": "1.8.1",
3
+ "version": "1.8.3",
4
4
  "description": "Morning Star harness OpenCode plugin (skills bootstrap and agent loading).",
5
5
  "license": "MIT",
6
6
  "repository": {