READMESource: main@e19b9d2f
DeepSeek Harness Plugin Checker - GitHub Action
A GitHub Action that checks the correctness of a DeepSeek Harness (dsh) plugin.
It checks the plugin in the following order, cheapest first:
- Check the manifest —
package.jsonexists, is valid JSON, declares aname, declaresdsh.bundle.patch, and the referenced patch file exists. A package withoutdsh.bundleis not a dsh plugin. - Install with dsh — runs
dsh plugin --profile web add; fails ifdshcannot install it (e.g. failed pnpm install). - Verify the layer applies — runs
dsh --profile web --dump-configand fails if the plugin does not appear as a bundle layer (# == <name>) in the composed config.
Usage
Add the action to your plugin repository's workflow:
name: ci
on:
push:
branches: [main]
pull_request:
jobs:
check-plugin:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- name: Check the DSH plugin
uses: bowenliang123/dsh-plugin-checker@v1
This checks the repository root. To check a plugin that lives in a subdirectory, pass rootPath:
- name: Check the DSH plugin
uses: bowenliang123/dsh-plugin-checker@v1
with:
rootPath: plugins/my-plugin
Inputs
| Input | Description | Required | Default |
|---|---|---|---|
rootPath |
Path to the plugin root directory, relative to the repository root. | No | . |
profile |
dsh profile to install the plugin into. | No | web |
dshVersion |
Version of the @deepseek-ai/dsh npm package to install. Use latest for newest. |
No | latest |
pnpmVersion |
Version of pnpm to install (dsh plugin management runs pnpm internally). |
No | latest |
nodeVersion |
Node.js version to run the dsh CLI with. | No | 24 |
How it works
- Sets up Node.js and installs pnpm and the
@deepseek-ai/dshCLI (npm install @deepseek-ai/dsh) from npm. - Checks the plugin's
package.jsonmanifest statically (valid JSON,name,dsh.bundle.patchdeclared, patch file exists). - Runs
dsh plugin --profile <profile> add <rootPath>to install the plugin into a fresh dsh profile under the runner home. - Runs
dsh --profile <profile> --dump-configand verifies the plugin shows up as a bundle layer (# == <name>), confirming the patch actually loads.
A plugin package.json looks like:
{
"name": "my-dsh-plugin",
"version": "0.1.0",
"type": "module",
"main": "index.js",
"dsh": {
"bundle": {
"patch": "./cordis.patch.yml"
}
}
}
Examples
examples/hello-plugin— a minimal valid plugin that passes the check.examples/broken-plugin— a plugin with an invalidpackage.jsonthat must fail the check.
License
Apache License 2.0
No comments yet. Be the first to write one.