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.