Mstar Host logo

Mstar Host

Community
btspoony
mstar-host

Host adapter for OpenCode, Cursor, Codex, Kimi, ZCode, omp, dsh: entry, dispatch, plan mode, parallel dispatch, skill/command loading. Detect from session tools, then read `references/<host>.md`.

Overview

Publisherbtspoony
Repositorymstar-harness
Skill namemstar-host
Stars
67
Forks
4
Bundled files
16
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 16 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by btspoony on GitHub. Read the source before you install it.

Installation

Install the Mstar Host AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/btspoony/mstar-harness/tree/main/skills/mstar-host
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/btspoony/mstar-harness.git /tmp/mstar-harness
mkdir -p .claude/skills
cp -r /tmp/mstar-harness/skills/mstar-host .claude/skills/mstar-host
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Mstar Host in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Mstar Host on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Mstar Host is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Morning Star Host Adapter

Host-specific capabilities and entry behavior for Morning Star. Process gates and invariants stay in mstar-harness-core and topic mstar-* skills.

Load order

本 skill 总是在 mstar-harness-core 之后加载(先 Read mstar-harness-core SKILL.md;宿主注入项目 AGENTS.md 也不跳过,见下 ## First action)。本 skill 只适配宿主入口 / 检测 / 计划 UX;状态机与门禁以 mstar-harness-core 为准。

First action

Read mstar-harness-core before this skill (even when the host injects project AGENTS.md).

Default path

  1. Read mstar-harness-core
  2. Read mstar-host (this skill) and detect host below
  3. Read references/<host>.md for the active host
  4. Load role via mstar-roles
  5. Execute with evidence-first completion checks

Load topic skills on demand per mstar-roles (do not read every mstar-* skill by default). Cursor routing-eval (.cursor/skills/mstar-routing-eval/) is regression tooling only — not part of runtime load order.

Detect active host

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.

SignalHostNext read
subagent_type param on the Task tool (plus CreatePlan/SwitchMode when Plan mode is active)cursorreferences/cursor.md; Plan mode also references/cursor-plan-mode-bridge.md
question tool, or task tool with subagent (singular) — no tasks[] batchopencodereferences/opencode.md
task tool with agent / tasks[] batch, ask, hub (omp also exposes /goal; goal rule is host-agnostic per below)ompreferences/omp.md; Plan mode also references/omp-plan-mode-bridge.md
subagent tool (dsh's model-facing delegation tool — @deepseek-ai/dsh-tool-subagent default toolName), spawn_teammate / team_task_create (dsh Agent Teams tools — @deepseek-ai/dsh-experimental-tool-agent-team)dshreferences/dsh.md
Agent / AskUserQuestion / EnterPlanMode + AgentSwarm (Kimi-only)kimireferences/kimi.md; Plan mode also references/kimi-plan-mode-bridge.md
Agent / AskUserQuestion / EnterPlanMode / TodoWrite, no AgentSwarmzcodereferences/zcode.md; Plan mode also references/zcode-plan-mode-bridge.md
/plan, /goal slash commands; Goal tools; functions.* / codex_app.* tool namespaces; tool_search; Browser plugin toolscodexreferences/codex.md; Plan mode also references/_shared/plan-mode-bridge-core.md
Still ambiguous-Read sections in cursor.md, opencode.md, codex.md, kimi.md, zcode.md, omp.md, and dsh.md that match tools you have; mstar-harness-core wins on conflict

Order matters: check cursor → opencode → omp → dsh → kimi → zcode → codex. The four Task-shaped tokens are distinct: subagent_type (Cursor), task_subagent (OpenCode's subagent parameter on the task tool), agent/tasks[] (omp), and subagent (dsh's own delegation tool). No row shares another's token, so the dsh row collides with none and sits with the agent-tool hosts.

Engine check (when available): run mstar host detect --signals <comma-list> (or import { detectHost } from "@mstar-harness/engine" in a host hook) to resolve the detection table above from session tool shapes (prints the host id, or ambiguous to fall back on the table + judgment). On fail -> do not proceed; fix and re-run. Skill text below remains authoritative when the runtime is absent.

Parallel dispatch (invoke-capable hosts)

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.

On dsh only, read-only fan-out runs through the native workflow tool instead of N subagent invokes. N ≥ 3 is the width it is designed for; 1–2 seats are carried by subagent — read-only fan-out never takes a teammate at any N. Where the Team layer disables subagent, the script follows the work, not the seat count: a 2-seat PR review runs § 3 mstar-pr-seats with the tier's two domain lenses, and a 2-category codebase audit runs § 2 mstar-audit-fanout with two categories (§ 3 requires target + diffBase, so it never carries an audit). Separately, a one-seat SDD task review must not consume a roster slot, so routing it through a one-seat § 4 workflow run is a supported route on a Team profile, not an improvisation. Writable fan-out never uses workflow — it has no per-child pre-start veto seam. Scripts + operator path: references/dsh.md § Read-only fan-out via the workflow tool.

/goal directive (host-agnostic)

Applicability is by capability, not host identity: any host that exposes a /goal command (currently Codex Goal Mode and omp; other code agents may add it later) attaches a persistent objective to the thread. Exception — dsh: mstar stops arming a goal there and never uses a /goal objective or a goal round loop as the progression driver — dsh runs on the native workflow (workflow snapshot phases + dispatch gates + subagent settle notifications; each settle notification is a result-settled Rescheduling checkpoint — run that checkpoint and dispatch the ready independent work before any wait, never "one settle → one dispatch", per mstar-iteration references/phase-2-worktree-lease.md §2.4; a manually armed /goal stays outside mstar's flow). Full rule → references/dsh.md. Rule — always set the goal to running the complete flow to the end, never a sub-stage:

  • Advancing an iteration: set the goal to complete the entire iteration flow (iteration-start → per-plan cycles → iteration-close → PR delivery → PR merge-ready loop). Do not set a sub-stage goal (e.g. "finish Phase 1 only").
  • Advancing non-iteration work (single plan / hotfix / one-off task): set the goal to complete the entire per-plan flow (specify → clarify → plan → tasks → implement → plan QC tri + QA gate → Done; standalone development plans continue through the delivery tail to verified merge + terminal close — mstar-harness-core「最小交付循环」/ mstar-artifacts/references/plan-workflow-lifecycle-contract.md). Do not set a sub-stage goal (e.g. "write the plan" or "implement one task").

Goal text is a session-level objective only: store.db execution authority under {HARNESS_DIR} and authored {PLAN_DIR} plans remain authoritative, and goal completion is not harness Done. Mirror goal success criteria into the SSOT plan; when the goal changes, update goal text and the SSOT in the same round.

Phase-transition todo refresh (host-agnostic)

At each phase transition the primary PM refreshes session todos before the next action/dispatch: close completed entries only, retain pending gates and append next-phase obligations. Project the selected workflow's complete lifecycle, not another per-row primary scope. Todos remain a projection, not state authority.

todo entries are a projection, not SSOT: they reflect the ACTIVE workflow phase / plan states and named plan/gate evidence, and cannot authorize or invent a state transition. Store.db workflow/plan rows remain the execution authority, with authored plan artifacts kept aligned; this is freshness discipline, not a new host hook anchor, tool, or deterministic enforcement mechanism.

Host hooks (anchor contract)

Shared lifecycle skills name host-agnostic anchors — named moments at which the active host obliges the PM to run a host-defined coordinator action. The anchor vocabulary is frozen and carries no host identity: tool names, exact parameters, prerequisites, refusal codes, native settings and auto-trigger scope live only in references/<host>.md.

AnchorMoment
direction-lockdirection locked, formal compass/plans ready, and workflow registered with coordinator seat acquired — before the Review & Edit chain
phase-1-lockPhase 1 completion — once the integration worktree exists and the newly created integration branch is pushed; Phase 1 commits nothing (the PM lock alone is not the moment)
phase-2-entrythe Phase 2 execute/resume entry — after the §2.0 gates, before the per-plan loop; not the Phase-1-reused integration-worktree step
rescheduling-checkpointeach Rescheduling checkpoint re-evaluation

Execution rule. At each anchor the PM executes whatever the active host reference declares under its own ## Host hooks section for that anchor. A host reference that declares nothing for an anchor means no-op: never invent an action, never substitute another host's declaration, and never treat an absent declaration as permission to skip the anchor's shared step.

Marker form. A shared file that owns an anchor carries a comment marker plus a one-line pointer — neither names a host or a tool:

markdown
<!-- host-hook: <anchor> -->
> Execute the active host reference's `## Host hooks` declaration for `<anchor>`; this file defines no host action.

Carrier locations — the four markers in the shared corpus (all four live under skills/, never in commands/):

FileLocationAnchor
mstar-iteration/references/phase-1-prepare.md§1.5, after formal compass/plans are ready, workflow registration creates its running ACTIVE lifecycle, and this session acquires the coordinator seat; before Review & Editdirection-lock
mstar-iteration/references/phase-2-worktree-lease.md§2.3 「Integration worktree (Phase 2 entry) + control root」 checklist tail, after step 7 (integration-branch push — Phase 1 commits nothing) — the Phase 1 route reaches it through iteration-start's integration-branch step, which carries a pointer onlyphase-1-lock
mstar-iteration/references/phase-2-worktree-lease.mdimmediately before the ## 2.4 Per-plan loop heading (the Phase 2 execute/resume entry; §2.3 is the Phase-1-reused step and triggers nothing)phase-2-entry
mstar-iteration/references/phase-2-worktree-lease.md### Rescheduling checkpointrescheduling-checkpoint (the five frozen reason names are handed off verbatim)

Shared-text boundary: new/modified skills outside mstar-host and canonical commands use capability wording, not host names/tools/fields/native settings/extension filenames. Concrete adapters remain exclusively in this skill's per-host references.

Exception — an authorized optional-capability reference. A reference may carry the concrete adapter (host names, command surface, error codes) of an optional capability when the feature is defined by that external capability itself, provided it: (a) names the loaded external skill as the sole authority for the command surface and lifecycle, and defers to it on any difference; (b) keeps the adapter in its own owner file rather than spreading those tokens into any other shared text; and (c) leaves the default path complete without the capability, with a plain fallback for every failed gate leg. This exception narrows nothing else in this section.

Enforcement surface. The check applies to the files a change touches, never to the whole corpus: shared text that already violates the rule and is not part of the current change is out of scope of the rule's enforcement and is cleared in batches under the host-seam-corpus-cleanup goal of the store-authoritative _default project roadmap (read rule → mstar-project-governance; legacy {PROJECT_DIR}/_default/roadmap.md is transport/history only). Until that cleanup completes, a whole-tree grep over shared text is not a valid assertion for this rule — judge a change on the shared-layer text it adds or edits.

Resolve loaded skill root

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).

HostPreferFilesystem fallback (only if the host cannot load by name)
ompskill://<name> / skill://<name>/<rel> / /skill:<name>Plugin package root skills/<name>/ after install/link — not app cwd
CursorSkill name via plugin skillsGlobal ~/.cursor/plugins/local/morning-star-harness/skills/<name>/; project .cursor/plugins/morning-star-harness/skills/<name>/
CodexSkill name via pluginPlugin-mounted skills/<name>/; project command skills under .agents/skills/<name>/
OpenCodeSkill name via @mstar-harness/opencodePackage-internal harness-skills/<name>/ — never process.cwd()/skills/
dshSkill name via the mstar skill-local provider (providerName: mstar)$DSH_BUNDLED_SKILL_DIR/<name>[/<rel>] — the packaged harness-skills/ mirror mounted package-relative by @mstar-harness/dsh; never app cwd
Kimi / ZCodeSkill name / /skill:<name>Plugin mount ./skills/<name>/ from the installed plugin root

Authoring convention: mstar-skill-authoring § Skill-relative script and asset paths. Per-host URI / mount detail: references/<host>.md.

Engine check (when available): run mstar host skill-root --host <id> --skill <name> (or import resolveSkillRoot from @mstar-harness/engine in a host hook) to resolve the loaded skill root per the table above. On fail -> do not proceed; fix and re-run. Skill text below remains authoritative when the runtime is absent.

Conflict order(Decision Rules)

  1. User explicit instructions (this turn)
  2. Project AGENTS.md / CLAUDE.md
  3. mstar-harness-core and related mstar-* skills
  4. This mstar-host skill and references/*

Workflow

按 ## Default path 执行:Read mstar-harness-core → 读本 skill 并按 ## Detect active host 检测宿主(cursor → opencode → omp → dsh → kimi → zcode → codex)→ 读 references/<host>.md(计划模式另读对应 plan-mode bridge)→ 经 mstar-roles 加载角色 → 执行并以证据收尾。topic skill 按需加载,不默认通读。

Evidence

正确结果 = 检测输出:mstar host detect --signals <comma-list> 打印 host: <id>(或 ambiguous → 按检测表 + 判断降级);已加载的是对应当前宿主工具形状的 references/<host>.md。计划模式按宿主 plan-mode bridge 完成双写 / 对齐。

For iteration Phase 1, use the shared bridge's prototype-first exception to early formal dual-write: preserve one session carrier, separate current-design approval from implementation permission, and use documented host permission recovery for restricted package writes/invoke. Procedure authority → mstar-iteration/references/phase-1-prepare.md §1.2.5 / §1.6; host limits/recovery → references/_shared/plan-mode-bridge-core.md + active host bridge.

References

  • 各宿主适配细则 → references/<host>.md(cursor / opencode / omp / dsh / kimi / zcode / codex;计划模式另见 plan-mode bridge references)
  • invoke-capable 宿主并行派发 → references/parallel-dispatch.md
  • 角色加载与参数 → mstar-roles

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Mstar Host AI skill do?

Host adapter for OpenCode, Cursor, Codex, Kimi, ZCode, omp, dsh: entry, dispatch, plan mode, parallel dispatch, skill/command loading. Detect from session tools, then read `references/<host>.md`.

Why use Mstar Host on TypingMind?

Because you install it once and use it with any model. Mstar Host is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Mstar Host in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/btspoony/mstar-harness/tree/main/skills/mstar-host. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Mstar Host?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Mstar Host?

As many as you like. As long as a model supports skills, you can use Mstar Host with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Mstar Host AI skill free?

Yes. It is published on GitHub by btspoony under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇