DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Git Status Pill — DSH Plugin for DeepSeek Harness
← Plugins
G

dsh-git-status-pill

Git Status Pill

Floating git status pill for DeepSeek Harness: live branch, +/− line changes and a Create PR prompt, rendered over the whole app.

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:luigiinred/dsh-git-status-pill#d922b7f2c39f6101e644e58b43258ab3435ffd5a
READMECompatibilityVersions

Compatibility and provenance

Git Status Pill is published as dsh-git-status-pill and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
9/17/2026

Versions

0.1.0stable
9/17/2026

Related plugins

Loading related plugins…

Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
9/16/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in

Related plugins

More verified plugins in developer-tools.

Web App@deepseek-ai/dsh-web-appThe dsh browser-surface bundle: the web patch layer over dsh-base plus the runtime glue plugin (frontend dist serving, web-surface prompt, bash runtime variables, URL line)Sdk Minimal@deepseek-ai/dsh-sdk-minimalThe standalone minimal SDK profile bundle: JSON-RPC, one DeepSeek adapter, persistent shell, and JSONL sessionsSdk App@deepseek-ai/dsh-sdk-appThe dsh SDK profile bundle: stdio JSON-RPC serving and process lifecycle over dsh-baseSubagent Codex@deepseek-ai/dsh-subagent-codexOne-shot Codex subagent provider over the official app-server protocol

README

dsh-git-status-pill

A floating git status pill for DeepSeek Harness. It shows, live, for the session's repository:

  • the branch and repository name
  • +/− line changes (git diff HEAD --shortstat)
  • changed-file and untracked-file counts, upstream, and ahead/behind
  • a Create PR prompt: an editable title, the generated gh pr create command, and a ready-to-send agent prompt

It renders into the harness shell.overlay slot — the frame-wide, click-through floating layer — so it sits above every column without blocking the app. Drag it by the grip handle; hide it with ✕.

Install

# from a registry
dsh plugin --profile web add dsh-git-status-pill

# or straight from a checkout / tarball
dsh plugin --profile web add /absolute/path/to/dsh-git-status-pill

dsh plugin … add forwards to pnpm inside the profile directory, so the package lands in the profile's node_modules.

Then make sure the package is in the profile's dsh.profile.bundles list in $DSH_HOME/profiles/web/package.json:

{
  "dsh": {
    "profile": {
      "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-git-status-pill"]
    }
  }
}

That list is what applies this package's cordis.patch.yml, which inserts the host row:

- insert:
    - id: git-status-pill
      name: dsh-git-status-pill

Restart the web profile. The pill appears at the bottom-right of the frame.

Publish

npm login
npm publish --access public

publishConfig/access is not set in package.json because the package is unscoped; add "publishConfig": { "access": "public" } if you rename it under a scope. Before publishing, set the real repository.url in package.json.

How it is wired

HalfFileMechanism
Hostlib/index.jsESM Cordis plugin. inject: ['webServer'], registers one exact HTTP route, reads git through the ctx.shell service.
Clientlib/client.jswindow.__ModuleLoader__ bundle. Injects slots, claims shell.overlay, polls the host route with fetch.
Compositioncordis.patch.ymlInserts the host row when the bundle is applied.

Why an HTTP route instead of a typert Remote

The canonical host→client bridge in the harness is a typert Remote namespace — the client calls ctx.remote.<namespace>.<method>(), the host declares @Remote(...) methods, and a plugin's client half mounts its own descriptor with await ctx.remote.$mount(contribution). That is how shipped plugins and community plugins like dsh-cost-meter do it.

The catch is that the descriptors on both sides (lib/typert.host.js and the client contribution) are generated by @deepseek-ai/dsh-typert-generator from a Host FaceModel. That generator is not part of an installed harness (0.1.5-rc.1), and hand-writing generated schema descriptors is brittle.

Since the harness web server is a public service, this plugin uses a plain exact-path HTTP route instead: no codegen, no build step, plain JavaScript on both sides. The tradeoff is that it does not participate in typert's scope and schema validation. If you later want the first-class transport, port the route in lib/index.js to a TypertRemoteService subclass and run the generator.

Configuration

Both the route path and the poll interval are constants at the top of the relevant file. The route must be unique across the composition — a duplicate (kind, path) throws at registration.

ConstantFileDefault
ROUTElib/index.js, lib/client.js/git-status-pill/status
POLL_MSlib/client.js4000
DEFAULT_POSlib/client.jsbottom-right, above the composer

Behaviour notes

  • Non-repository workspaces. When the session workspace is not a checkout, the pill scans the workspace and its parent for .git directories and offers them as chips, plus a field for an absolute path. A downward-only scan misses sibling repositories, which is why the parent is included.
  • Sandbox. Reads outside the session workspace can be refused by the harness sandbox. A refusal is reported in the payload (denied: true) rather than silently rendered as zeros.
  • gh. The host reports whether gh is on PATH; without it the panel says so and points at the agent prompt.
  • Clipboard. Uses navigator.clipboard and falls back to a selectable textarea.

Status

The widget logic is verified against real repositories. The package packaging — module-loader wrapper, cordis.patch.yml, and the HTTP route — has not yet been installed into a profile and booted end-to-end. Treat 0.1.0 as a first cut: install it, restart, and check the run card / browser console.

License

MIT