dsh-plugins

One toolbelt,two pairs of hands

Two plugins: the branch below the composer with the full panel in the sidebar, and current docs in the conversation.

Workspace Git release
fix(ci): name the test files instead of the directory litingyes 11-07 f9b2161
chore(site): refresh the graph after the release gate origin/release litingyes 11-07 ddb5b39
chore(release): make a version bump without a tag impossible litingyes 11-07 0c2f9ab
chore(site): refresh the graph after the 0.5.1 follow-ups litingyes 11-07 0813c53
build(git): assert the committed client.js is fresh litingyes 11-07 fac38bf
fix(git): rebuild the browser half for 0.5.1 dsh-git-v0.5.1 litingyes 11-07 31418ab
chore(site): refresh the data for dsh-git 0.5.1 litingyes 11-07 b4a027a
Interface preview Data from this repository’s git history, laid out by the plugin’s own lane algorithm.

Two plugins

Workspace Git

@litingyes/dsh-git

Switch branches from the status row; the sidebar holds the graph, changes, branches and worktrees, with right-click cherry-pick, revert and drop.

0.5.1 MIT Details

Context7 documentation

@litingyes/dsh-context7

Two doc tools and the paragraph that gets them used.

0.2.1 2 tools MIT Details

The repository

github.com/litingyes/dsh-plugins

Source, bilingual READMEs, release script.

MIT GitHub

The commit graph

Every branch, date ordered, drawn as parallel lanes. Open a row for the commit.

27 commits

fix(ci): name the test files instead of the directory litingyes 2026-11-07 f9b2161

fix(ci): name the test files instead of the directory Node 22's test runner takes file arguments; `node --test scripts/` resolves the directory as a module and fails with "Cannot find module …/scripts", which turned the gate's own step red on the first run. Node 26 accepts the directory, so the local run hid it. Spell the glob out in the workflow and in the commands AGENTS.md documents.

Author
litingyes
Committed
2026-11-07 15:09
Parents
ddb5b39
refs
—

2 files changed

  • M .github/workflows/ci.yml +2 -1
  • M AGENTS.md +1 -1

Patch AGENTS.md

diff --git a/AGENTS.md b/AGENTS.mdindex 7fc72e1..44ca928 100644--- a/AGENTS.md+++ b/AGENTS.md@@ -45,3 +45,3 @@ npm run check          # 产物新鲜度 + 语法;dsh-git 先跑 build --check node scripts/check-release.mjs            # 门禁:每个 manifest 版本都有 tag-node --test scripts/                      # 门禁自身的测试+node --test scripts/*.test.mjs            # 门禁自身的测试(Node 22 不展开目录参数) node scripts/release.mjs <dir> --bump patch --dry-run   # 演练发版
chore(site): refresh the graph after the release gate origin/release litingyes 2026-11-07 ddb5b39

chore(site): refresh the graph after the release gate `pnpm sync` picks up the new commits; the portal data is a snapshot, so any change to plugin code has to land here too.

Author
litingyes
Committed
2026-11-07 15:07
Parents
0c2f9ab
refs
origin/release

1 files changed

  • M site/src/data/repo-graph.json +217 -120

Patch site/src/data/repo-graph.json

diff --git a/site/src/data/repo-graph.json b/site/src/data/repo-graph.jsonindex dad3e08..fc0a03b 100644--- a/site/src/data/repo-graph.json+++ b/site/src/data/repo-graph.json@@ -2,7 +2,7 @@   "source": {-    "head": "fac38bfd7a7c7f4137abb5ae2af931ba3d48bab2",-    "headShort": "fac38bf",+    "head": "0c2f9abc35db22bbf67c1140ed50c3d8445eba4d",+    "headShort": "0c2f9ab",     "headDate": "2026-11-07",     "currentBranch": "release",-    "total": 23,+    "total": 25,     "limit": 40,@@ -11,2 +11,31 @@   "commits": [+    {+      "sha": "0c2f9abc35db22bbf67c1140ed50c3d8445eba4d",+      "parents": [
chore(release): make a version bump without a tag impossible litingyes 2026-11-07 0c2f9ab

chore(release): make a version bump without a tag impossible Publishing is tag-triggered, but bumping `package.json` and tagging were separate manual steps. Skip the second one and the version lives only in the manifest: dsh-git reached npm as 0.2.0 → 0.5.0 while 0.3.0 and 0.4.0 were never published, which is exactly the kind of gap a registry should not show. Three pieces, so the rule is enforced rather than remembered: - `scripts/check-release.mjs` asserts, for every package, that the manifest version is tagged at a commit which declares the same version and is an ancestor of HEAD. Offline on purpose: publishing only happens from tags, so asking npm would just make the gate flaky. Covered by five tests against throwaway repositories. - `release.mjs --bump <patch|minor|major>` does the whole release in one command: bump, rebuild the browser half (its banner carries the version), rewrite the install pins, commit `release: <dir> <version>`, tag, and with `--push` push both refs in a single push. `--dry-run` prints the plan. - `.github/workflows/ci.yml` runs the gate on every push to `release` and on pull requests. `publish.yml` now refuses a tag older than npm's `latest`, so a stray old tag cannot move the dist-tag backwards. AGENTS.md records the conventions this repository actually follows: artifacts that must be committed and rebuilt, the no-hand-edited-version rule, bilingual docs, portal data sync, dependency discipline, and what not to touch. The dsh-git README now anchors the tool removal on 0.5.0 — the first published version after 0.2.0 — instead of the unpublished 0.3.0.

Author
litingyes
Committed
2026-11-07 15:06
Parents
0813c53
refs
—

11 files changed

  • A .github/workflows/ci.yml +47 -0
  • M .github/workflows/publish.yml +36 -0
  • A AGENTS.md +97 -0
  • M README.md +11 -13
  • M dsh-git/README.en.md +2 -2
  • M dsh-git/README.md +2 -2
  • A scripts/check-release.mjs +149 -0
  • A scripts/check-release.test.mjs +132 -0
  • A scripts/packages.mjs +32 -0
  • M scripts/release.mjs +158 -17

Patch dsh-git/README.en.md

diff --git a/dsh-git/README.en.md b/dsh-git/README.en.mdindex f2a63af..f503787 100644--- a/dsh-git/README.en.md+++ b/dsh-git/README.en.md@@ -2,3 +2,3 @@ -A Git plugin for DeepSeek Harness: **the current branch is shown and switchable in the status row below the composer**, and a **right-sidebar tab follows the Session's workspace** with **a multi-branch commit graph as the primary view**, where every node shows its description, author, date, and commit and expands into full details — beside staging, committing, and branch and worktree management. Right-click a commit for cherry-pick / revert / drop, or a branch row to merge it into the current branch or rebase onto it. Both surfaces share one repository snapshot. 0.3.0 no longer registers agent tools.+A Git plugin for DeepSeek Harness: **the current branch is shown and switchable in the status row below the composer**, and a **right-sidebar tab follows the Session's workspace** with **a multi-branch commit graph as the primary view**, where every node shows its description, author, date, and commit and expands into full details — beside staging, committing, and branch and worktree management. Right-click a commit for cherry-pick / revert / drop, or a branch row to merge it into the current branch or rebase onto it. Both surfaces share one repository snapshot. 0.5.0 no longer registers agent tools. @@ -90,3 +90,3 @@ Configuration lives on the mount row in `cordis.patch.yml`. **Overriding the row -> 0.3.0 removed the four agent tools (`git_status` / `git_diff` / `git_commit` / `git_branch`) along with the `tools` and `defaultWorkspaceId` fields. Legacy keys left in a profile patch are ignored, not rejected.+> 0.5.0 removed the four agent tools (`git_status` / `git_diff` / `git_commit` / `git_branch`) along with the `tools` and `defaultWorkspaceId` fields (the change itself landed in the 0.3.0 commit, but 0.3.0 and 0.4.0 were never published on their own — 0.5.0 is the first npm version after 0.2.0). Legacy keys left in a profile patch are ignored, not rejected.
chore(site): refresh the graph after the 0.5.1 follow-ups litingyes 2026-11-07 0813c53

chore(site): refresh the graph after the 0.5.1 follow-ups The bundle rebuild and the freshness guard touch plugin files, which the data guard treats as code: regenerate the snapshot so the portal keeps describing HEAD.

Author
litingyes
Committed
2026-11-07 12:56
Parents
fac38bf
refs
—

1 files changed

  • M site/src/data/repo-graph.json +180 -158

Patch site/src/data/repo-graph.json

diff --git a/site/src/data/repo-graph.json b/site/src/data/repo-graph.jsonindex fc04a64..dad3e08 100644--- a/site/src/data/repo-graph.json+++ b/site/src/data/repo-graph.json@@ -2,7 +2,7 @@   "source": {-    "head": "4d1e1f677742618f2efe27bd1ed9dc7f57e12979",-    "headShort": "4d1e1f6",+    "head": "fac38bfd7a7c7f4137abb5ae2af931ba3d48bab2",+    "headShort": "fac38bf",     "headDate": "2026-11-07",     "currentBranch": "release",-    "total": 20,+    "total": 23,     "limit": 40,@@ -12,5 +12,5 @@     {-      "sha": "4d1e1f677742618f2efe27bd1ed9dc7f57e12979",+      "sha": "fac38bfd7a7c7f4137abb5ae2af931ba3d48bab2",       "parents": [
build(git): assert the committed client.js is fresh litingyes 2026-11-07 fac38bf

build(git): assert the committed client.js is fresh

Author
litingyes
Committed
2026-11-07
Parents
31418ab
refs
—
fix(git): rebuild the browser half for 0.5.1 dsh-git-v0.5.1 litingyes 2026-11-07 31418ab

fix(git): rebuild the browser half for 0.5.1

Author
litingyes
Committed
2026-11-07
Parents
b4a027a
refs
dsh-git-v0.5.1
chore(site): refresh the data for dsh-git 0.5.1 litingyes 2026-11-07 b4a027a

chore(site): refresh the data for dsh-git 0.5.1

Author
litingyes
Committed
2026-11-07
Parents
4d1e1f6
refs
—
docs(git): correct claims the source contradicts litingyes 2026-11-07 4d1e1f6

docs(git): correct claims the source contradicts

Author
litingyes
Committed
2026-11-07
Parents
4e7b356
refs
—
chore(site): refresh the repo graph after the release tags litingyes 2026-11-06 4e7b356

chore(site): refresh the repo graph after the release tags

Author
litingyes
Committed
2026-11-06
Parents
2c5cba0
refs
—
chore(site): align the portal with dsh-git 0.5.0 dsh-git-v0.5.0 dsh-context7-v0.2.1 litingyes 2026-11-06 2c5cba0

chore(site): align the portal with dsh-git 0.5.0

Author
litingyes
Committed
2026-11-06
Parents
0899728
refs
dsh-git-v0.5.0, dsh-context7-v0.2.1
docs: sync the plugin docs with the released behaviour litingyes 2026-11-06 0899728

docs: sync the plugin docs with the released behaviour

Author
litingyes
Committed
2026-11-06
Parents
8737129
refs
—
feat(git): act on commits and branches from the panel feature/dsh-git litingyes 2026-11-06 8737129

feat(git): act on commits and branches from the panel

Author
litingyes
Committed
2026-11-06
Parents
c0e204c
refs
feature/dsh-git
chore(site): refresh the repo graph after the dsh-git merge litingyes 2026-11-06 c0e204c

chore(site): refresh the repo graph after the dsh-git merge

Author
litingyes
Committed
2026-11-06
Parents
2658252
refs
—
docs(git): keep the npm install note pre-release litingyes 2026-11-06 2658252

docs(git): keep the npm install note pre-release

Author
litingyes
Committed
2026-11-06
Parents
9dbfec8
refs
—
Merge branch 'feature/dsh-git' into release litingyes 2026-11-06 9dbfec8

Merge branch 'feature/dsh-git' into release

Author
litingyes
Committed
2026-11-06
Parents
0a297ec f9d31c3
refs
—
feat(git): switch branches from the composer status row litingyes 2026-11-06 f9d31c3

feat(git): switch branches from the composer status row

Author
litingyes
Committed
2026-11-06
Parents
81cefd6
refs
—
fix(site): keep the data guard green after docs-only commits litingyes 2026-11-06 0a297ec

fix(site): keep the data guard green after docs-only commits

Author
litingyes
Committed
2026-11-06
Parents
dda11f1
refs
—
feat(site): add the bilingual portal for the plugin collection litingyes 2026-11-06 dda11f1

feat(site): add the bilingual portal for the plugin collection

Author
litingyes
Committed
2026-11-06
Parents
f66eaba
refs
—
feat(context7): add always-on guidance so the tools actually get called dsh-context7-v0.2.0 litingyes 2026-11-05 f66eaba

feat(context7): add always-on guidance so the tools actually get called

Author
litingyes
Committed
2026-11-05
Parents
bf39041
refs
dsh-context7-v0.2.0
chore: ignore the local pnpm store litingyes 2026-11-05 bf39041

chore: ignore the local pnpm store

Author
litingyes
Committed
2026-11-05
Parents
b784bb8
refs
—
feat(git): fold the branch sections and move worktrees above remote litingyes 2026-11-05 81cefd6

feat(git): fold the branch sections and move worktrees above remote

Author
litingyes
Committed
2026-11-05
Parents
f003889
refs
—
chore(release): keep the tag probe from printing git errors litingyes 2026-11-05 b784bb8

chore(release): keep the tag probe from printing git errors

Author
litingyes
Committed
2026-11-05
Parents
e7198d0
refs
—
chore(release): publish from npm through tag-triggered CI dsh-git-v0.2.0 dsh-context7-v0.1.0 litingyes 2026-11-05 e7198d0

chore(release): publish from npm through tag-triggered CI

Author
litingyes
Committed
2026-11-05
Parents
459979e
refs
dsh-git-v0.2.0, dsh-context7-v0.1.0
feat(git)!: manage worktrees and stop clipping the right-sidebar rows litingyes 2026-11-05 f003889

feat(git)!: manage worktrees and stop clipping the right-sidebar rows

Author
litingyes
Committed
2026-11-05
Parents
459979e
refs
—
feat(git): add right-sidebar workspace Git plugin litingyes 2026-11-05 459979e

feat(git): add right-sidebar workspace Git plugin

Author
litingyes
Committed
2026-11-05
Parents
0090429
refs
—
feat(context7): add Context7 MCP documentation plugin litingyes 2026-11-04 0090429

feat(context7): add Context7 MCP documentation plugin

Author
litingyes
Committed
2026-11-04
Parents
055d494
refs
—
Initial commit Liting 2026-11-04 055d494

Initial commit

Author
Liting
Committed
2026-11-04
Parents
—
refs
—
This repository’s 27 newest commits; lanes and file counts are real. Workspace Git details

One row in the conversation

Installing a tool is not using it.

57 sessions, 5,527 tool calls: 0.33% reached the tools; after install, 2 of 26 sessions used them unprompted.

Context7 details

Context7 Resolve library resolve-library-id
Context7 Query docs query-docs

System prompt excerpt

call mcp__context7__resolve-library-id and then mcp__context7__query-docs before answering from memory or fetching documentation with web_fetch. Skip both when the answer is in this workspace’s own code or in the installed package’s types.

The row, and the paragraph behind it.

Two documentation tools

The Git panel registers no agent tools; Context7 brings this pair.

The Git panel registers no agent tools; Context7 brings this pair.
Tool Arguments From
mcp__context7__resolve-library-id libraryName query Context7 documentation
mcp__context7__query-docs libraryId query language? Context7 documentation

Install

Install with the plugin manager.

@litingyes/dsh-git

plugin_manager action=install_bundle target= @litingyes/dsh-git@0.5.1

@litingyes/dsh-context7

plugin_manager action=install_bundle target= @litingyes/dsh-context7@0.2.1
  • Restart DSH after upgrades.
  • Both require DSH >=0.2.1-rc.5 <0.3.0-0.

Boundaries

What the plugins do not do.

No network git

Local repositories only: no fetch, pull, push or clone, and no stash. Merge, rebase and cherry-pick start only from the panel’s context menus, and abort on conflict.

The browser cannot name an arbitrary path

Mutations take only a workspace id; a snapshot read may also name the Session directory, which must sit inside a registered workspace. execFile, no shell; discards are confirmed twice.

Queries leave the machine

Queries leave the machine; without a key, IP limits apply.