Bundle
dsh-plugin-guide
The dsh-plugin-guide knowledge base plus the dsh-plugin-dev CLI toolchain: official docs, Cordis primer, community deep-dives, and battle-tested pitfalls registered as an on-demand agent skill, with a scaffolder, static checker, and pack verifier for building DSH plugins.
- Source
- PerryLink
- stars
- 30 stars
- License
- Apache-2.0
- Updated
- Updated 16 days ago
Readme
<div align="center"> # 🐳 dsh-plugin-guide [](https://gitee.com/perrylink/dsh-plugin-guide) **Everything you need to build [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) plugins.** *Official docs archive · Cordis primer · community deep-dives · battle-tested pitfalls · agent skill · CLI toolchain* [](LICENSE) [](https://github.com/topics/dsh-plugin) [](#) [](https://github.com/PerryLink/dsh-plugin-guide/actions) [](https://github.com/PerryLink/dsh-plugin-guide/releases) [](https://www.npmjs.com/package/dsh-plugin-guide) [](https://www.npmjs.com/package/dsh-plugin-guide) [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md) </div> --- ## Compatibility | Surface | Status | |---|---| | Harness | DeepSeek Harness `0.1.1-rc.2` | | Node | `^22.19.0 || >=24.0.0` (DeepSeek Harness runtime) | | Platforms | All (plain ESM bundle; no native code, no network) | | Model | Any (no model interaction) | ## What you get `dsh-plugin-guide` is the DSH plugin-development knowledge base plus a CLI toolchain, packaged as one installable bundle. The knowledge base registers as the `dsh-plugin-guide` agent skill (visible in every session catalog, loading workflow steps, official docs, and community deep-dives on demand); the `dsh-plugin-dev` CLI adds three mechanical layers on top of it. - **Plugin contract & hard rules** — effects/disposers, waterfall `next()`, model-visible ⟺ logged, Schemastery config. - **Official docs archive** — a verbatim copy of the official repo docs (EN + ZH), byte-identical to upstream at the last verified snapshot. - **Cordis primer** — the five concepts and the mechanism timeline (repository-plugin introduced 0809, removed 0811; the two install channels). - **20+ real-world pitfalls** with root cause + fix (cordis dual copies, tsconfig trio, multi-frame zstd sessions, Windows junctions, stale npm `latest`, …). - **Community deep-dives** — 114 community repositories archived (15 deep-dived), plus a full source index where every fact links to its origin. - **CLI toolchain** — `dsh-plugin-dev new / check / verify`: scaffold, static-check, and pack-verify DSH plugins; every check links back to the skill section it enforces. ## Knowledge base | Path | What it is | |---|---| | `SKILL.md` | The `dsh-plugin-guide` agent skill: hard rules + task-based development paths | | `package.json` · `cordis.patch.yml` · `index.js` | The installable DSH bundle: `dsh.bundle.patch` manifest + entry point that registers the skill | | `guide/plugin-dev-guide.md` | The complete development guide (10 chapters) | | `guide/quick-reference.md` | One-page cheat sheet (5 languages) | | `guide/links.md` | Curated URL index: official dev docs (site ↔ local copies) + community doc links | | `references/official-docs/` | Verbatim copy of the official repo docs (EN + ZH) | | `references/*.md` | Research reports: repo docs, website, Cordis, the paper, community ecosystem, 114-repo archive (15 deep-dived) | | `scripts/` | Idempotent download scripts + integrity checker + topic snapshot generator | | `bin/` · `src/cli/` · `dist/` | The `dsh-plugin-dev` CLI: scaffolder, checker, verifier (TypeScript, tsdown-bundled) | | `templates/` | TS + JS scaffold skeletons: contract template, Config, tests, cordis.patch.yml, five-language READMEs | | `downloads/` | Raw snapshots — generated by `scripts/`, not committed | ## CLI toolchain The bundle ships the zero-runtime-dependency `dsh-plugin-dev` CLI (`bin/` → tsdown-bundled `dist/dsh-plugin-dev.js`). Each check cites the skill section it enforces, so an agent can keep auditing manually. ```sh dsh-plugin-dev new <name> [--lang ts|js] [--dir <path>] [--force] [--git] dsh-plugin-dev check [--cwd <dir>] [--json] [--strict] dsh-plugin-dev verify [--cwd <dir>] [--dsh <bin>] [--pnpm <bin>] ``` | Subcommand | What it does | |---|---| | `new <name>` | Scaffolds a TS or JS plugin repo: `src/index.ts` contract template, Schemastery Config, tests, tsdown/vitest, commented `cordis.patch.yml`, five-language READMEs. Idempotent; refuses non-empty targets without `--force`. | | `check` | Static checks: `cordis.patch.yml` validity, `package.json` metadata (`dsh.bundle.patch` pointer, peer deps, engines, files whitelist), five-language README consistency, engineering red-line patterns. Emits CI-consumable JSON. | | `verify` | `pnpm pack`, then install/start/uninstall the bundle in a clean mkdtemp `DSH_HOME` profile (aligned with `verify:self-contained`). Failures report the log tail plus suggestions. | ### CLI configuration The CLI has no hardcoded tunables — each is a flag or an environment variable. | Tunable | Flag | Env | Default | |---|---|---|---| | Templates directory | — | `DSH_PLUGIN_DEV_TEMPLATES` | `<package>/templates` | | dsh binary | `--dsh` | `DSH_PLUGIN_DEV_DSH` | `dsh` | | pnpm binary | `--pnpm` | `DSH_PLUGIN_DEV_PNPM` | `pnpm` | | Install/pack timeout | `--timeout` | `DSH_PLUGIN_DEV_TIMEOUT` | `300000` ms | | Headless smoke timeout | `--smoke-timeout` | `DSH_PLUGIN_DEV_SMOKE_TIMEOUT` | `120000` ms | ### Upstream roadmap `dsh-plugin-dev` is an upstream candidate for the official plugin-development CLI (planned item C12): the scaffolder/checker/verifier are the mechanical layers, while `SKILL.md` + `guide/` stay the cognitive layer. ## Quick start ```sh # 1. install the bundle into your profile dsh plugin --profile web add "github:PerryLink/dsh-plugin-guide#main" # or from npm (published releases) dsh plugin --profile web add dsh-plugin-guide # 2. restart and verify the row dsh --profile web --dump-config | grep -A3 'id: dsh-plugin-guide' ``` Then just ask your agent: *"Use the dsh-plugin-guide skill to build me a … plugin."* Or drive the CLI directly: ```sh npx dsh-plugin-guide new hello-plugin # scaffold a TS plugin repo npx dsh-plugin-guide check --json # static-check it npx dsh-plugin-guide verify # pack + clean-profile smoke ``` ## Install & uninstall - **git channel** (latest `main`): `dsh plugin --profile web add github:PerryLink/dsh-plugin-guide#<sha>` — pin a commit for reproducibility; the entry point is plain ESM JS, no build step. - **npm channel** (published releases): `dsh plugin --profile web add dsh-plugin-guide`. - **tarball channel**: `pnpm pack` in this repo, then `dsh plugin --profile web add ./dsh-plugin-guide-<version>.tgz`. - **uninstall**: `dsh plugin --profile web remove dsh-plugin-guide`. ## Copy as a plain agent skill You can also copy the whole folder into your agent's skill directory (relative paths stay intact): ```powershell # Windows (PowerShell) pwsh -File scripts/install-skill.ps1 ` -Target "$env:USERPROFILE\.deepseek\skills\dsh-plugin-guide" # or <project>\.agents\skills\dsh-plugin-guide ``` ```bash # macOS / Linux pwsh -File scripts/install-skill.ps1 -Target ~/.deepseek/skills/dsh-plugin-guide # or <project>/.agents/skills/dsh-plugin-guide ``` The installer skips `downloads/` (generated) and `.github/`, then verifies every copied file byte-for-byte. A manual `Copy-Item -Recurse` of the whole folder also works. ## Configuration The skill bundle exposes no Schemastery `Config` — it registers the knowledge base as an agent skill with no tunable keys. The `dsh-plugin-dev` CLI reads its tunables from flags and `DSH_PLUGIN_DEV_*` environment variables (see [CLI toolchain](#cli-toolchain)). ## Tools & surfaces | Surface | Kind | Notes | |---|---|---| | `dsh-plugin-guide` | skill | Registered via `ctx.skills`; loads `SKILL.md` + `./guide/` + `./references/` on demand | | `dsh-plugin-dev` | bin (CLI) | `new` / `check` / `verify` subcommands; not a DSH plugin row | ## Permissions & data - **Permissions**: declares `filesystem:read` in its workshop manifest. - **Data**: read-only — reads its own bundled `guide/` and `references/` files. No network requests, no writes, no model calls. ## Security boundaries - **Read-only knowledge base.** The bundle only reads its own files; it never writes, never calls the network, and never invokes a model. - **Official docs are verbatim copies.** `references/official-docs/` is never edited here; report issues upstream and re-sync only with `scripts/sync-official-docs.ps1`. - **Distribution boundaries.** Bundled third-party content keeps its upstream license; see [NOTICE.md](NOTICE.md) (e.g. `downloads/` is local-only; `awesome-dsh-plugins` must not be redistributed). ## Known limitations - **Official docs are a snapshot.** Re-sync with `scripts/sync-official-docs.ps1` when upstream moves; the freshness stamp and commit hash reference `references/official-docs/SNAPSHOT.md`. - **`downloads/` is generated, not committed.** Raw snapshots (community repo archives, Discussions, articles) must be generated with the scripts before use. - **`awesome-dsh-plugins` content is local-only.** Its upstream declares an internal-use constraint, so it is not redistributed with the repo. ## Keeping it fresh ```sh pwsh -File scripts/sync-official-docs.ps1 # verbatim docs copy from a local checkout pwsh -File scripts/download-sources.ps1 # official site/docs, Cordis, paper pwsh -File scripts/download-community-repos.ps1 # community repositories (codeload tarballs) pwsh -File scripts/download-community-articles.ps1 # zh/en/HN community articles pwsh -File scripts/archive-discussions.ps1 # official Discussions (needs $env:GH_TOKEN) pwsh -File scripts/gen-topic-snapshot.ps1 -OutDir <dir> # dsh-plugin topic census pwsh -File scripts/verify-kit.ps1 -Checkout <checkout> # critical paths + link scan + docs drift ``` ## Development The skill bundle (`index.js`) is plain ESM with no build step; the `dsh-plugin-dev` CLI is TypeScript built by tsdown. Gates: ```sh pnpm install --frozen-lockfile pnpm run typecheck && pnpm run typecheck:ci pnpm test pnpm run build pnpm run verify:artifacts # dogfood self-check + scaffold smoke (no network) pnpm run verify:self-contained # pack + clean-profile install/start/uninstall smoke pnpm pack pwsh -File scripts/verify-kit.ps1 # critical paths + link scan (+ docs drift with -Checkout <checkout>) ``` ## Topics `dsh`, `deepseek-harness`, `dsh-plugin`, `cordis`, `agent-skill`, `plugin-development`, `knowledge-base`, `cli`, `scaffold`, `checker` ## Contributors - [PerryLink](https://github.com/PerryLink) — creator and maintainer: knowledge-base content, the installable-bundle transformation, ecosystem submissions, and community engineering. - Day-to-day maintenance is assisted by DeepSeek Harness agents (they hold no GitHub account and are listed here for transparency, not as contributors). ## PerryLink DSH Plugin Family This project is one of the [15 DeepSeek Harness plugins](https://github.com/PerryLink) maintained by [PerryLink](https://github.com/PerryLink). If this one helps you, the others likely will too: | Plugin | One-liner | |---|---| | [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors | | [dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck) | Engineering-discipline guard: requirements grill, test gates, adversary review | | [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Durable background child agents with a Web UI sidebar, messaging and interrupt | | [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | LSP diagnostics, formatting, completion, code actions and rename over language servers | | [dsh-output-styles](https://github.com/PerryLink/dsh-output-styles) | Claude Code outputStyles-equivalent runtime style switching | | [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore | | [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Claude Code-style declarative allow/deny/ask permission rules with audit | | [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | Second-model auto-review on the approval chain, fail-closed by default | | [dsh-memento](https://github.com/PerryLink/dsh-memento) | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool | | [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | Security-audit skill pack: secret scan, dependency and supply-chain review | | [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | Pin sessions in the Web sidebar with durable ordering | | [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Terminal-style input history for the web composer: arrows, Ctrl+R search | | [dsh-github](https://github.com/PerryLink/dsh-github) | GitHub PR/issues integration for DSH, every write gated by approval | | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | Plugin-development knowledge base as an on-demand agent skill | | [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH | ## Disclaimer Community-maintained, **not** an official DeepSeek product. DeepSeek Harness is in developer preview and ships breaking changes; when in doubt, the official docs in `references/official-docs/` are the source of truth. ## License [Apache License 2.0](LICENSE) © 2026 dsh-plugin-guide contributors — our own text (`SKILL.md`, `guide/`, `references/`, `scripts/`, this README) is Apache-2.0; bundled third-party content is documented in [NOTICE.md](NOTICE.md).
Install
dsh plugin --profile web add github:PerryLink/dsh-plugin-guide#e2ca50e1d2da0c11cae8740a07d2a450654126a4
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-plugin-guide from the hub
- This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.