@mstar-harness/opencode 1.8.3 → 1.8.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 CHANGED
@@ -6,6 +6,22 @@ The monorepo root [CHANGELOG.md](../../CHANGELOG.md) summarizes cross-surface re
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [1.8.5] - 2026-08-06
10
+
11
+ ### Bundled harness skills (`harness-skills/` at publish)
12
+
13
+ - Sync `mstar-host` § Resolve loaded skill root + host-reference skill-root cues; `mstar-skill-authoring` anti-pattern for rules/CLI cwd paths.
14
+ - Version alignment with harness **1.8.5** (no OpenCode package API change).
15
+
16
+ See root [CHANGELOG.md](../../CHANGELOG.md) **1.8.5**.
17
+
18
+ ## [1.8.4] - 2026-08-06
19
+
20
+ - **Bundled skills**: skill-relative script path naming (`mstar-sdd` → `scripts/…`) so agents resolve scripts from the loaded skill directory instead of consumer-cwd `skills/…` paths.
21
+ - Version alignment with harness **1.8.4** (no OpenCode package API change).
22
+
23
+ See root [CHANGELOG.md](../../CHANGELOG.md) **1.8.4**.
24
+
9
25
  ## [1.8.3] - 2026-08-05
10
26
 
11
27
  - **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.
@@ -41,6 +41,20 @@ Order matters: check `cursor` → `opencode` → `omp` → `kimi` → `zcode`
41
41
 
42
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.
43
43
 
44
+ ## Resolve loaded skill root
45
+
46
+ Docs name assets as skill **`<name>`** → `scripts/…` / `references/…`. **Resolve the loaded skill directory first** — do **not** open `skills/<name>/…` from a consumer app cwd (that layout exists in the harness source / plugin package only).
47
+
48
+ | Host | Prefer | Filesystem fallback (only if the host cannot load by name) |
49
+ |------|--------|--------------------------------------------------------------|
50
+ | **omp** | `skill://<name>` / `skill://<name>/<rel>` / `/skill:<name>` | Plugin package root `skills/<name>/` after install/link — not app cwd |
51
+ | **Cursor** | Skill **name** via plugin skills | Global `~/.cursor/plugins/local/morning-star-harness/skills/<name>/`; project `.cursor/plugins/morning-star-harness/skills/<name>/` |
52
+ | **Codex** | Skill **name** via plugin | Plugin-mounted `skills/<name>/`; project command skills under `.agents/skills/<name>/` |
53
+ | **OpenCode** | Skill **name** via `@mstar-harness/opencode` | Package-internal `harness-skills/<name>/` — never `process.cwd()/skills/` |
54
+ | **Kimi / ZCode** | Skill **name** / `/skill:<name>` | Plugin mount `./skills/<name>/` from the installed plugin root |
55
+
56
+ Authoring convention: **`mstar-skill-authoring`** § Skill-relative script and asset paths. Per-host URI / mount detail: `references/<host>.md`.
57
+
44
58
  ## Conflict order
45
59
 
46
60
  1. User explicit instructions (this turn)
@@ -23,7 +23,7 @@ Parallel PM dispatch: read **`parallel-dispatch.md`** only when Codex exposes an
23
23
  4. Load `mstar-roles` and the active role reference.
24
24
  5. Load topic skills on demand per the role reference.
25
25
 
26
- Use skill names in prompts and references. Avoid absolute local paths unless the user is maintaining this repository or the skill is not installed and must be read from the checkout.
26
+ Use skill names in prompts and references. Avoid absolute local paths unless the user is maintaining this repository or the skill is not installed and must be read from the checkout. Skill-root resolve (plugin `skills/<name>/`, project `.agents/skills/<name>/`) → `mstar-host` § Resolve loaded skill root.
27
27
 
28
28
  ## Clarify
29
29
 
@@ -6,6 +6,7 @@ Parallel PM dispatch: **`parallel-dispatch.md`** (Task tool uses same turn model
6
6
 
7
7
  ## Cursor-only context
8
8
 
9
+ - Skill root: load by skill **name**; filesystem fallback → `mstar-host` § Resolve loaded skill root (`~/.cursor/plugins/local/morning-star-harness/skills/<name>/` or project `.cursor/plugins/morning-star-harness/skills/<name>/`). Never app-cwd `skills/<name>/`.
9
10
  - Role prompts: `mstar-roles`; **`/pm`** or **`pm` skill** → general PM orchestration (per-plan dispatch, gates, QC) without an iteration command. Host **`commands/`** for formal iteration Phase 1–5 (semantics → **`mstar-iteration`**).
10
11
  - Routing-eval: `.cursor/skills/mstar-routing-eval/` — regression tooling only; not runtime load order.
11
12
 
@@ -25,7 +25,7 @@ Parallel PM dispatch: read **`parallel-dispatch.md`** when dispatching **N ≥ 2
25
25
  4. Load `mstar-roles` and the active role reference.
26
26
  5. Load topic skills on demand per the role reference.
27
27
 
28
- Use skill names in prompts and references. Avoid absolute local paths unless maintaining this repository or skills are not installed.
28
+ Use skill names in prompts and references. Avoid absolute local paths unless maintaining this repository or skills are not installed. Skill-root resolve (plugin mount `./skills/<name>/`) → `mstar-host` § Resolve loaded skill root.
29
29
 
30
30
  ## Tools map (default agent)
31
31
 
@@ -28,7 +28,7 @@ Parallel PM dispatch: read **`parallel-dispatch.md`** when dispatching **N ≥ 2
28
28
  4. Load `mstar-roles` and the active role reference.
29
29
  5. Load topic skills on demand per the role reference.
30
30
 
31
- Use skill names in prompts and references. Prefer `skill://<name>/…` / `/skill:<name>` over absolute local paths unless maintaining this repository.
31
+ Use skill names in prompts and references. Prefer `skill://<name>/…` / `/skill:<name>` over absolute local paths unless maintaining this repository. Full skill-root table (all hosts) → `mstar-host` § Resolve loaded skill root.
32
32
 
33
33
  ## Internal URLs
34
34
 
@@ -6,6 +6,7 @@ Parallel PM dispatch: **`parallel-dispatch.md`** (read in dispatch rounds).
6
6
 
7
7
  ## Role loading
8
8
 
9
+ - Skill root: load by skill **name** from `@mstar-harness/opencode` (`harness-skills/<name>/` inside the package). Never `process.cwd()/skills/` — see `mstar-host` § Resolve loaded skill root.
9
10
  - **PM entry**: **`/pm`** or **`pm` skill** → `project-manager` for general orchestration; host **`commands/`** for formal iteration Phase 1–5 (semantics → **`mstar-iteration`**).
10
11
  - **Role shell**: `agents/<id>.md` referenced by `opencode.json` `agent.<id>` (frontmatter + role binding only).
11
12
  - **Role body**: `mstar-roles` `references/<id>.md` (or shared references + parameters).
@@ -25,7 +25,7 @@ Parallel PM dispatch: read **`parallel-dispatch.md`** when dispatching **N ≥ 2
25
25
  4. Load `mstar-roles` and the active role reference.
26
26
  5. Load topic skills on demand per the role reference.
27
27
 
28
- Use skill names in prompts and references. Avoid absolute local paths unless maintaining this repository or skills are not installed.
28
+ Use skill names in prompts and references. Avoid absolute local paths unless maintaining this repository or skills are not installed. Skill-root resolve (plugin mount `./skills/<name>/`) → `mstar-host` § Resolve loaded skill root.
29
29
 
30
30
  ## Tools map (default agent)
31
31
 
@@ -288,10 +288,10 @@ SSOT = `{HARNESS_DIR}/status.json` + `{PLAN_DIR}/`。todos 只追踪本轮下一
288
288
  3. **Implement → InReview**(`§ 2.5`;产品编辑在 feature worktree;plans / status / iterations / SDD 经 control 绝对路径):
289
289
  - **默认 `Execution mode: sdd`**(多 task plan;hotfix 可 `inline`)。
290
290
  - PM 载入 **`mstar-sdd`** 后,按 plan task 顺序 **串行** per-task 循环(**不是**一次派发 dev 做全部 tasks):
291
- 1. `sdd-workspace <plan-id>` → `{SDD_DIR}`
292
- 2. `task-brief <plan-file> N` → `{SDD_DIR}/task-N-brief.md`;记录 `BASE_SHA`
291
+ 1. skill **`mstar-sdd`** → `scripts/sdd-workspace <plan-id>` → `{SDD_DIR}`
292
+ 2. `scripts/task-brief <plan-file> N` → `{SDD_DIR}/task-N-brief.md`;记录 `BASE_SHA`
293
293
  3. Dispatch **one** implementer subagent(`references/implementer-prompt.md`:brief 路径 + report 路径 + `Model tier`;**禁止**贴整份 plan)
294
- 4. Implementer `DONE` → `review-package BASE HEAD` → task diff 文件
294
+ 4. Implementer `DONE` → `scripts/review-package BASE HEAD` → task diff 文件
295
295
  5. Dispatch **one** task reviewer subagent(brief + report + diff + Global Constraints)
296
296
  6. Fix loop 直至 review clean;append `{SDD_DIR}/progress.md`;更新 `status.json` / plan checkbox
297
297
  7. Next task
@@ -320,7 +320,7 @@ SSOT = `{HARNESS_DIR}/status.json` + `{PLAN_DIR}/`。todos 只追踪本轮下一
320
320
  | 文件交接 | brief / report / diff / `progress.md` 在 `{SDD_DIR}`;dispatch prompt **只给路径**,不贴 plan 全文或 task 历史 |
321
321
  | Assignment 字段 | 每个 implement dispatch 须含 `Execution mode: sdd`、`SDD dir`、`Model tier`;§2.0 #5 未 waive 时还须含绝对 `Worktree path` + verified `execution_lease`;**禁止**省略 `Model tier` |
322
322
  | 大包 inline | **禁止**把 T1–Tn 或整份 plan 写进 **一个** `fullstack-dev` leaf Assignment 冒充 SDD |
323
- | 分支 diff | 全部 task 完成后 `review-package MERGE_BASE HEAD` → `{SDD_DIR}/review/` branch diff → plan QC tri(N=3) |
323
+ | 分支 diff | 全部 task 完成后 skill **`mstar-sdd`** → `scripts/review-package MERGE_BASE HEAD` → `{SDD_DIR}/review/` branch diff → plan QC tri(N=3) |
324
324
 
325
325
  Iteration Phase 2 附加:
326
326
 
@@ -475,7 +475,8 @@ Prefer **`archived/residuals/`**; migrate and delete history key when possible.
475
475
  # Replace .mstar with your resolved {HARNESS_DIR}; legacy projects may use .agents.
476
476
  jq '.residual_findings["01-data-infrastructure"] // .metadata.residual_findings["01-data-infrastructure"]' .mstar/status.json
477
477
  jq '.entries[] | select(.id == "R1")' .mstar/archived/residuals/01-data-infrastructure.json
478
- bash skills/mstar-plan-artifacts/scripts/tech-debt-rollup.sh .mstar/status.json
478
+ # skill mstar-plan-artifactsscripts/tech-debt-rollup.sh (not a consumer cwd path)
479
+ bash <mstar-plan-artifacts>/scripts/tech-debt-rollup.sh .mstar/status.json
479
480
  ```
480
481
 
481
482
  (`//` right-hand side = legacy read path.)
@@ -508,8 +509,9 @@ Append-only log for merge closure, batch archive, `tech_debt_summary` refresh, e
508
509
  **Compute (canonical):** run the read-only script (do **not** hand-count):
509
510
 
510
511
  ```bash
511
- # From repo root; pass path to status.json if not .mstar/status.json
512
- bash skills/mstar-plan-artifacts/scripts/tech-debt-rollup.sh .mstar/status.json
512
+ # Resolve from skill mstar-plan-artifacts scripts/tech-debt-rollup.sh
513
+ # Pass path to status.json if not .mstar/status.json
514
+ bash <mstar-plan-artifacts>/scripts/tech-debt-rollup.sh .mstar/status.json
513
515
  ```
514
516
 
515
517
  - Prints computed `total_open`, `by_severity`, `by_target`, `by_plan`.
@@ -65,7 +65,7 @@ description: Morning Star (启明星) harness 计划目录约定 —— `{HARNES
65
65
  PM 在需要持久化追踪时:
66
66
 
67
67
  1. 建 `.mstar/`、`plans/`、`status.json`(空模板见 **`mstar-plan-artifacts/templates/status.empty.json`**)
68
- 2. 可选 `notes.json`(模板 **`mstar-plan-artifacts/templates/notes.empty.json`**)、`knowledge/`、`iterations/`、`{HARNESS_DIR}/specs/`、`sdd/`(空目录占位;运行时 per-plan 子目录由 `mstar-sdd/scripts/sdd-workspace` 创建)
68
+ 2. 可选 `notes.json`(模板 **`mstar-plan-artifacts/templates/notes.empty.json`**)、`knowledge/`、`iterations/`、`{HARNESS_DIR}/specs/`、`sdd/`(空目录占位;运行时 per-plan 子目录由 skill **`mstar-sdd`** → `scripts/sdd-workspace` 创建)
69
69
  3. 项目根 `.gitignore` 追加 Morning Star **进程产物**忽略集(见下文「Git 跟踪策略」)— CLI `init` 可自动添加
70
70
  4. Git:**进程本地、结果共享** — 默认跟踪 `{HARNESS_DIR}/AGENTS.md`、`{KNOWLEDGE_DIR}/**`、`{SPECS_DIR}/**`;`plans/`、`iterations/`、`status.json` 等为**本地会话 SSOT**,默认 gitignored。跨 clone 持久 handoff = knowledge + specs + `{HARNESS_DIR}/AGENTS.md`(及根 `CONCEPTS.md` / `STRATEGY.md` 若使用);须跨 clone 的 residual 须提升(compound)或写入 tracked results — **勿**默认 `git add` `status.json` / `plans/`。
71
71
 
@@ -14,7 +14,7 @@
14
14
 
15
15
  1. 创建 `{HARNESS_DIR}`(推荐 `.mstar/`)与 `{PLAN_DIR}`(推荐 `.mstar/plans/`)。
16
16
  2. 初始化 `status.json`:从 **`mstar-plan-artifacts/templates/status.empty.json`** 复制;residual canonical 见 **`mstar-plan-artifacts` SKILL.md**;字段与生命周期见 **`mstar-plan-artifacts/references/status-and-residuals.md`**。
17
- 3. 初始化可选 `notes.json`(**`mstar-plan-artifacts/templates/notes.empty.json`**);`sdd/` 空目录占位(per-plan 子目录由 `mstar-sdd/scripts/sdd-workspace` 创建)。
17
+ 3. 初始化可选 `notes.json`(**`mstar-plan-artifacts/templates/notes.empty.json`**);`sdd/` 空目录占位(per-plan 子目录由 skill **`mstar-sdd`** → `scripts/sdd-workspace` 创建)。
18
18
  4. 项目根 `.gitignore` 追加 Morning Star **进程产物**忽略集(canonical snippet → `mstar-plan-conventions` SKILL.md「Git 跟踪策略」;legacy `.agents/` 有等价表)。
19
19
  5. **Profile B**(统一 Done 压缩)时另建 `{HARNESS_DIR}/archived/plans/` 与 `archived/plans-done.json`(自 **`mstar-plan-artifacts/templates/plans-done.empty.json`** 复制;schema 仅 `{ "plans": [] }`,见 **`mstar-plan-artifacts/references/done-compaction.md`**)。
20
20
  6. 可选:创建 `{ITERATION_DIR}`(`iterations/` + `README.md`)与 `{KNOWLEDGE_DIR}`(`knowledge/` + `README.md`);`{HARNESS_DIR}/specs/`(解析后的 `{SPECS_DIR}` 默认落点);内容边界见 `mstar-plan-conventions` SKILL.md 与 `references/knowledge-and-designs.md`。
@@ -137,7 +137,7 @@ When `metadata.control_worktree_path` is set and worktree mode is **not** waived
137
137
  | **`Worktree path`** | Absolute **feature** checkout (`execution_lease.worktree_path`) — product/source edits only |
138
138
  | **`Control harness root`** | Absolute `<control_worktree_path>/{HARNESS_DIR}` |
139
139
  | **`Plan Path`** | Absolute under control harness (not relative from feature cwd) |
140
- | **`SDD dir`** | Absolute under control harness; run `sdd-workspace` with `MSTAR_CONTROL_ROOT=<control_worktree_path>` when cwd is the feature tree |
140
+ | **`SDD dir`** | Absolute under control harness; run skill **`mstar-sdd`** → `scripts/sdd-workspace` with `MSTAR_CONTROL_ROOT=<control_worktree_path>` when cwd is the feature tree |
141
141
 
142
142
  Do **not** waive worktree because default-gitignored `plans/` are missing under the feature checkout — see `mstar-branch-worktree` 「Harness path SSOT under default gitignore」.
143
143
  ## Completion Report Template
@@ -39,12 +39,12 @@ Batch all findings for the human in one message. If clean, proceed silently.
39
39
  ## Per-task loop (PM only)
40
40
 
41
41
  1. Record `BASE_SHA` (never use `HEAD~1` later)
42
- 2. `sdd-workspace <plan-id>` → `SDD_DIR`(iteration L1 从 feature cwd 调用时:`MSTAR_CONTROL_ROOT=<control_worktree_path>` 或 `sdd-workspace <plan-id> <control_worktree_path>`;缺 status.json 的 linked worktree 会 fail closed)
43
- 3. `task-brief <plan> N` → brief file
42
+ 2. skill **`mstar-sdd`** → `scripts/sdd-workspace <plan-id>` → `SDD_DIR`(iteration L1 从 feature cwd 调用时:`MSTAR_CONTROL_ROOT=<control_worktree_path>` 或 `scripts/sdd-workspace <plan-id> <control_worktree_path>`;缺 status.json 的 linked worktree 会 fail closed)
43
+ 3. `scripts/task-brief <plan> N` → brief file
44
44
  4. Dispatch implementer:
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
- 5. On `DONE`: `review-package BASE HEAD` → diff file
47
+ 5. On `DONE`: `scripts/review-package BASE HEAD` → diff file
48
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
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
@@ -81,7 +81,7 @@ Host mapping → **`mstar-host`** references (`model` / Task field).
81
81
 
82
82
  ## After all tasks
83
83
 
84
- 1. `review-package MERGE_BASE HEAD` → branch diff in `{SDD_DIR}/review/`
84
+ 1. `scripts/review-package MERGE_BASE HEAD` → branch diff in `{SDD_DIR}/review/`
85
85
  2. PM dispatches **plan QC tri-review (L3)** — **`QC mode: full tri-review`**, **N=3** — with branch review-package path and report paths under `{SDD_DIR}/review/` → **`mstar-review-qc`** · **`mstar-dispatch-gates`**. Layer SSOT → **`mstar-review-qc/references/review-responsibility-boundaries.md`**. PM writes `{SDD_DIR}/review/qc-consolidated.md` and durable main-plan gate summary. **Mandatory whenever `Execution mode: sdd`** (single-plan or iteration).
86
86
  3. Critical/Important QC findings → **one** fix dispatch (full list), then targeted re-review
87
87
  4. QA gate → **`mstar-harness-core`** Done rules; PM **`mstar-roles/references/project-manager/qa-trigger-matrix.md`**
@@ -109,13 +109,15 @@ Minor findings → `## Minor (for plan QC)` section in same file.
109
109
 
110
110
  ## Scripts
111
111
 
112
- From repo: `skills/mstar-sdd/scripts/` (bundled in OpenCode as `harness-skills/mstar-sdd/scripts/`).
112
+ Scripts live under this skill: **`mstar-sdd`** `scripts/<name>`.
113
+
114
+ Resolve the loaded **`mstar-sdd`** skill directory first, then run the script by skill-relative path. **Do not** treat `skills/mstar-sdd/scripts/...` as a consumer-project cwd path — that layout exists only in the harness source tree (and OpenCode's bundled `harness-skills/mstar-sdd/scripts/`).
113
115
 
114
116
  | Script | Usage |
115
117
  |--------|--------|
116
- | `sdd-workspace` | `PLAN_ID [CONTROL_ROOT]` → creates `{SDD_DIR}` under control harness when set (`MSTAR_CONTROL_ROOT` or 2nd arg); fail closed on linked worktree without `status.json` |
117
- | `task-brief` | `PLAN_FILE TASK_N [OUTFILE]` |
118
- | `review-package` | `BASE HEAD [OUTFILE]` |
118
+ | `scripts/sdd-workspace` | `PLAN_ID [CONTROL_ROOT]` → creates `{SDD_DIR}` under control harness when set (`MSTAR_CONTROL_ROOT` or 2nd arg); fail closed on linked worktree without `status.json` |
119
+ | `scripts/task-brief` | `PLAN_FILE TASK_N [OUTFILE]` |
120
+ | `scripts/review-package` | `BASE HEAD [OUTFILE]` |
119
121
 
120
122
  ## References
121
123
 
@@ -4,12 +4,14 @@ PM and subagents move artifacts as **files**, not pasted text. Pasted content st
4
4
 
5
5
  ## Before implementer dispatch
6
6
 
7
- 1. `export SDD_DIR=$(skills/mstar-sdd/scripts/sdd-workspace <plan-id>)`
7
+ Resolve scripts from skill **`mstar-sdd`** → `scripts/…` (loaded skill directory). Do **not** run `skills/mstar-sdd/scripts/…` from a consumer project cwd.
8
+
9
+ 1. `export SDD_DIR=$(<mstar-sdd>/scripts/sdd-workspace <plan-id>)`
8
10
  - Iteration L1 (implementer cwd = feature worktree):
9
11
  `export MSTAR_CONTROL_ROOT=<control_worktree_path>`
10
12
  or `sdd-workspace <plan-id> <control_worktree_path>`
11
13
  so `{SDD_DIR}` lands on the control harness (default-gitignored plans/status/sdd). Do not create a second SDD tree under the feature checkout.
12
- 2. `skills/mstar-sdd/scripts/task-brief <plan-file> <N> "$SDD_DIR/task-N-brief.md"`
14
+ 2. `<mstar-sdd>/scripts/task-brief <plan-file> <N> "$SDD_DIR/task-N-brief.md"`
13
15
  3. Record `BASE_SHA` (`git rev-parse HEAD` before dispatch).
14
16
  4. Dispatch implementer with:
15
17
  - One line scene-setting (where task fits)
@@ -31,7 +33,7 @@ Implementer writes full report to `task-N-report.md`. Return to PM only:
31
33
  ## After implementer DONE
32
34
 
33
35
  1. `HEAD_SHA=$(git rev-parse HEAD)`
34
- 2. `skills/mstar-sdd/scripts/review-package "$BASE_SHA" "$HEAD_SHA" "$SDD_DIR/review-....diff"`
36
+ 2. `<mstar-sdd>/scripts/review-package "$BASE_SHA" "$HEAD_SHA" "$SDD_DIR/review-....diff"`
35
37
  3. Dispatch task reviewer with: brief path, report path, diff path, Global Constraints (verbatim from plan).
36
38
 
37
39
  **Never use `HEAD~1` as BASE** — multi-commit tasks truncate.
@@ -63,7 +65,7 @@ After all tasks:
63
65
  ```bash
64
66
  MERGE_BASE=$(git merge-base <target-branch> HEAD)
65
67
  mkdir -p "$SDD_DIR/review"
66
- skills/mstar-sdd/scripts/review-package "$MERGE_BASE" HEAD "$SDD_DIR/review/branch-review-....diff"
68
+ <mstar-sdd>/scripts/review-package "$MERGE_BASE" HEAD "$SDD_DIR/review/branch-review-....diff"
67
69
  ```
68
70
 
69
71
  Pass **branch** diff path and bundle report paths (`$SDD_DIR/review/qc1.md` …) to QC dispatch — not task-level diffs. Raw QC/QA files stay in the gitignored review bundle; PM records durable summary and open residuals in **local** plan/`status.json` (session SSOT) and promotes cross-clone decisions into tracked knowledge/specs/`AGENTS.md` per `mstar-plan-conventions` git policy.
@@ -103,6 +103,17 @@ Optional files to read only when needed.
103
103
 
104
104
  Keep `SKILL.md` focused on the main execution path. Move long examples, templates, schemas, and detailed variants into `references/`, `templates/`, or `scripts/`.
105
105
 
106
+ ## Skill-relative script and asset paths
107
+
108
+ When a skill ships executables or assets under `scripts/` / `templates/` / `references/`, name them as **skill → relative path**:
109
+
110
+ - Good: skill **`mstar-sdd`** → `scripts/sdd-workspace`
111
+ - Good: `<mstar-sdd>/scripts/sdd-workspace` (placeholder for the loaded skill root)
112
+ - Bad in runtime docs: `skills/mstar-sdd/scripts/sdd-workspace` as if it were a consumer-project cwd path
113
+ - Bad in shipped rules / CLI notes: `skills/mstar-host/references/…` as a consumer cwd path — use **`mstar-host`** → `references/…` (omp may also cite `skill://mstar-host/references/…`)
114
+
115
+ Agents discover skills by **name**; they often miss files when docs present a full repo-relative path and they search that literal string under the app checkout. Resolve the loaded skill directory first, then append `scripts/…` / `references/…`. **How** to resolve differs by host — use **`mstar-host`** § Resolve loaded skill root (omp `skill://`, Cursor plugin checkout under `~/.cursor/plugins/…` or `.cursor/plugins/…`, OpenCode `harness-skills/`, Codex/Kimi/ZCode plugin mounts). Reserve `skills/<name>/…` only for harness-repo maintenance notes that explicitly say "from this repository root".
116
+
106
117
  ## Progressive Disclosure
107
118
 
108
119
  Use three levels:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mstar-harness/opencode",
3
- "version": "1.8.3",
3
+ "version": "1.8.5",
4
4
  "description": "Morning Star harness OpenCode plugin (skills bootstrap and agent loading).",
5
5
  "license": "MIT",
6
6
  "repository": {