dsh-agent-plugins-market 0.6.0 → 0.6.2
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/README.md +143 -169
- package/README.zh.md +136 -170
- package/client/client.js +8202 -684
- package/client/client.js.map +1 -1
- package/lib/application/catalog.js +236 -47
- package/lib/application/details.js +19 -10
- package/lib/application/panel-resources.js +95 -0
- package/lib/application/project-agent-roles.js +39 -0
- package/lib/catalog/codex-mcp.js +114 -0
- package/lib/catalog/component-files.js +151 -0
- package/lib/catalog/manifests.js +105 -44
- package/lib/catalog/native-project.js +44 -23
- package/lib/catalog/paths.js +6 -6
- package/lib/catalog/project-config.js +96 -0
- package/lib/catalog/project-hooks.js +108 -0
- package/lib/catalog/scan-pipeline.js +6 -1
- package/lib/catalog/scan-resolvers.js +70 -26
- package/lib/catalog/source-catalog.js +16 -3
- package/lib/catalog/suite-components.js +125 -0
- package/lib/catalog/surfaces.js +60 -46
- package/lib/catalog/validate.js +16 -11
- package/lib/contracts/market.js +16 -1
- package/lib/index.js +187 -35
- package/lib/model/layouts.js +49 -0
- package/lib/routes.js +106 -6
- package/lib/runtime/agent-role-router.js +226 -0
- package/lib/runtime/commands-mounts.js +27 -67
- package/lib/runtime/feedback-tool.js +181 -0
- package/lib/runtime/hooks-mounts.js +66 -13
- package/lib/runtime/host-locale.js +23 -7
- package/lib/runtime/legacy-root-migration.js +12 -0
- package/lib/runtime/lsp-direct-config.js +6 -3
- package/lib/runtime/lsp-mounts.js +38 -24
- package/lib/runtime/lsp-server-state.js +19 -0
- package/lib/runtime/lsp-status.js +3 -2
- package/lib/runtime/mcp-backend.js +6 -2
- package/lib/runtime/mcp-client/config.js +6 -0
- package/lib/runtime/mcp-client/connection.js +8 -2
- package/lib/runtime/mcp-client/tools.js +6 -3
- package/lib/runtime/mcp-config.js +26 -13
- package/lib/runtime/mcp-direct-config.js +56 -0
- package/lib/runtime/mcp-mounts.js +25 -9
- package/lib/runtime/mcp-overrides.js +11 -5
- package/lib/runtime/mcp-status.js +10 -7
- package/lib/runtime/model-catalog.js +48 -0
- package/lib/runtime/project-runtime.js +136 -0
- package/lib/runtime/reconciler.js +38 -28
- package/lib/runtime/server-config.js +75 -0
- package/lib/runtime/skills-provider.js +31 -77
- package/lib/runtime/storage-migration.js +169 -0
- package/lib/runtime/subagent-catalog.js +129 -0
- package/lib/runtime/user-commands.js +86 -0
- package/lib/runtime/user-panels.js +176 -0
- package/lib/runtime/user-store.js +142 -0
- package/lib/types/application/catalog.d.ts +39 -9
- package/lib/types/application/panel-resources.d.ts +13 -0
- package/lib/types/application/project-agent-roles.d.ts +3 -0
- package/lib/types/application/queries.d.ts +17 -1
- package/lib/types/catalog/codex-mcp.d.ts +4 -0
- package/lib/types/catalog/component-files.d.ts +17 -0
- package/lib/types/catalog/manifests.d.ts +14 -9
- package/lib/types/catalog/native-project.d.ts +2 -5
- package/lib/types/catalog/paths.d.ts +4 -4
- package/lib/types/catalog/project-config.d.ts +6 -0
- package/lib/types/catalog/project-hooks.d.ts +10 -0
- package/lib/types/catalog/scan-pipeline.d.ts +2 -0
- package/lib/types/catalog/scan-resolvers.d.ts +4 -3
- package/lib/types/catalog/source-catalog.d.ts +1 -1
- package/lib/types/catalog/suite-components.d.ts +5 -0
- package/lib/types/catalog/surfaces.d.ts +2 -2
- package/lib/types/catalog/validate.d.ts +2 -0
- package/lib/types/contracts/market.d.ts +60 -0
- package/lib/types/contracts/mcp-status.d.ts +5 -1
- package/lib/types/index.d.ts +2 -2
- package/lib/types/model/layouts.d.ts +102 -0
- package/lib/types/model/types.d.ts +51 -6
- package/lib/types/routes.d.ts +6 -1
- package/lib/types/runtime/agent-role-router.d.ts +95 -0
- package/lib/types/runtime/commands-mounts.d.ts +16 -7
- package/lib/types/runtime/feedback-tool.d.ts +49 -0
- package/lib/types/runtime/hooks-mounts.d.ts +4 -0
- package/lib/types/runtime/host-locale.d.ts +1 -1
- package/lib/types/runtime/legacy-root-migration.d.ts +2 -0
- package/lib/types/runtime/lsp-mounts.d.ts +4 -0
- package/lib/types/runtime/lsp-server-state.d.ts +3 -0
- package/lib/types/runtime/lsp-status.d.ts +1 -0
- package/lib/types/runtime/mcp-backend.d.ts +9 -1
- package/lib/types/runtime/mcp-client/config.d.ts +4 -3
- package/lib/types/runtime/mcp-client/tools.d.ts +3 -0
- package/lib/types/runtime/mcp-config.d.ts +11 -5
- package/lib/types/runtime/mcp-direct-config.d.ts +7 -0
- package/lib/types/runtime/mcp-mounts.d.ts +2 -1
- package/lib/types/runtime/mcp-overrides.d.ts +2 -0
- package/lib/types/runtime/mcp-status.d.ts +1 -1
- package/lib/types/runtime/model-catalog.d.ts +7 -0
- package/lib/types/runtime/project-runtime.d.ts +32 -0
- package/lib/types/runtime/reconciler.d.ts +2 -0
- package/lib/types/runtime/server-config.d.ts +10 -0
- package/lib/types/runtime/skills-provider.d.ts +1 -5
- package/lib/types/runtime/storage-migration.d.ts +15 -0
- package/lib/types/runtime/subagent-catalog.d.ts +52 -0
- package/lib/types/runtime/user-commands.d.ts +24 -0
- package/lib/types/runtime/user-panels.d.ts +91 -0
- package/lib/types/runtime/user-store.d.ts +51 -0
- package/package.json +10 -3
- package/schemas/README.md +69 -7
- package/schemas/agent-plugins/spec.md +48 -0
- package/schemas/claude-code/marketplace.schema.json +143 -0
- package/schemas/claude-code/plugin.schema.json +105 -0
- package/schemas/claude-code/spec.md +108 -0
- package/schemas/codex/marketplace.schema.json +78 -0
- package/schemas/codex/plugin.schema.json +77 -0
- package/schemas/codex/spec.md +91 -0
- package/schemas/cursor/marketplace.schema.json +82 -0
- package/schemas/cursor/plugin.schema.json +58 -0
- package/schemas/cursor/spec.md +92 -0
- package/schemas/github-copilot/marketplace.schema.json +107 -0
- package/schemas/github-copilot/plugin.schema.json +89 -0
- package/schemas/github-copilot/spec.md +105 -0
- package/schemas/kimi/marketplace.schema.json +38 -0
- package/schemas/kimi/plugin.schema.json +84 -0
- package/schemas/kimi/spec.md +94 -0
- package/schemas/qoder/marketplace.schema.json +115 -0
- package/schemas/qoder/plugin.schema.json +127 -0
- package/schemas/qoder/spec.md +111 -0
- package/schemas/skill-collection/spec.md +29 -0
- package/schemas/universal/marketplace.schema.json +98 -0
- package/schemas/universal/plugin.schema.json +49 -0
- package/schemas/universal/spec.md +53 -0
- package/schemas/zcode/marketplace.schema.json +161 -0
- package/schemas/zcode/plugin.schema.json +89 -0
- package/schemas/zcode/spec.md +102 -0
- package/lib/catalog/legacy-root-migration.js +0 -51
- package/lib/types/catalog/legacy-root-migration.d.ts +0 -14
package/README.md
CHANGED
|
@@ -1,237 +1,211 @@
|
|
|
1
|
-
|
|
1
|
+
<img src="docs-site/public/favicon.svg" alt="" width="48" height="48" />
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
# dsh-agent-plugins-market
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
**A plugin marketplace and agent capability workspace for [DeepSeek Harness (DSH)](https://github.com/deepseek-ai/deepseek-harness).**
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Reuse supported content from Claude Code, Codex, Cursor, Kimi and other recognized layouts. Manage your own skills, commands, agent personas, MCP services and LSP servers in the DSH Web GUI. Supported layouts are read in place, without converting manifests or manually copying files into DSH. See the capability matrix for format-specific limits.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
English | [简体中文](README.zh.md) | [Documentation](https://sivan757.github.io/dsh-agent-plugins-market/) | [npm](https://www.npmjs.com/package/dsh-agent-plugins-market)
|
|
10
10
|
|
|
11
|
-
](https://www.npmjs.com/package/dsh-agent-plugins-market) [](LICENSE)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
[Quick start](#quick-start) · [Everyday use](#everyday-use) · [Compatibility](#compatibility-and-boundaries) · [FAQ](#faq)
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+

|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
## What you can do
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
- **Reuse ecosystem suites.** Add a Git repository, local directory or archive as a source; browse, preview, install and enable its suites. Supported capabilities become available to DSH at runtime.
|
|
20
|
+
- **Build your own toolkit.** Create skills, reusable slash commands and agent personas. Edit or disable your own entries without deleting them.
|
|
21
|
+
- **Keep project resources in place.** Project `.claude/` and `.agents/` skills and agents are discovered without an installation step or file copying.
|
|
22
|
+
- **Manage services where you use them.** Add your own MCP services and LSP servers, configure credentials and authorization for installed ones, inspect status, and diagnose unavailable services from one workspace.
|
|
20
23
|
|
|
21
24
|
## Quick start
|
|
22
25
|
|
|
23
|
-
|
|
26
|
+
You need Node.js 22+, Git for Git sources, and a DSH Web profile with the skill service enabled. This repository declares DSH peer packages in the `^0.1.2-rc.1` range; individual capabilities also depend on the services in your profile. See [host requirements](docs/guides/usage.md#host-requirements).
|
|
27
|
+
|
|
28
|
+
Install into your profile, replacing `<name>` with its name:
|
|
24
29
|
|
|
25
30
|
```sh
|
|
26
|
-
# install into a dsh profile (npm registry, recommended)
|
|
27
31
|
dsh plugin --profile <name> add dsh-agent-plugins-market
|
|
28
|
-
|
|
29
|
-
# or via pnpm inside the profile
|
|
30
|
-
pnpm add dsh-agent-plugins-market
|
|
31
32
|
```
|
|
32
33
|
|
|
33
|
-
Restart
|
|
34
|
+
1. Restart DSH and open **Settings → Agent Plugins Market**. Older shells may show a top-level page entry instead.
|
|
35
|
+
2. In **Market**, add a source, for example `https://github.com/anthropics/claude-plugins-official`. No sources are preconfigured.
|
|
36
|
+
3. Open a suite, review its contents, then install it and ensure it is enabled.
|
|
37
|
+
4. For a suite with skills, check the **Skills** tab and type `/` in chat to find its user-invocable skills. For an MCP suite, check **MCP services** and resolve any credential or connection notices before using its tools.
|
|
34
38
|
|
|
35
|
-
|
|
36
|
-
<summary><strong>More install options</strong></summary>
|
|
39
|
+
For GitHub installation and profile configuration, see the [usage guide](docs/guides/usage.md#installation-options).
|
|
37
40
|
|
|
38
|
-
|
|
41
|
+
## Everyday use
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
pnpm add github:Sivan757/dsh-agent-plugins-market
|
|
42
|
-
# or
|
|
43
|
-
dsh plugin --profile <name> add github:Sivan757/dsh-agent-plugins-market
|
|
44
|
-
```
|
|
43
|
+
MCP details separate Retry connection (keeps credentials) from confirmed OAuth reauthorization. There is no enable switch in the detail dialog.
|
|
45
44
|
|
|
46
|
-
|
|
45
|
+
The workspace has six tabs:
|
|
47
46
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
47
|
+
| Tab | Use it to |
|
|
48
|
+
| -------------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
49
|
+
| Market | Add sources, preview suites, install / uninstall, enable / disable and refresh. |
|
|
50
|
+
| Skills | Browse skills and create or edit your own reusable instructions. |
|
|
51
|
+
| Commands | Manage prompt templates invoked as `/name`; `$ARGUMENTS` inserts the text supplied after the command. |
|
|
52
|
+
| Agent personas | Select providers, models and reasoning effort from DSH, manage role instructions and tools, and delegate through `subagents_run`. |
|
|
53
|
+
| MCP services | Add a service or configure an installed one, its credentials and authorization; inspect status and retry failures. |
|
|
54
|
+
| LSP servers | Add and configure language servers and inspect their runtime status. |
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
</details>
|
|
59
|
-
|
|
60
|
-
## Features
|
|
61
|
-
|
|
62
|
-
- **Plugin / suite management** — configure git repository sources (markets), browse every discoverable plugin, install / uninstall / enable / disable / refresh per source or per plugin. Source ids are derived automatically from the repository manifest JSON — no manual input.
|
|
63
|
-
- **Market page in the Web GUI** — source pills + search/actions, status tabs, a two-column card grid, and a plugin detail modal with previews for skills / MCP / hooks / commands / LSP. New shells render it as a localized Settings page; legacy shells without `settings.section` receive a guarded top-level page-mode fallback instead of a duplicate surface.
|
|
64
|
-
- **Runtime injection**
|
|
65
|
-
- **Skills** — a `ctx.skills` SkillProvider (project rank 250 / user rank 450); `${CLAUDE_PLUGIN_ROOT}` is substituted so Claude Code-authored skills work verbatim, and appear in the `/` slash menu.
|
|
66
|
-
- **MCP servers** — every valid `mcp.json` server of an enabled plugin mounts a live `dsh-mcp-client` child; tools appear as `mcp__<plugin>__<server>__<tool>`.
|
|
67
|
-
- **MCP credentials** — `${ENV_NAME}` references resolve through the optional DSH credentials service before a child starts; missing references block the spawn and surface as `needs-credentials`. The Web detail view uses write-only credentials operations and never persists token values in suite state or overrides.
|
|
68
|
-
- **Hooks** — a plugin's `hooks/hooks.json` mounts the `dsh-hooks-claude-code` bridge on the harness interception points (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop, SubagentStart, SubagentStop).
|
|
69
|
-
- **Commands / subagents** — `commands/*.md` register as dsh slash commands; `agents/*.md` register as `agent-<name>` skills.
|
|
70
|
-
- **Model context** — skills flow through the host-native skill catalog and MCP tools register directly through `dsh-mcp-client`; suite inventory and source metadata remain available in the Web market page without adding a redundant model-facing inventory tool.
|
|
71
|
-
- **Runtime discovery** — installed plugins are discovered from configured source ids under `~/.dsh/agent-plugins/.sources/<sourceId>/` (user dimension) and `<project>/.dsh/agent-plugins/.sources/<sourceId>/` (project dimension). Stale unmanaged user checkouts are ignored, while project checkouts remain state-authorized. Local sources read the working tree directly, including uncommitted changes.
|
|
72
|
-
- **Native project layouts (zero-copy migration)** — a repository's own `.claude/` and `.agents/` directories (skills, agents) are discovered in place as read-only `project-native` suites: no install, no copying, no state file. Repositories migrating from Claude Code or agent-plugins.org conventions work as-is; a project skill shadows an installed suite skill of the same name (project wins).
|
|
73
|
-
|
|
74
|
-
## Supported plugin layouts
|
|
75
|
-
|
|
76
|
-
| Layout | Manifest | Notes |
|
|
77
|
-
| -------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------- |
|
|
78
|
-
| agent-plugins.org v1 | `plugin.json` | vendored 1.0.0 JSON Schema validation + spec §4 path rules |
|
|
79
|
-
| Claude Code market | `.claude-plugin/marketplace.json` + `.claude-plugin/plugin.json` | marketplace `plugins[].source` relative paths |
|
|
80
|
-
| Universal | `.plugin/plugin.json` | multi-client repos (e.g. vercel-plugin) |
|
|
81
|
-
| Cursor | `.cursor-plugin/plugin.json` | declared skills paths |
|
|
82
|
-
| Kimi | `.kimi-plugin/plugin.json` | inline mcpServers |
|
|
83
|
-
| Codex | `.codex-plugin/plugin.json` | — |
|
|
84
|
-
| Skill collection (manifest-less) | none (synthetic) | flat `SKILL.md` directory collections |
|
|
85
|
-
|
|
86
|
-
One repo may carry several dialects at once (vercel/vercel-plugin ships all of them); the suite identity comes from the highest-precedence manifest while surfaces are scanned from the directories. `mcp.json` is validated strictly against the agent-plugins.org schema; `.mcp.json` is parsed leniently — top-level server-map shorthand, `type: http` / `local` / omitted `type` (stdio by `command`) normalization, `${CLAUDE_PLUGIN_ROOT}` / `${CLAUDE_PLUGIN_DATA}` / `${NAME:-default}` placeholders, and unknown transports are tolerated per server. The marketplace manifest is authoritative for the suite set; manifest-less marketplace entries that carry skills and manifest-bearing container dirs not listed there are supplemented. Remote URL entries show as "remote reference" cards (metadata + source URL, not directly installable; add the repo as a source to install).
|
|
87
|
-
|
|
88
|
-
## Configure marketplace sources
|
|
89
|
-
|
|
90
|
-
Sources persist in `~/.dsh/agent-plugins/state.json`; cordis config seeds them (and re-adds missing ids on every boot):
|
|
91
|
-
|
|
92
|
-
```yaml
|
|
93
|
-
- id: dsh-agent-plugins-market
|
|
94
|
-
config:
|
|
95
|
-
sources:
|
|
96
|
-
- { id: agent-plugins, url: 'https://github.com/Sivan757/agent-plugins.git' }
|
|
97
|
-
- { id: mattpocock-skills, url: 'https://github.com/mattpocock/skills.git' }
|
|
98
|
-
- { id: claude-plugins-official, url: 'https://github.com/anthropics/claude-plugins-official' }
|
|
99
|
-
- { id: ui-ux-pro-max, url: 'https://github.com/nextlevelbuilder/ui-ux-pro-max-skill.git' }
|
|
100
|
-
- { id: my-local-plugin, url: '/Users/me/work/my-plugin', local: true }
|
|
101
|
-
- { id: packaged-plugin, url: 'https://example.com/plugin-0.1.zip', kind: archive, sha256: '<64-hex digest>' }
|
|
102
|
-
```
|
|
56
|
+
A **source** is where content comes from; a **suite** is an installable unit discovered there. Adding a source discovers its suites. Installing and enabling a suite controls its runtime capabilities. Suite details preview files; MCP credentials and overrides are edited in **MCP services**.
|
|
103
57
|
|
|
104
|
-
|
|
58
|
+
Your own skills, commands and personas are stored as Markdown under `~/.dsh/agent-plugins/user/`. Project-native resources stay in the project. See [storage and discovery](docs/guides/usage.md#storage-and-discovery) for paths and precedence.
|
|
105
59
|
|
|
106
|
-
|
|
60
|
+
All six tabs share a saved grid/list preference. Add and refresh actions sit at the top right; resource state rails are green when active.
|
|
107
61
|
|
|
108
|
-
|
|
62
|
+
Resource details share a wide dialog. Markdown resources open with rendered content and structured frontmatter; switch to Markdown to edit. MCP/LSP provide fixed forms and JSON editing over the same configuration.
|
|
109
63
|
|
|
110
|
-
|
|
64
|
+
Services you add yourself are validated before saving, persist under `~/.dsh/agent-plugins/data/`, and mount through the same lifecycle as suite services. Services observed from the host configuration stay read-only.
|
|
111
65
|
|
|
112
|
-
|
|
113
|
-
- id: dsh-agent-plugins-market
|
|
114
|
-
config:
|
|
115
|
-
git:
|
|
116
|
-
proxy: 'http://127.0.0.1:7890' # injected as git http/https proxy
|
|
117
|
-
insteadOf: { 'https://github.com/': 'https://mirror.example/https://github.com/' }
|
|
118
|
-
timeoutMs: 300000 # per git invocation (default 120000)
|
|
119
|
-
cloneRetry: true # one automatic retry (default)
|
|
120
|
-
fallbackTarball: false # retry a failed github.com clone as a codeload tarball download
|
|
121
|
-
allowHttpArchives: false # permit plain-http archive URLs (intranet mirrors)
|
|
122
|
-
```
|
|
66
|
+
Asynchronous workspace actions show a blocking overlay on the active settings panel or detail dialog, with rotating waiting messages. The overlay is released on success or failure; background status polling stays silent.
|
|
123
67
|
|
|
124
|
-
##
|
|
68
|
+
## Compatibility and boundaries
|
|
125
69
|
|
|
126
|
-
|
|
127
|
-
| --- | --- | --- | --- | --- |
|
|
128
|
-
| Source | **any git marketplace repo** (`.claude-plugin`, `.codex-plugin`, `.cursor-plugin`, `.kimi-plugin`, agent-plugins.org v1, manifest-less skills) | `~/.claude/skills` dirs, project dirs, `.skill` packages | Claude Code sessions + skills | a Claude Code `hooks.json` config |
|
|
129
|
-
| Skills injection | ✅ + `/` slash menu | ✅ global skill library | ✅ | ❌ |
|
|
130
|
-
| MCP servers | ✅ live `dsh-mcp-client` mounts | ❌ | — | ❌ |
|
|
131
|
-
| Hooks | ✅ via `dsh-hooks-claude-code` bridge | ❌ | — | ✅ (direct) |
|
|
132
|
-
| Slash commands / subagents | ✅ `commands/*.md`, `agents/*.md` | ❌ | — | ❌ |
|
|
133
|
-
| Market UI | ✅ full market page in the Web GUI | ✅ settings page | — | ❌ |
|
|
134
|
-
| Direction | CC / Codex / Cursor ecosystem → DSH | CC skills → DSH | CC ↔ DSH session sync | config → DSH |
|
|
70
|
+
Supported **layout dialects** describe how files are organized. The [shared priority table](#layout-detection-precedence) lists suite manifests and Marketplace catalogs together.
|
|
135
71
|
|
|
136
|
-
|
|
72
|
+
All ten active layout contracts in [`schemas/`](schemas/README.md) have independent reader tests. [The layout audit](docs/layout-coverage.md) maps them to commit-pinned README repository fixtures and distinguishes layout/component compatibility from full original-client runtime equivalence.
|
|
137
73
|
|
|
138
|
-
|
|
74
|
+
Supported **runtime surfaces** describe what DSH can use:
|
|
139
75
|
|
|
140
|
-
|
|
76
|
+
| Surface | Runtime support and conditions |
|
|
77
|
+
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
|
|
78
|
+
| Skills | Host skill catalog and user-invocable slash entries; supported root placeholders are expanded. |
|
|
79
|
+
| Commands | Slash commands through the host command service. |
|
|
80
|
+
| Agents | Dynamic subagent catalog and `subagents_run`; requires host agents, tools, LLM and subagent services. |
|
|
81
|
+
| MCP | Built-in bridge by default: stdio, Streamable HTTP with OAuth, and legacy SSE. Optional host-client compatibility mode is also available. |
|
|
82
|
+
| Hooks | The command-hook subset mapped by `dsh-hooks-claude-code`. |
|
|
83
|
+
| LSP | Live mounts when the host provides LSP packages; the profile must expose the LSP tool for agent use. |
|
|
141
84
|
|
|
142
|
-
|
|
85
|
+
Agent roles are published directly in a dynamic `subagent-catalog`, using the same per-step comparison, durable entries and complete replacement mechanism as DSH's skills catalog. Call `subagents_run(role, prompt)` with the catalog's exact ID; it resolves the role's provider, model and `reasoning_effort`, then applies the persona and tool restrictions. Roles no longer generate `agent-*` or `persona-*` skill/command entries. See [agent roles](docs/guides/agent-roles.md) for model inheritance, catalog refresh and migration from `market_agent`.
|
|
143
86
|
|
|
144
|
-
|
|
145
|
-
dsh plugin --profile <name> add dsh-agent-plugins-market
|
|
146
|
-
```
|
|
87
|
+
### Layout detection precedence
|
|
147
88
|
|
|
148
|
-
|
|
89
|
+
When multiple manifests exist in the **same suite directory**, the first existing file in this order selects the layout:
|
|
149
90
|
|
|
150
|
-
|
|
91
|
+
| Priority | Layout | Suite manifest | Marketplace catalog |
|
|
92
|
+
| --- | --- | --- | --- |
|
|
93
|
+
| 1 | agent-plugins.org v1 / root compatibility | `plugin.json` | No dedicated catalog |
|
|
94
|
+
| 2 | Universal compatibility | `.plugin/plugin.json` | `.plugin/marketplace.json` |
|
|
95
|
+
| 3 | Claude Code | `.claude-plugin/plugin.json` | `.claude-plugin/marketplace.json` |
|
|
96
|
+
| 4 | Cursor | `.cursor-plugin/plugin.json` | `.cursor-plugin/marketplace.json` |
|
|
97
|
+
| 5 | Kimi Code | `kimi.plugin.json`, then `.kimi-plugin/plugin.json` | `.kimi-plugin/marketplace.json` |
|
|
98
|
+
| 6 | Codex | `.codex-plugin/plugin.json` | `.agents/plugins/marketplace.json`, then `.agents/plugins/api_marketplace.json` |
|
|
99
|
+
| 7 | ZCode | `.zcode-plugin/plugin.json` | No dedicated catalog |
|
|
100
|
+
| 8 | Qoder CLI | `.qoder-plugin/plugin.json` | `.qoder-plugin/marketplace.json` |
|
|
101
|
+
| 9 | GitHub Copilot CLI | `.github/plugin/plugin.json` | `.github/plugin/marketplace.json` |
|
|
102
|
+
| Fallback | Skill collection / shared catalog | Discover skills when no recognized manifest exists | Root `marketplace.json` |
|
|
151
103
|
|
|
152
|
-
|
|
104
|
+
- **Selection precedes parsing:** an invalid higher-priority manifest produces diagnostics; it does not trigger a retry with a lower-priority manifest.
|
|
105
|
+
- **Root manifest identity:** root `plugin.json` uses strict v1 validation only when it declares a recognized agent-plugins.org `$schema`. Otherwise it is read as a Claude-compatible manifest.
|
|
106
|
+
- **Component fallback:** manifests are not generally merged. For a non-v1 root `plugin.json`, missing component declarations can come from `.claude-plugin/plugin.json`. Explicit root declarations win; marketplace entry declarations fill remaining gaps.
|
|
153
107
|
|
|
154
|
-
|
|
108
|
+
**Both columns follow the same layout priority.** Catalog lookup skips layouts without a dedicated catalog; aliases are tried in the listed order. Root `marketplace.json` is a shared fallback, not a skill-collection manifest or an agent-plugins.org v1 catalog, and does not inherit the priority of root `plugin.json`.
|
|
155
109
|
|
|
156
|
-
|
|
110
|
+
All existing catalogs are read, but suite scanning selects the first catalog that produces suites, rather than merging every catalog. Invalid or empty catalogs allow the next candidate to be tried. This priority does not make native project directories mutually exclusive.
|
|
157
111
|
|
|
158
|
-
|
|
112
|
+
The order is defined in [`src/model/layouts.ts`](src/model/layouts.ts); selection and root-manifest fallback are implemented in [`src/catalog/manifests.ts`](src/catalog/manifests.ts).
|
|
159
113
|
|
|
160
|
-
|
|
114
|
+
### Layout capability matrix
|
|
161
115
|
|
|
162
|
-
|
|
116
|
+
Checked against official documentation, this plugin's source, and one real repository per schema on 2026-09-08. This table describes **integration by this plugin**. “Shared” means the plugin's common scanning conventions, not an upstream-defined capability. “Partial” requires the limitations below. The [compatibility report](docs/compat-report.md) records the sampled repositories, their commits, the schema verdicts and the scanner output.
|
|
163
117
|
|
|
164
|
-
|
|
118
|
+
| Layout | Skills | Agents | Commands | MCP | Hooks | LSP |
|
|
119
|
+
| --- | --- | --- | --- | --- | --- | --- |
|
|
120
|
+
| [Claude Code](https://code.claude.com/docs/en/plugins-reference) | Declared + default skills | Declared Markdown | Declared Markdown | Files / inline | Command-hook subset | Files / inline |
|
|
121
|
+
| [Codex](https://developers.openai.com/plugins/build/plugins) | Supported | Shared | Shared | Partial: `.mcp.json` | Compatible event subset | Shared inline |
|
|
122
|
+
| [Cursor](https://cursor.com/docs/reference/plugins) | Supported | Partial: `.md` only | Partial: `.md` only | Partial: see below | Native events unsupported | Shared inline |
|
|
123
|
+
| Kimi Code | Declared skills + startup | Declared Markdown | Declared commands | Inline | Inline command events | Shared extension, non-native |
|
|
124
|
+
| [ZCode](https://zcode.z.ai/en/docs/plugin) `.zcode-plugin/` | Shared | Shared | Shared | `.mcp.json` + inline overrides | Shared | Shared inline, non-native |
|
|
125
|
+
| [Qoder CLI](https://docs.qoder.com/cli/plugins-reference) `.qoder-plugin/` | Shared | Shared | Shared | Partial: prefers `.mcp.json` | Shared | Shared inline, non-native |
|
|
126
|
+
| [GitHub Copilot CLI](https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-plugin-reference) | Declared skills | `.md` / `.agent.md` | Declared Markdown | Files / inline | Mapped command events | Files / inline |
|
|
127
|
+
| Universal compatibility layout `.plugin/` | Shared | Shared | Shared | Shared | Claude-format subset | Shared inline |
|
|
128
|
+
| [agent-plugins.org v1](https://agent-plugins.org/specification) | Supported | Shared, nonstandard | Shared, nonstandard | Standard `mcp.json` | Shared, nonstandard | Directory preview only, nonstandard |
|
|
129
|
+
| Manifest-less skill collection | Supported | Shared | Shared | Shared files | Claude-format subset | Directory preview only |
|
|
130
|
+
| Project-native directories (see below) | Supported | Portable Markdown roles | Scoped commands | JSON / Codex TOML | Mapped command-hook subset | Diagnosed, not mounted |
|
|
165
131
|
|
|
166
|
-
|
|
132
|
+
- **Component paths:** declared files, directory trees and arrays resolve inside the suite by realpath. Commands, agents and detail panels use the same resources. Cursor also accepts `.mdc`, `.markdown` and `.txt` commands; Qoder maps support files and inline content. Claude/Codex skills supplement default discovery. Flat skill Markdown files work in manifest-less collections.
|
|
133
|
+
- **Agent identities:** `reviewer.agent.md` and `reviewer.md` retain distinct role IDs in the subagent catalog. Roles have no generated `agent-*` skill or command aliases. Ordinary skills with those names remain skills.
|
|
134
|
+
- **MCP:** declared files, inline maps and arrays are resolved by dialect. Cursor's schema-less `mcp.json` is supported; agent-plugins v1 stays schema-strict. Claude/ZCode declarations add to defaults, Cursor declarations replace defaults, Copilot/Universal include `.github/mcp.json`, and Kimi Code uses inline declarations. Invalid explicit configs cannot revive defaults. Codex app connectors remain outside this adapter.
|
|
135
|
+
- **Hooks:** declared files/directories and inline configs are supported, including Kimi arrays and ZCode process hooks with quoted argv. Supported Copilot/Cursor lifecycle names map to the existing command-hook bridge. Events without a DSH equivalent, such as `afterFileEdit`, are diagnosed rather than simulated.
|
|
136
|
+
- **LSP:** user suites accept declared files, arrays and inline tables, plus `.lsp.json` and Copilot/Universal `lsp.json`, `.github/lsp.json`, `lsp-config/servers.json`. Reverse-domain directory definitions remain previews. Project LSP retains its host-scope limitation.
|
|
137
|
+
- **Specification boundaries:** agent-plugins.org v1 standardizes portable skills and MCP only; shared agents / commands / hooks scanning is not a standard capability. Universal is a compatibility-layout label used by this plugin; the [OpenHands SDK](https://docs.openhands.dev/sdk/guides/plugins) documents the same `.plugin/plugin.json` location and a [Vercel repository](https://github.com/vercel/vercel-plugin/blob/main/.plugin/plugin.json) uses it, but no cross-vendor specification exists.
|
|
138
|
+
- **Kimi Code:** the active schema covers both manifest spellings, startup skills, appended skill instructions, system prompts, inline hooks and catalog aliases. The historical `kimi-cli` root tools protocol is a different system; it must not be confused with the current Kimi Code schema.
|
|
139
|
+
- **ZCode boundary:** `.zcode-plugin/plugin.json` and root `marketplace.json` are recognized, including keyed plugin maps. Inline MCP servers override matching `.mcp.json` keys. The zip + `sha256` marketplace distribution contract is not implemented.
|
|
140
|
+
- **Qoder boundary:** `.qoder-plugin/plugin.json` and `.qoder-plugin/marketplace.json` are recognized. MCP prefers `.mcp.json`, with schema-less `mcp.json` as fallback.
|
|
141
|
+
- **GitHub Copilot CLI:** `.plugin/plugin.json` retains the Universal identity. Both spellings consume declared component paths and fallback MCP/LSP files. Isolated tests suppress competing manifests at nested suite roots, preventing a Claude fallback from masquerading as a passing Copilot test.
|
|
142
|
+
- **Project directories:** [Claude project skills](https://code.claude.com/docs/en/skills) and [Codex `.agents/skills`](https://developers.openai.com/codex/skills) are documented upstream; `.agents/agents` and `.agents/commands` are this plugin's shared discovery conventions.
|
|
167
143
|
|
|
168
|
-
|
|
144
|
+
### Project layout switch
|
|
169
145
|
|
|
170
|
-
|
|
146
|
+
The plugin settings card exposes **Scan project Agent layouts** (`dsh-agent-plugins-market.scanProjectLayouts`, default `true`). Turning it off removes this plugin's native project candidates immediately; configured sources and the harness's own skill providers remain independent. Files are read in place and are never installed, rewritten or deleted.
|
|
171
147
|
|
|
172
|
-
|
|
148
|
+
The registry reads skills under `.claude`, `.agents`, `.codex`, `.cursor`, `.kimi`, `.zcode`, `.qoder` and `.github`. Portable Markdown agents are enabled for all except `.codex` and `.kimi`; their TOML/YAML formats need separate adapters. Role execution resolves the calling session's project. Project commands, supported MCP servers and mapped command hooks register in each agent's scoped context and refresh on session startup or catalog changes; disabling the switch removes them.
|
|
173
149
|
|
|
174
|
-
|
|
150
|
+
MCP reads root `.mcp.json`, `.cursor/mcp.json`, and the `mcpServers` tables in `.qoder/settings.json` and `.qoder/settings.local.json` (local keys override project keys). ZCode reads `mcp.servers` from `zcode.json` and `.zcode/config.json`, with `.agents/mcp.json` as an empty-native-table fallback. Codex reads `[mcp_servers.*]` from `.codex/config.toml` through `smol-toml`, preserving stdio/HTTP configuration, environment/header references, enabled flags, tool filters and timeouts. Unsupported server options produce diagnostics; host-client mode rejects policies it cannot enforce. Relative executables resolve from the project root. Claude/Qoder settings hooks and enabled ZCode configuration hooks use the bridge's supported command-event subset. Validated hooks become private temporary runtime files removed on teardown; project files remain unchanged. Project LSP is diagnosed and not mounted: host changes are outside this plugin's scope. See the [architecture decision and supported boundaries](docs/adr/2026-09-09-layout-registry.md).
|
|
175
151
|
|
|
176
|
-
|
|
152
|
+
### Verified samples
|
|
177
153
|
|
|
178
|
-
|
|
154
|
+
The nine README repository samples have offline snapshots in [`tests/fixtures/real-layouts/`](tests/fixtures/real-layouts/), with commit IDs, hashes and licenses. Tests validate real schemas, scan original trees and isolate each dialect independently. The [compatibility report](docs/compat-report.md) records natural precedence; [the audit](docs/layout-coverage.md) records independent resource checks.
|
|
179
155
|
|
|
180
|
-
|
|
156
|
+
| Layout | Sample repository | Dialect manifest | Schema | Scanner |
|
|
157
|
+
| --- | --- | --- | --- | --- |
|
|
158
|
+
| Claude Code | [grafana/mcp-grafana](https://github.com/grafana/mcp-grafana) | `.claude-plugin/plugin.json` | valid | integrated |
|
|
159
|
+
| Codex | [saadeghi/daisyui](https://github.com/saadeghi/daisyui) | `.codex-plugin/plugin.json` | valid | shadowed |
|
|
160
|
+
| Cursor | [EveryInc/compound-engineering-plugin](https://github.com/EveryInc/compound-engineering-plugin) | `.cursor-plugin/plugin.json` + marketplace | valid | shadowed |
|
|
161
|
+
| Kimi | [obra/superpowers](https://github.com/obra/superpowers) | `.kimi-plugin/plugin.json` | valid | shadowed |
|
|
162
|
+
| Universal | [muratcankoylan/Agent-Skills-for-Context-Engineering](https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering) | `.plugin/plugin.json` | valid | integrated |
|
|
163
|
+
| agent-plugins.org v1 | [saadeghi/daisyui](https://github.com/saadeghi/daisyui) | `plugin.json` | valid | integrated |
|
|
164
|
+
| ZCode | [zenstory-ai/oh-story-claudecode](https://github.com/zenstory-ai/oh-story-claudecode) | `.zcode-plugin/plugin.json` + `marketplace.json` | valid | shadowed |
|
|
165
|
+
| Qoder CLI | [DietrichGebert/ponytail](https://github.com/DietrichGebert/ponytail) | `.qoder-plugin/plugin.json` | valid | shadowed |
|
|
166
|
+
| GitHub Copilot CLI | [headroomlabs-ai/headroom](https://github.com/headroomlabs-ai/headroom) | `.github/plugin/marketplace.json` | valid | shadowed |
|
|
181
167
|
|
|
182
|
-
|
|
168
|
+
**Scanner** describes the unmodified repository: **integrated** means its own manifest won; **shadowed** means another won; **unread** means no suite. These verdicts are separate from passing isolated tests. Skill collection is tested with the real Universal repository's skills and no manifests, completing coverage of all ten layouts.
|
|
183
169
|
|
|
184
|
-
|
|
185
|
-
- Optional peers: `@deepseek-ai/dsh-mcp-client` (MCP injection), `@deepseek-ai/dsh-hooks-claude-code` (hooks bridge); missing capabilities degrade gracefully.
|
|
186
|
-
- The Host credentials service is optional: standard DSH profiles provide it for write-only token configuration and live remounts; without it, `${ENV_NAME}` falls back to the launch environment and requires a restart after changes.
|
|
187
|
-
- Web GUI ≥ 0.1.0-rc.6.
|
|
170
|
+
Source checks covered `src/catalog/manifests.ts`, `surfaces.ts`, `validate.ts`, `native-project.ts`, and `src/runtime/hooks-mounts.ts`. The [compatibility report](docs/compat-report.md) adds one real repository per schema, read by this plugin's own scanner. This is a documentation, source and sample audit, not end-to-end compatibility certification for every platform.
|
|
188
171
|
|
|
189
|
-
|
|
172
|
+
Reading a layout does not guarantee every behavior of its original platform. Invalid declarations are diagnosed and skipped. Project-native commands and supported MCP servers use agent-scoped host registration; project MCP server names include session identity to avoid app-wide namespace conflicts.
|
|
190
173
|
|
|
191
|
-
-
|
|
192
|
-
- Mutating HTTP routes accept same-origin POSTs only; bodies capped at 64 KiB.
|
|
193
|
-
- Portable paths must start with `./` and resolve inside the plugin root (symlink escapes rejected); `${PLUGIN_ROOT}` / `${PLUGIN_DATA}` expand.
|
|
194
|
-
- Third-party failures are always contained: broken manifests, invalid skills, escaping paths, unknown MCP transports, missing MCP credentials, and mount failures are per-plugin diagnostics.
|
|
195
|
-
- MCP credential values are resolved in memory through the Host credentials service; status/detail projections redact sensitive fields and credential writes never persist literal values in suite state or overrides.
|
|
196
|
-
- An error boundary wraps the whole market section and the detail modal: any preview render failure degrades to a notice instead of crashing the UI.
|
|
174
|
+
Review third-party suites before enabling them: enabled services and hooks can execute programs. See the [runtime and security details](docs/guides/usage.md#runtime-and-security).
|
|
197
175
|
|
|
198
|
-
##
|
|
176
|
+
## FAQ
|
|
199
177
|
|
|
200
|
-
|
|
201
|
-
- Skill discovery has no file watcher: catalog changes apply after a manager action or a host restart (project-dimension snapshots are cached for 5 seconds on the skill-list hot path).
|
|
202
|
-
- Claude Code hooks support the mapped bridge subset; LSP is counted and previewed but not executed.
|
|
203
|
-
- Native project layouts (`.claude/`, `.agents/`) inject skills and subagents; their `commands/*.md` are not registered as slash commands because the harness command registry is process-scoped, not session-cwd-scoped.
|
|
178
|
+
**Why is an installed skill or tool missing?**
|
|
204
179
|
|
|
205
|
-
|
|
180
|
+
Check that the suite and the relevant capability are enabled. Skills may restrict manual invocation. MCP / LSP panels show user-service failures. Project resources additionally require the project-scan switch; unsupported native fields and project LSP declarations appear in scan diagnostics, while scoped mount failures are logged by the host.
|
|
206
181
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
pnpm pack
|
|
217
|
-
```
|
|
182
|
+
**Where do I configure MCP tokens?**
|
|
183
|
+
|
|
184
|
+
Open the service in **MCP services**. Missing environment references show `needs-credentials`. Host-managed credentials are write-only; launch-environment credentials require changing the environment and restarting DSH.
|
|
185
|
+
|
|
186
|
+
**How do I add a service that no suite declares?**
|
|
187
|
+
|
|
188
|
+
Use **Add** in **MCP services** or **LSP servers**. The declaration is validated, stored under `~/.dsh/agent-plugins/data/`, and mounted through the same lifecycle as suite services. Host-observed services remain read-only.
|
|
189
|
+
|
|
190
|
+
**What if a source download fails?**
|
|
218
191
|
|
|
219
|
-
|
|
192
|
+
Use a local directory, adopt a manual checkout, or configure a proxy / mirror. See [source configuration](docs/guides/usage.md#configure-marketplace-sources).
|
|
220
193
|
|
|
221
|
-
|
|
194
|
+
**When do local edits become visible?**
|
|
222
195
|
|
|
223
|
-
|
|
196
|
+
There is no file watcher. Local-source discovery caches results for up to 30 seconds; refresh the source to invalidate them immediately. Project discovery has a separate five-second cache. A refresh does not happen automatically on an already-open page.
|
|
224
197
|
|
|
225
|
-
|
|
198
|
+
**Does removing a source delete its files?**
|
|
226
199
|
|
|
227
|
-
|
|
200
|
+
Only when you tick **also delete the managed market directory** in the confirmation. That removes the source's checkout under `~/.dsh/agent-plugins/.sources/<id>` — including one you cloned yourself and adopted. A local-directory source pointing outside `.sources/` is never deleted.
|
|
228
201
|
|
|
229
|
-
|
|
230
|
-
- [@claude2dsh/plugin](https://www.npmjs.com/package/@claude2dsh/plugin) — import Claude Code sessions & skills into DSH, sync sessions back
|
|
231
|
-
- [dsh-crew](https://github.com/ZSeven-W/dsh-crew) — dispatch work from Claude Code / Codex to DSH agents
|
|
232
|
-
- [deepseek-ai/deepseek-harness](https://github.com/deepseek-ai/deepseek-harness) — the DeepSeek Harness itself (official)
|
|
233
|
-
- [awesome-deepseek-harness-plugins](https://github.com/imsai-sh/awesome-deepseek-harness-plugins) — community DSH plugin directory
|
|
202
|
+
## More documentation
|
|
234
203
|
|
|
235
|
-
|
|
204
|
+
- [Usage guide](docs/guides/usage.md): installation, source configuration, storage, host requirements, MCP / LSP and feedback settings.
|
|
205
|
+
- [Plugin specifications](schemas/README.md): per-dialect reference schemas and evidence, plus the vendored agent-plugins.org v1.0.0 contracts.
|
|
206
|
+
- [Compatibility report](docs/compat-report.md): one real repository per schema, with commits, schema verdicts and scanner output.
|
|
207
|
+
- [Contributing](CONTRIBUTING.md): development setup, checks and PR workflow.
|
|
208
|
+
- [Security policy](SECURITY.md) · [Release history](CHANGELOG.md) · [MIT license](LICENSE).
|
|
209
|
+
- [Domain glossary](CONTEXT.md) · [Architecture](docs/adr/0001-catalog-centered-modular-refactor.md).
|
|
236
210
|
|
|
237
|
-
|
|
211
|
+
See [agent roles and storage](docs/guides/agent-roles.md) for installed-resource editing, model routing and migration.
|