ASD '26
All Chapters

CHAPTER 18

Plugins & Host Packs: Claude Code and Beyond

Install the whole practice into your coding agent

Reading time

19 min

The emitter and the pack tree

The clean mental model is this: platform/ is the source of truth, and every host pack is a projection. I start from ten canonical roles, eighty-one skill sources that ship as eighty executable skills after the authored service-blueprinting flagship replaces its generated twin, seven authored templates, and the shared runtime registry of thirty sd_* tools. The compiler turns that inventory into release data, then the emitter lays it out for each host without changing the underlying practice.

That is why the pack tree matters. It prevents the usual integration drift where every client team hand-copies prompts, renames folders, tweaks configs, and silently forks the method. ASD refuses that pattern. The canonical inventory also carries 228 corpus resources, 10 role prompts, 38 registered artifact-kind contracts, and 39 catalog vocabulary rows. Those counts belong to the platform, not to any single host. A host pack either receives that inventory in a form it can load, or it receives an explicitly bounded subset. Nothing is implied.

The distribution story follows the same rule. The monorepo emits the installable targets, then scripts/publish-distribution-repos.mjs republishes them into two standalone mirrors: imehr/asd-plugin for coding-agent host packs and native Claude Code marketplace install, and imehr/asd-mcp for the standalone MCP server. Each mirror carries a provenance.json file that records the source commit it came from. If that provenance record is missing or stale, I stop trusting the copy immediately.

emit-packs.mjs writing the distributable pack tree.
Figure 18.1 Emitter writing the pack tree. This capture proves that emit-packs.mjs generated the distributable targets from the canonical source tree in one run. It does not prove that any native host loaded or executed those packs.
emit-packs.sh
pnpm --dir suite install
node platform/compiler/compile.mjs
node platform/compiler/generate-skills.mjs
node platform/compiler/emit-packs.mjs --output /tmp/asd-packs

That four-command sequence is the foundation for everything else in this chapter. compile.mjs refreshes the canonical manifest and capability inventory. generate-skills.mjs renders the executable method skills. emit-packs.mjs projects the same practice into twelve targets: agy, buzz, claude-code, cli, codex, dsh, grok, kimi, mcp, omp, opencode, and pi. The output directory is deliberately disposable because emission is a build product, not a place for hand-maintained edits.

My take: The fastest way to corrupt an agentic practice is to patch the generated pack because it feels quicker than fixing the source. I have done it. It always comes back to bite. If the change belongs to the practice, I make it in platform/agents, platform/skills, platform/templates, or the emitter itself, then I regenerate every surface.

That regeneration rule is more than tidy engineering. It is how ASD keeps one method contract across many shells. A Claude plugin, a Kimi project mirror, and a bare CLI install should differ in loading shape, not in what counts as acceptable evidence, what the Critic can veto, or who owns the phase gate. The whole point of the emitter is to keep those invariants boring.

The twelve-target matrix

Once I accept that a pack is a distribution boundary rather than a second implementation, the twelve-target matrix becomes easy to read. Some targets bundle the full runtime with roles, skills, and MCP wiring. Some are prompt-only or neutral trees by design. Some are native installs. Some are repo conventions. The job is not to force them into false equivalence. The job is to say, precisely, what each one contains and what evidence backs it.

Target What it contains Host shape Current evidence boundary
agy review-session.md carrying the ASD Critic posture for review work; no bundled runtime. Review-session contract for AGY or Herdr style use. Not a native plugin; live AGY prompt execution remains unverified.
buzz Keyless Persona Pack with 10 persona definitions, 80 skill references, pack-relative MCP config, vendored MCP bundle, and compatibility projections. Native BUZZ Persona Pack plus pack-local MCP. Pack-local MCP boot is evidenced; authenticated channel membership, exact mention routing, visible replies, and durable ASD record binding need separate live receipts.
claude-code .claude-plugin/plugin.json, plugin-root .mcp.json, agents/, skills/, commands/asd.md, vendored mcp/, capability manifest. Native Claude Code plugin and marketplace surface. Marketplace installation and structural validation are available; native session execution still requires its own host receipt.
cli asd launcher plus cli/bin/cli.mjs and shared runtime data. Standalone terminal runtime. Isolated pack-local CLI boot and representative workflow verified.
codex AGENTS.md, .codex/config.toml block, vendored mcp/. Repository conventions plus MCP registration, not a native plugin manifest. MCP bundle has fresh stdio evidence; Codex-native loading and execution remain host-bounded.
dsh Capability pointer and profile-facing distribution for the @asd/ui Studio adapter. DeepSeek Harness Studio integration surface. Pinned receipt exists for DSH 0.1.0-rc.5 and @asd/ui 0.5.0; support is explicit, including one unsupported capability row.
grok Ten role prompts under prompts/; no MCP bundle, no executable runtime. Prompt-only interoperability target. Prompt format inspected; native Grok discovery and live workflow unverified.
kimi .kimi-code agents, skills, MCP bundle, mcp.json, and project conventions. Project-level Kimi mirror with workspace trust. Pack-local MCP boot is evidenced; native Kimi loading remains a separate host claim.
mcp mcp/bin/server.mjs, asd-mcp.json, optional shim, corpus payload. Standalone stdio MCP server. Isolated stdio initialize and representative workflow verified.
omp Neutral agents/<role>/instructions.md and skills/<skill>/SKILL.md trees only. Source tree to copy into OMP discovery paths. No bundled MCP or runtime; native OMP loading and execution unverified.
opencode agent/, skills/, vendored mcp/, and opencode.json command-array config. Project adapter for OpenCode. MCP bundle has fresh stdio evidence; native OpenCode discovery and execution remain unverified.
pi Neutral role and skill trees, mirroring canonical content without runtime packaging. Copy-only source material for Pi discovery paths. No MCP or executable runtime in target; Pi host format and execution are unverified.

There is a pattern hiding in that table. Runtime-equipped packs carry the same MCP engine and, when the corpus roots are present, expose 30 tools, 228 resources, and 10 prompts. Prompt-only and neutral targets do not pretend otherwise. That is why I read pack docs as capability boundaries, not marketing pages. A target either bundles MCP wiring, or it does not. A target either has a native install story, or it asks me to copy source material into host discovery paths. Both are valid. Confusing them is how false claims get published.

CORE PRINCIPLE: The host matrix is a truth table, not a feature grid. Read each target by what it concretely installs, which runtime it actually carries, and which proof artifacts exist for that specific layer.

Claude Code: native plugin and marketplace

Claude Code is the reference native plugin surface because it takes the whole practice in one install: ten role subagents, eighty executable method skills, the /asd orchestration command, and a vendored MCP server rooted at the plugin itself. I do not need a global asd binary. I do not need a sibling checkout. I do not need to guess where the server lives. The plugin carries its own wiring.

claude-plugin-install.sh
claude plugin marketplace add imehr/asd-plugin
claude plugin install asd@asd-platform
Installing the ASD plugin into Claude Code from the marketplace.
Figure 18.2 Claude Code marketplace install. This capture proves that the ASD plugin can be added from imehr/asd-plugin and installed as asd@asd-platform in Claude Code. It does not prove that a later interactive Claude session executed every role or tool path inside the host.

That two-command path is the canonical user install. It is the one I recommend whenever the marketplace is available, because it keeps distribution honest. The published plugin comes from the emitted mirror repository, and its provenance.json tells me exactly which source commit it was synced from.

From a source checkout, I can install the same plugin through the local packs tree. The important detail is that this is still a plugin install, not a manual copy masquerading as one. Claude Code reads the marketplace manifest from the emitted packs directory and installs the generated plugin by its marketplace id.

claude-plugin-from-source.sh
REPO=/path/to/agentic-service-designer
claude plugin marketplace add "$REPO/platform/packs"
claude plugin install asd@asd-platform

Inside the installed plugin, the critical file is the plugin-root .mcp.json. It points the host at the vendored server with a path that remains valid after installation:

plugin-root.mcp.json
{
  "mcpServers": {
    "asd": {
      "command": "node",
      "args": ["${CLAUDE_PLUGIN_ROOT}/mcp/bin/server.mjs"]
    }
  }
}

That one configuration block carries a lot of meaning. ${CLAUDE_PLUGIN_ROOT} resolves inside the installed plugin, so the vendored server is self-contained. No PATH registration. No global npm install. No “clone the monorepo next to your host” footnote. Claude gets a native plugin manifest under .claude-plugin/plugin.json, the ten role files under agents/, the eighty method skills under skills/, the orchestration shortcut at commands/asd.md, and the runtime bundle under mcp/. Everything arrives together.

There is still a fallback when the marketplace is unavailable: emit the packs, copy the Claude pack into a project, merge the copied .mcp.json with the project configuration, and replace ${CLAUDE_PLUGIN_ROOT} with a project-relative path. I use that only when I have to. It is a practical source-level fallback, but it is not the same claim as a native plugin install.

My take: When I am evaluating a host for real team use, I look for one boring property first: can it install the whole pack without hand wiring? Claude Code passes that test. That is why it is the reference surface in this chapter, even though the runtime underneath is shared with the CLI and MCP server.

Role mentions and the /asd command

Once the plugin is installed, the surface I actually work with is simple. The canonical role mentions are @orchestrator, @researcher, @synthesizer, @mapper, @ideator, @prototyper, @measurer, @critic, @presenter, and @librarian. Those ten names are stable across the pack ecosystem. They are not cosmetic aliases. They encode authority, inputs, outputs, veto rights, and human checkpoints drawn from the shared role contract.

The /asd command is the orchestrator shortcut layered on top of that role roster. I use it when I want the platform to frame an engagement from a brief, route work in the expected order, keep every write on the tool path, and stop at the points where a human decision is required. I do not use it because I want magic. I use it because it is the shortest route to a disciplined loop.

claude-session.txt
/asd
@researcher run contextual-inquiry for lighthouse-transit and add every verbatim quote to the evidence register.
@mapper run journey-from-transcripts over the register and write the current-state journey-map artifact.
@critic review the journey-map before it can go final.

That sequence shows the core interaction model. The command frames. The role mentions make the active discipline explicit. The skills in the background provide the SOP layer. The vendored MCP server persists the work. The runtime gates do the enforcement. The host shell stays conversational, but the storage path is deterministic: evidence first, method run, artifact write, Critic pass or veto, factcheck, then a human phase advance. The role prompt cannot bypass that sequence.

The role distinctions stay sharp for a reason. The Researcher gathers evidence and provenance. The Mapper writes journeys, blueprints, ecosystems, and mental models. The Critic does not “give feedback” in the hand-wavy workshop sense; it writes evidence-cited review rows and can veto a draft back to revision. The Presenter assembles from final artifacts only. The Librarian checks corpus grounding and pack drift. Once I start thinking in those operational contracts, the host UI becomes much less mysterious.

CAUTION: Do not read conversational delegation as transport. ACP is asd-acp/1 and record-only. The platform can record orchestration plans, dispatch attempts, handoffs, retries, and human gates, but it must not be described as silently spawning external agents just because a role prompt asked for work.

That warning is load-bearing. A role mention is content plus host capability. It is never a blanket license to invent subprocess behavior. If the host can dispatch, the receipt must say so. If it cannot, ASD records the boundary explicitly rather than faking it. I would rather have an honest refusal than a slick demo that lies about what happened.

OpenCode, Codex, Kimi, Grok, AGY, OMP, and Pi

Claude Code is the cleanest native plugin story, but it is not the only useful surface. The other packs exist because real teams already live in different shells. The winning pattern is consistency at the practice layer and specificity at the host layer.

OpenCode gets a proper project adapter. I copy agent/ into .opencode/agents/, skills/ into .opencode/skills/, place the vendored runtime under a project-local mcp/, and merge the emitted opencode.json block that runs ["node", "mcp/bin/server.mjs"]. It is a strong fit when the team wants local project agents and an explicit MCP command array. The boundary is honest: emitted config and bundle are verified, but host loading stays unverified until an OpenCode-specific acceptance receipt says otherwise.

Codex receives repository conventions plus MCP, not a native plugin manifest. The important files are AGENTS.md, the emitted TOML block for .codex/config.toml, and the vendored server copied to a stable path such as .asd-mcp/bin/server.mjs. I like this shape because it meets Codex where Codex already works: repo rules in plain text, runtime tools through MCP. I do not overclaim it. The Codex pack does not promise native subagent discovery just because the role prompts exist.

Kimi is a project mirror under .kimi-code/. It carries the same ten agents, the same eighty skills, the same vendored MCP bundle, and a project-level mcp.json that points at .kimi-code/mcp/bin/server.mjs. The extra operational requirement is workspace trust. If the project has not been trusted, the pack is present on disk but not yet in a state where the host can be treated as live.

Grok is intentionally lighter. It ships prompt files only. No bundled MCP. No runtime. If I want Grok to work against the ASD engine, I pair the role prompt with a separate MCP client that points at the standalone mcp pack. That is still useful. Prompt-only does not mean worthless. It means exactly what it says.

AGY is narrower still. Its payload is a review-session contract that teaches the AGY or Herdr lane how to behave like an ASD Critic: inspect evidence, read acceptance rules, respect host capability boundaries, and keep human authority explicit. It is excellent for adversarial review. It is the wrong thing to call a native AGY plugin, because it is not one.

OMP and Pi are neutral trees. They ship canonical role and skill source material in host-friendly folder layouts, but no runtime bundle and no MCP wiring. I use them when I want to port the practice into a host whose loading rules I control separately. They are deliberately conservative. The pack gives me the content and refuses to pretend the runtime question is solved.

Beneath all of those host adapters sit the two lowest-level surfaces: the standalone CLI and the standalone MCP server. When I need to prove the loop itself rather than the host sugar around it, I drop to one of those layers first.

CLI creating a project and capturing first evidence in an isolated workspace.
Figure 18.3 CLI creating the first evidence rows. This capture proves that the emitted terminal pack can create a project and add evidence in an isolated workspace using the shared runtime. It does not prove that any higher-level host pack invoked the same loop inside its own UI.
cli-first-loop.sh
PACK=/tmp/asd-packs/cli
mkdir -p "$HOME/.local/bin"
ln -sf "$PACK/asd" "$HOME/.local/bin/asd"
export PATH="$HOME/.local/bin:$PATH"
export ASD_WORKSPACE="$(mktemp -d)/projects"
asd project-create --name "Metrovale Access" --client "Fictional composite" \
  --sector public-transport --service "step-free journeys" --phase discover
PROJECT_ID=metrovale-access-12345678
asd evidence-add --projectId "$PROJECT_ID" --source interview-01 --kind quote \
  --body "I cannot tell whether the lift is working before I travel."

I keep that CLI loop in the chapter because it exposes the shared engine with nowhere to hide. The same gate logic appears here that later surfaces through Claude Code, OpenCode, Kimi, Codex, or a standalone MCP client. Evidence kinds are still exactly quote, telemetry, and document. A failing artifact write still persists as draft with machine-readable failure rows. A Critic pass still needs an evidence-cited proposal row. A veto still needs a defect and a fix. The host can change. The contract cannot.

What verified means, and what it does not

This is where most agent-platform documentation goes soft. ASD is stricter. It separates three proof layers that many teams lazily collapse into one sentence.

First layer: emission. Emission proves the compiler generated the expected files and pack tree from the canonical source. That is what Figure 18.1 shows. It tells me the build product exists and that the generated layouts line up with the declared targets. Emission alone does not prove a native host loaded anything.

Second layer: pack-local execution. For six emitted MCP bundles — buzz, claude-code, codex, kimi, mcp, and opencode — the current release matrix has fresh disposable stdio evidence. In each case the evidence covers initialize, the full set of 30 tools, 228 paginated resources, 10 prompts, a representative project-to-evidence-to-artifact-to-evidence-cited-review-to-factcheck workflow, and clean stderr with no ambient executable fallback. That is strong proof. It is still only pack-local proof.

Third layer: native host execution. This is the layer that says a particular product version, in a particular integration mode, loaded the pack and exercised the behavior being claimed. Claude marketplace installation is one example. The DSH receipt is another. A BUZZ live channel walkthrough is another, but only for the exact bounded slice it captured. Host receipts are where I learn what really happened in the shell a human will use.

The practical consequence is simple: I never let a lower layer impersonate a higher one. A pack-local MCP initialize transcript does not become proof that BUZZ delivered a mention to the right runtime. A generated plugin manifest does not become proof that Claude executed a research session. A DSH compatibility pointer does not become proof that every provider and every chat mode is supported. I stay literal.

host-verification.sh
REPO=/path/to/agentic-service-designer
claude plugin validate "$REPO/platform/packs/claude-code"

claude plugin validate is a good example of the distinction. It is meaningful. It proves the emitted Claude pack matches the host's structural expectations for a plugin. It is also not a session receipt. Validation tells me the door is shaped correctly. It does not tell me a user walked through it and completed a real loop.

My take: I trust receipts that name the host, the version, the path, and the exact behavior exercised. Everything else is build evidence. Useful, necessary, and insufficient on its own.

That discipline also keeps the language around BUZZ and DSH clean. BUZZ Article 37 shows an observed live slice: a private channel, genuine orchestrator reply and relay handoffs, and a Canvas index. It does not prove MCP persistence, durable Critic verdict rendering, reload or cleanup, or ACP spawn. DSH has a pinned receipt for its verified profile, slot set, test suite, and loopback Studio smoke. It does not claim every provider, chat surface, or external MCP-client combination under the sun. The boundaries are not weaknesses. They are the proof that the platform is being documented honestly.

Choosing a surface per engagement

So which surface should I choose? I start from the engagement constraint, not from the shininess of the host. If I need a native collaborative coding shell with the full pack intact, I choose Claude Code. If I need a machine-facing runtime for another client, I choose MCP. If I want the rawest possible proof path or CI integration, I choose the CLI. If a team already works inside a different host, I install the corresponding adapter and keep the evidence claims narrow.

Engagement need Best surface Why I choose it What I still verify separately
I want the fullest native ASD experience in one install. Claude Code plugin It loads roles, skills, /asd, and vendored MCP together through a real plugin boundary. Interactive host session behavior for the exact Claude environment I am using.
I need scripted runs, CI gates, or the cleanest possible runtime proof. CLI The shared engine is exposed directly with no host abstraction in the way. Project workspace isolation and the artifact loop for the scenario at hand.
I need host-agnostic tool access from another app or agent client. MCP It is the standalone JSON-RPC runtime with the same 30 tools, 228 resources, and 10 prompts. The client-specific config path and corpus-root availability.
The team already operates in OpenCode and wants project-local agents. OpenCode The adapter mirrors roles and skills into the host's discovery paths and keeps MCP local to the project. Native OpenCode loading and invocation in the current host version.
The team uses Codex and wants repo conventions plus tool access. Codex AGENTS.md plus MCP registration fits Codex's operating model cleanly. Desktop or CLI host loading for the exact Codex build in use.
The team uses Kimi and accepts workspace-trust mechanics. Kimi The .kimi-code/ mirror carries the same practice contract with a project-local server. Trust prompts, discovery, and host execution in the active Kimi version.
I need a multi-agent network surface with explicit identities and mentions. BUZZ The Persona Pack gives me ten canonical personas plus local MCP, ready for owner-bound runtime materialization. Identity audit, channel membership, exact mention routing, reply attribution, Canvas binding.
I need a Studio shell with sidebar, settings, and bounded capability projection. DSH The @asd/ui adapter plugs into a verified Harness profile and exposes the platform through Studio slots. Compatibility revision, profile lifecycle, and the specific live receipt scope.
I only need role posture or a neutral source tree, not bundled runtime. Grok, AGY, OMP, or Pi These targets separate prompt content or neutral file layouts from runtime claims on purpose. Any real MCP client, native discovery, or execution path I add around them.

If I boil that decision down to one sentence, it is this: choose the thinnest surface that still matches the work you need to do, then verify the exact layer you plan to rely on. For teaching, debugging, and CI, I often start with the CLI or standalone MCP because the receipts are easiest to read. For live design work inside a coding agent, Claude Code is the reference because the whole pack lands intact. For adjacent hosts, I treat the emitted adapter as source material plus bounded evidence, then I earn stronger claims only by running the host-specific acceptance path.

That habit keeps the platform honest. It also makes it much easier to extend. Once I understand that a pack is just a deterministic projection of one canonical practice, I stop arguing about which host is “the real one.” The real one is the practice contract. The host is the shell I can validate today.

Next Chapter

BUZZ: Multi-Agent Service Design on the Open Agent Network

Ten personas, exact mentions, one Canvas

Continue Reading
ASD '26

The Agentic Service Designer

How AI Agent Teams, Service Blueprints-as-Code, and Autonomous Tooling Are Transforming Service Design from Insight to Operations. By Sam Mozaffari.

Front Matter

Front Matter

Front Matter

Copyright & License

Chapter 01

The AI-First Service Design Operating System

Chapter 02

The ASD Platform Architecture

Chapter 03

Service-Dominant Logic & Value Co-Creation in the Age of AI

Chapter 04

The Role Contract, Evidence Registers & Deterministic Fact-Checking

Chapter 05

Research Ops at Scale: Mining Transcripts & Field Inquiries

Chapter 06

Mixed Methods & Evidence-Backed Segmentation

Chapter 07

Mental Models, Alignment & Opportunity Mapping

Chapter 08

Ecosystem Value Mapping & Stakeholder Topologies

Chapter 09

Living Journey Maps: From Transcripts to Sentiment Curves

Chapter 10

The Master Blueprint: Five-Lane Architecture & Line of Visibility

Chapter 11

Agentic Service Blueprinting: The Sixth Lane & Autonomous Workflows

Chapter 12

Cross-Channel Orchestration & Story Mapping

Chapter 13

Structured Ideation & How Might We at Machine Speed

Chapter 14

Prototyping Services: Desktop Walkthroughs to Wizard-of-Oz

Chapter 15

Transformative Services, Behavior Change & Recovery Engineering

Chapter 16

Service Quality Management & CX Maturity Governance

Chapter 17

The ASD MCP Server

Chapter 18

Plugins & Host Packs: Claude Code and Beyond

Chapter 19

BUZZ: Multi-Agent Service Design on the Open Agent Network

Chapter 20

DeepSeek Harness Studio: The Integrated Workbench

Chapter 21

SOPs-as-Code: The AI Execution Playbook

Chapter 22

Frontline Enablement & Employee Experience

Chapter 23

The 15 Principles of Good Public Services

Chapter 24

Mastercase: Meridian Bay Ferries

Chapter 25

The Future of Service Design: The Agentic Practice

Appendix A

The ASD Method & Artifact Catalog

Appendix B

CLI & MCP Tool Specification

Appendix C

The 20-Book Canonical Cross-Reference

©2026 Sam Mozaffari. Free for personal/noncommercial use (CC BY-NC-ND 4.0); commercial license required for business use.