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.pt.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
+ **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
+ <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
+ ## Instalação em três passos
51
+
52
+ 1. **Instalar** (escolha um canal):
53
+
54
+ ```sh
55
+ # canal git (main mais recente)
56
+ dsh plugin --profile web add github:PerryLink/dsh-plugin-guide
57
+ # canal npm (versões publicadas)
58
+ dsh plugin --profile web add dsh-plugin-guide
59
+ # canal tarball: após npm pack neste repositório
60
+ dsh plugin --profile web add ./dsh-plugin-guide-<version>.tgz
61
+ ```
62
+
63
+ Sem etapa de build: `index.js` é o artefato publicado, e `SKILL.md` mais `docs/` são o corpo da skill.
64
+
65
+ 2. **Pedir a skill uma vez** (as skills carregam sob demanda, nunca como prompt residente):
66
+
67
+ ```text
68
+ > Use dsh-plugin-guide para revisar ./my-plugin: primeiro o veredito ENTRY e depois quais camadas estão not-run.
69
+ ```
70
+
71
+ 3. **Verificar que entrou em vigor**:
72
+
73
+ ```sh
74
+ dsh --profile web --dump-config | grep -A2 'id: dsh-plugin-guide'
75
+ ```
76
+
77
+ 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`).
78
+
79
+ **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.
80
+
81
+ ## Capacidades principais
82
+
83
+ - **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.
84
+ - **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).
85
+ - **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`.
86
+ - **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.
87
+ - **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.
88
+
89
+ ### As três camadas
90
+
91
+ | Camada | Pergunta | Pode emitir veredito? |
92
+ |---|---|---|
93
+ | **ENTRY** | Dá para reconhecer, instalar e iniciar? | Sim: recognized / runtime / failed / incomplete / unavailable |
94
+ | **FLOW** | O usuário consegue instalar, configurar, usar, atualizar e remover? | Sim, apenas onde há evidência de runtime; caso contrário, `not-run` |
95
+ | **BOOST** | Usa o Cordis bem? | Sem veredito no nível do plugin; a evidência é registrada por prática |
96
+
97
+ Leia primeiro o mapa de uma página: [docs/levels.md](docs/levels.md).
98
+
99
+ ### Executar as verificações
100
+
101
+ ```sh
102
+ # Apenas reconhecimento ENTRY (sem reivindicar runtime)
103
+ npx dsh-standards ./my-plugin --scope entry --entry-claim static
104
+
105
+ # Auditoria de três camadas; camadas não executadas continuam not-run / not-measured
106
+ npx -p dsh-standards dsh-levels ./my-plugin --format json
107
+ ```
108
+
109
+ `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)).
110
+
111
+ ### O que mudou em 0.4.0
112
+
113
+ - A skill de agente anterior e a CLI `dsh-plugin-dev` mudaram para o [`dsh-primer`](https://github.com/PerryLink/dsh-primer).
114
+ - Este pacote agora é a camada de **guia**: mapa de três camadas, roteamento de verificações e regras de evidência.
115
+ - 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.
116
+ - As verificações vivem no [`dsh-standards`](https://github.com/PerryLink/dsh-standards), não neste pacote.
117
+
118
+ ## Configuração
119
+
120
+ 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.
121
+
122
+ | Chave | Padrão | Significado |
123
+ |---|---|---|
124
+ | `id` | `dsh-plugin-guide` | Identificador da linha; uma camada de patch posterior a substitui por `id` (substituição da linha inteira) |
125
+ | `name` | `dsh-plugin-guide` | O módulo que o loader importa (`package.json#main` → `index.js`) |
126
+ | `config` | não aceito | Este pacote não lê chaves de configuração; o que for escrito aqui não tem efeito |
127
+
128
+ <details>
129
+ <summary>Arquivo de patch completo (cordis.patch.yml, 9 linhas)</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
+ Para desativar: apague essa linha do patch do perfil ou rode `dsh plugin --profile web remove dsh-plugin-guide`.
146
+
147
+ ## FAQ
148
+
149
+ <details>
150
+ <summary>Ele vai decidir se meu plugin é bom o suficiente?</summary>
151
+
152
+ 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».
153
+
154
+ </details>
155
+
156
+ <details>
157
+ <summary>Um resultado `recognized` ou `static` conta como aprovação?</summary>
158
+
159
+ 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.
160
+
161
+ </details>
162
+
163
+ <details>
164
+ <summary>Instalá-lo mexe no meu perfil ou nos outros plugins?</summary>
165
+
166
+ 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`.
167
+
168
+ </details>
169
+
170
+ <details>
171
+ <summary>E os usuários de 0.3.x?</summary>
172
+
173
+ 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.
174
+
175
+ </details>
176
+
177
+ <details>
178
+ <summary>Onde ficam de fato o verificador e o texto das regras?</summary>
179
+
180
+ 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».
181
+
182
+ </details>
183
+
184
+ ## Limites de segurança
185
+
186
+ - Sem aval oficial, certificação, acreditação ou auditoria de segurança.
187
+ - Sem pontuação, ranking ou portão de mercado.
188
+ - Sem evidência de runtime inventada: `static` ≠ `runtime`, `not-run` ≠ `pass`.
189
+ - BOOST é conselho e evidência, nunca nota do plugin.
190
+ - **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)).
191
+ - **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)).
192
+
193
+ ## Permissões e dados
194
+
195
+ - **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.
196
+ - **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.
197
+ - **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.
198
+
199
+ ## Limitações conhecidas
200
+
201
+ - **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.
202
+ - **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)).
203
+ - **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)).
204
+ - **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)).
205
+ - **O marcador `dsh.standards` não é nota.** No `package.json`, entry/flow = `not-run`, boost = `not-measured`, `evidence: null`: apenas um marcador.
206
+ - **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.
207
+
208
+ ## Interoperabilidade com outros plugins DSH
209
+
210
+ Este plugin **não interfere** em outros plugins:
211
+
212
+ - **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.
213
+ - **Sem colisão de slots nem de rotas HTTP.** Não registra chaves de slot de cliente nem prefixo `webServer`.
214
+ - **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.
215
+ - **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.
216
+ - **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.
217
+ - **Sem mutação global.** Não remenda protótipos, não reescreve `process.env` e não substitui o dispatcher fetch global.
218
+ - **Registro é efeito.** `ctx.effect(() => ctx.skills.register(...))`: parar ou recarregar a quente remove a contribuição.
219
+
220
+ 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).
221
+
222
+ ## Compatibilidade
223
+
224
+ | Superfície | Estado |
225
+ |---|---|
226
+ | 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`. |
227
+ | Node | `>=24.9.0` (requisito da linha 0.2.2, desde `0.2.2-alpha.2`) |
228
+ | Plataformas | Onde o DSH rodar (skill de texto puro; sem metade de navegador, sem extensão nativa) |
229
+ | Modelo | Sem chamadas ao modelo: o host injeta o texto da skill no contexto, então nenhuma capacidade extra de modelo é necessária |
230
+
231
+ ## Ecossistema e qualidade
232
+
233
+ - [Página do pacote no npm](https://www.npmjs.com/package/dsh-plugin-guide) (versões publicadas, `0.4.3`)
234
+ - [Espelho no Gitee](https://gitee.com/perrylink/dsh-plugin-guide) (snapshot somente leitura; o GitHub é canônico)
235
+ - [dsh-standards](https://www.npmjs.com/package/dsh-standards) (o verificador e a auditoria de três camadas `dsh-levels`)
236
+ - [dsh-plugin-spec](https://github.com/PerryLink/dsh-plugin-spec) (o texto de regras de baixo nível e a fonte das cláusulas)
237
+ - [dsh-primer](https://github.com/PerryLink/dsh-primer) (a skill e CLI legadas de construção/andaime)
238
+ - Documentos do repositório: [as três camadas](docs/levels.md) · [ENTRY](docs/entry.md) · [FLOW](docs/flow.md) · [BOOST](docs/boost.md)
239
+ - Governança do repositório: [CHANGELOG](CHANGELOG.md) · [STANDARDS.md](STANDARDS.md) · [CONTRIBUTING](CONTRIBUTING.md)
240
+
241
+ ## Desenvolvimento
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 # regenera os SVG hero claro/escuro em docs/assets (Python + Pillow)
247
+ ```
248
+
249
+ 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.
250
+
251
+ | Caminho | Função |
252
+ |---|---|
253
+ | `index.js` | A única face de host: lê o `SKILL.md`, remove o frontmatter e registra a skill via `ctx.effect` |
254
+ | `SKILL.md` | O corpo da skill e sua `description` (frontmatter YAML) |
255
+ | `docs/` | O mapa de três camadas e as guias ENTRY/FLOW/BOOST referenciadas pelo corpo |
256
+ | `locale/` | Metadados de exibição zh/en da skill (`meta.title`, `meta.description`) |
257
+ | `cordis.patch.yml` | A camada de patch do bundle; apenas `insert`a sua própria linha |
258
+ | `tests/` | `node --test`: parsing do frontmatter e registro da skill |
259
+ | `scripts/gen-readme-assets.py` | Geração programática de imagens (Python + Pillow) |
260
+ | `STANDARDS.md` · `NOTICE.md` · `PRIVACY.md` | Status de padrões, NOTICE e declaração de privacidade |
261
+
262
+ ## Família e agradecimentos
263
+
264
+ 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.
265
+
266
+ - [@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.
267
+
268
+ <details>
269
+ <summary>Expandir todos os 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)** | 🧊 CONGELADO — ver o README do repo |
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)** | 🧊 CONGELADO — ver o README do repo |
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)** | 🧊 CONGELADO — ver o README do repo |
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)** | 🧊 CONGELADO — ver o README do repo |
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)** | 🚫 APOSENTADO (repo arquivado) |
331
+ | **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | |
332
+ | **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | 🚫 APOSENTADO (repo arquivado) |
333
+ | **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | 🚫 APOSENTADO (repo arquivado) |
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)** | 🧊 CONGELADO — ver o README do repo |
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)** | 🚫 APOSENTADO (repo arquivado) |
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)** | 🧊 CONGELADO — ver o README do repo |
361
+ | **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | 🧊 CONGELADO — ver o README do repo |
362
+ | **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | 🧊 CONGELADO — ver o README do repo |
363
+ | **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | 🧊 CONGELADO — ver o README do repo |
364
+ | **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | 🧊 CONGELADO — ver o README do repo |
365
+ | **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | 🚫 APOSENTADO (repo arquivado) |
366
+ | **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | 🚫 APOSENTADO (repo arquivado) |
367
+ | **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | 🚫 APOSENTADO (repo arquivado) |
368
+
369
+ </details>
370
+
371
+ ## Licença
372
+
373
+ [LICENSE](LICENSE) (Apache License 2.0) © 2026 dsh-plugin-guide contributors
374
+
375
+ <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>
@@ -0,0 +1,82 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="1100" height="660" viewBox="0 0 1100 660" role="img" aria-label="dsh-plugin-guide assembly and routing">
2
+ <defs>
3
+ <linearGradient id="lineGrad" x1="0" y1="0" x2="1" y2="0">
4
+ <stop offset="0" stop-color="#8496f5" stop-opacity=".15"/>
5
+ <stop offset=".5" stop-color="#8496f5" stop-opacity=".9"/>
6
+ <stop offset="1" stop-color="#8496f5" stop-opacity=".15"/>
7
+ </linearGradient>
8
+ <filter id="soft" x="-40%" y="-40%" width="180%" height="200%">
9
+ <feDropShadow dx="0" dy="9" stdDeviation="12" flood-color="#1b1735" flood-opacity="0.55"/>
10
+ </filter>
11
+ <pattern id="dots" width="28" height="28" patternUnits="userSpaceOnUse">
12
+ <circle cx="1.3" cy="1.3" r="1.3" fill="#182031"/>
13
+ </pattern>
14
+ </defs>
15
+ <rect width="1100" height="660" fill="#0d1117"/>
16
+ <rect width="1100" height="660" fill="url(#dots)" opacity=".5"/>
17
+ <text x="50" y="62" fill="#f0f3f9" font-family="ui-monospace, SFMono-Regular, Menlo, monospace" font-size="32" font-weight="700">dsh-plugin-guide</text>
18
+ <text x="50" y="90" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="16">assembly and routing · the guide asks, dsh-standards decides</text>
19
+ <rect x="50" y="108" width="1000" height="1.6" rx="1" fill="#2a3142"/>
20
+ <g filter="url(#soft)">
21
+ <rect x="50" y="190" width="176" height="118" rx="17" fill="#161b26" stroke="#2a3142" stroke-width="1.3"/>
22
+ </g>
23
+ <circle cx="74" cy="214" r="12" fill="#242d42"/>
24
+ <text x="74" y="219" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">01</text>
25
+ <text x="138.0" y="256" text-anchor="middle" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">cordis.patch.yml</text>
26
+ <text x="138.0" y="282" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">one inserted row</text>
27
+ <path d="M231 249.0 C241.0 249.0, 241.0 249.0, 251 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
28
+ <path d="M241 244.0 l8 5 -8 5" fill="none" stroke="#8496f5" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
29
+ <g filter="url(#soft)">
30
+ <rect x="256" y="190" width="176" height="118" rx="17" fill="#161b26" stroke="#8496f5" stroke-width="2.6"/>
31
+ </g>
32
+ <circle cx="280" cy="214" r="12" fill="#242d42"/>
33
+ <text x="280" y="219" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">02</text>
34
+ <text x="344.0" y="256" text-anchor="middle" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">index.js</text>
35
+ <text x="344.0" y="282" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">ctx.skills.register</text>
36
+ <path d="M437 249.0 C447.0 249.0, 447.0 249.0, 457 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
37
+ <path d="M447 244.0 l8 5 -8 5" fill="none" stroke="#8496f5" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
38
+ <g filter="url(#soft)">
39
+ <rect x="462" y="190" width="176" height="118" rx="17" fill="#161b26" stroke="#2a3142" stroke-width="1.3"/>
40
+ </g>
41
+ <circle cx="486" cy="214" r="12" fill="#242d42"/>
42
+ <text x="486" y="219" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">03</text>
43
+ <text x="550.0" y="256" text-anchor="middle" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">SKILL.md</text>
44
+ <text x="550.0" y="282" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">the skill body</text>
45
+ <path d="M643 249.0 C653.0 249.0, 653.0 249.0, 663 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
46
+ <path d="M653 244.0 l8 5 -8 5" fill="none" stroke="#8496f5" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
47
+ <g filter="url(#soft)">
48
+ <rect x="668" y="190" width="176" height="118" rx="17" fill="#161b26" stroke="#2a3142" stroke-width="1.3"/>
49
+ </g>
50
+ <circle cx="692" cy="214" r="12" fill="#242d42"/>
51
+ <text x="692" y="219" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">04</text>
52
+ <text x="756.0" y="256" text-anchor="middle" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">docs/levels.md</text>
53
+ <text x="756.0" y="282" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">ENTRY / FLOW / BOOST</text>
54
+ <path d="M849 249.0 C859.0 249.0, 859.0 249.0, 869 249.0" stroke="url(#lineGrad)" stroke-width="2.2" fill="none"/>
55
+ <path d="M859 244.0 l8 5 -8 5" fill="none" stroke="#8496f5" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"/>
56
+ <g filter="url(#soft)">
57
+ <rect x="874" y="190" width="176" height="118" rx="17" fill="#161b26" stroke="#3fb950" stroke-width="2.6"/>
58
+ </g>
59
+ <circle cx="898" cy="214" r="12" fill="#242d42"/>
60
+ <text x="898" y="219" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="11.5" font-weight="700">05</text>
61
+ <text x="962.0" y="256" text-anchor="middle" fill="#f0f3f9" font-family="ui-monospace, monospace" font-size="15.5" font-weight="700">dsh-standards</text>
62
+ <text x="962.0" y="282" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">dsh-levels verdict</text>
63
+ <g filter="url(#soft)">
64
+ <rect x="256" y="378" width="176" height="58" rx="15" fill="#242d42" stroke="#8496f5" stroke-width="1.2"/>
65
+ </g>
66
+ <text x="344" y="404" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="13" font-weight="700">ENTRY</text>
67
+ <text x="344" y="423" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">installs</text>
68
+ <g filter="url(#soft)">
69
+ <rect x="462" y="378" width="176" height="58" rx="15" fill="#242d42" stroke="#8496f5" stroke-width="1.2"/>
70
+ </g>
71
+ <text x="550" y="404" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="13" font-weight="700">FLOW</text>
72
+ <text x="550" y="423" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">works daily</text>
73
+ <g filter="url(#soft)">
74
+ <rect x="668" y="378" width="176" height="58" rx="15" fill="#242d42" stroke="#8496f5" stroke-width="1.2"/>
75
+ </g>
76
+ <text x="756" y="404" text-anchor="middle" fill="#8496f5" font-family="ui-monospace, monospace" font-size="13" font-weight="700">BOOST</text>
77
+ <text x="756" y="423" text-anchor="middle" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12.5">faster</text>
78
+ <rect x="50" y="476" width="1000" height="58" rx="15" fill="#161b26" stroke="#2a3142"/>
79
+ <text x="74" y="502" fill="#8496f5" font-family="ui-monospace, monospace" font-size="13" font-weight="700">route / dsh-levels</text>
80
+ <text x="74" y="522" fill="#a8b1c4" font-family="ui-sans-serif, system-ui, sans-serif" font-size="13">the guide explains what to check; the verdict belongs to dsh-standards</text>
81
+ <text x="50" y="596" fill="#a8b1c4" font-family="ui-monospace, monospace" font-size="13">Apache-2.0 · PerryLink DSH plugin family</text>
82
+ </svg>