dsh-plugin-guide 0.4.4 → 0.4.5
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 +370 -0
- package/README.es.md +370 -0
- package/README.hi.md +370 -0
- package/README.md +334 -52
- package/README.pt.md +370 -0
- package/docs/assets/dsh-plugin-guide-flow-dark.svg +35 -0
- package/docs/assets/dsh-plugin-guide-flow-light.svg +35 -0
- package/docs/rules.md +2 -2
- package/package.json +1 -1
- package/README-zh.md +0 -82
package/README.en.md
ADDED
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
<div align="center">
|
|
2
|
+
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="docs/assets/dsh-plugin-guide-flow-dark.svg">
|
|
5
|
+
<img src="docs/assets/dsh-plugin-guide-flow-light.svg" width="100%" alt="dsh-plugin-guide assembly and routing: cordis.patch.yml inserts one row → index.js registers the skill through ctx.skills.register → the SKILL.md body → docs/levels.md for the three layers → dsh-standards' dsh-levels for the verdict">
|
|
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)
|
|
17
|
+
[](#compatibility)
|
|
18
|
+
[](https://www.npmjs.com/package/dsh-plugin-guide)
|
|
19
|
+
[](https://github.com/PerryLink/dsh-plugin-guide/actions/workflows/verify.yml)
|
|
20
|
+
[](#compatibility)
|
|
21
|
+
|
|
22
|
+
[](https://github.com/PerryLink/dsh-plugin-guide/stargazers)
|
|
23
|
+
[](https://www.npmjs.com/package/dsh-plugin-guide)
|
|
24
|
+
[](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
|
+
## Three-step setup
|
|
46
|
+
|
|
47
|
+
1. **Install** (pick one channel):
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
# git channel (latest main)
|
|
51
|
+
dsh plugin --profile web add github:PerryLink/dsh-plugin-guide
|
|
52
|
+
# npm channel (published releases)
|
|
53
|
+
dsh plugin --profile web add dsh-plugin-guide
|
|
54
|
+
# tarball channel: npm pack in this repo, then
|
|
55
|
+
dsh plugin --profile web add ./dsh-plugin-guide-<version>.tgz
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
No build step: `index.js` is the shipped artifact, and `SKILL.md` plus `docs/` are the skill body.
|
|
59
|
+
|
|
60
|
+
2. **Ask the agent to use the skill once** (skills load on demand, never as a resident prompt):
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
> Use dsh-plugin-guide to review ./my-plugin: report the ENTRY verdict first, then say which layers are not-run.
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
3. **Verify it took effect**:
|
|
67
|
+
|
|
68
|
+
```sh
|
|
69
|
+
dsh --profile web --dump-config | grep -A2 'id: dsh-plugin-guide'
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
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`).
|
|
73
|
+
|
|
74
|
+
**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.
|
|
75
|
+
|
|
76
|
+
## Core capabilities
|
|
77
|
+
|
|
78
|
+
- **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.
|
|
79
|
+
- **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).
|
|
80
|
+
- **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`.
|
|
81
|
+
- **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.
|
|
82
|
+
- **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.
|
|
83
|
+
|
|
84
|
+
### The three layers
|
|
85
|
+
|
|
86
|
+
| Layer | Question | Can it produce a verdict? |
|
|
87
|
+
|---|---|---|
|
|
88
|
+
| **ENTRY** | Can it be recognized, installed, and started? | Yes: recognized / runtime / failed / incomplete / unavailable |
|
|
89
|
+
| **FLOW** | Can a user install, configure, use, upgrade, and remove it? | Yes, where runtime evidence exists; otherwise `not-run` |
|
|
90
|
+
| **BOOST** | Does it use Cordis well? | No plugin-level verdict; evidence is recorded per practice |
|
|
91
|
+
|
|
92
|
+
Read the one-page map first: [docs/levels.md](docs/levels.md).
|
|
93
|
+
|
|
94
|
+
### Running the checks
|
|
95
|
+
|
|
96
|
+
```sh
|
|
97
|
+
# ENTRY recognition only (no runtime claim)
|
|
98
|
+
npx dsh-standards ./my-plugin --scope entry --entry-claim static
|
|
99
|
+
|
|
100
|
+
# Three-layer audit; unrun layers stay not-run / not-measured
|
|
101
|
+
npx -p dsh-standards dsh-levels ./my-plugin --format json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
`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)).
|
|
105
|
+
|
|
106
|
+
### What changed in 0.4.0
|
|
107
|
+
|
|
108
|
+
- The previous agent skill and the `dsh-plugin-dev` CLI moved to [`dsh-primer`](https://github.com/PerryLink/dsh-primer).
|
|
109
|
+
- This package is now the **guide** layer: three-layer map, check routing, and evidence rules.
|
|
110
|
+
- 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.
|
|
111
|
+
- Checks live in [`dsh-standards`](https://github.com/PerryLink/dsh-standards), not in this package.
|
|
112
|
+
|
|
113
|
+
## Configuration
|
|
114
|
+
|
|
115
|
+
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.
|
|
116
|
+
|
|
117
|
+
| Key | Default | Meaning |
|
|
118
|
+
|---|---|---|
|
|
119
|
+
| `id` | `dsh-plugin-guide` | Row identifier; a later patch layer overrides this row by `id` (whole-row replacement) |
|
|
120
|
+
| `name` | `dsh-plugin-guide` | The module the loader imports (`package.json#main` → `index.js`) |
|
|
121
|
+
| `config` | not accepted | This package reads no config keys; anything written here has no effect |
|
|
122
|
+
|
|
123
|
+
<details>
|
|
124
|
+
<summary>Full patch file (cordis.patch.yml, 9 lines)</summary>
|
|
125
|
+
|
|
126
|
+
```yaml
|
|
127
|
+
# dsh-plugin-guide bundle layer: register the packaged knowledge base as an agent skill.
|
|
128
|
+
# This file is the `dsh.bundle.patch` layer (see package.json#dsh.bundle.patch).
|
|
129
|
+
# Layer semantics: a YAML array of row verbs; `insert` adds plugin rows to the
|
|
130
|
+
# composed config. Later layers override a row by `id` (whole-config replacement).
|
|
131
|
+
- insert:
|
|
132
|
+
# `id`: stable row identifier used by later layers to override this row.
|
|
133
|
+
- id: dsh-plugin-guide
|
|
134
|
+
# `name`: the module the loader imports; resolves to this package's entry (package.json#main → index.js).
|
|
135
|
+
name: dsh-plugin-guide
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
</details>
|
|
139
|
+
|
|
140
|
+
To turn it off: delete that row from the profile patch, or run `dsh plugin --profile web remove dsh-plugin-guide`.
|
|
141
|
+
|
|
142
|
+
## FAQ
|
|
143
|
+
|
|
144
|
+
<details>
|
|
145
|
+
<summary>Will it decide whether my plugin is good enough?</summary>
|
|
146
|
+
|
|
147
|
+
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".
|
|
148
|
+
|
|
149
|
+
</details>
|
|
150
|
+
|
|
151
|
+
<details>
|
|
152
|
+
<summary>Does a `recognized` or `static` result count as a pass?</summary>
|
|
153
|
+
|
|
154
|
+
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.
|
|
155
|
+
|
|
156
|
+
</details>
|
|
157
|
+
|
|
158
|
+
<details>
|
|
159
|
+
<summary>Will installing it touch my profile or my other plugins?</summary>
|
|
160
|
+
|
|
161
|
+
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.
|
|
162
|
+
|
|
163
|
+
</details>
|
|
164
|
+
|
|
165
|
+
<details>
|
|
166
|
+
<summary>What about existing 0.3.x users?</summary>
|
|
167
|
+
|
|
168
|
+
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.
|
|
169
|
+
|
|
170
|
+
</details>
|
|
171
|
+
|
|
172
|
+
<details>
|
|
173
|
+
<summary>Where do the checker and the rule text actually live?</summary>
|
|
174
|
+
|
|
175
|
+
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".
|
|
176
|
+
|
|
177
|
+
</details>
|
|
178
|
+
|
|
179
|
+
## Security boundaries
|
|
180
|
+
|
|
181
|
+
- No official endorsement, certification, accreditation, or security audit.
|
|
182
|
+
- No score, ranking, or market gate.
|
|
183
|
+
- No fabricated runtime evidence: `static` ≠ `runtime`, `not-run` ≠ `pass`.
|
|
184
|
+
- BOOST is advice and evidence, never a plugin grade.
|
|
185
|
+
- **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)).
|
|
186
|
+
- **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)).
|
|
187
|
+
|
|
188
|
+
## Permissions & data
|
|
189
|
+
|
|
190
|
+
- **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`.
|
|
191
|
+
- **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.
|
|
192
|
+
- **Uninstall**: removing the package deletes its code only — not host logs, workspace files, or documents you already produced.
|
|
193
|
+
|
|
194
|
+
## Known limitations
|
|
195
|
+
|
|
196
|
+
- **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.
|
|
197
|
+
- **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)).
|
|
198
|
+
- **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)).
|
|
199
|
+
- **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)).
|
|
200
|
+
- **The `dsh.standards` placeholder is not a score.** In `package.json`, entry/flow = `not-run`, boost = `not-measured`, `evidence: null` — a placeholder only.
|
|
201
|
+
- **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.
|
|
202
|
+
|
|
203
|
+
## Interoperability with other DSH plugins
|
|
204
|
+
|
|
205
|
+
This plugin **does not interfere** with other plugins:
|
|
206
|
+
|
|
207
|
+
- **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.
|
|
208
|
+
- **No slot or HTTP route collision.** It registers no client slot key and no `webServer` prefix.
|
|
209
|
+
- **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.
|
|
210
|
+
- **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.
|
|
211
|
+
- **No patch-layer collision.** The bundle patch only `insert`s its own row; it never overrides a built-in row's `config`.
|
|
212
|
+
- **No global mutation.** It patches no prototypes, rewrites no `process.env`, and replaces no global fetch dispatcher.
|
|
213
|
+
- **Registration is an effect.** `ctx.effect(() => ctx.skills.register(...))` — stop or hot-reload removes the contribution.
|
|
214
|
+
|
|
215
|
+
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).
|
|
216
|
+
|
|
217
|
+
## Compatibility
|
|
218
|
+
|
|
219
|
+
| Surface | Status |
|
|
220
|
+
|---|---|
|
|
221
|
+
| 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`. |
|
|
222
|
+
| Node | `>=24.9.0` (the 0.2.2 line's requirement, since `0.2.2-alpha.2`) |
|
|
223
|
+
| Platforms | Anywhere DSH runs (plain-text skill; no browser half, no native extension) |
|
|
224
|
+
| Model | No model calls: the host injects the skill text into context, so no extra model capability is required |
|
|
225
|
+
|
|
226
|
+
## Ecosystem & quality
|
|
227
|
+
|
|
228
|
+
- [npm package page](https://www.npmjs.com/package/dsh-plugin-guide) (published releases, `0.4.3`)
|
|
229
|
+
- [Gitee mirror](https://gitee.com/perrylink/dsh-plugin-guide) (read-only snapshot; GitHub is canonical)
|
|
230
|
+
- [dsh-standards](https://www.npmjs.com/package/dsh-standards) (the checker and the `dsh-levels` three-layer audit)
|
|
231
|
+
- [dsh-plugin-spec](https://github.com/PerryLink/dsh-plugin-spec) (the low-level rule text and clause source)
|
|
232
|
+
- [dsh-primer](https://github.com/PerryLink/dsh-primer) (the legacy build/scaffold skill and CLI)
|
|
233
|
+
- Repository docs: [the three layers](docs/levels.md) · [ENTRY](docs/entry.md) · [FLOW](docs/flow.md) · [BOOST](docs/boost.md)
|
|
234
|
+
- Repository governance: [CHANGELOG](CHANGELOG.md) · [STANDARDS.md](STANDARDS.md) · [CONTRIBUTING](CONTRIBUTING.md)
|
|
235
|
+
|
|
236
|
+
## Development
|
|
237
|
+
|
|
238
|
+
```sh
|
|
239
|
+
npm test # node --test tests/*.test.mjs
|
|
240
|
+
npm run test:pack # npm pack --dry-run
|
|
241
|
+
python scripts/gen-readme-assets.py # regenerate the light/dark hero SVGs in docs/assets (Python + Pillow)
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
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.
|
|
245
|
+
|
|
246
|
+
| Path | Purpose |
|
|
247
|
+
|---|---|
|
|
248
|
+
| `index.js` | The single host face: reads `SKILL.md`, strips the frontmatter, registers the skill through `ctx.effect` |
|
|
249
|
+
| `SKILL.md` | The skill body and its `description` (YAML frontmatter) |
|
|
250
|
+
| `docs/` | The three-layer map and the ENTRY/FLOW/BOOST guides the skill body references |
|
|
251
|
+
| `locale/` | The skill's zh/en display metadata (`meta.title`, `meta.description`) |
|
|
252
|
+
| `cordis.patch.yml` | The bundle patch layer; `insert`s only its own row |
|
|
253
|
+
| `tests/` | `node --test`: skill frontmatter parsing and registration |
|
|
254
|
+
| `scripts/gen-readme-assets.py` | Programmatic image generation (Python + Pillow) |
|
|
255
|
+
| `STANDARDS.md` · `NOTICE.md` · `PRIVACY.md` | Standards status, NOTICE, privacy statement |
|
|
256
|
+
|
|
257
|
+
## Family & thanks
|
|
258
|
+
|
|
259
|
+
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.
|
|
260
|
+
|
|
261
|
+
- [@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.
|
|
262
|
+
|
|
263
|
+
<details>
|
|
264
|
+
<summary>Expand all plugins</summary>
|
|
265
|
+
|
|
266
|
+
| Plugin | Status |
|
|
267
|
+
|---|---|
|
|
268
|
+
| **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** | |
|
|
269
|
+
| **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** | |
|
|
270
|
+
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | |
|
|
271
|
+
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | 🧊 FROZEN — see the repo README |
|
|
272
|
+
| **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** | |
|
|
273
|
+
| **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** | |
|
|
274
|
+
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | 🧊 FROZEN — see the repo README |
|
|
275
|
+
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | |
|
|
276
|
+
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | |
|
|
277
|
+
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | |
|
|
278
|
+
| **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** | |
|
|
279
|
+
| **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** | |
|
|
280
|
+
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | 🧊 FROZEN — see the repo README |
|
|
281
|
+
| **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** | |
|
|
282
|
+
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | |
|
|
283
|
+
| **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** | |
|
|
284
|
+
| **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** | |
|
|
285
|
+
| **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** | |
|
|
286
|
+
| **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** | |
|
|
287
|
+
| **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** | |
|
|
288
|
+
| **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** | |
|
|
289
|
+
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | |
|
|
290
|
+
| **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** | |
|
|
291
|
+
| **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** | |
|
|
292
|
+
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | |
|
|
293
|
+
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | |
|
|
294
|
+
| **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** | |
|
|
295
|
+
| **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** | |
|
|
296
|
+
| **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** | |
|
|
297
|
+
| **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** | |
|
|
298
|
+
| **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** | |
|
|
299
|
+
| **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** | |
|
|
300
|
+
| **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** | |
|
|
301
|
+
| **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** | |
|
|
302
|
+
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | |
|
|
303
|
+
| **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** | |
|
|
304
|
+
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | |
|
|
305
|
+
| **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** | |
|
|
306
|
+
| **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** | |
|
|
307
|
+
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | |
|
|
308
|
+
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | |
|
|
309
|
+
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | |
|
|
310
|
+
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | |
|
|
311
|
+
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | |
|
|
312
|
+
| **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** | |
|
|
313
|
+
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | 🧊 FROZEN — see the repo README |
|
|
314
|
+
| **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** | |
|
|
315
|
+
| **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** | |
|
|
316
|
+
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | |
|
|
317
|
+
| **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** | |
|
|
318
|
+
| **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** | |
|
|
319
|
+
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | |
|
|
320
|
+
| **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** | |
|
|
321
|
+
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | |
|
|
322
|
+
| **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** | |
|
|
323
|
+
| **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** | |
|
|
324
|
+
| **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** | |
|
|
325
|
+
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | 🚫 RETIRED (repo archived) |
|
|
326
|
+
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | |
|
|
327
|
+
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | 🚫 RETIRED (repo archived) |
|
|
328
|
+
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | 🚫 RETIRED (repo archived) |
|
|
329
|
+
| **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** | |
|
|
330
|
+
| **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** | |
|
|
331
|
+
| **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** | |
|
|
332
|
+
| **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** | |
|
|
333
|
+
| **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** | |
|
|
334
|
+
| **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** | |
|
|
335
|
+
| **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** | |
|
|
336
|
+
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | |
|
|
337
|
+
| **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** | |
|
|
338
|
+
| **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** | |
|
|
339
|
+
| **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** | |
|
|
340
|
+
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | 🧊 FROZEN — see the repo README |
|
|
341
|
+
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | |
|
|
342
|
+
| **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** | |
|
|
343
|
+
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | |
|
|
344
|
+
| **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** | |
|
|
345
|
+
| **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** | |
|
|
346
|
+
| **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** | |
|
|
347
|
+
| **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** | |
|
|
348
|
+
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | |
|
|
349
|
+
| **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** | |
|
|
350
|
+
| **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** | |
|
|
351
|
+
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | |
|
|
352
|
+
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | 🚫 RETIRED (repo archived) |
|
|
353
|
+
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | |
|
|
354
|
+
| **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** | |
|
|
355
|
+
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | 🧊 FROZEN — see the repo README |
|
|
356
|
+
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | 🧊 FROZEN — see the repo README |
|
|
357
|
+
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | 🧊 FROZEN — see the repo README |
|
|
358
|
+
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | 🧊 FROZEN — see the repo README |
|
|
359
|
+
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 🧊 FROZEN — see the repo README |
|
|
360
|
+
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | 🚫 RETIRED (repo archived) |
|
|
361
|
+
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 🚫 RETIRED (repo archived) |
|
|
362
|
+
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | 🚫 RETIRED (repo archived) |
|
|
363
|
+
|
|
364
|
+
</details>
|
|
365
|
+
|
|
366
|
+
## License
|
|
367
|
+
|
|
368
|
+
[LICENSE](LICENSE) (Apache License 2.0) © 2026 dsh-plugin-guide contributors
|
|
369
|
+
|
|
370
|
+
<p align="center"><sub>Apache-2.0 · Community guide, not affiliated with DeepSeek.</sub></p>
|