Skip to content

Guide

How to create a DSH plugin

Create a DSH plugin around one narrow capability, an explicit Cordis entry point, documented configuration, and a testable installation path.

01

Define one plugin boundary

State the capability, required permissions, external data flow, configuration, and failure behavior before writing integration code.

  • Keep the first scope narrow
  • Validate all external input
  • Never hardcode credentials

02

Implement the Cordis lifecycle

Expose the plugin through the entry pattern documented by DeepSeek Harness and keep side effects inside the registered lifecycle.

  • Use typed configuration
  • Fail with actionable errors
  • Clean up resources on disposal

03

Document installation and verification

Publish the package or local-path steps, intended profile, prerequisites, smallest working example, and removal path.

  • Avoid ambiguous placeholders
  • Pin only supported constraints
  • Test from a clean profile

Review sources

Sources help verify current facts. Their inclusion does not imply endorsement of this page.

create a DSH plugin questions

What do I need to create a DSH plugin?

Node, a package manager, and an entry point Cordis can load. Starting from the structure of a working plugin is faster than starting from an empty folder.

Do I need to understand Cordis to create a DSH plugin?

Enough to register your plugin and clean up after it, yes. Cordis is the runtime that loads plugins and manages their lifecycle, so side effects belong inside the registered lifecycle rather than at import time.

How narrow should the first version be?

One capability. A plugin that does one thing has one failure mode, one configuration surface, and one thing to document, which is what makes it reviewable by anyone other than you.

How should a plugin handle credentials?

Read them from environment variables or the secret mechanism the host provides, never from a committed file or a default value. Do not log them and do not echo them back inside error messages.

What belongs in the README?

The install command, the intended profile, prerequisites, one working example, and how to remove it. Missing removal instructions is the most common gap in plugin documentation.