Preface¶
When developing a DeepSeek Harness plugin, you’re not just implementing a tool—you also need to handle bundle formats, tool DSLs, configuration validation, testing, and pre-release checks. Here we introduce sunshine-lang/dsh-plugin-template. It consolidates these aspects into a single skeleton, serving as an ideal starting point for generating new plugins from a template.
What Is This¶
dsh-plugin-template is a DeepSeek Harness plugin skeleton maintained by sunshine-lang, licensed under MIT.
GitHub repository:
https://github.com/sunshine-lang/dsh-plugin-template
It covers the following:
- DeepSeek Harness plugin skeleton
- Bundle format
- Tool DSL
- Configuration validation
- Testing
- Release checklist
- Scaffold script for generating new plugins
Generating a Plugin from the Template¶
First, run the scaffold script to generate a plugin directory named dsh-myplugin:
node scripts/scaffold.mjs dsh-myplugin --description "what it does"
After generation, complete the tools based on your capabilities, adjust the Config fields, and follow the release checklist to add installation, usage, and configuration documentation.
The provided test command is:
node --import tsx/esm scratch-plugin/dsh-myplugin/test-integration.ts
During build, the documentation distinguishes two paths. If building within the harness repository, use:
pnpm exec tsc -p tsconfig.local.json
If independently cloning and installing dependencies, use:
npm install && npm run build
The documentation also notes: lib/ is already built and committed; GitHub installations do not run build scripts.
Finally, test-run in the Web UI:
pnpm dsh --profile web --patch ./scratch-plugin/dsh-myplugin/cordis.patch.yml
Installation and Enabling¶
The fetched documentation does not provide official installation commands for dsh-plugin-template, and you should not directly construct an installation command from the template name.
If you publish the plugin as an npm package following the optional release path in the documentation, the user-side installation form is:
dsh plugin add <name>
Here, <name> is the published npm package name. The name, description, and repository fields in package.json from the fetched documentation are still placeholders; the final package name and repository address are not confirmed.
If you push to GitHub and use the GitHub installation path, the command form provided in the documentation is:
dsh plugin add "github:you/repo"
The documentation indicates that when pushing to GitHub, use a standalone repository, and this path requires the package root directory.
Tools, Config, and Parsing Conventions¶
The documentation lists the following conventions:
- Optional tool parameters should omit
required; writingrequired: falsewill be rejected by the schema compiler. - Define Config using Schemastery; invalid configurations fail loudly on load.
- Apply boundaries to full results: limit file size, page count, and character count; truncate at meaningful boundaries and inform the model how to continue.
- Node resolution: use
.jssuffixes for relative imports; declare@deepseek-ai/*dependencies independenciesand resolve them from the profile’snode_modules.
Runtime Environment and Release Notes¶
enginesrequiresnode >=22.19.- Optionally
npm publish; then users candsh plugin add <name>. lib/is already built and committed; GitHub installations do not run build scripts.- Running
npm installin apnpmworkspace subdirectory will fail; for independent development, scaffold outside the harness repository; for building within the repository, usetsconfig.local.json.
Applicable Scenarios and Notes¶
Suitable for developers who are already using DeepSeek Harness and need to write new plugins or organize their plugin repository structure.
Note: Plugins run with the current dsh process permissions; review the source code and license before installation. This template is licensed under MIT.
Links¶
- GitHub: https://github.com/sunshine-lang/dsh-plugin-template
- Directory page URL: Not provided in the fetched documentation.