Skip to content

Publish your plugin

Package a plugin as an installable bundle and get it indexed here.

A bundle is an npm package that ships a configuration layer. Three files:

my-plugin/
β”œβ”€β”€ package.json       # declares dsh.bundle
β”œβ”€β”€ cordis.patch.yml   # the layer applied when a profile lists this bundle
└── index.js           # the plugin module the patch rows reference

package.json:

{
  "name": "dsh-my-plugin",
  "version": "0.1.0",
  "type": "module",
  "main": "index.js",
  "files": ["index.js", "cordis.patch.yml"],
  "keywords": ["dsh", "dsh-plugin"],
  "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }
}

cordis.patch.yml:

- insert:
    - id: my-plugin
      name: dsh-my-plugin

index.js:

export const name = 'my-plugin'

export function apply(ctx) {
  // register what your plugin does; cleaned up automatically on unload
}

Getting indexed

Publish to npm with the dsh-plugin keyword. The catalog reads the npm registry daily, so a new release appears within a day of publishing β€” there is no submission form and nothing to wait for a human to approve.

If nothing shows up, the manifest is almost always the reason. Rather than guess, paste the package name into the publish check: it runs the same rule the indexer runs, against your live package on npm, and says what is missing.

Versioning

A new version is a normal npm publish. The catalog reads the registry daily and picks up the new latest release automatically β€” version, description, keywords, and repository link all follow. There is nothing to bump on this site.

Deprecation

Deprecating a package on npm is respected: the listing is marked archived and hidden from default listings, while its permalink stays valid so existing links keep working. The page is never deleted.

Claiming a listing β€” no account needed

There are no accounts, submission forms, or moderators here. If the npm name is yours, the listing is effectively yours: edit the package metadata β€” description, keywords, repository β€” and the listing changes with the next daily sync. Publishing a new package under a name you own creates the listing the same way.

Last updated 2026-08-22