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.pt.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, montagem e roteamento: cordis.patch.yml insere uma linha → index.js registra a skill via ctx.skills.register → o corpo de SKILL.md → docs/levels.md para as três camadas → dsh-levels do dsh-standards para o veredito">
6
+ </picture>
7
+
8
+ # dsh-plugin-guide
9
+
10
+ **Faça a pergunta certa antes de construir: esclareça as camadas ENTRY / FLOW / BOOST de um plugin DSH e deixe o veredito para a ferramenta que executa as verificações.**
11
+
12
+ A camada de guia para plugins DSH: explica o que verificar, por que importa e qual ferramenta é dona do veredito; não certifica, não pontua e não classifica, apenas encaminha as verificações para o `dsh-standards`.
13
+
14
+ [Instalar](#instalação-em-três-passos) · [Configuração](#configuração) · [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)](#compatibilidade)
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)](#compatibilidade)
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>Guia da comunidade, sem vínculo com a DeepSeek; não é certificação, nem ranking, nem auditoria de segurança. Repositório canônico: <https://github.com/PerryLink/dsh-plugin-guide> (o Gitee é um snapshot somente leitura).</sub>
33
+
34
+ ## O que é
35
+
36
+ `dsh-plugin-guide` é a **camada de guia** para plugins DSH: explica o que verificar, por que importa e qual ferramenta é dona do veredito. Ao ser instalado, registra uma skill de agente carregada sob demanda cujo corpo é o `SKILL.md`; as referências relativas desse corpo (`./docs/...`) resolvem dentro do pacote por meio de um `resourceBase` de diretório. Não certifica, não pontua e não classifica: as verificações ficam no `dsh-standards`, o texto das regras no `dsh-plugin-spec` e a construção/andaime no `dsh-primer`.
37
+
38
+ | Pacote | Papel |
39
+ |---|---|
40
+ | **`dsh-plugin-guide`** | Este pacote: a guia em prosa, o mapa de três camadas e a skill de agente |
41
+ | **`dsh-standards`** | O guarda-chuva de execução: verificações ENTRY/FLOW, auditoria `dsh-levels` e os arquivos de especificação |
42
+ | **`dsh-plugin-spec`** | O texto de regras de baixo nível e a fonte das cláusulas |
43
+ | **`dsh-primer`** | A skill e CLI legadas de construção/andaime (antigo `dsh-plugin-guide` 0.3.x) |
44
+
45
+ ## Instalação em três passos
46
+
47
+ 1. **Instalar** (escolha um canal):
48
+
49
+ ```sh
50
+ # canal git (main mais recente)
51
+ dsh plugin --profile web add github:PerryLink/dsh-plugin-guide
52
+ # canal npm (versões publicadas)
53
+ dsh plugin --profile web add dsh-plugin-guide
54
+ # canal tarball: após npm pack neste repositório
55
+ dsh plugin --profile web add ./dsh-plugin-guide-<version>.tgz
56
+ ```
57
+
58
+ Sem etapa de build: `index.js` é o artefato publicado, e `SKILL.md` mais `docs/` são o corpo da skill.
59
+
60
+ 2. **Pedir a skill uma vez** (as skills carregam sob demanda, nunca como prompt residente):
61
+
62
+ ```text
63
+ > Use dsh-plugin-guide para revisar ./my-plugin: primeiro o veredito ENTRY e depois quais camadas estão not-run.
64
+ ```
65
+
66
+ 3. **Verificar que entrou em vigor**:
67
+
68
+ ```sh
69
+ dsh --profile web --dump-config | grep -A2 'id: dsh-plugin-guide'
70
+ ```
71
+
72
+ O catálogo de skills da sessão deve listar `dsh-plugin-guide`, e o corpo carregado deve apontar para `docs/levels.md` (a forma de aceitação registrada em `package.json#dshWorkshop.capability.expected`).
73
+
74
+ **Desinstalar**: `dsh plugin --profile web remove dsh-plugin-guide` (ou apague a linha do patch do perfil). O registro é um efeito do Cordis, então descarregar o plugin o remove sem deixar resíduo.
75
+
76
+ ## Capacidades principais
77
+
78
+ - **Mapa de três camadas** — ENTRY pergunta «dá para reconhecer, instalar e iniciar?», FLOW pergunta «o usuário consegue instalar, configurar, usar, atualizar e remover?» e BOOST pergunta «usa o Cordis bem?». Três trilhas, não três notas; juntas não somam pontuação nem certificado.
79
+ - **Roteamento de verificações** — este pacote apenas explica e encaminha: verificações de conformidade vão para o `dsh-standards`, o texto de regras está no `dsh-plugin-spec` e construir um plugin é trabalho do `dsh-primer` (a antiga CLI `dsh-plugin-dev` vive lá, não aqui).
80
+ - **Regras de evidência** — `static` ≠ `runtime`, `recognized` ≠ `pass`, `not-run` ≠ `pass`; um PASS exige comando, artefato, ambiente e data; se faltar algo, escreva `not-run`, `not-measured` ou `incomplete`.
81
+ - **Skill sob demanda** — `index.js` lê o `SKILL.md`, remove o frontmatter YAML e o registra com `source: bundled` e um `resourceBase` de diretório; a skill entra no contexto só quando solicitada, sem prefixo residente.
82
+ - **Sem autoridade emprestada** — sem vereditos, sem portão de mercado e sem alegação de oficialidade; a disciplina de redação está escrita no `SKILL.md` e no `STANDARDS.md` e pode ser conferida linha a linha.
83
+
84
+ ### As três camadas
85
+
86
+ | Camada | Pergunta | Pode emitir veredito? |
87
+ |---|---|---|
88
+ | **ENTRY** | Dá para reconhecer, instalar e iniciar? | Sim: recognized / runtime / failed / incomplete / unavailable |
89
+ | **FLOW** | O usuário consegue instalar, configurar, usar, atualizar e remover? | Sim, apenas onde há evidência de runtime; caso contrário, `not-run` |
90
+ | **BOOST** | Usa o Cordis bem? | Sem veredito no nível do plugin; a evidência é registrada por prática |
91
+
92
+ Leia primeiro o mapa de uma página: [docs/levels.md](docs/levels.md).
93
+
94
+ ### Executar as verificações
95
+
96
+ ```sh
97
+ # Apenas reconhecimento ENTRY (sem reivindicar runtime)
98
+ npx dsh-standards ./my-plugin --scope entry --entry-claim static
99
+
100
+ # Auditoria de três camadas; camadas não executadas continuam not-run / not-measured
101
+ npx -p dsh-standards dsh-levels ./my-plugin --format json
102
+ ```
103
+
104
+ `recognized` não é aprovação, `static` não é aprovação e `not-run` também não. Códigos de saída: `0` concluído, `1` FAIL atribuível, `2` incompleto/not-run, `3` erro de uso; um resultado `not-run` ou `incomplete` nunca deve ser escrito como aprovação (veja [docs/entry.md](docs/entry.md)).
105
+
106
+ ### O que mudou em 0.4.0
107
+
108
+ - A skill de agente anterior e a CLI `dsh-plugin-dev` mudaram para o [`dsh-primer`](https://github.com/PerryLink/dsh-primer).
109
+ - Este pacote agora é a camada de **guia**: mapa de três camadas, roteamento de verificações e regras de evidência.
110
+ - As versões 0.3.x no npm estão obsoletas e continuam disponíveis para instalações existentes. A linha 0.4.0 é uma mudança de produto; quem está fixado em `^0.3` não atualiza sozinho.
111
+ - As verificações vivem no [`dsh-standards`](https://github.com/PerryLink/dsh-standards), não neste pacote.
112
+
113
+ ## Configuração
114
+
115
+ Este pacote não tem `Config` de Schemastery: o `cordis.patch.yml` apenas `insert`a uma linha e o plugin não lê nenhuma chave `config.*`. O único ajustável são essa linha e o perfil onde ela vive.
116
+
117
+ | Chave | Padrão | Significado |
118
+ |---|---|---|
119
+ | `id` | `dsh-plugin-guide` | Identificador da linha; uma camada de patch posterior a substitui por `id` (substituição da linha inteira) |
120
+ | `name` | `dsh-plugin-guide` | O módulo que o loader importa (`package.json#main` → `index.js`) |
121
+ | `config` | não aceito | Este pacote não lê chaves de configuração; o que for escrito aqui não tem efeito |
122
+
123
+ <details>
124
+ <summary>Arquivo de patch completo (cordis.patch.yml, 9 linhas)</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
+ Para desativar: apague essa linha do patch do perfil ou rode `dsh plugin --profile web remove dsh-plugin-guide`.
141
+
142
+ ## FAQ
143
+
144
+ <details>
145
+ <summary>Ele vai decidir se meu plugin é bom o suficiente?</summary>
146
+
147
+ Não. Este pacote é a camada de guia, não o juiz: explica as três camadas, encaminha as verificações para o `dsh-standards` e enuncia as regras de evidência. O BOOST também não tem aprovado/reprovado no nível do plugin: uma prática pode carregar evidência, mas um plugin nunca recebe um «nível BOOST».
148
+
149
+ </details>
150
+
151
+ <details>
152
+ <summary>Um resultado `recognized` ou `static` conta como aprovação?</summary>
153
+
154
+ Não. `recognized` só significa que a forma do pacote pode ser identificada e `static` só que houve pré-verificação estática; `static` ≠ `runtime` e `not-run` ≠ `pass`. Quando o FLOW percorreu apenas alguns journeys o status é `not-run`, nunca aprovação branda; também não se deve publicar taxa de aprovação nem nota de FLOW.
155
+
156
+ </details>
157
+
158
+ <details>
159
+ <summary>Instalá-lo mexe no meu perfil ou nos outros plugins?</summary>
160
+
161
+ Não. Ele registra exatamente uma skill no serviço `skills` (nome `dsh-plugin-guide`, `source: bundled`), envolta em `ctx.effect()` para que descarregar ou recarregar a quente a remova; não registra ferramentas, comandos, slots de cliente nem prefixo `webServer`, não faz requisições de rede e declara apenas a permissão `filesystem:read`.
162
+
163
+ </details>
164
+
165
+ <details>
166
+ <summary>E os usuários de 0.3.x?</summary>
167
+
168
+ 0.3.x está obsoleto mas ainda pode ser instalado; 0.4.0 é uma troca de produto, então um perfil fixado em `^0.3` não atualiza sozinho. A skill e a CLI legadas de construção/andaime agora pertencem ao [`dsh-primer`](https://github.com/PerryLink/dsh-primer); este pacote mantém apenas a guia e o roteamento.
169
+
170
+ </details>
171
+
172
+ <details>
173
+ <summary>Onde ficam de fato o verificador e o texto das regras?</summary>
174
+
175
+ O verificador e a auditoria de três camadas ficam no [`dsh-standards`](https://www.npmjs.com/package/dsh-standards) (`npx dsh-standards`, `npx -p dsh-standards dsh-levels`); o texto das regras fica no [`dsh-plugin-spec`](https://github.com/PerryLink/dsh-plugin-spec). O marcador `dsh.standards` no `package.json` deste pacote continua em entry/flow = `not-run`, boost = `not-measured`, `evidence: null`: isso significa «não medido», não «aprovado».
176
+
177
+ </details>
178
+
179
+ ## Limites de segurança
180
+
181
+ - Sem aval oficial, certificação, acreditação ou auditoria de segurança.
182
+ - Sem pontuação, ranking ou portão de mercado.
183
+ - Sem evidência de runtime inventada: `static` ≠ `runtime`, `not-run` ≠ `pass`.
184
+ - BOOST é conselho e evidência, nunca nota do plugin.
185
+ - **O texto é o limite.** A guia só afirma o que pode apontar em um documento fonte; uma prática que não pode ser medida (horas de desenvolvimento, custo de manutenção) é registrada como WARN ou nota, nunca como número inventado (veja [docs/boost.md](docs/boost.md)).
186
+ - **Não oficial por construção.** Sem certificação, acreditação, auditoria de segurança, ranking ou portão de mercado; a redação evita alegações official / certified / secure / recommended / ranked (veja [STANDARDS.md](STANDARDS.md)).
187
+
188
+ ## Permissões e dados
189
+
190
+ - **Permissões**: `package.json#dshWorkshop.permissions` declara apenas `filesystem:read`. No `apply()` o plugin lê o `SKILL.md` empacotado, e as referências relativas do corpo resolvem no `docs/` do pacote por meio do `resourceBase` de diretório.
191
+ - **Dados**: nada é escrito no workspace nem fora do perfil; não há telemetria, analytics, publicidade ou conta hospedada, e nenhum dado é enviado à PerryLink (veja [PRIVACY.md](PRIVACY.md)). O armazenamento de sessões e logs do host e sua retenção são controlados pelo host.
192
+ - **Desinstalação**: remover o pacote apaga apenas o código, não os logs do host, os arquivos do workspace nem os documentos que você já produziu.
193
+
194
+ ## Limitações conhecidas
195
+
196
+ - **A guia não produz veredito.** Não tem capacidade de juiz: não pode marcar um plugin como aprovado nem como reprovado; o veredito só vem de um resultado que o `dsh-standards` realmente executou.
197
+ - **O runtime do FLOW ainda é um rascunho.** J1/J2/J4/J6 têm evidência de runtime em fixtures; J3/J7 chegam apenas a runtime de nível fixture; J5/J8 têm só pré-verificação estática; a renderização no navegador ainda não é coberta; por isso «apenas alguns journeys rodaram» deve ser escrito como `not-run` (veja [docs/flow.md](docs/flow.md)).
198
+ - **Os exemplos medidos do BOOST são fixtures ou capturas sintéticas.** Não são linhas de base de produção; LEV-3, LEV-6 e LEV-7 têm a evidência mais forte, os demais apenas fixtures de nível loader/contexto; sem evidência o status é `not-measured` (veja [docs/boost.md](docs/boost.md)).
199
+ - **As regras acompanham o host.** A linha de base é DSH `0.2.2-alpha.3` / Cordis `4.0.6-alpha.2` em 2026-11-04; o Node exige `>=24.9.0` desde `0.2.2-alpha.2`; `ctx.menus` sumiu em `0.2.2-alpha.3`; e desde `0.2.1-alpha.4` o `engines.dsh` declarado decide sozinho o corredor de versões (veja [docs/levels.md](docs/levels.md)).
200
+ - **O marcador `dsh.standards` não é nota.** No `package.json`, entry/flow = `not-run`, boost = `not-measured`, `evidence: null`: apenas um marcador.
201
+ - **0.3.x fica na forma antiga.** 0.3.x é uma linha obsoleta; a capacidade de construção/andaime agora está no `dsh-primer` e este pacote não inclui CLI.
202
+
203
+ ## Interoperabilidade com outros plugins DSH
204
+
205
+ Este plugin **não interfere** em outros plugins:
206
+
207
+ - **Sem colisão de ferramentas, comandos ou chaves de serviço.** Não registra ferramentas, comandos nem chaves de serviço, então não ocupa nomes nus e não pode colidir em chave de serviço.
208
+ - **Sem colisão de slots nem de rotas HTTP.** Não registra chaves de slot de cliente nem prefixo `webServer`.
209
+ - **A única dependência é o serviço `skills`.** `export const inject = ['skills']`, fornecido pelo host; não importa a implementação do host, apenas consome esse serviço.
210
+ - **Sem listeners de eventos compartilhados.** Não escuta eventos sensíveis à ordem como `agent/pre-step` ou `tools/post-execute`, então não há cadeia waterfall para curto-circuitar.
211
+ - **Sem colisão de camadas de patch.** O patch do bundle apenas `insert`a sua própria linha; nunca sobrescreve o `config` de uma linha embutida.
212
+ - **Sem mutação global.** Não remenda protótipos, não reescreve `process.env` e não substitui o dispatcher fetch global.
213
+ - **Registro é efeito.** `ctx.effect(() => ctx.skills.register(...))`: parar ou recarregar a quente remove a contribuição.
214
+
215
+ Linha de base: DSH `0.2.2-alpha.3` / Cordis `4.0.6-alpha.2` (conforme [docs/levels.md](docs/levels.md), 2026-11-04).
216
+
217
+ ## Compatibilidade
218
+
219
+ | Superfície | Estado |
220
+ |---|---|
221
+ | Harness | `engines.dsh` = `>=0.2.2-0 <0.3.0` (desde `0.2.1-alpha.4`, o `engines.dsh` decide sozinho; o semver padrão do npm precisa de um braço de união explícito `^0.2.2-alpha.3`). Linha de base DSH `0.2.2-alpha.3` (npm `alpha`), Cordis `4.0.6-alpha.2`. |
222
+ | Node | `>=24.9.0` (requisito da linha 0.2.2, desde `0.2.2-alpha.2`) |
223
+ | Plataformas | Onde o DSH rodar (skill de texto puro; sem metade de navegador, sem extensão nativa) |
224
+ | Modelo | Sem chamadas ao modelo: o host injeta o texto da skill no contexto, então nenhuma capacidade extra de modelo é necessária |
225
+
226
+ ## Ecossistema e qualidade
227
+
228
+ - [Página do pacote no npm](https://www.npmjs.com/package/dsh-plugin-guide) (versões publicadas, `0.4.3`)
229
+ - [Espelho no Gitee](https://gitee.com/perrylink/dsh-plugin-guide) (snapshot somente leitura; o GitHub é canônico)
230
+ - [dsh-standards](https://www.npmjs.com/package/dsh-standards) (o verificador e a auditoria de três camadas `dsh-levels`)
231
+ - [dsh-plugin-spec](https://github.com/PerryLink/dsh-plugin-spec) (o texto de regras de baixo nível e a fonte das cláusulas)
232
+ - [dsh-primer](https://github.com/PerryLink/dsh-primer) (a skill e CLI legadas de construção/andaime)
233
+ - Documentos do repositório: [as três camadas](docs/levels.md) · [ENTRY](docs/entry.md) · [FLOW](docs/flow.md) · [BOOST](docs/boost.md)
234
+ - Governança do repositório: [CHANGELOG](CHANGELOG.md) · [STANDARDS.md](STANDARDS.md) · [CONTRIBUTING](CONTRIBUTING.md)
235
+
236
+ ## Desenvolvimento
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 # regenera os SVG hero claro/escuro em docs/assets (Python + Pillow)
242
+ ```
243
+
244
+ Sem etapa de build: `index.js` é o artefato publicado. A CI é [.github/workflows/verify.yml](.github/workflows/verify.yml) (matriz de Node 22 e 24 rodando os testes unitários e `npm pack --dry-run`). As imagens do README são geradas programaticamente por [scripts/gen-readme-assets.py](scripts/gen-readme-assets.py); rodar de novo é idempotente e sobrescreve no lugar.
245
+
246
+ | Caminho | Função |
247
+ |---|---|
248
+ | `index.js` | A única face de host: lê o `SKILL.md`, remove o frontmatter e registra a skill via `ctx.effect` |
249
+ | `SKILL.md` | O corpo da skill e sua `description` (frontmatter YAML) |
250
+ | `docs/` | O mapa de três camadas e as guias ENTRY/FLOW/BOOST referenciadas pelo corpo |
251
+ | `locale/` | Metadados de exibição zh/en da skill (`meta.title`, `meta.description`) |
252
+ | `cordis.patch.yml` | A camada de patch do bundle; apenas `insert`a sua própria linha |
253
+ | `tests/` | `node --test`: parsing do frontmatter e registro da skill |
254
+ | `scripts/gen-readme-assets.py` | Geração programática de imagens (Python + Pillow) |
255
+ | `STANDARDS.md` · `NOTICE.md` · `PRIVACY.md` | Status de padrões, NOTICE e declaração de privacidade |
256
+
257
+ ## Família e agradecimentos
258
+
259
+ Este projeto faz parte da família de plugins do DeepSeek Harness da [PerryLink](https://github.com/PerryLink) (todos Apache-2.0). Se esta guia for útil, **uma estrela ajuda a próxima pessoa a encontrá-la**: nada fica bloqueado atrás dela.
260
+
261
+ - [@PerryLink](https://github.com/PerryLink) — criador e mantenedor: o mapa de três camadas e o texto das guias ENTRY/FLOW/BOOST, a skill `SKILL.md`, a camada de patch do bundle e a documentação em cinco idiomas.
262
+
263
+ <details>
264
+ <summary>Expandir todos os 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)** | 🧊 CONGELADO — ver o README do repo |
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)** | 🧊 CONGELADO — ver o README do repo |
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)** | 🧊 CONGELADO — ver o README do repo |
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)** | 🧊 CONGELADO — ver o README do repo |
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)** | 🚫 APOSENTADO (repo arquivado) |
326
+ | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | |
327
+ | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | 🚫 APOSENTADO (repo arquivado) |
328
+ | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | 🚫 APOSENTADO (repo arquivado) |
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)** | 🧊 CONGELADO — ver o README do repo |
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)** | 🚫 APOSENTADO (repo arquivado) |
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)** | 🧊 CONGELADO — ver o README do repo |
356
+ | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | 🧊 CONGELADO — ver o README do repo |
357
+ | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | 🧊 CONGELADO — ver o README do repo |
358
+ | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | 🧊 CONGELADO — ver o README do repo |
359
+ | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 🧊 CONGELADO — ver o README do repo |
360
+ | **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | 🚫 APOSENTADO (repo arquivado) |
361
+ | **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 🚫 APOSENTADO (repo arquivado) |
362
+ | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | 🚫 APOSENTADO (repo arquivado) |
363
+
364
+ </details>
365
+
366
+ ## Licença
367
+
368
+ [LICENSE](LICENSE) (Apache License 2.0) © 2026 dsh-plugin-guide contributors
369
+
370
+ <p align="center"><sub>Apache-2.0 · Guia da comunidade, sem afiliação com a DeepSeek.</sub></p>
@@ -0,0 +1,35 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="400" viewBox="0 0 1200 400" role="img" aria-label="dsh-plugin-guide flow">
2
+ <title>dsh-plugin-guide flow</title>
3
+ <rect width="1200" height="400" rx="18" fill="#0d1117"/>
4
+ <text x="60" y="62" fill="#f0f6fc" font-family="ui-sans-serif,system-ui,sans-serif" font-size="30" font-weight="700">dsh-plugin-guide</text>
5
+ <text x="60" y="94" fill="#8b949e" font-family="ui-monospace,monospace" font-size="16">bundle patch · skills service · dsh-standards</text>
6
+ <line x1="60" y1="116" x2="1140" y2="116" stroke="#30363d"/>
7
+ <rect x="60" y="150" width="180" height="96" rx="14" fill="#161b22" stroke="#30363d" stroke-width="2"/>
8
+ <text x="150" y="190" fill="#f0f6fc" text-anchor="middle" font-family="ui-monospace,monospace" font-size="16" font-weight="700">cordis.patch.yml</text>
9
+ <text x="150" y="218" fill="#8b949e" text-anchor="middle" font-family="ui-monospace,monospace" font-size="12">insert: guide-row</text>
10
+ <path d="M246 198h33" stroke="#8b949e" stroke-width="3"/>
11
+ <path d="M277 191l10 7-10 7" fill="none" stroke="#8b949e" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
12
+ <rect x="285" y="150" width="180" height="96" rx="14" fill="#161b22" stroke="#4B67B4" stroke-width="2"/>
13
+ <text x="375" y="190" fill="#f0f6fc" text-anchor="middle" font-family="ui-monospace,monospace" font-size="16" font-weight="700">index.js</text>
14
+ <text x="375" y="218" fill="#8b949e" text-anchor="middle" font-family="ui-monospace,monospace" font-size="12">ctx.skills.register</text>
15
+ <path d="M471 198h33" stroke="#8b949e" stroke-width="3"/>
16
+ <path d="M502 191l10 7-10 7" fill="none" stroke="#8b949e" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
17
+ <rect x="510" y="150" width="180" height="96" rx="14" fill="#161b22" stroke="#30363d" stroke-width="2"/>
18
+ <text x="600" y="190" fill="#f0f6fc" text-anchor="middle" font-family="ui-monospace,monospace" font-size="16" font-weight="700">SKILL.md</text>
19
+ <text x="600" y="218" fill="#8b949e" text-anchor="middle" font-family="ui-monospace,monospace" font-size="12">bundled · on demand</text>
20
+ <path d="M696 198h33" stroke="#8b949e" stroke-width="3"/>
21
+ <path d="M727 191l10 7-10 7" fill="none" stroke="#8b949e" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
22
+ <rect x="735" y="150" width="180" height="96" rx="14" fill="#161b22" stroke="#30363d" stroke-width="2"/>
23
+ <text x="825" y="190" fill="#f0f6fc" text-anchor="middle" font-family="ui-monospace,monospace" font-size="16" font-weight="700">docs/levels.md</text>
24
+ <text x="825" y="218" fill="#8b949e" text-anchor="middle" font-family="ui-monospace,monospace" font-size="12">ENTRY · FLOW · BOOST</text>
25
+ <path d="M921 198h33" stroke="#8b949e" stroke-width="3"/>
26
+ <path d="M952 191l10 7-10 7" fill="none" stroke="#8b949e" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
27
+ <rect x="960" y="150" width="180" height="96" rx="14" fill="#161b22" stroke="#3fb950" stroke-width="2"/>
28
+ <text x="1050" y="190" fill="#f0f6fc" text-anchor="middle" font-family="ui-monospace,monospace" font-size="16" font-weight="700">dsh-standards</text>
29
+ <text x="1050" y="218" fill="#8b949e" text-anchor="middle" font-family="ui-monospace,monospace" font-size="12">dsh-levels --format json</text>
30
+ <path d="M375 246v39" stroke="#4B67B4" stroke-width="2" stroke-dasharray="5 5"/>
31
+ <path d="M825 246v39" stroke="#4B67B4" stroke-width="2" stroke-dasharray="5 5"/>
32
+ <rect x="285" y="285" width="630" height="52" rx="12" fill="#161b22" stroke="#4B67B4" stroke-width="2"/>
33
+ <text x="600" y="318" fill="#f0f6fc" text-anchor="middle" font-family="ui-monospace,monospace" font-size="14">resourceBase: directory · SKILL.md + docs/*.md · no verdict</text>
34
+ <text x="60" y="378" fill="#8b949e" font-family="ui-monospace,monospace" font-size="13">static ≠ runtime · not-run ≠ pass · recognized ≠ pass · boost-evidenced ≠ plugin grade</text>
35
+ </svg>
@@ -0,0 +1,35 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="400" viewBox="0 0 1200 400" role="img" aria-label="dsh-plugin-guide flow">
2
+ <title>dsh-plugin-guide flow</title>
3
+ <rect width="1200" height="400" rx="18" fill="#ffffff"/>
4
+ <text x="60" y="62" fill="#1f2328" font-family="ui-sans-serif,system-ui,sans-serif" font-size="30" font-weight="700">dsh-plugin-guide</text>
5
+ <text x="60" y="94" fill="#57606a" font-family="ui-monospace,monospace" font-size="16">bundle patch · skills service · dsh-standards</text>
6
+ <line x1="60" y1="116" x2="1140" y2="116" stroke="#d0d7de"/>
7
+ <rect x="60" y="150" width="180" height="96" rx="14" fill="#f6f8fa" stroke="#d0d7de" stroke-width="2"/>
8
+ <text x="150" y="190" fill="#1f2328" text-anchor="middle" font-family="ui-monospace,monospace" font-size="16" font-weight="700">cordis.patch.yml</text>
9
+ <text x="150" y="218" fill="#57606a" text-anchor="middle" font-family="ui-monospace,monospace" font-size="12">insert: guide-row</text>
10
+ <path d="M246 198h33" stroke="#57606a" stroke-width="3"/>
11
+ <path d="M277 191l10 7-10 7" fill="none" stroke="#57606a" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
12
+ <rect x="285" y="150" width="180" height="96" rx="14" fill="#f6f8fa" stroke="#4B67B4" stroke-width="2"/>
13
+ <text x="375" y="190" fill="#1f2328" text-anchor="middle" font-family="ui-monospace,monospace" font-size="16" font-weight="700">index.js</text>
14
+ <text x="375" y="218" fill="#57606a" text-anchor="middle" font-family="ui-monospace,monospace" font-size="12">ctx.skills.register</text>
15
+ <path d="M471 198h33" stroke="#57606a" stroke-width="3"/>
16
+ <path d="M502 191l10 7-10 7" fill="none" stroke="#57606a" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
17
+ <rect x="510" y="150" width="180" height="96" rx="14" fill="#f6f8fa" stroke="#d0d7de" stroke-width="2"/>
18
+ <text x="600" y="190" fill="#1f2328" text-anchor="middle" font-family="ui-monospace,monospace" font-size="16" font-weight="700">SKILL.md</text>
19
+ <text x="600" y="218" fill="#57606a" text-anchor="middle" font-family="ui-monospace,monospace" font-size="12">bundled · on demand</text>
20
+ <path d="M696 198h33" stroke="#57606a" stroke-width="3"/>
21
+ <path d="M727 191l10 7-10 7" fill="none" stroke="#57606a" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
22
+ <rect x="735" y="150" width="180" height="96" rx="14" fill="#f6f8fa" stroke="#d0d7de" stroke-width="2"/>
23
+ <text x="825" y="190" fill="#1f2328" text-anchor="middle" font-family="ui-monospace,monospace" font-size="16" font-weight="700">docs/levels.md</text>
24
+ <text x="825" y="218" fill="#57606a" text-anchor="middle" font-family="ui-monospace,monospace" font-size="12">ENTRY · FLOW · BOOST</text>
25
+ <path d="M921 198h33" stroke="#57606a" stroke-width="3"/>
26
+ <path d="M952 191l10 7-10 7" fill="none" stroke="#57606a" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
27
+ <rect x="960" y="150" width="180" height="96" rx="14" fill="#f6f8fa" stroke="#16a34a" stroke-width="2"/>
28
+ <text x="1050" y="190" fill="#1f2328" text-anchor="middle" font-family="ui-monospace,monospace" font-size="16" font-weight="700">dsh-standards</text>
29
+ <text x="1050" y="218" fill="#57606a" text-anchor="middle" font-family="ui-monospace,monospace" font-size="12">dsh-levels --format json</text>
30
+ <path d="M375 246v39" stroke="#4B67B4" stroke-width="2" stroke-dasharray="5 5"/>
31
+ <path d="M825 246v39" stroke="#4B67B4" stroke-width="2" stroke-dasharray="5 5"/>
32
+ <rect x="285" y="285" width="630" height="52" rx="12" fill="#f6f8fa" stroke="#4B67B4" stroke-width="2"/>
33
+ <text x="600" y="318" fill="#1f2328" text-anchor="middle" font-family="ui-monospace,monospace" font-size="14">resourceBase: directory · SKILL.md + docs/*.md · no verdict</text>
34
+ <text x="60" y="378" fill="#57606a" font-family="ui-monospace,monospace" font-size="13">static ≠ runtime · not-run ≠ pass · recognized ≠ pass · boost-evidenced ≠ plugin grade</text>
35
+ </svg>
package/docs/rules.md CHANGED
@@ -22,8 +22,8 @@ incomplete/not-run, `3` usage error. `WARN` is not a clean pass and
22
22
  The JSON report also carries a sibling `advice[]` array: one entry per live
23
23
  detail, with `title`, `why`, `fix`, `docsUrl`, `severity`, and `evidence`. It is
24
24
  additive and never changes the verdict (turn it off with `--no-advice`). The
25
- `docsUrl` is built from a release-pinned base (`v0.4.3` in the current rule
26
- table); if it points at an older page, this table is the current mapping.
25
+ `docsUrl` follows the checker's `DOCS_BASE` (currently `v0.4.4`); if it points
26
+ at an older page, this table is the current mapping.
27
27
 
28
28
  <a id="scope-matrix"></a>
29
29
  ## Which checks run in which scope
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-guide",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
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",
package/README-zh.md DELETED
@@ -1,82 +0,0 @@
1
- <div align="center">
2
-
3
- # dsh-plugin-guide
4
-
5
- **DSH 插件质量指南:ENTRY、FLOW、BOOST。**
6
-
7
- 社区指南,不是官方标准、不是认证、不是排名。
8
-
9
- [![npm](https://img.shields.io/npm/v/dsh-plugin-guide)](https://www.npmjs.com/package/dsh-plugin-guide)
10
- [![CI](https://github.com/PerryLink/dsh-plugin-guide/actions/workflows/verify.yml/badge.svg)](https://github.com/PerryLink/dsh-plugin-guide/actions/workflows/verify.yml)
11
- [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
12
-
13
- [English](README.md) · [简体中文](README-zh.md)
14
-
15
- </div>
16
-
17
- ---
18
-
19
- ## 这是什么
20
-
21
- `dsh-plugin-guide` 是 DSH 插件的**指南层**:解释要检查什么、为什么重要,以及
22
- 判定应该由哪个工具负责。它不做认证、不打分、不排名。
23
-
24
- | 包 | 角色 |
25
- |---|---|
26
- | **`dsh-plugin-guide`** | 本包:文字指南、三层地图、agent skill |
27
- | **`dsh-standards`** | 执行总包:ENTRY/FLOW 检查、三层审计、规范文件 |
28
- | **`dsh-plugin-spec`** | 底层规则文本与条款来源 |
29
- | **`dsh-primer`** | 旧的构建/脚手架技能和 CLI(原 `dsh-plugin-guide` 0.3.x) |
30
-
31
- ## 三层
32
-
33
- | 层 | 回答 | 能否判定 |
34
- |---|---|---|
35
- | **ENTRY** | 能不能被识别、安装、启动 | 能:recognized / runtime / failed / incomplete / unavailable |
36
- | **FLOW** | 用户能不能装、配、用、升级、卸载 | 有 runtime 证据时能;否则 `not-run` |
37
- | **BOOST** | 有没有用好 Cordis | 不给插件级判定;按实践登记证据 |
38
-
39
- 三条轨道,不是三个等级;它们相加不等于分数或证书。
40
-
41
- 先读一页地图:[docs/levels.md](docs/levels.md)。
42
-
43
- ## 安装
44
-
45
- ```sh
46
- dsh plugin --profile web add dsh-plugin-guide
47
- ```
48
-
49
- 然后在审查插件时让 agent 使用 `dsh-plugin-guide` 技能。它会将检查交给
50
- `dsh-standards`,将构建/脚手架工作指向 `dsh-primer`。
51
-
52
- ## 检查插件
53
-
54
- ```sh
55
- # 只做 ENTRY 识别(不声明 runtime)
56
- npx dsh-standards ./my-plugin --scope entry --entry-claim static
57
-
58
- # 三层审计;没跑的层保持 not-run / not-measured
59
- npx -p dsh-standards dsh-levels ./my-plugin --format json
60
- ```
61
-
62
- `recognized` 不是通过,`static` 不是通过,`not-run` 也不是通过。
63
-
64
- ## 0.4.0 改了什么
65
-
66
- - 旧的 agent skill 和 `dsh-plugin-dev` CLI 已迁到
67
- [`dsh-primer`](https://github.com/PerryLink/dsh-primer)。
68
- - 本包现在是**指南层**:三层地图、检查路由、证据规则。
69
- - 旧 0.3.x npm 版本已标记 deprecated,已有安装仍可用;0.4.0 是产品切换,
70
- 锁在 `^0.3` 的用户不会自动升级。
71
- - 检查在 [`dsh-standards`](https://github.com/PerryLink/dsh-standards),不在本包。
72
-
73
- ## 边界
74
-
75
- - 不做官方背书、认证、认可或安全审计。
76
- - 不做评分、排名或市场门禁。
77
- - 不伪造 runtime 证据:`static` ≠ `runtime`,`not-run` ≠ `pass`。
78
- - BOOST 是建议和证据,不是插件等级。
79
-
80
- ## 许可
81
-
82
- Apache-2.0。见 [LICENSE](LICENSE) 与 [NOTICE.md](NOTICE.md)。