dsh-plugin-guide 0.4.0 → 0.4.1

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-zh.md CHANGED
@@ -56,7 +56,7 @@ dsh plugin --profile web add dsh-plugin-guide
56
56
  npx dsh-standards ./my-plugin --scope entry --entry-claim static
57
57
 
58
58
  # 三层审计;没跑的层保持 not-run / not-measured
59
- npx dsh-levels audit ./my-plugin --format json
59
+ npx -p dsh-standards dsh-levels ./my-plugin --format json
60
60
  ```
61
61
 
62
62
  `recognized` 不是通过,`static` 不是通过,`not-run` 也不是通过。
package/README.md CHANGED
@@ -58,7 +58,7 @@ The skill routes checks to `dsh-standards` and points build work at
58
58
  npx dsh-standards ./my-plugin --scope entry --entry-claim static
59
59
 
60
60
  # Three-layer audit; unrun layers stay not-run / not-measured
61
- npx dsh-levels audit ./my-plugin --format json
61
+ npx -p dsh-standards dsh-levels ./my-plugin --format json
62
62
  ```
63
63
 
64
64
  A `recognized` result is not a pass. A `static` result is not a pass. A
package/SKILL.md CHANGED
@@ -37,7 +37,7 @@ It defines the three layers and the difference between a check and advice.
37
37
 
38
38
  - **Run a check:** `npx dsh-standards <plugin-dir> --scope entry --entry-claim static`
39
39
  for recognition; add a host/runtime when claiming runtime.
40
- - **Three-layer self-check:** `npx dsh-levels audit <plugin-dir> --format json`.
40
+ - **Three-layer self-check:** `npx -p dsh-standards dsh-levels <plugin-dir> --format json`.
41
41
  - **Build or scaffold a plugin:** use the `dsh-primer` skill/CLI. The old
42
42
  `dsh-plugin-dev` command belongs to `dsh-primer`, not to this guide.
43
43
  - **Read the rules:** `dsh-plugin-spec`; **read the guide:** this package;
package/docs/boost.md CHANGED
@@ -25,23 +25,24 @@ An evidence card is per practice, per plugin, with a baseline and an after
25
25
  measurement. Example shape:
26
26
 
27
27
  ```yaml
28
- practice: LEV-6
29
- plugin: "@acme/dsh-hello@0.1.0"
30
- baseline:
31
- startupMs: 180
32
- tokensPerTurn: 1200
33
- after:
34
- startupMs: 150
35
- tokensPerTurn: 900
36
- environment:
37
- dsh: 0.2.2-alpha.2
38
- cordis: 4.0.6-alpha.1
39
- node: 24
28
+ subject: "@acme/dsh-hello@0.1.0" # what was measured
29
+ host: "dsh 0.2.2-alpha.2 / cordis 4.0.6-alpha.1 / node 24"
30
+ method: "bench: startup ms and tokens per turn"
31
+ scope: "single machine, 5 runs, synthetic prompt"
40
32
  command: "node bench/hello.mjs"
41
- result: "startup -17%, tokens -25%"
42
- caveats: "single machine, single run, not a performance baseline"
33
+ result: "startup 180→150 ms; tokens 1200→900"
34
+ negativeControl: "same bench with the plugin disabled"
35
+ generatedAt: "2026-11-03"
36
+ expiresAt: "2027-05-03"
37
+ recordHash: "sha256:<64 hex of this record>"
38
+ claimLevel: "self-assessed" # self-reported | self-assessed | host-reviewed | independent | reference
39
+ issuer: "author"
40
+ selfAssessed: true
43
41
  ```
44
42
 
43
+ All thirteen fields are required. A missing or malformed field makes the card
44
+ `not-measured`; a status word alone is not evidence.
45
+
45
46
  If an effect cannot be measured (developer hours, maintenance cost, “fewer
46
47
  pitfalls”), record it as a WARN or a note. Do not invent a number.
47
48
 
@@ -56,7 +57,7 @@ pitfalls”), record it as a WARN or a note. Do not invent a number.
56
57
  ## Run the audit
57
58
 
58
59
  ```sh
59
- npx dsh-levels audit ./my-plugin \
60
+ npx -p dsh-standards dsh-levels ./my-plugin \
60
61
  --boost-evidence boost.json --format json
61
62
  ```
62
63
 
package/docs/entry.md CHANGED
@@ -50,10 +50,38 @@ pass.
50
50
  - `package.json` has a resolvable entry and, for bundles, a `dsh.bundle.patch`.
51
51
  - The patch target row exists; ordered patch arrays are allowed.
52
52
  - `engines.dsh` or an `@deepseek-ai/dsh*` peer range is declared.
53
+ - `dsh.capabilities` lists every host surface the plugin touches (see below).
54
+ - `dsh.labels` is declared when the plugin modifies prompts, runs red-team
55
+ workloads, adds a model provider, exposes remote access, or mirrors another
56
+ project.
53
57
  - The license is present; a missing license is advisory, not a fabricated pass.
54
58
  - README says how to install and what it needs.
55
59
  - No “official”, “certified”, “secure”, or ranking claim.
56
60
 
61
+ ## Declaration fields
62
+
63
+ Two optional fields become checks `DSC-11` and `DSC-13` once they exist:
64
+
65
+ ```json
66
+ {
67
+ "dsh": {
68
+ "capabilities": ["fs:read", "network:egress"],
69
+ "labels": ["remote-access"]
70
+ }
71
+ }
72
+ ```
73
+
74
+ Allowed `capabilities`: `fs:read`, `fs:write`, `shell`, `subprocess`,
75
+ `network:egress`, `network:ingress`, `credentials:read`, `credentials:list`,
76
+ `credentials:provider`, `llm:adapter`, `sessions:read`, `system-prompt:write`,
77
+ `tools:register`, `remote:expose`, `plugin:install`.
78
+
79
+ Allowed `labels`: `prompt-modification`, `red-team`,
80
+ `third-party-model-provider`, `remote-access`, `mirror`.
81
+
82
+ Do not label a plugin `official`, `verified`, `certified`, `secure`, or
83
+ `audited` — those words are treated as an endorsement claim and fail `DSC-13`.
84
+
57
85
  ## What ENTRY does not do
58
86
 
59
87
  It is not a security audit, sandbox, full contract audit, market gate, score, or
package/docs/flow.md CHANGED
@@ -23,10 +23,12 @@ The canonical text is
23
23
 
24
24
  | Status | Meaning |
25
25
  |---|---|
26
- | `flow-pass` | all required journeys pass, or a WARN has a documented alternative |
27
- | `flow-warn` | at least one WARN; not a pass |
28
- | `flow-fail` | at least one attributable FAIL |
29
- | `flow-not-run` | not run, or the environment is insufficient |
26
+ | `runtime` | all eight journeys have pass evidence |
27
+ | `failed` | at least one journey has an attributable FAIL |
28
+ | `not-run` | no evidence, or fewer than eight journeys have pass evidence |
29
+
30
+ Each journey is recorded as `pass` / `fail` / `not-run` / `manual`. There is no
31
+ `flow-warn` status — a partial run is `not-run`, not a soft pass.
30
32
 
31
33
  `not-run` is never a pass. Do not publish a pass rate or a grade from FLOW.
32
34
 
@@ -44,7 +46,7 @@ and
44
46
  The three-layer audit reads FLOW evidence through `--flow-evidence`:
45
47
 
46
48
  ```sh
47
- npx dsh-levels audit ./my-plugin --flow-evidence flow.json --format json
49
+ npx -p dsh-standards dsh-levels ./my-plugin --flow-evidence flow.json --format json
48
50
  ```
49
51
 
50
52
  ## Author checklist
package/docs/levels.md CHANGED
@@ -58,7 +58,7 @@ Start here: [BOOST guide](boost.md) and the canonical
58
58
  npx dsh-standards ./my-plugin --scope entry --entry-claim static
59
59
 
60
60
  # Three-layer audit; FLOW/BOOST are only reported when evidence is supplied
61
- npx dsh-levels audit ./my-plugin --format json
61
+ npx -p dsh-standards dsh-levels ./my-plugin --format json
62
62
  ```
63
63
 
64
64
  The checker and level audit ship in
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-guide",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "A practical guide to DSH plugin quality: ENTRY checks, FLOW checks, and BOOST guidance. Community guide; not official, not a certification, not a ranking.",
5
5
  "type": "module",
6
6
  "main": "index.js",
@@ -27,8 +27,8 @@
27
27
  "test:pack": "npm pack --dry-run"
28
28
  },
29
29
  "engines": {
30
- "node": "^22.19.0 || >=24.0.0",
31
- "dsh": ">=0.2.1-0 <0.3.0"
30
+ "node": ">=24.9.0",
31
+ "dsh": ">=0.2.2-0 <0.3.0"
32
32
  },
33
33
  "keywords": [
34
34
  "dsh",
@@ -51,7 +51,7 @@
51
51
  "url": "https://github.com/PerryLink/dsh-plugin-guide/issues"
52
52
  },
53
53
  "peerDependencies": {
54
- "@deepseek-ai/dsh": ">=0.2.1-0 <0.3.0"
54
+ "@deepseek-ai/dsh": ">=0.2.2-0 <0.3.0"
55
55
  },
56
56
  "peerDependenciesMeta": {
57
57
  "@deepseek-ai/dsh": {