Plugin Markets & Managers
dsh-plugins-hub
TYEclipse/dsh-plugins-hub · ★ 2
Independent plugin index for DeepSeek Harness (dsh) — curated directory of community plugins, updated daily
Manifest details
安装
dsh plugin --profile web add github:TYEclipse/dsh-plugins-hubGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
An independent, community-friendly plugin index for DeepSeek Harness (dsh). Curated by automation + human review. Topic:
dsh-plugin.
Featured Plugins
| Plugin | Description | Install | Status | Security | Trial | Checked at | Commit |
|---|---|---|---|---|---|---|---|
| dsh-mcp-tools | MCP server and tool manager for the DSH web settings panel: add servers over streamable-HTTP (URL plus Postman-style header rows) or stdio (command / args / env / cwd), paste one {"mcpServers": {...}} block to import several at once, run a connectivity check (initialize → tools/list) before saving, and toggle individual tools per server so a disabled tool is never registered with the model; switched-off servers keep their configuration, and the whole set copies back out as an mcpServers snippet. One host-side row plus a prebuilt client bundle (dsh.client.platform = web, no build step, zero runtime dependencies), with state and a JSONL event log under $DSH_HOME/dsh-mcp-tools/ |
dsh plugin --profile web add dsh-mcp-tools@1.0.2 | ✅ active | ✅ zero runtime / peer / optional dependencies, no install lifecycle scripts, no telemetry or analytics SDK in the shipped code, and no bundled endpoints — the plugin only contacts an MCP server after the user adds it and triggers the connectivity check; the host-side API sits under /mcp-tools/api/* and is served only to authenticated web sessions (401 without the token cookie). Worth knowing: the server definitions you paste (including header values, which may be tokens) and the event log are stored in plain text at $DSH_HOME/dsh-mcp-tools/{state.json,logs.jsonl} — DSH_HOME can be redirected |
✅ e2e (R79 from hub #65: isolated install of npm dsh-mcp-tools@1.0.2 — China mirror on the first try, prebuilt, friction=none, resolved 1.0.2, wired=true; mcp-tools row inside a 1445-line composed profile tree; web boot smoke 401 → 303 (+Set-Cookie) → 200, client descriptor plugins/??dsh-mcp-tools/client.js served 200 at 136 207 bytes with inject matching 2/2; GET /mcp-tools/api/state 401 without the cookie and 200 with it, returning {"ok":true,"version":1,"servers":[],"registeredTotal":0,"paths":{"state":"…/dsh-mcp-tools/state.json"}}; the shipped scripts/smoke.mjs ran 9/9 ok on the installed copy; not run: settings-panel UI interaction (add-server form, JSON import, per-tool toggles, copy-out snippet), a live MCP initialize → tools/list against a real server, and Windows/Electron — the submission itself claims macOS only) |
2026-10-25 | ddfb49acb3cb850b84b9be1a2fe9d85b25430359 |
| DeepSeek Workbench | Brings the DeepSeek web app into the DSH web GUI: an official-page chat view driven through the visible composer, a temporary side chat that asks a question against the current conversation with its own streaming and cancellation, a DeepSeek API-platform page, and DSH session migration — MIT, shipped as readable ESM/JSX sources (no build step at install) with a single dependency (marked) for markdown; engines.dsh is exactly 0.2.1-rc.2, so a host upgrade will make it peer-reject until the author republishes | dsh plugin --profile web add https://github.com/gulagala001/dsh-deepseek-workbench/releases/download/v0.1.1-dsh.0.2.1-rc.2/dsh-deepseek-workbench-0.1.1-dsh.0.2.1-rc.2.tgz | ✅ active | ⚠️ account-bound by design: it stores a DeepSeek account token in the host credential store and sends it as x-dsh-auth-token / Bearer to chat.deepseek.com and platform.deepseek.com (account probe), and reads the official page with credentials: include (browser cookies) to extract conversations; all traffic goes to DeepSeek first-party hosts (chat.deepseek.com, platform.deepseek.com, files.deepseeksvc.com) — no telemetry SDK, no analytics, no install-time callback, no eval, no child processes; UI state lives in browser localStorage/sessionStorage | ✅ e2e (R78, hub #57: release asset downloaded with gh release download, sha256 9d2b4f73…aaa91a1, 189 677 B; structure read BEFORE installing — cordis.patch.yml is a plain single-row insert with no approval / sandbox-policy / fs-observation-policy override, 39 files, no native binaries, no install hook; local file: install friction=none, resolved 0.1.1-dsh.0.2.1-rc.2, wired; 1232-line composed config with the deepseek-workbench layer; boot smoke 401 → 303 + Set-Cookie → 200 (38 083-byte page), the descriptor serves dsh-deepseek-workbench/client.js 200 / 159 013 B with its inject list matching package.json 9/9. NOT run: every account-bound feature (web chat, temporary side chat, platform page, session migration — need a logged-in DeepSeek account), the separate desktop/ host integration, LLM-driven installed-copy session (@deepseek-ai/dsh-headless cannot be installed on this host), Windows/macOS. Note for installers: the install command in the submission names a 0.1.2 file under the 0.1.1 tag (404) — the row pins the real 0.1.1 asset) | 2026-10-24 | 47119973 |
| dsh-theme-plugin | Appearance and theme manager for the DSH web GUI: three native Appearance pages (appearance settings, theme management, a visual market fed from four catalogs), six built-in appearances and 29 palettes, discovery of themes already installed, file import/export, per-feature theme controls and revalidation when the host or an adapter changes; theme packages are staged and validated before activation and a failed install restores the previous appearance. Targets DSH 0.2.1-rc.2 exactly (engines.dsh), MIT, released as a fixed GitHub release tarball rather than npm (the unscoped npm name belongs to another author) | dsh plugin --profile web add https://github.com/gulagala001/dsh-theme-plugin/releases/download/v0.2.0-dsh.0.2.1-rc.2/gulagala001-dsh-theme-plugin-0.2.0-dsh.0.2.1-rc.2.tgz | ✅ active | ⚠️ marketplace + code-execution disclosure: this is a theme market client, so it contacts third-party catalogs by design (dsh-market.com, dshmarket.com, dsh.a2hmarket.ai, the community catalog, kingofsoysauce.github.io, api.github.com, raw.githubusercontent.com, codeload.github.com, registry.npmjs.org) and installs the theme packages it downloads — those packages are bundled with esbuild-wasm and then run as web-UI backends with normal Node/DSH capabilities, and the host sources spawn child processes for runtime probes; upstream states plainly that its preflight is not a malicious-code sandbox, so treat installing a theme as running third-party code. No telemetry SDK or install-time callback found; the row is otherwise a single plain insert row (it does not touch approval, sandbox-policy or fs-observation-policy) |
✅ e2e (R76: release-asset tarball, sha256 a804e3be…38e1, downloaded with gh release download and read structurally before installing — package.json + cordis.patch.yml are a plain single-row insert with no policy overrides; local file: install via the asset, friction = none, resolved 0.2.0-dsh.0.2.1-rc.2, wired, dsh-theme-plugin row in a 363-line composed config; boot smoke 401 → 303 + Set-Cookie → 200 with data-dsh-skin; client module 200 / 415 211 B with the descriptor's inject list matching package.json 8/8; no model-callable tools — it is a UI plugin; host prefixes /theme* are not registered (RPC channel instead). Unverified: the appearance pages themselves, market browsing, a real theme download/rollback, import/export — needs a browser-driven session; engines.dsh is exact, so a host upgrade will make it peer-reject until the author republishes) |
2026-10-22 | 6a7ad62 |
| dsh-undo-plugin | Rewind a conversation and its workspace files in place, with confirmation and a real undo: a Copy-adjacent button, a native picker on an idle double Escape or /rewind, and /undo to reverse a restore. Every restore operation is confirmed first. File recovery covers synchronous tools and same-workspace subagents; external effects are not reversed, and a run with no file snapshot restores the conversation only, which is shown before the confirmation. Local state lives in ~/.dsh/rewind-plus (an ownership lease per host process). No network calls of any kind — MIT | dsh plugin --profile web add https://github.com/gulagala001/dsh-undo-plugin/releases/download/v0.1.0-dsh.0.2.1-rc.2/gulagala001-dsh-undo-plugin-0.1.0-dsh.0.2.1-rc.2.tgz | ✅ active | ✅ no outbound requests: the published lib/ and src/ contain no http(s) URL, no telemetry SDK (no posthog/sentry/analytics/mixpanel) and no eval; the only state it writes is a local ownership lease at ~/.dsh/rewind-plus/v1/owners/-.json ({"pid","protocol":2,"busy":false} on this host). It does snapshot workspace files in order to restore them — that is its purpose, and the snapshots stay on the machine. Restores require explicit confirmation; a plugin without a snapshot restores the conversation only, shown before you confirm. Third-party notices and the upstream DSH license are shipped in the tarball | ✅ e2e (release-asset tarball, asset sha256 4436c038c9d7798931f7242e25541bab1bb151d357865652f9516afbe4c10d9d; isolated install into a scratch profile via file: — friction=none, resolved 0.1.0-dsh.0.2.1-rc.2, wired; package.json engines dsh 0.2.1-rc.2 + cordis 4.0.5 exactly match this host, 26 files, no native binaries, no install-time scripts, no vendored node_modules, MIT + LICENSE.DSH present; composed config 1232 lines with the dsh-undo-plugin layer; web boot smoke 401 → 303 + Set-Cookie → 200 and the page references @gulagala001/dsh-undo-plugin/client.js, which serves 200 / 23238 bytes with the package's nine dsh.client.inject modules present in the host page). NOT exercised: the actual rewind/undo round-trip (needs an interactive session with tool-driven file edits), attachment restore, the double-Escape and /rewind//undo UI paths, and the Windows/Linux flows the author lists as unverified |
2026-10-21 | d613e9e |
| dsh-biorxiv | bioRxiv preprint search, version/publication status and export toolbox: biorxiv_search (synonym queries, date window, field, minScore filter), biorxiv_paper (latest version, published DOI/journal, retraction flag), biorxiv_latest (date window and category), biorxiv_export (JSON/Markdown/CSV/BibTeX with path-confined writes) and biorxiv_digest (structured markdown, optional opt-in Chinese summary) — zero runtime dependencies, public APIs only | dsh plugin --profile web add github:TYEclipse/dsh-biorxiv#v0.1.0-alpha.20 | ✅ active | ✅ zero runtime deps, no install scripts, no telemetry; public APIs only (Europe PMC, bioRxiv, Crossref, OpenAlex); optional summary default off and sends only public title/abstract; cache local with hashed keys | ✅ e2e (isolated install from tag v0.1.0-alpha.20, friction=none, resolved 0.1.0-alpha.20; layer dsh-biorxiv in --dump-config; installed-copy CLI executed all five tools against real public APIs — search 1 uncached hit, paper returned the DOI, latest 1 item, digest 1-item markdown, export 2 records / 518 B; MCP initialize reports 0.1.0-alpha.20; 145 tests, 100% line coverage. Not run: LLM-driven headless session (base-only profile), optional AI summary with a real key (default off), Windows/macOS) | 2026-10-19 | b56344e |
| dsh-netdoctor | Network diagnostics toolbox: DNS lookup (10 record types incl. SOA/CAA), multi-resolver DNS propagation check (one record across 6 public resolvers, answer sets grouped by record content, failed/slow resolvers reported as failed), ICMP ping, TCP port check, TLS cert check, HTTP(S) check (redirect chain with relative Location resolved per RFC 3986, per-phase timing dns/connect/tls/ttfb/total as cumulative marks from one clock, audited headers HSTS/CSP/X-Frame-Options/CORS, bounded body read, cookie values counted not echoed), traceroute, public IP, WHOIS registry lookup (TCP 43, IANA referral chain + TLD fallback map, ARIN for IPs, structured summary) — nine read-only probes, zero runtime dependencies | dsh plugin --profile web add github:TYEclipse/dsh-netdoctor#v0.4.0 | ✅ active | ✅ Zero runtime dependencies (Node.js built-ins only), no telemetry SDK, no install-time callbacks. Everything is outbound and read-only; external binaries (ping, traceroute/tracert) are called with fixed argument arrays, never through a shell. check_http never authenticates: a URL with embedded credentials is rejected, Set-Cookie headers are counted and their values never returned, and redirects are only followed to http/https targets. | ✅ e2e (isolated install github:TYEclipse/dsh-netdoctor#v0.4.0 — China mirror on the first try, friction=none, resolved 0.4.0, wired into the profile bundles; installed-copy execution of the published dist: 9/9 tool definitions in dist/tools.js, local-server run of check_http → 301 chain resolved to 200 in 1 hop, 2 Set-Cookie counted with values absent, 404 kept as reachable, timing marks dns absent (IP literal) / connect ≤ ttfb ≤ total; 107 tests / 78.39% line coverage, all offline) | 2026-10-26 | 0b1de6d |
| dsh-webfetch | Web page reader: fetch any URL as clean Markdown / plain text, inventory links, read RSS/Atom feeds, inspect HTTP status/headers/redirect chain without the body (web_headers: HEAD with automatic GET fallback), extract HTML tables as structured rows (web_table: header detection, colspan/rowspan grid expansion, row/table caps), read a page's own metadata (web_meta: canonical, Open Graph/article/Twitter properties, hreflang alternates, feed autodiscovery, icons, JSON-LD @type summaries — invalid blocks reported, not dropped), list a site's own URLs (web_sitemap: robots.txt Sitemap directives, sitemap indexes followed, lastmod/changefreq/priority, relative locs resolved, failing or gzip sitemaps reported per document), zero-dependency http proxy support — zero runtime dependencies, read-only | dsh plugin --profile web add github:TYEclipse/dsh-webfetch#v0.6.0 | ✅ active | ✅ zero runtime dependencies, no install scripts, no telemetry or analytics SDK; only http/https GETs (no credentials, no cookies, embedded URL credentials rejected) of the URLs you give it — plus robots.txt and the sitemaps it declares — with request timeout, redirect-hop, body-size and text-length caps | ✅ e2e (R82: isolated install of github:TYEclipse/dsh-webfetch#v0.6.0 — China mirror on the first try, friction=none, resolved 0.6.0, wired; 363-line composed config with the webfetch layer; the published dist executed 5/5 spec-probe cases against a local fixture: robots→index→urlset inventory, direct sitemap input that skips robots, maxUrls cap honesty (1 of 2 returned, truncated), file: rejection, and a web_headers regression; 163 tests green, coverage 91.65%, oracle cross-checks an xml.etree reader against an independent regex reader. Not run: inventories larger than maxUrls walked across calls (no cursor yet), gzip .xml.gz documents (reported, not decoded), sites whose robots.txt redirects) | 2026-10-28 | 3146ab2 |
| dsh-units | Unit conversion toolbox: 22 categories (length, mass, temperature, data sizes decimal-vs-binary, data transfer rates Mbps-vs-MB/s, acceleration incl. g-force, illumination lux/foot-candle, speed, time, volume, pressure, energy, angle, frequency, power with 3 horsepower definitions, force, torque, typography px/pt/em/rem, volumetric flow rate m³/s-L/min-CFM-gpm, density kg/m³-lb/ft³-lb/gal, fuel economy mpg ↔ L/100km) plus three usable tools on top of the table: a unit-price tool that normalizes and ranks price-per-unit offers (1–6 offers with pack quantities, cheapest + spread in percent; temperatures and fuel economy refused) and a unit-sum tool that adds 1–12 quantities in mixed units of one category (total + mean in a target unit, compensated summation so small addends do not drift, negatives allowed for differences, temperatures and fuel economy refused) — zero runtime dependencies, pure math | dsh plugin --profile web add github:TYEclipse/dsh-units#v0.6.0 | ✅ active | ✅ zero runtime dependencies, pure synchronous arithmetic over a static unit table — no network, no filesystem, no child processes, no eval, no telemetry | ✅ e2e (R81: isolated install of github:TYEclipse/dsh-units#v0.6.0 — mirror first try, friction=none, resolved.installed 0.6.0, wired=true; installed-copy execution 14/14 anchors on the published dist/: unit_sum 5 ft + 3 in + 1.2 m + 80 cm → 360.02 cm (3.6002 m), mean 90.005 cm; 1 h + 30 min + 45 s → 5445 s; 500 MB + 1 GiB → 1573.741824 MB; 1e16 + 1 − 1e16 m → 1 m (compensated, not naive); 10 ft − 2 ft → 8 ft; and no regression in convert_unit (100 km → 62.137119 mi, 1 gpm → 0.0630902 L/s) or unit_price (3.99/lb vs 8.5/kg → best 8.5/kg). In-repo oracle covers the new tool with math.fsum as the ruler plus definitional anchors; suite 83 tests, coverage 95.08%. Not run: interactive agent session with a model (this host cannot install @deepseek-ai/dsh-headless)) | 2026-10-27 | 35a229e |
| dsh-color | Color toolbox: parse/convert any CSS color (hex, rgb()/hsl()/hwb(), all 148 CSS Color 4 named colors), WCAG 2.x contrast ratio with AA/AAA verdicts, named-color lookup by name or value, harmonious palette generation (color_scheme: complementary / analogous / triadic / split-complementary / tetradic / square / monochromatic), color adjustments (adjust_color: lighten / darken / saturate / desaturate / hue-rotate), color blending (blend_colors: alpha compositing over and premultiplied sRGB interpolation mix, i.e. the color-mix() math), contrast repair (ensure_contrast), perceptual color difference (color_difference: CIEDE2000 plus CIE76, both CIELAB colors under D65, plain-language verdict and tolerance check), perceptually even tint/shade ramps (color_scale: tints / shades / both / between interpolated in Oklab, each step reporting its ΔE00 from the base) and color-vision-deficiency simulation (cvd_simulate: protan / deutan / tritan via the Machado, Oliveira & Fernandes 2009 matrices at any severity 0-1, each color as its simulated hex plus ΔE00 shift, and every pair's ΔE00 before/after with the collapsing pairs flagged) — zero runtime dependencies, pure math | dsh plugin --profile web add github:TYEclipse/dsh-color#v0.5.0 | ✅ active | ✅ | ✅ e2e (R83: isolated install v0.5.0, mirror friction=none, resolved.installed 0.5.0, wired; installed-copy execution 7/7 — deutan #e53935/#2ca02c becomes #98892e/#968838 with ΔE00 71.3277 → 1.6504 flagged as collapse, tritan leaves #ff0000 at ΔE00 1.4595, severity 0 = identity and neutrals unchanged, severity clamped to 1, 7 colors refused, plus color_difference 11.7766/61.1101 and color_scale regressions; 153 tests green, coverage 95.51%; oracle section J is an independent Python implementation whose --check also asserts all 33 published matrix rows sum to 1 and that severity 0.0 is the identity) | 2026-10-29 | e4dbdbd |
| Code2Skill | Three agent skills that generate portable Function / MCP Tool / workflow Skill packages (with offline tests) from user-authorized code, plus independent flow and source-semantics review — pure skill bundle, MIT | dsh plugin --profile web add github:leechen298/Code2Skill#v1.2.0 |
✅ active | ✅ | ✅ e2e (R65 re-verification, expired-row queue: re-pinned v1.1.3 → v1.2.0; isolated install friction=none, resolved 1.2.0; dump-config shows code2skill-bundled-skills + provider code2skill-bundle; installed-copy execution 18/18 — three SKILL.md files with matching frontmatter names, patch mounts @deepseek-ai/dsh-skill-filesystem with watch off, files whitelist is the bundle only. Not run: LLM-driven headless session — @deepseek-ai/dsh-headless installs from neither registry on this host) | 2026-10-10 | 27bac3f2 |
| dsh-semver | Semantic versioning toolbox: parse any semver string (semver_parse), compare versions with spec-compliant prerelease ordering (semver_compare, build metadata ignored), check npm-style ranges (semver_satisfies: ^ ~ >= <= > < =, x-ranges, hyphen, ||, AND, tuple-lock prerelease semantics, includePrerelease override), increment versions per npm semver.inc incl. prerelease counters and identifier restarts (semver_inc), report npm semver.diff release-type differences with special cases (semver_diff), sort version lists with build-metadata tie-break (semver_sort), find the lowest version a range accepts (semver_min_version: npm minVersion parity — unsatisfiable combinations report satisfiable: false instead of a guessed bound), check whether two ranges can be satisfied at once (semver_intersects: npm intersects parity, plus a witness version verified against both ranges), pull a version out of arbitrary text (semver_coerce: npm coerce parity — the first number run wins, so a changelog line coerces to its date 2026.0.0 and an unrepresentable component is reported as no-version with a reason, never rounded), and place a version relative to a whole range (semver_outside: npm gtr/ltr parity — above/below/inside plus the gap between alternatives that neither direction covers). v0.5.0 adds explaining why a version does or does not match (semver_explain: each || alternative expanded into the comparators npm itself builds, per-comparator accept/reject with the precedence that decided it, and the prerelease tuple-lock reported separately from a missed bound — so "does not satisfy" is no longer one undifferentiated answer). Zero runtime dependencies, pure logic; v0.3.0 fixed ~1.2.3 silently accepting 1.2.0/1.2.1 |
dsh plugin --profile web add github:TYEclipse/dsh-semver#v0.5.0 | ✅ active | ✅ | ✅ e2e (R85: isolated install github:TYEclipse/dsh-semver#v0.5.0 — China mirror on the first try, friction=none, resolved 0.5.0, wired=true; semver layer inside a 363-line composed config; installed-copy execution 10/10 probe cases on the published dist (11 tools registered) — semver_explain splits tuple-lock from a missed bound, reports npm's comparator shape (^1.2.3 → <2.0.0-0 >=1.2.3), picks the closest alternative for ||, honours includePrerelease, refuses an unparsable version; semver_satisfies / semver_outside / semver_coerce / semver_inc regressions unregressed; 176 tests green, coverage 93.41%; the npm-anchored oracle gained an explain region (per-comparator truth from npm Comparator.test, verdict from Range.test, tuple-lock read back off npm's comparator objects) plus two --check invariants. Not run: any UI) |
2026-10-31 | 40bdfdee2ee3a0f79c8083a185183e33a405c1e3 |
| Archify for DSH | Opt-in skill-only bundle (@tt-a1i/archify-dsh) bringing the Archify architecture-diagram skill to dsh: typed JSON specs (architecture / workflow / sequence / dataflow / lifecycle) rendered to self-contained interactive HTML with inline SVG, showcase-quality validation (9 artifact checks) — pure skill bundle, MIT | dsh plugin --profile web add @tt-a1i/archify-dsh@1.0.0 |
✅ active | ✅ zero deps, no install scripts, no telemetry or analytics SDK; render/validate/check run fully offline — only the finalize delivery receipt performs a bounded update-manifest fetch to tt-a1i.github.io |
✅ e2e (re-verified 2026-10-09 on the freshly released 1.0.0: isolated install @tt-a1i/archify-dsh@1.0.0 — China mirror on the first try, friction=none, resolved.installed 1.0.0; zero deps, no install scripts; archify-skill-filesystem row present in the composed config (370-line dump); archify doctor all-ok on Node 26; installed-copy CLI: render architecture example at showcase quality → 762,310-byte standalone HTML, then archify check 9/9 artifact checks pass. Earlier verification 2026-08-16 was the skill's own headless 9/9 showcase validation. Upstream moved 0.1.0 → 1.0.0; the row now pins the re-verified 1.0.0) |
2026-10-09 | 1.0.0 |
| dsh-finance | Money math toolbox: fixed-rate loan payment with amortization schedule and extra-payment impact (loan_payment), compound growth projection with monthly contributions and any compounding frequency (compound_growth), nominal ↔ effective annual rate conversion incl. continuous (rate_convert), NPV/IRR/payback cash-flow analysis with explicit no-root/multiple-root reporting (cashflow_analysis), retirement withdrawal planning — time-to-exhaustion + sustainable withdrawal with lasts_horizon verdict (retirement_plan), goal-based saving — months to a target or the contribution a deadline requires, with the deadline payment rounded up to the cent and the projection simulated from it, plus an on_track verdict and an honest unreachable instead of an invented month count (savings_goal), inflation-adjusted purchasing power — future cost, present value, and with a nominal return the exact Fisher real return plus nominal/real future values side by side, deflation and fractional horizons included (inflation_adjust), and multi-debt payoff planning — minimums first, the leftover budget on one target debt at a time, with both avalanche (highest rate first) and snowball (smallest balance first) simulated in full so the cheaper ordering, the interest saved and the order balances actually clear in are numbers rather than slogans, and a budget that never clears reported honestly instead of an invented month count (debt_payoff) — zero runtime dependencies, pure arithmetic, headline values verified against published anchors (Excel IRR example, mortgage tables) and an independent Python oracle that ships with the repo (test/oracle/anchors.py, eight sections + --check self-test; every test file carries an ORACLE: provenance marker) |
dsh plugin --profile web add github:TYEclipse/dsh-finance#v0.4.0 |
✅ active | ✅ | ✅ e2e (isolated install #v0.4.0, friction=none, resolved 0.4.0; installed-copy anchor replay — debt_payoff two cards 5000@22% + 2000@12% on 600/mo: avalanche 13 months, paid 7739.37, interest 739.37, card A clearing month 11 and card B month 13; snowball 14 months / 895.70 → avalanche saves 156.33 and one month; a 10/mo budget on a 24% card reported as never clearing with no invented month count; regressions loan_payment 1432.25 / 215610, savings_goal 65 months, inflation_adjust real 3.414634%, plus the 0.2.x/0.3.x suites; 133 tests, coverage 92.67%, oracle --check 51 anchors green) |
2026-10-13 | b4fa073 |
| dsh-ipcalc | IP & subnet math toolbox: full IPv4 subnet layouts (ipv4_subnet: network/broadcast/mask/hosts + IANA classes, RFC 3021 /31), minimal covering CIDR aggregation (ipv4_summarize), equal subnet splitting by part count or target prefix (ipv4_split: host-bit masking, 256-subnet cap), VLSM allocation from host counts (ipv4_allocate: smallest prefix that fits each request, placement order, leftover free blocks and waste, largest-first or input order, optional RFC 3021 /31 and /32 shortcuts), pool subtraction with the surviving free space (ipv4_exclude: minimal free CIDR list, exact free address count, per-entry removal counts, exclusions outside the pool reported rather than clipped), arbitrary address ranges turned into minimal exact CIDR lists (ipv4_range: the inverse of summarizing), IPv4/IPv6 parsing with RFC 5952 normalization and embedded-IPv4 recognition (ip_parse), IPv6 subnet layouts with 128-bit BigInt math and exact decimal-string address counts (ipv6_subnet, RFC 6164 /127), and CIDR membership tests for bare IPv4/IPv6 addresses with mixed-version rejection (ip_match) — zero runtime dependencies, pure local math, no network I/O | dsh plugin --profile web add github:TYEclipse/dsh-ipcalc#v0.4.0 |
✅ active | ✅ | ✅ e2e (R70: isolated install v0.4.0, mirror friction=none, resolved.installed 0.4.0; installed-copy execution of the published dist — ipv4_allocate 10.0.0.0/16 hosts [100,50,20,20,5] → 5 subnets, 264 of 65536 addresses used, 69 wasted, 12 free blocks; point-to-point run 1 host → /32 and 2 hosts → /31; capacity error reported as "requests need 384 addresses but 10.0.0.0/24 only has 256"; ipv4_exclude 10.0.0.0/16 minus 10.0.0.0/24 and 10.0.8.0/22 → 8 free blocks, 64256 addresses, 1280 removed; regressions ipv4_subnet 10.10.10.10/255.255.255.248 → 10.10.10.8/29 and ipv6_subnet /64 exact counts; 224 tests green, coverage 96.44%, oracle test/oracle/anchors.py with --check) | 2026-10-15 | 111c80e |
| dsh-geodesy | Geodesic math toolbox: great-circle distance with bearings and compass direction (geo_distance), initial/final bearings plus great-circle midpoint (geo_bearing), direct-problem destination point with round-trip check (geo_destination), decimal/DMS coordinate parsing (coord_parse), rhumb-line constant-heading distance & bearing (geo_rhumb), great-circle path intersection with antipodal crossing (geo_intersection), spherical polygon area via spherical excess (geo_area), off-track distance to a great-circle path — signed cross-track + along-track, perpendicular foot, distance to the segment (geo_cross_track), inside/outside test for a spherical polygon reporting both sides of the boundary with the containing region's area (geo_point_in_polygon), multi-leg route totals with per-leg heading and running total plus detour vs the straight line (geo_path), and spherical-cap geometry — exact area, boundary-circle length, pole/antimeridian-aware lat/lon box, distance-based containment (geo_circle) — zero runtime dependencies, pure trigonometry on the IUGG mean Earth radius, configurable radiusKm | dsh plugin --profile web add github:TYEclipse/dsh-geodesy#v0.4.0 | ✅ active | ✅ zero deps, no network | ✅ e2e (R72: isolated install #v0.4.0 friction=none, resolved 0.4.0; 11 tools on the installed copy; published-dist execution of the new tools — route totals, zero-length leg reported without a heading, and a 300 km cap with the pole and antimeridian box cases; older anchors unchanged: geo_distance 1067.311645 km, cross-track 111.19508 km, octant area 63758235.121609 km², rhumb 7076.411574 km; 223 tests, coverage 92.09%, all anchors in one committed oracle test/oracle/anchors.py with a --check self-check) | 2026-10-17 | 7b3705d |
| dsh-checkdigit | Check-digit mathematics toolbox: generate, validate, repair and auto-detect check digits for 17 schemes — Luhn (cards/IMEI), Verhoeff, Damm, ISBN-10 (mod-11, X) / ISBN-13, EAN-8/13, UPC-A, GTIN-14/SSCC-18, ISSN (ISO 3297, X), ISIN (ISO 6166), CUSIP (ANSI X9.6), SEDOL (7 chars, weights 1,3,1,7,3,9, letters A=10…Z=35, vowels never issued; digit-leading codes are old-style and must be all digits), IBAN (ISO 13616, 75+ country BBAN table), CAS Registry Number (position-weighted mod 10), ABA routing number (3-7-1 weighted mod 10) and NPI (US provider id: Luhn over the constant 80840 prefix, entity-type first digit 1 or 2) — plus ISBN-10 ⇄ ISBN-13 conversion (978-prefix semantics, hyphen-group preservation), a single-edit repair search (checkdigit_repair: corrected check character, swapped adjacent pair or one mistyped payload character, every candidate re-validated by the scheme itself) and a batch validator (checkdigit_batch: 1–50 values in one call, per-row scheme/validity plus valid/invalid/unrecognized counts and a per-scheme breakdown; empty or oversized lists error out instead of truncating) — zero runtime dependencies, integer arithmetic only, separators ignored on input, anchors reproducible from the in-repo oracle | dsh plugin --profile web add github:TYEclipse/dsh-checkdigit#v0.4.0 |
✅ active | ✅ | ✅ e2e (isolated install #v0.4.0 friction=none, resolved 0.4.0; published artifact executed: 6 tools registered, sedol B15KXQ → B15KXQ8, sedol B15KXQ7 → expected 8, npi 1245319599 valid, batch auto-detect 8 values → 4 valid / 3 invalid / 1 unrecognized with luhn×2 sedol×2 ean13×1 iban×1 isbn10×1 unknown×1, sedol repair 19 candidates, scheme count 17, v0.3.x anchors (luhn 79927398714 expected 3, IBAN GB82…5432 formatted) unregressed; --dump-config layer checkdigit at 364 lines) |
2026-10-16 | e17c8d6 |
| dsh-musictheory | Music theory math toolbox: parse any note name into MIDI/octave/pitch class/exact 12-TET frequency with enharmonic spellings (note_info), frequency → nearest note with cents deviation (freq_to_note), correctly spelled chords for 26 qualities (chord_build — G# major is G# B# D#, Cdim7 is C Eb Gb Bbb), correctly spelled scales for 17 types (scale_generate — F# major has E#), interval engine (interval_build — G# + M3 = B#; interval_info — C→F# is an A4, C→Gb a d5, compound intervals), and scale harmonization (scale_harmonize — C major → I ii iii IV V vi vii°, sevenths: true → Imaj7 ii7 iii7 IVmaj7 V7 vi7 viiø7), spelling-aware transposition of 1-16 notes through the letter ladder (transpose — Bb3 G3 D4 up a M2 = C4 A3 E4, G#4 up a M3 = B#4, F#4 down a P4 = C#4; aliases tritone/octave/whole_tone), and chord identification by pitch-class set with inversions, slash notation and omitted-tone voicings (chord_identify — E G C = Cmaj/E first inversion, C E G A = both C6 and Am7/C, C Eb Gb Bbb = all four dim7 rotations, C E Bb D = C9 missing the fifth, a chord written on B# stays on B#) — zero runtime dependencies, pure arithmetic, configurable A4 reference pitch, and scale identification from played notes (scale_identify — C D E F G A B = C major plus A natural minor and the other modes of the same pitch classes; C D E G A = both C major and A minor pentatonic; C# D# E# F# G# A# B# stays C# major, never Db major; A B C D E F G# = A harmonic minor only; when nothing matches exactly it falls back to containing scales with the missing degrees listed, C E G = C major pentatonic missing D A) | dsh plugin --profile web add github:TYEclipse/dsh-musictheory#v0.4.0 |
✅ active | ✅ | ✅ e2e (isolated install v0.4.0 — friction=none, mirror; resolved.installed 0.4.0; wired into profile bundles; 10 tools registered; installed-copy execution: C major set -> C major total=7, C# major spelling preserved (7 sharps), pentatonic pair C/A minor, A harmonic minor unique, contains fallback C major pentatonic missing D/A, chord_identify + transpose regressions intact; 136 tests, coverage 91.86%) | 2026-10-18 | b8c3757 |
| dsh-chem | Chemistry math toolbox: chemical formula parsing with nested parentheses, hydrates (CuSO4·5H2O), ionic charges (Fe3+/SO4^2-, documented disambiguation rule) and IUPAC molar mass with per-element breakdown (formula_mass), mass/mole/particle conversions with Avogadro constant (mass_moles, 6 modes), solution concentration math — molarity, preparation mass, C1V1=C2V2 dilution, percent w/v·v/v·mass (solution), pH/pOH/[H+]/[OH-] + Henderson–Hasselbalch buffer math at 25 °C (ph), equation balancing with exact BigInt rational arithmetic — smallest integer coefficients, charge conservation as an extra constraint when a species is charged, hydrate water included, smallest-sum solution plus unique: false when several independent balances exist, honest "cannot balance" instead of dropping species (balance_equation), and ideal-gas arithmetic with fixed units atm/L/mol/K plus kPa·mmHg·mL·°C conversions — PV=nRT solved for the missing quantity, molar volume (22.413969545014133 L/mol at STP), density ρ=P·M/(R·T) and molar mass from a measured density (gas_law) — zero runtime dependencies, pure arithmetic over the 118-element IUPAC table, anchors from an independent Python oracle (own periodic table, own tokenizer, own Fraction-based balancer) cross-validated against published textbook values Also stoichiometry: limiting-reagent arithmetic from an equation plus each reactant amount (mol or g) — extent of reaction, which reactant runs out first, product masses, leftovers, and theoretical / percent yield; every reactant needs an amount (no silent “excess” assumption) and co-limiting amounts are reported as such. |
dsh plugin --profile web add github:TYEclipse/dsh-chem#v0.3.0 | ✅ active | Zero runtime dependencies, no network, no telemetry, no install scripts — pure arithmetic over a bundled IUPAC table and BigInt rational balancing. | 150 tests / 90.35% coverage. Isolated install of github:TYEclipse/dsh-chem#v0.3.0: mirror first try friction=none, resolved.installed = 0.3.0, wired: true, chem layer in a 353-line composed config; installed copy registered all seven tools and reproduced the new anchors (Zn + 2 HCl limiting HCl → H2 0.2016 g) plus the v0.2.x anchors (permanganate 1/5/8/1/5/4, molar volume 22.413969545014133). Value oracle gained a --check self-verify against published molar masses, textbook coefficients, R, molar volume, the pH definition and mass conservation over every stoichiometry case (it caught a wrong product row while being written). Numbers 136 → 149 tests, coverage 88.89% → 90.35%. |
2026-10-19 | 262a2cf5818c8586ba8afb8fc6d2f2d02a4478c6 |
| dsh-probstat | Probability & statistical inference math toolbox: distribution calculator for six distributions — normal, binomial, poisson, exponential, uniform, geometric (pdf/cdf/survival/quantile/stats) (dist_calc), standard-normal z-table math — z ↔ probability/percentile, two-sided p-values, interval probabilities (z_score), confidence intervals — mean with z or Student-t critical values, proportion via Wilson score (confidence_interval), and event-probability identities — union/intersection/conditional/Bayes/complement/at-least-one (event_probability), one-sample hypothesis tests — mean with known sigma, mean with unknown sigma (Student-t, df = n − 1) and a single proportion against p0, reporting the statistic, all three p-values, the tail-specific critical value and the alpha decision, with a warning when the normal approximation is shaky (hypothesis_test), and sample-size planning for a target margin of error — mean closed form, proportion via Wald or the smallest Wilson-consistent n (sample_size) — zero runtime dependencies, pure arithmetic, normal quantile via Acklam (rel. err < 1.15e-9), Student-t cross-checked against published t-table values, anchors from an independent Python oracle (test/oracle/anchors.py), and two-sample hypothesis tests — difference of means with known sigmas (z), with unknown sigmas under Welch (unequal variances, fractional Welch–Satterthwaite df reported unrounded) or pooled (equal variances, df = n1 + n2 - 2) and a difference of two proportions (pooled normal approximation), reporting both estimates, the difference, the standard error, the statistic, df, all three p-values and the alpha decision, with a warning when the smallest expected cell is under 5 (two_sample_test), and two-sample hypothesis tests — difference of means with known sigmas (z), with unknown sigmas under Welch (unequal variances, fractional Welch–Satterthwaite df reported unrounded) or pooled (equal variances, df = n1 + n2 - 2) and a difference of two proportions (pooled normal approximation), reporting both estimates, the difference, the standard error, the statistic, df, all three p-values and the alpha decision, with a warning when the smallest expected cell is under 5 (two_sample_test) | dsh plugin --profile web add github:TYEclipse/dsh-probstat#v0.3.0 | ✅ active | ✅ | ✅ e2e (isolated install of github:TYEclipse/dsh-probstat#v0.3.0 — mirror first try, friction=none, resolved 0.3.0, wired into profile bundles; composed config 363 lines with the probstat layer; installed-copy execution of the published dist/ (not the source tree): 7 tools registered, two_sample_test anchors all match the in-repo oracle — mean_welch 5.2/4.6 sd 1.1/0.9 n 12/15 → t 1.524821541023691, df 21.166824916874845, two-sided p 0.1421069, critical 2.0786163; mean_pooled same data → pooledVariance 0.986, df 25, t 1.5601529; mean_z 102/98 sigma 10/12 n 40/50 → z 1.7245225, p 0.0846135, no reject; proportion 45/100 vs 32/90 → pooled p 0.4052632, z 1.3240058, one-sided p 0.0927506; v0.2.0 anchors not regressed: hypothesis_test z 0.8, sample_size n 35, normal cdf(1.96) 0.9750022) |
2026-10-21 | 66bcd3c |
| dsh-linalg | Linear algebra math toolbox: matrix multiplication with dimension checking (matrix_multiply), single-operation matrix math — transpose / determinant / inverse / trace / reduced row echelon form / rank / integer powers (matrix_compute), matrix factorizations (matrix_decompose: LU with partial pivoting P·A = L·U and singular matrices flagged, thin QR A = Q·R with a positive R diagonal, Cholesky A = L·Lᵀ for symmetric positive definite input — each returning the reconstruction residual it actually measured), symmetric eigen-decomposition with descending eigenvalues, unit eigenvectors signed so the leading non-zero component is positive and a measured max|A·v − λ·v| residual (matrix_eigen), least squares for overdetermined systems — the minimizer of ||A·x − b||, the minimum residual norm and max|Aᵀ(A·x − b)|, rank-deficient or underdetermined input rejected instead of picking one arbitrary minimizer (least_squares), linear system solver Ax=b with unique / infinite (particular solution + nullspace basis + free-variable count) / no-solution classification (solve_linear), and vector operations — dot / cross (3D) / norm / projection / angle in degrees (vector_ops) — zero runtime dependencies, pure local arithmetic, Gaussian elimination with partial pivoting, outputs rounded to 10 decimals, singular and inconsistent systems fail cleanly with explicit messages, anchors from an independent exact-arithmetic (fractions) oracle | dsh plugin --profile web add github:TYEclipse/dsh-linalg#v0.3.0 | ✅ active | ✅ | ✅ e2e (R76 reverification of v0.3.0: isolated install of github:TYEclipse/dsh-linalg#v0.3.0 via mirror, resolved 0.3.0, wired, linalg layer in a 363-line composed config; installed-copy run of the published dist passed 9/9 anchors — matrix_decompose lu on [[2,1,1],[4,-6,0],[-2,7,2]] → p [1,0,2], det −16, residual 0, L/U as documented; qr on [[3,0],[4,5]] → Q [[0.6,-0.8],[0.8,0.6]], R [[5,4],[0,3]]; cholesky on [[4,12,-16],[12,37,-43],[-16,-43,98]] → L [[2,0,0],[6,1,0],[-8,5,3]], det 36; indefinite input rejected with the pivot −3; least_squares fit → x (0.6666666667, 0.5), residual norm 0.4082482905, normal-equation residual 0; rank-deficient input rejected with rank 1; v0.2.0/v0.1.x anchors unchanged — det −1, eigen 3/1, solve (2.2,1.2), cross (−3,6,−3); oracle test/oracle/anchors.py section D re-derives every new anchor independently — exact fraction elimination for LU/Cholesky/least squares plus classical Gram–Schmidt for QR, with a --check that asserts L·U = P·A, QᵀQ = I, L·Lᵀ = A and residual orthogonality) — earlier R58 e2e: installed copy 22/22 anchors; non-symmetric and non-square input fail cleanly |
2026-10-22 | e70472b |
| dsh-complex | Complex-number math toolbox: parse rectangular/polar strings into the full identity (complex_parse — "3+4i"/"5∠53.13°", modulus, argument rad & deg, conjugate), one-operation arithmetic — add/subtract/multiply/divide/conjugate/reciprocal/integer power via De Moivre plus the general complex power a^b = exp(b·log a) with both operands complex and honest 0^0 / 0^non-positive rejections (i^i, 2^(1+i), (-1)^0.5) (complex_calc), polar ↔ rectangular conversion (complex_convert), principal values of exp/log/sin/cos/tan/sinh/cosh/sqrt plus the six inverses asin/acos/atan/asinh/acosh/atanh with each branch cut reported in the note (complex_functions), complete n-th root sets listed from the principal root (complex_roots, n ≤ 64), a solver for quadratics with complex coefficients — discriminant, both roots, the Vieta invariants −b/a and c/a, each root's residual, linear degeneration and an honest every-z / no-solution (complex_quadratic), and polynomials with complex coefficients, highest power first (complex_poly) — Horner evaluation of p(z) and p'(z), and every root up to degree 12 by Durand–Kerner with each root's residual and a real converged flag, multiple roots reported once with their multiplicity instead of near-duplicate numbers (z³-6z²+11z-6 → 1, 2, 3; (z-1)² → 1 ×2) — zero runtime dependencies, closed-form formulas on the principal branch (C99 continuation exactly on the cuts), output rounded at the boundary only, anchors from an in-repo independent Python oracle (cmath for functions, closed forms + Vieta invariants for roots) | dsh plugin --profile web add github:TYEclipse/dsh-complex#v0.3.0 | ✅ active | ✅ zero deps, no network | ✅ e2e (isolated install #v0.3.0 friction=none, resolved 0.3.0, wired; installed-copy execution: 7 tools, p(1+i) of z²-1 = -1+2i with p' 2+2i, z⁴-1 → -1, -i, i, 1 with max residual 0, (z-1)² → single root 1 with multiplicity 2 and distinct 1/2, (z-1)(z-2)(z-3) → 1, 2, 3, z²+iz+1 → golden-ratio pair 0.6180339887i and -1.6180339887i, degree 13 rejected with the reason; older anchors not regressed — i^i 0.2078795764, asin(2) 1.5707963268+1.3169578969i, 1^(1/4) = 1, i, -1, -i, z²-2z+2 → 1±i; 207 tests, coverage 94.20%; oracle section E self-check green) |
2026-10-23 | bcea9fa |
| dsh-boolean | Boolean algebra toolbox (zero runtime dependencies, pure local computation): truth_table (every assignment row up to 8 variables with minterm/maxterm summary and canonical DNF/CNF), logic_eval (one complete assignment, missing variables reported instead of defaulted), logic_equiv (all rows of the combined table, differing-row count plus a concrete counterexample), logic_convert (nnf / dnf / cnf / nand / nor), logic_minimize (Quine–McCluskey to a minimum sum of products: prime implicants, essential ones, minimum term count with ties broken by literals then reading order, optional dontCare minterms, and the exact cover terms in answer order) and v0.3.0's logic_kmap (Karnaugh map over 1–4 variables on Gray-coded axes, cells drawn as 1 / x / 0, every term of the minimal cover mapped back to the row/col/minterm cells it circles, each group flagged essential and flagged when it wraps around an edge) | dsh plugin --profile web add github:TYEclipse/dsh-boolean#v0.3.0 | ✅ active | ✅ zero runtime dependencies, no install scripts, no native binaries, no telemetry and no network access at all — every tool is local arithmetic over the parsed expression; no credential or file access | ✅ e2e (R78: isolated install of github:TYEclipse/dsh-boolean#v0.3.0, friction=none, resolved 0.3.0, wired; 363-line composed config with the boolean layer; installed-copy execution of the published dist — 6 tools registered, logic_kmap on a don't-care case returns minimal a over 4 cells, and the v0.2.0 anchors do not regress (majority a & b | a & c | b & c with coverTerms, three-way XOR minterms 1,2,4,7, a -> b false at a=1,b=0, De Morgan equivalence over 4 rows); 168 tests, coverage 96.95%, oracle test/oracle/anchors.py with a --check self-test that lays the K-map out independently in Python. NOT run: LLM-driven headless session (@deepseek-ai/dsh-headless cannot be installed on this host)) | 2026-10-24 | 0810b38 |
| MemOS Cloud for DSH | Cloud lifecycle-memory plugin: pre-step recall injection and post-turn memory sync backed by the MemOS Cloud API (memos.memtensor.cn); no tools registered — agent/pre-step + session/event hooks with graceful degradation when no API key is configured; MIT | dsh plugin --profile web add @memtensor/memos-cloud-dsh-plugin@0.1.0 |
⚠️ blocked on dsh 0.2.0-rc.2 (install rejected) | ✅ | ⚠️ re-check 2026-10-09 FAILED: the runtime refuses to install it — both 0.1.0 and 0.1.1 declare peerDependencies pinned to ^0.1.0-rc.6 || ^0.1.2-rc.1, so dsh 0.2.0-rc.2 rejects the install on both the China mirror and npmjs (exact-version exemption not granted). Previous verification 2026-08-20 (on the 0.1.x runtime): headless turn completed with the plugin mounted and no-credential degradation verified. Needs an upstream release compatible with dsh 0.2.x; failure 1/3 before the row is removed from the table |
2026-10-09 | 0.1.0 |
| PicGo Upload for DSH | Image & file uploading to the user's configured image host (PicGo Cloud, GitHub, S3, …) via the PicGo engine: picgo_upload tool + /picgo command + bundled picgo-upload skill; prefers the running PicGo desktop app (local server, 127.0.0.1:36677) and falls back to the in-process PicGo library reading ~/.picgo/config.json; MIT |
dsh plugin --profile web add @picgo/dsh-plugin@0.2.0 |
✅ active | ✅ | ✅ e2e (R67 re-verify of the expired row: upstream latest is still 0.2.0 so no re-pin; isolated install friction=none, resolved 0.2.0; structure — dsh.bundle.patch → cordis.patch.yml, lib/, skills/picg |
…