A plugin pack for one install target: the DeepSeek Harness web profile
(npx @deepseek-ai/dsh web; profile web under $DSH_HOME, default ~/.dsh).
Everything ships as a standard dsh bundle.
Read ARCHITECTURE.md for the map, the plugin's own packages/<name>/README.md
for its behaviour, SECURITY.md before touching credentials or the launcher, and
scripts/checks/README.md for what proves a change.
-
One install target. The web profile only. No desktop edition, no
-Target desktop, no desktop detection.app/plusscripts/run-desktop.batis a launcher of the same pinneddsh webon a free loopback port — it installs nothing and touches no profile or core file. -
Nothing patches core. A row change is a new bundle layer.
dsh-vn-masteris the pack's final layer (it installs last), so pack-wide row patches belong there, and a package that replaces a row carries that row's disable with it. -
Platforms. Plugin code is OS-neutral. Windows tooling is PowerShell and must work on 5.1 and 7 (
Join-Path,[System.IO.Path]::PathSeparator,$PSVersionTable; never$IsWindowsunguarded, never a hardcodednpx.cmd,%USERPROFILE%or\). macOS/Linux tooling is POSIX shell and must never require PowerShell — Node.js with npm/npx and nothing else. -
Launchers. Every entry point lives in
scripts/, one per action per host (install.bat/install.sh,run-web.*,uninstall.*), and there are no forwarders. On Windows the entry point calls the PowerShell worker beside it and gets its console behaviour from the one shared layer:if not defined VNCODE_CONSOLE set "VNCODE_ARGV=%*" call "%~dp0console\adapt.cmd" "%~f0" "<window title>" if errorlevel 10 exit /b 0 :: a Windows Terminal window owns the run if errorlevel 2 goto :nopowershell :: no PowerShell on this machineAn entry point forwards
%VNCODE_ARGS%and never%*;adapt.cmdmust notsetlocal; colour lives inscripts/console/theme.ps1and its POSIX twintheme.sh. -
The launch token is a live credential. It is read in memory, never written to a file, echoed, or handed to a shell, and a URL that is not loopback is refused rather than opened. It appears only in
scripts/run-web.ps1/scripts/run-web.sh. -
No secrets, ever. Run
node scripts/checks/check-no-secrets.mjsbefore pushing. A vendored bundle can ship its author's own credentials: redact them in the build (a patch under that engine'svendor/<name>/patches/, read before the artifact is committed), never with an allowlist entry. -
Zero npm dependencies in shipped packages, and no network egress a plugin starts on its own. Engines are vendored under
lib/vendor/or resolved from the harness already on disk. -
No CI, on purpose. The checks in
scripts/checks/are run by hand; they are the contract, andscripts/checks/README.mdlists them.
packages/<bundle>/— one standalone bundle per plugin, each with its own one-page README:dsh-vn-master(final layer),dsh-rightbar+dsh-rightbar-files(the right bar and its Files tab),dsh-editor,dsh-gittree(History),dsh-image,dsh-audio,dsh-video,dsh-media(the only owner of ffmpeg),dsh-diagrams,dsh-pdf,dsh-canvas,dsh-writing(the Writing tab, the pack's only.docxcodec and its only method skill —research, the one that teaches a practice rather than a tool),dsh-browser,dsh-themes,dsh-cmdbar,dsh-modal,dsh-skills,dsh-ui-state,dsh-open-in-app.scripts/— the launchers, the installer workers, the shared console layer andscripts/checks/.app/— the Rust/Tauri launcher window (a launcher, not a desktop edition).docs/— install, build, deploy, distribute, release, paths, compatibility..dsh-version.json— the pinned harness line and the pack manifest (its versions must match everypackage.json;check-node-routes.mjsenforces that).
Run the check that owns the area, and say which ones you ran:
check-no-secrets.mjs— before anything is pushed;check-dist-layout.mjs— the distribution, the console contract, the ship list;check-node-routes.mjs— every Node route, the manifest, the pack-wide patches;check-client-bundles.mjs— every browser bundle, loaded and driven for real;check-media-node.mjs,check-pdf-node.mjs,check-canvas-node.mjs,check-browser-node.mjs,check-splash.mjs— the tool and host halves;check-canvas-panel.mjs,check-canvas-browser.mjs,check-audio-browser.mjs— the checks that drive a real browser (with none installed they skip loudly);check-skill-examples.mjs,check-media-examples.mjs— every fenced example in the shipped skills (parsed, compiled, or actually run).
A check that cannot run on this host says so loudly and exits 0. Never silence a check, and never weaken one to make a change pass.
Comments and docs state the rule and the measurement behind it — the fact a future editor must not break — not the changelog. Docs are one page each: no alpha-by-alpha history, no re-explaining what the harness used to do.