Skip to content

Plugin manifest reference

Every dsh manifest key the catalog reads, and what each one changes on your listing.

dsh.bundle β€” required

"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }

Declares the package as an installable bundle and points at its patch layer. Without this key the package is a library, not a plugin, and is not listed.

dsh.client β€” optional

"dsh": {
  "bundle": { "patch": "./cordis.patch.yml" },
  "client": {
    "platform": "web",
    "inject": ["@deepseek-ai/dsh-client-runtime", "@deepseek-ai/dsh-client-ui-settings"]
  }
}

platform: "web" earns the Web UI badge on your listing. inject lists the client surfaces your plugin extends.

Fields read from the rest of the manifest

Field Effect on the listing
name The catalog key and URL slug
description Listing subtitle and meta description
keywords Tags and category hints
license Shown on the detail page
repository Links the GitHub or Gitee mirror and its stars β€” optional
homepage Extra link on the detail page

Bundle vs profile manifests

Both are package.json files; the dsh sub-key is what distinguishes them.

Manifest Key What it is In the catalog?
Bundle dsh.bundle An npm package shipping a config layer β€” what authors publish Yes
Profile dsh.profile A local composition of bundles in order, generated by the CLI under $DSH_HOME/profiles/<name> No

A profile is a runnable thing, not a distributable one. It is produced by the install commands rather than written by hand, and it only exists on the machine that generated it β€” so profiles never appear in the catalog. The catalog indexes bundles.

Patch layer order

When a profile boots, its bundles' layers apply in the profile's bundle order, @deepseek-ai/dsh-base first. On rows two bundles both patch, the later bundle wins and replaces the whole row configuration rather than merging. The "layer order" of a profile is therefore just the order of its bundles: reorder the bundles and you reorder the layers.

Last updated 2026-08-22