dsh-plugin-guide 0.4.4 → 0.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.en.md ADDED
@@ -0,0 +1,375 @@
1
+ <div align="center">
2
+
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-hero-en-dark.webp">
5
+ <img src="docs/assets/dsh-plugin-guide-hero-en-light.webp" width="100%" alt="dsh-plugin-guide: ENTRY / FLOW / BOOST question lists; the verdict belongs to dsh-standards">
6
+ </picture>
7
+
8
+ # dsh-plugin-guide
9
+
10
+ **Ask the right question before you build: pin down a DSH plugin's ENTRY / FLOW / BOOST layers, then hand the verdict to the tool that actually runs the checks.**
11
+
12
+ The guide layer for DSH plugins — it explains what to check, why it matters, and which tool owns the verdict; it never certifies, scores, or ranks, it only routes checks to `dsh-standards`.
13
+
14
+ [Install](#three-step-setup) · [Configuration](#configuration) · [FAQ](#faq) · [简体中文](README.md) · [English](README.en.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
15
+
16
+ [![License](https://img.shields.io/badge/license-Apache--2.0-3366CC?style=flat-square&labelColor=2B3245)](LICENSE)
17
+ [![DSH](https://img.shields.io/badge/DSH-%E2%89%A50.2.2%20%3C0.3.0-4B67B4?style=flat-square&labelColor=2B3245)](#compatibility)
18
+ [![npm](https://img.shields.io/npm/v/dsh-plugin-guide?style=flat-square&labelColor=2B3245&color=CB3837)](https://www.npmjs.com/package/dsh-plugin-guide)
19
+ [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-plugin-guide/verify.yml?branch=main&label=CI&style=flat-square&labelColor=2B3245)](https://github.com/PerryLink/dsh-plugin-guide/actions/workflows/verify.yml)
20
+ [![Node](https://img.shields.io/badge/node-%3E%3D24.9-339933?style=flat-square&labelColor=2B3245)](#compatibility)
21
+
22
+ [![Stars](https://img.shields.io/github/stars/PerryLink/dsh-plugin-guide?style=flat-square&labelColor=2B3245)](https://github.com/PerryLink/dsh-plugin-guide/stargazers)
23
+ [![npm downloads](https://img.shields.io/npm/dm/dsh-plugin-guide?style=flat-square&labelColor=2B3245&color=CB3837)](https://www.npmjs.com/package/dsh-plugin-guide)
24
+ [![Gitee](https://img.shields.io/badge/Gitee-mirror-C71D23?style=flat-square&labelColor=2B3245&logo=gitee)](https://gitee.com/perrylink/dsh-plugin-guide)
25
+
26
+ ```sh
27
+ dsh plugin --profile web add dsh-plugin-guide
28
+ ```
29
+
30
+ </div>
31
+
32
+ <sub>Community guide, not affiliated with DeepSeek; not a certification, not a ranking, not a security audit. Canonical repository: <https://github.com/PerryLink/dsh-plugin-guide> (Gitee is a read-only snapshot).</sub>
33
+
34
+ ## What it is
35
+
36
+ `dsh-plugin-guide` is the **guide layer** for DSH plugins: it explains what to check, why it matters, and which tool owns the verdict. Once installed it registers one on-demand agent skill whose body is `SKILL.md`; that body's relative references (`./docs/...`) resolve into this package through a directory `resourceBase`. It does not certify, score, or rank: checks live in `dsh-standards`, the rule text lives in `dsh-plugin-spec`, and build/scaffold work belongs to `dsh-primer`.
37
+
38
+ | Package | Role |
39
+ |---|---|
40
+ | **`dsh-plugin-guide`** | This package: the prose guide, the three-layer map, the agent skill |
41
+ | **`dsh-standards`** | The execution umbrella: ENTRY/FLOW checks, the `dsh-levels` audit, the spec files |
42
+ | **`dsh-plugin-spec`** | The low-level rule text and clause source |
43
+ | **`dsh-primer`** | The legacy build/scaffold skill and CLI (formerly `dsh-plugin-guide` 0.3.x) |
44
+
45
+ <picture>
46
+ <source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-flow-v4-dark.svg">
47
+ <img src="docs/assets/dsh-plugin-guide-flow-v4-light.svg" width="100%" alt="dsh-plugin-guide assembly and routing: cordis.patch.yml → index.js → SKILL.md → docs/levels.md → dsh-standards">
48
+ </picture>
49
+
50
+ ## Three-step setup
51
+
52
+ 1. **Install** (pick one channel):
53
+
54
+ ```sh
55
+ # git channel (latest main)
56
+ dsh plugin --profile web add github:PerryLink/dsh-plugin-guide
57
+ # npm channel (published releases)
58
+ dsh plugin --profile web add dsh-plugin-guide
59
+ # tarball channel: npm pack in this repo, then
60
+ dsh plugin --profile web add ./dsh-plugin-guide-<version>.tgz
61
+ ```
62
+
63
+ No build step: `index.js` is the shipped artifact, and `SKILL.md` plus `docs/` are the skill body.
64
+
65
+ 2. **Ask the agent to use the skill once** (skills load on demand, never as a resident prompt):
66
+
67
+ ```text
68
+ > Use dsh-plugin-guide to review ./my-plugin: report the ENTRY verdict first, then say which layers are not-run.
69
+ ```
70
+
71
+ 3. **Verify it took effect**:
72
+
73
+ ```sh
74
+ dsh --profile web --dump-config | grep -A2 'id: dsh-plugin-guide'
75
+ ```
76
+
77
+ The session skill catalog should list `dsh-plugin-guide`, and the loaded body should point at `docs/levels.md` (the acceptance shape recorded in `package.json#dshWorkshop.capability.expected`).
78
+
79
+ **Uninstall**: `dsh plugin --profile web remove dsh-plugin-guide` (or delete the row from your profile patch). Registration is a Cordis effect, so unloading removes it and leaves no residue.
80
+
81
+ ## Core capabilities
82
+
83
+ - **Three-layer map** — ENTRY asks "can it be recognized, installed, and started?", FLOW asks "can a user install, configure, use, upgrade, and remove it?", BOOST asks "does it use Cordis well?". Three tracks, not three grades; they do not add up to a score or a certificate.
84
+ - **Check routing** — this package explains and routes only: conformance checks go to `dsh-standards`, the rule text is in `dsh-plugin-spec`, and building a plugin means `dsh-primer` (the old `dsh-plugin-dev` CLI lives there, not here).
85
+ - **Evidence rules** — `static` ≠ `runtime`, `recognized` ≠ `pass`, `not-run` ≠ `pass`; a PASS needs a command, an artifact, an environment, and a date — otherwise write `not-run`, `not-measured`, or `incomplete`.
86
+ - **On-demand skill** — `index.js` reads `SKILL.md`, strips the YAML frontmatter, and registers it with `source: bundled` and a directory `resourceBase`; the skill enters the context only when asked for, so it adds no resident prompt prefix.
87
+ - **No borrowed authority** — no verdicts, no market gate, no official claim; the wording discipline is written down in `SKILL.md` and `STANDARDS.md` and can be checked line by line.
88
+
89
+ ### The three layers
90
+
91
+ | Layer | Question | Can it produce a verdict? |
92
+ |---|---|---|
93
+ | **ENTRY** | Can it be recognized, installed, and started? | Yes: recognized / runtime / failed / incomplete / unavailable |
94
+ | **FLOW** | Can a user install, configure, use, upgrade, and remove it? | Yes, where runtime evidence exists; otherwise `not-run` |
95
+ | **BOOST** | Does it use Cordis well? | No plugin-level verdict; evidence is recorded per practice |
96
+
97
+ Read the one-page map first: [docs/levels.md](docs/levels.md).
98
+
99
+ ### Running the checks
100
+
101
+ ```sh
102
+ # ENTRY recognition only (no runtime claim)
103
+ npx dsh-standards ./my-plugin --scope entry --entry-claim static
104
+
105
+ # Three-layer audit; unrun layers stay not-run / not-measured
106
+ npx -p dsh-standards dsh-levels ./my-plugin --format json
107
+ ```
108
+
109
+ `recognized` is not a pass, `static` is not a pass, and `not-run` is not a pass either. Exit codes: `0` completed, `1` attributable FAIL, `2` incomplete/not-run, `3` usage error — a `not-run` or `incomplete` result must never be written as a pass (see [docs/entry.md](docs/entry.md)).
110
+
111
+ ### What changed in 0.4.0
112
+
113
+ - The previous agent skill and the `dsh-plugin-dev` CLI moved to [`dsh-primer`](https://github.com/PerryLink/dsh-primer).
114
+ - This package is now the **guide** layer: three-layer map, check routing, and evidence rules.
115
+ - The old 0.3.x npm versions are deprecated and remain available for existing installs. The 0.4.0 line is a breaking product change; users pinned to `^0.3` will not auto-upgrade.
116
+ - Checks live in [`dsh-standards`](https://github.com/PerryLink/dsh-standards), not in this package.
117
+
118
+ ## Configuration
119
+
120
+ This package has no Schemastery `Config`: `cordis.patch.yml` only `insert`s one row, and the plugin reads no `config.*` key at all. The only things you can adjust are that row and the profile it lives in.
121
+
122
+ | Key | Default | Meaning |
123
+ |---|---|---|
124
+ | `id` | `dsh-plugin-guide` | Row identifier; a later patch layer overrides this row by `id` (whole-row replacement) |
125
+ | `name` | `dsh-plugin-guide` | The module the loader imports (`package.json#main` → `index.js`) |
126
+ | `config` | not accepted | This package reads no config keys; anything written here has no effect |
127
+
128
+ <details>
129
+ <summary>Full patch file (cordis.patch.yml, 9 lines)</summary>
130
+
131
+ ```yaml
132
+ # dsh-plugin-guide bundle layer: register the packaged knowledge base as an agent skill.
133
+ # This file is the `dsh.bundle.patch` layer (see package.json#dsh.bundle.patch).
134
+ # Layer semantics: a YAML array of row verbs; `insert` adds plugin rows to the
135
+ # composed config. Later layers override a row by `id` (whole-config replacement).
136
+ - insert:
137
+ # `id`: stable row identifier used by later layers to override this row.
138
+ - id: dsh-plugin-guide
139
+ # `name`: the module the loader imports; resolves to this package's entry (package.json#main → index.js).
140
+ name: dsh-plugin-guide
141
+ ```
142
+
143
+ </details>
144
+
145
+ To turn it off: delete that row from the profile patch, or run `dsh plugin --profile web remove dsh-plugin-guide`.
146
+
147
+ ## FAQ
148
+
149
+ <details>
150
+ <summary>Will it decide whether my plugin is good enough?</summary>
151
+
152
+ No. This package is the guide layer, not the judge: it explains the three layers, routes checks to `dsh-standards`, and states the evidence rules. BOOST has no plugin-level pass/fail either — a practice can carry evidence, but a plugin never gets a "BOOST level".
153
+
154
+ </details>
155
+
156
+ <details>
157
+ <summary>Does a `recognized` or `static` result count as a pass?</summary>
158
+
159
+ No. `recognized` only means the package shape can be identified and `static` only means a static preflight ran; `static` ≠ `runtime` and `not-run` ≠ `pass`. When FLOW has run only a few journeys the status is `not-run`, never a soft pass — and a FLOW pass rate or grade must not be published either.
160
+
161
+ </details>
162
+
163
+ <details>
164
+ <summary>Will installing it touch my profile or my other plugins?</summary>
165
+
166
+ No. It registers exactly one skill with the `skills` service (name `dsh-plugin-guide`, `source: bundled`), wrapped in `ctx.effect()` so unloading or hot-reloading removes it; it registers no tools, commands, client slots, or `webServer` prefix, makes no network requests, and declares only the `filesystem:read` permission.
167
+
168
+ </details>
169
+
170
+ <details>
171
+ <summary>What about existing 0.3.x users?</summary>
172
+
173
+ 0.3.x is deprecated but still installable; 0.4.0 is a product switch, so a profile pinned to `^0.3` will not auto-upgrade. The legacy build/scaffold skill and the `dsh-plugin-dev` CLI now belong to [`dsh-primer`](https://github.com/PerryLink/dsh-primer); this package keeps only the guide and the routing.
174
+
175
+ </details>
176
+
177
+ <details>
178
+ <summary>Where do the checker and the rule text actually live?</summary>
179
+
180
+ The checker and the three-layer audit live in [`dsh-standards`](https://www.npmjs.com/package/dsh-standards) (`npx dsh-standards`, `npx -p dsh-standards dsh-levels`); the rule text lives in [`dsh-plugin-spec`](https://github.com/PerryLink/dsh-plugin-spec). The `dsh.standards` placeholder in this package's `package.json` still reads entry/flow = `not-run`, boost = `not-measured`, `evidence: null` — that means "not measured", not "passed".
181
+
182
+ </details>
183
+
184
+ ## Security boundaries
185
+
186
+ - No official endorsement, certification, accreditation, or security audit.
187
+ - No score, ranking, or market gate.
188
+ - No fabricated runtime evidence: `static` ≠ `runtime`, `not-run` ≠ `pass`.
189
+ - BOOST is advice and evidence, never a plugin grade.
190
+ - **The text is the boundary.** The guide only states what it can point at a source document for; a practice that cannot be measured (developer hours, maintenance cost) is recorded as a WARN or a note, never as an invented number (see [docs/boost.md](docs/boost.md)).
191
+ - **Non-official by construction.** No certification, accreditation, security audit, ranking, or market gate; the outward wording avoids official / certified / secure / recommended / ranked claims (see [STANDARDS.md](STANDARDS.md)).
192
+
193
+ ## Permissions & data
194
+
195
+ - **Permissions**: `package.json#dshWorkshop.permissions` declares only `filesystem:read`. At `apply()` time the plugin reads the packaged `SKILL.md`, and the skill body's relative references resolve into the package's `docs/` through the directory `resourceBase`.
196
+ - **Data**: nothing is written to the workspace or anywhere outside the profile; no telemetry, analytics, advertising, or hosted account is added, and no data is sent to PerryLink (see [PRIVACY.md](PRIVACY.md)). The host's own session/log storage and its retention are controlled by the host.
197
+ - **Uninstall**: removing the package deletes its code only — not host logs, workspace files, or documents you already produced.
198
+
199
+ ## Known limitations
200
+
201
+ - **The guide produces no verdict.** It has no judge capability: it can neither mark a plugin pass nor mark it fail; a verdict comes only from a result `dsh-standards` actually ran.
202
+ - **The FLOW runtime is still a draft.** J1/J2/J4/J6 have runtime evidence on fixtures; J3/J7 only reach fixture-level runtime; J5/J8 have static preflight only; browser rendering is not covered yet — so "only a few journeys ran" must be written as `not-run` (see [docs/flow.md](docs/flow.md)).
203
+ - **BOOST's measured examples are fixtures or synthetic captures.** They are not production baselines; LEV-3, LEV-6, and LEV-7 have the strongest evidence, the others only loader/context-level fixtures; without evidence the status is `not-measured` (see [docs/boost.md](docs/boost.md)).
204
+ - **The rules track the host.** The baseline is DSH `0.2.2-alpha.3` / Cordis `4.0.6-alpha.2` as of 2026-11-04; Node has required `>=24.9.0` since `0.2.2-alpha.2`; `ctx.menus` is gone in `0.2.2-alpha.3`; and since `0.2.1-alpha.4` the declared `engines.dsh` decides the version corridor alone (see [docs/levels.md](docs/levels.md)).
205
+ - **The `dsh.standards` placeholder is not a score.** In `package.json`, entry/flow = `not-run`, boost = `not-measured`, `evidence: null` — a placeholder only.
206
+ - **0.3.x stays on the old shape.** 0.3.x is a deprecated product line; the build/scaffold capability now lives in `dsh-primer`, and this package ships no CLI.
207
+
208
+ ## Interoperability with other DSH plugins
209
+
210
+ This plugin **does not interfere** with other plugins:
211
+
212
+ - **No tool, command, or service-key collision.** It registers no tools, commands, or service keys, so it owns no bare names and cannot collide on a service key.
213
+ - **No slot or HTTP route collision.** It registers no client slot key and no `webServer` prefix.
214
+ - **The only dependency is the `skills` service.** `export const inject = ['skills']`, provided by the host; it does not import the host implementation, it only consumes that service.
215
+ - **No shared event listeners.** It does not listen on ordering-sensitive events such as `agent/pre-step` or `tools/post-execute`, so there is no waterfall chain to short-circuit.
216
+ - **No patch-layer collision.** The bundle patch only `insert`s its own row; it never overrides a built-in row's `config`.
217
+ - **No global mutation.** It patches no prototypes, rewrites no `process.env`, and replaces no global fetch dispatcher.
218
+ - **Registration is an effect.** `ctx.effect(() => ctx.skills.register(...))` — stop or hot-reload removes the contribution.
219
+
220
+ Baseline: DSH `0.2.2-alpha.3` / Cordis `4.0.6-alpha.2` (as recorded in [docs/levels.md](docs/levels.md), 2026-11-04).
221
+
222
+ ## Compatibility
223
+
224
+ | Surface | Status |
225
+ |---|---|
226
+ | Harness | `engines.dsh` = `>=0.2.2-0 <0.3.0` (since `0.2.1-alpha.4`, `engines.dsh` decides alone; npm's default semver needs an explicit `^0.2.2-alpha.3` union arm). Baseline DSH `0.2.2-alpha.3` (npm `alpha`), Cordis `4.0.6-alpha.2`. |
227
+ | Node | `>=24.9.0` (the 0.2.2 line's requirement, since `0.2.2-alpha.2`) |
228
+ | Platforms | Anywhere DSH runs (plain-text skill; no browser half, no native extension) |
229
+ | Model | No model calls: the host injects the skill text into context, so no extra model capability is required |
230
+
231
+ ## Ecosystem & quality
232
+
233
+ - [npm package page](https://www.npmjs.com/package/dsh-plugin-guide) (published releases, `0.4.3`)
234
+ - [Gitee mirror](https://gitee.com/perrylink/dsh-plugin-guide) (read-only snapshot; GitHub is canonical)
235
+ - [dsh-standards](https://www.npmjs.com/package/dsh-standards) (the checker and the `dsh-levels` three-layer audit)
236
+ - [dsh-plugin-spec](https://github.com/PerryLink/dsh-plugin-spec) (the low-level rule text and clause source)
237
+ - [dsh-primer](https://github.com/PerryLink/dsh-primer) (the legacy build/scaffold skill and CLI)
238
+ - Repository docs: [the three layers](docs/levels.md) · [ENTRY](docs/entry.md) · [FLOW](docs/flow.md) · [BOOST](docs/boost.md)
239
+ - Repository governance: [CHANGELOG](CHANGELOG.md) · [STANDARDS.md](STANDARDS.md) · [CONTRIBUTING](CONTRIBUTING.md)
240
+
241
+ ## Development
242
+
243
+ ```sh
244
+ npm test # node --test tests/*.test.mjs
245
+ npm run test:pack # npm pack --dry-run
246
+ python scripts/gen-readme-assets.py # regenerate the light/dark hero SVGs in docs/assets (Python + Pillow)
247
+ ```
248
+
249
+ No build step: `index.js` is the shipped artifact. CI is [.github/workflows/verify.yml](.github/workflows/verify.yml) (a Node 22 and 24 matrix running the unit tests plus `npm pack --dry-run`). The README images are generated programmatically by [scripts/gen-readme-assets.py](scripts/gen-readme-assets.py); re-running it is idempotent and overwrites in place.
250
+
251
+ | Path | Purpose |
252
+ |---|---|
253
+ | `index.js` | The single host face: reads `SKILL.md`, strips the frontmatter, registers the skill through `ctx.effect` |
254
+ | `SKILL.md` | The skill body and its `description` (YAML frontmatter) |
255
+ | `docs/` | The three-layer map and the ENTRY/FLOW/BOOST guides the skill body references |
256
+ | `locale/` | The skill's zh/en display metadata (`meta.title`, `meta.description`) |
257
+ | `cordis.patch.yml` | The bundle patch layer; `insert`s only its own row |
258
+ | `tests/` | `node --test`: skill frontmatter parsing and registration |
259
+ | `scripts/gen-readme-assets.py` | Programmatic image generation (Python + Pillow) |
260
+ | `STANDARDS.md` · `NOTICE.md` · `PRIVACY.md` | Standards status, NOTICE, privacy statement |
261
+
262
+ ## Family & thanks
263
+
264
+ This project is part of the DeepSeek Harness plugin family from [PerryLink](https://github.com/PerryLink) (all Apache-2.0). If this guide is useful, **a star helps the next person find it** — nothing is gated behind it.
265
+
266
+ - [@PerryLink](https://github.com/PerryLink) — creator and maintainer: the three-layer map and the ENTRY/FLOW/BOOST guide text, the `SKILL.md` skill, the bundle patch layer, and the five-language docs.
267
+
268
+ <details>
269
+ <summary>Expand all plugins</summary>
270
+
271
+ | Plugin | Status |
272
+ |---|---|
273
+ | **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** | |
274
+ | **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** | |
275
+ | **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | |
276
+ | **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | 🧊 FROZEN — see the repo README |
277
+ | **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** | |
278
+ | **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** | |
279
+ | **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | 🧊 FROZEN — see the repo README |
280
+ | **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | |
281
+ | **[dsh-click](https://github.com/PerryLink/dsh-click)** | |
282
+ | **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | |
283
+ | **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** | |
284
+ | **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** | |
285
+ | **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | 🧊 FROZEN — see the repo README |
286
+ | **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** | |
287
+ | **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | |
288
+ | **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** | |
289
+ | **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** | |
290
+ | **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** | |
291
+ | **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** | |
292
+ | **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** | |
293
+ | **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** | |
294
+ | **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | |
295
+ | **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** | |
296
+ | **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** | |
297
+ | **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | |
298
+ | **[dsh-github](https://github.com/PerryLink/dsh-github)** | |
299
+ | **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** | |
300
+ | **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** | |
301
+ | **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** | |
302
+ | **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** | |
303
+ | **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** | |
304
+ | **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** | |
305
+ | **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** | |
306
+ | **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** | |
307
+ | **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | |
308
+ | **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** | |
309
+ | **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | |
310
+ | **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** | |
311
+ | **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** | |
312
+ | **[dsh-library](https://github.com/PerryLink/dsh-library)** | |
313
+ | **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | |
314
+ | **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | |
315
+ | **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | |
316
+ | **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | |
317
+ | **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** | |
318
+ | **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | 🧊 FROZEN — see the repo README |
319
+ | **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** | |
320
+ | **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** | |
321
+ | **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | |
322
+ | **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** | |
323
+ | **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** | |
324
+ | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | |
325
+ | **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** | |
326
+ | **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | |
327
+ | **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** | |
328
+ | **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** | |
329
+ | **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** | |
330
+ | **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | 🚫 RETIRED (repo archived) |
331
+ | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | |
332
+ | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | 🚫 RETIRED (repo archived) |
333
+ | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | 🚫 RETIRED (repo archived) |
334
+ | **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** | |
335
+ | **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** | |
336
+ | **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** | |
337
+ | **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** | |
338
+ | **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** | |
339
+ | **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** | |
340
+ | **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** | |
341
+ | **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | |
342
+ | **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** | |
343
+ | **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** | |
344
+ | **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** | |
345
+ | **[dsh-score](https://github.com/PerryLink/dsh-score)** | 🧊 FROZEN — see the repo README |
346
+ | **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | |
347
+ | **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** | |
348
+ | **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | |
349
+ | **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** | |
350
+ | **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** | |
351
+ | **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** | |
352
+ | **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** | |
353
+ | **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | |
354
+ | **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** | |
355
+ | **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** | |
356
+ | **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | |
357
+ | **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | 🚫 RETIRED (repo archived) |
358
+ | **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | |
359
+ | **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** | |
360
+ | **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | 🧊 FROZEN — see the repo README |
361
+ | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | 🧊 FROZEN — see the repo README |
362
+ | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | 🧊 FROZEN — see the repo README |
363
+ | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | 🧊 FROZEN — see the repo README |
364
+ | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 🧊 FROZEN — see the repo README |
365
+ | **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | 🚫 RETIRED (repo archived) |
366
+ | **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 🚫 RETIRED (repo archived) |
367
+ | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | 🚫 RETIRED (repo archived) |
368
+
369
+ </details>
370
+
371
+ ## License
372
+
373
+ [LICENSE](LICENSE) (Apache License 2.0) © 2026 dsh-plugin-guide contributors
374
+
375
+ <p align="center"><sub>Apache-2.0 · Community guide, not affiliated with DeepSeek.</sub></p>