Start with one capability
A useful first plugin is narrow: one structured tool, one settings panel, or one UI contribution. DeepSeek Harness composes capabilities through bundle layers, so your plugin does not need to behave like a standalone application.
Understand the package shape
Community plugins commonly include a package.json, a dsh.plugin.json manifest, source code, and a built lib directory. UI extensions may declare both a host plugin and a browser client bundle.
my-dsh-plugin/
dsh.plugin.json
package.json
src/
index.ts
lib/
README.mdDesign the contract first
Define the smallest stable surface the harness or model needs: tool name, input schema, result schema, cancellation behavior, and configuration. Keep administration and health checks out of the model tool list unless the model truly needs them.
- Validate every model-controlled input.
- Fence filesystem access to the active workspace.
- Return structured results instead of log prose.
- Dispose subscriptions, processes, and tools when the plugin unmounts.
Add a local checkout to a profile
Build your project, then add its local path to a clean development profile. Restart that profile after changing the bundle list.
pnpm install
pnpm run build
npx -y @deepseek-ai/dsh plugin --profile web add file:/absolute/path/to/my-dsh-plugin
npx -y @deepseek-ai/dsh webPrepare it for discovery
Document prerequisites, the supported dsh version, an exact install command, permissions, configuration, and removal. Add the dsh-plugin GitHub topic so the project appears in the community topic directory.
- Commit runnable build output if file or Git installs require it.
- Choose and declare a license.
- Add tests for registration, configuration, and cleanup.
- Use a release tag so users can pin a known version.