# ЁЯОи dsh-output-styles
- **1024 рд╕реНрдЯреЛрд░ рдЪреИрдирд▓**: рдПрдХ рдмрд╛рд░ `npm i -g dsh1024`, рдлрд┐рд░ `dsh1024 plugin --profile web add dsh-output-styles` ([deepseek1024.com](https://deepseek1024.com) рдЗрдВрд╕реНрдЯреЙрд▓ рд░реИрдВрдХрд┐рдВрдЧ рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИ)ред
**DeepSeek Harness рдХреЗ рд▓рд┐рдП Claude Code рдХрд╛ `outputStyles`**: рдореЙрдбрд▓ рдХреА рдЖрдЙрдЯрдкреБрдЯ рд╢реИрд▓реА рдХреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░, рдкреНрд░рддрд┐-рд╕рддреНрд░, рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдмрджрд▓реЗрдВред
*`/style concise` тАФ рдФрд░ рдЕрдм рд╕реЗ рд╣рд░ рдЙрддреНрддрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрддред `/style off` тАФ рд╡рд╛рдкрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░ред*
[](LICENSE)
[](https://gitee.com/perrylink/dsh-output-styles)
[](https://github.com/topics/dsh-plugin)
[](https://github.com/PerryLink/dsh-plugin-doctor#verified-х╛╜чла)
[](https://dsh.market/)
[](#)
[](https://github.com/PerryLink/dsh-output-styles/actions)
[](https://github.com/PerryLink/dsh-output-styles/releases)
[](https://www.npmjs.com/package/dsh-output-styles)
[](https://www.npmjs.com/package/dsh-output-styles)
[](https://dshfind.com/hi/plugins/PerryLink/dsh-output-styles?ref=badge)
[English](README.md) ┬╖ [чоАф╜Уф╕нцЦЗ](README-zh.md) ┬╖ [Espa├▒ol](README-es.md) ┬╖ [Portugu├кs](README-pt.md) ┬╖ [рд╣рд┐рдиреНрджреА](README-hi.md)
```sh
dsh plugin --profile add dsh-output-styles
```
---
**ЁЯУЦ рдЗрдХреЛрд╕рд┐рд╕реНрдЯрдо рдиреЙрд▓реЗрдЬ рдмреЗрд╕** тАФ рдорд╛рдкреЗ рдЧрдП рдЖрдБрдХрдбрд╝реЗ, рдорд╛рд░реНрдХреЗрдЯрд┐рдВрдЧ рдирд╣реАрдВ: [рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдЧрд╛рдЗрдб ┬╖ рдЪрдпрди рдбреЗрдЯрд╛ ┬╖ рд░рдЦрд░рдЦрд╛рд╡ рдорд╛рдирджрдВрдб](https://perrylink.github.io/dsh-plugin-guide/)ред
## Install & uninstall
- **git рдЪреИрдирд▓** (рдирд╡реАрдирддрдо `main`): `dsh plugin --profile web add github:PerryLink/dsh-output-styles` тАФ `prepare` рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗрд╡рд▓ рдЙрддреНрдкрд╛рджрди рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рд╕реЗ рдмрдирд╛рддреА рд╣реИред
- **npm рдЪреИрдирд▓** (рдкреНрд░рдХрд╛рд╢рд┐рдд рд░рд┐рд▓реАрдЬрд╝): `dsh plugin --profile web add dsh-output-styles`.
- **tarball рдЪреИрдирд▓**: рдЗрд╕ рд░реЗрдкреЛ рдореЗрдВ `pnpm pack`, рдлрд┐рд░ `dsh plugin --profile web add ./dsh-output-styles-.tgz`.
- **uninstall**: `dsh plugin --profile web remove dsh-output-styles`.
## тнР хжВцЮЬхоГх╕охИ░ф║Жф╜а
рдпрд╣ рдкреНрд▓рдЧрдЗрди [DSH рдкреНрд▓рдЧрдЗрди рдкрд░рд┐рд╡рд╛рд░](https://github.com/PerryLink) рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ (95 рдкреНрд▓рдЧрдЗрди, рд╕рднреА Apache-2.0)ред рдЕрдЧрд░ рдпрд╣ рдЙрдкрдпреЛрдЧреА рд▓рдЧреЗ, рддреЛ **рдПрдХ рд╕реНрдЯрд╛рд░ рджреЗрдВ** тАФ рдЗрд╕рд╕реЗ рдХреЛрдИ рд╕реБрд╡рд┐рдзрд╛ рдЕрдирд▓реЙрдХ рдирд╣реАрдВ рд╣реЛрддреА, рдкрд░ рдЕрдЧрд▓рд╛ рд╡реНрдпрдХреНрддрд┐ рдЗрд╕реЗ рдЦреЛрдЬ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╕реЗ рдкрд╛ рд▓реЗрддрд╛ рд╣реИред
*English:* part of a 95 plugin family for DeepSeek Harness. If it is useful, **a star helps the next person find it** тАФ nothing is gated behind it.
## What is dsh-output-styles?
`/style concise` тАФ рдФрд░ рдЕрдм рд╕реЗ рд╣рд░ рдЙрддреНрддрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрддред `/style off` тАФ рд╡рд╛рдкрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдкрд░ред

*рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣: рдЗрдВрд╕реНрдЯреЙрд▓ тЖТ рдкреИрдирд▓ рдЦреЛрд▓реЗрдВ тЖТ рдХрд╛рд░реНрдпред рдиреАрдЪреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрдорд╛рдВрдб рд╕рддрд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред*
*рд╡рд╣реА рд░рди, рдПрдирд┐рдореЗрдЯреЗрдбред*
## Compatibility
| Surface | Status |
|---|---|
| Harness | DeepSeek Harness `dsh-v0.2.1-rc.2` (2026-09-09 рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд): рд╕рддреНрд░ рд▓рд┐рдлрд╝рд╛рдлрд╝рд╛ рдЕрдкрдирд╛ ignorable рдлрд╝реАрд▓реНрдб рдХреЗрд╡рд▓ рд╕рдВрдЧреНрд░рд╣реАрдд-рд▓реЙрдЧ рдкрдарди рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рд░рдЦрддрд╛ рд╣реИ - Session.append рдЕрднреА рднреА рдЗрд╕реЗ рд╕реНрдЯреИрдореНрдк рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЗрд╕рд▓рд┐рдП рдЧреЗрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реИред 2026-09-11 рдХреЛ dsh-v0.2.1-rc.2 checkout рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рддреНрдпрд╛рдкрд┐рдд (рдкреВрд░реНрдг рдЧреЗрдЯ рд╢реНрд░реГрдВрдЦрд▓рд╛ + рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдЗрдВрд╕реНрдЯреЙрд▓ рд╕реНрдореЛрдХ)ред |
| Node | `^22.19.0 || >=24.0.0` |
| Platforms | рд╕рднреА (host + рд╡реЗрдм рдХреНрд▓рд╛рдЗрдВрдЯ) |
| Model | рдХреЛрдИ рднреА (рд╕рд┐рд╕реНрдЯрдо-рдкреНрд░реЙрдореНрдкреНрдЯ рдЗрдВрдЬреЗрдХреНрд╢рди) |
## What you get
`dsh-output-styles` DeepSeek Harness рдХреЗ рд▓рд┐рдП Claude Code рдХреЗ `outputStyles` рдХрд╛ рд╕рдордХрдХреНрд╖ рд╣реИ: рдПрдХ `/style` рдХрдорд╛рдВрдб рдЬреЛ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдореЙрдбрд▓ рдХреА рдЖрдЙрдЯрдкреБрдЯ рд╢реИрд▓реА рдмрджрд▓рддрд╛ рд╣реИ, рдкреНрд░рддрд┐-рд╕рддреНрд░ рд╕реНрдерд╛рдпреА рд╣реЛрддрд╛ рд╣реИ рдФрд░ рд╣рд░ рдкреНрд░реЙрдореНрдкреНрдЯ рд╕рдВрдпреЛрдЬрди рдкрд░ рдЗрдВрдЬреЗрдХреНрдЯ рд╣реЛрддрд╛ рд╣реИред
- **рд╢реИрд▓реА рдкреБрд╕реНрддрдХрд╛рд▓рдп** тАФ рдкреНрд░рддрд┐ рд╢реИрд▓реА рдПрдХ Markdown рдлрд╝рд╛рдЗрд▓ (`styles/*.md`); рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП frontmatter, рдореБрдЦреНрдп рднрд╛рдЧ = рдореЙрдбрд▓ рдирд┐рд░реНрджреЗрд╢ред рдЫрд╣ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд (`concise`, `explanatory`, `formal`, `learning`, `proactive`, `step-by-step`), рдЬрд┐рдирдореЗрдВ Claude Code-рд╕рдорддреБрд▓реНрдп `proactive` рдФрд░ `learning` рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
- **`/style` рдХрдорд╛рдВрдб** тАФ рдмрд┐рдирд╛ рддрд░реНрдХ рд╢реИрд▓рд┐рдпреЛрдВ (рд╡рд┐рд╡рд░рдг рд╕рд╣рд┐рдд) рдФрд░ рд╡рд░реНрддрдорд╛рди рдЪрдпрди рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ; `/style ` рдмрджрд▓рддрд╛ рд╣реИ; `/style off` рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрд╣рд╛рд▓ рдХрд░рддрд╛ рд╣реИред
- **рд╕рддреНрд░-рд╕реНрдХреЛрдкреНрдб рд╕реНрдерд╛рдпрд┐рддреНрд╡** тАФ рдЪрдпрди `output_style` рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ, sessionId рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд, рдФрд░ рдкреБрдирдГрдЖрд░рдВрдн рдХреЗ рдмрд╛рдж рднреА рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИред
- **рд╕рд┐рд╕реНрдЯрдо-рдкреНрд░реЙрдореНрдкреНрдЯ рдЗрдВрдЬреЗрдХреНрд╢рди** тАФ рдПрдХ `systemPrompt.section()` рдпреЛрдЧрджрд╛рди (рдХреНрд░рдо `sectionOrder`) рд╣рд░ рд╕рдВрдпреЛрдЬрди рдкрд░ рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдХреА рд╢реИрд▓реА рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ, рдПрдХ рд╡рд┐рдиреНрдпрд╛рд╕-рдпреЛрдЧреНрдп рдмрдЬрдЯ рдкрд░ рдХрд╛рдЯрд╛ рдЧрдпрд╛ред
- **Claude Code рд╕рдорд╛рдирддрд╛** тАФ `keep-coding-instructions`, `force-for-plugin` (рдЙрдкрдирд╛рдо `force`), `outputStyles` JSON рд╕рдВрдЧрддрддрд╛, рд╕реНрддрд░рд┐рдд `stylesDir` рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ, рд╣реЙрдЯ рд░реАрд▓реЛрдб рдФрд░ Web рдХреЗ **Plugins** рдкреЗрдЬ рд╕реЗ рд▓рд╛рдЗрд╡-рд╕рдВрдкрд╛рджрди-рдпреЛрдЧреНрдп рдкрд░рд┐рдпреЛрдЬрдирд╛-рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдлрд╝реЙрд▓рдмреИрдХред
- **рд░реЗрдВрдбрд░рд░ рд░рдЬрд┐рд╕реНрдЯреНрд░реА (`output.render.*`)** тАФ `ctx.outputRenderers` рдХрд┐рд╕реА рднреА рдкреНрд▓рдЧрдЗрди рдХреЛ рдПрдХ рд╢реБрджреНрдз presenter рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИ, рдЬреЛ `output.render/before` рд╡реЙрдЯрд░рдлрд╝реЙрд▓ рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИ; рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░реЗрдВрдбрд░рд░ `concise` рдФрд░ `step-by-step`ред
- **рдкреНрд░рддрд┐-рд╕рддреНрд░/рдкреНрд░рддрд┐-рдЯреВрд▓ рдирд┐рдпрдо** тАФ `rules: [{ match: { tool: 'bash' }, style: 'concise' }]` рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░рд░ рдирд╛рдорд┐рдд рдХрд░рддреЗ рд╣реИрдВ; Web рдХреЗ **Plugins** рдкреЗрдЬ рд╕реЗ рд▓рд╛рдЗрд╡-рд╕рдВрдкрд╛рджрди-рдпреЛрдЧреНрдпред
- **`/transcript`** тАФ рд░реЗрдВрдбрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдХреЛ Markdown рдпрд╛ рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝реНрдб HTML рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ; `--save ` рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рд╕реНрд╡реАрдХреГрддрд┐ рдХреЗ рдмрд╛рдж рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝реНрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдЙрд╕ workspace рдкрде рдкрд░ рд▓рд┐рдЦрддрд╛ рд╣реИред рд╣рд░ рд░реЗрдВрдбрд░ рдореВрд▓ рдкрд╛рда рдХреЛ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдХреЗ рд╕рд╛рде рд░рдЦрддрд╛ рд╣реИред
## Quick start
```sh
dsh plugin --profile web add github:PerryLink/dsh-output-styles
```
```sh
# 1. install the bundle into your profile
dsh plugin --profile web add github:PerryLink/dsh-output-styles
# or from npm (published releases)
dsh plugin --profile web add dsh-output-styles
# 2. restart and verify the row
dsh --profile web --dump-config | grep -A3 'id: output-styles'
```
## Demo
```
You > /style
output style off
concise тАФ Terse, direct answers тАФ minimal prose, no preamble. (Daily coding work, tool-heavy sessions, or when prompt length matters.)
explanatory тАФ Educational answers with short "Insights" that teach as you work. (Learning a codebase, onboarding, тАж)
formal тАФ Formal, precise prose with complete sentences and defined terms. (Reports, documentation, release notes, тАж)
learning тАФ Collaborative learn-by-doing mode with short "Insights" and small hands-on steps for the user. (Pairing, onboarding, тАж)
proactive тАФ Execute immediately, assume reasonable defaults, and prefer action over planning. (Routine multi-step work, тАж)
step-by-step тАФ Numbered reasoning steps with explicit intermediate results. (Debugging, design decisions, тАж)
You > /style concise
switched to concise
You > шп╖хПкчФиф╕АхПешпЭф╗Лч╗Нф╜ашЗкх╖▒уАВ
AI > цИСцШпш┐РшбМхЬи DeepSeek Harness цПТф╗╢хМЦх╣│хП░ф╕КуАБхЯ║ф║О deepseek-v4-pro цибхЮЛчЪД AI ч╝ЦчаБф╗гчРЖуАВ
```
## How it works
```mermaid
flowchart LR
U[You type /style concise] --> C[command registry]
C -->|command/run logged| L[(session log)]
C -->|put {style, source}| D[(output_style domain)]
D --> R[OutputStyleRuntime]
R -->|body at every assembly| S[systemPrompt section order 90]
S --> M[Model request]
M -->|full system prompt| H[system/message logged]
```
рдореЙрдбрд▓ рдЬреЛ рджреЗрдЦрддрд╛ рд╣реИ рд╡рд╣ рд╕рдм рд╕рддреНрд░ рд▓реЙрдЧ рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг-рдпреЛрдЧреНрдп рд╣реИ тАФ рдХреЛрдИ рдирдпрд╛ рд╕рддреНрд░ рдШрдЯрдирд╛ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ, рдХреЛрдИ agent-loop рдмрджрд▓рд╛рд╡ рдирд╣реАрдВред рд╢реИрд▓реА рдирд╛рдо `command/run` рд╕реЗ рдЖрддрд╛ рд╣реИ, рд╕рдЯреАрдХ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╛рда `system/message` рд╕реЗ, рдФрд░ рд╕реНрд░реЛрдд рдорд╛рд░реНрдХрд░ `{ kind: 'dsh-output-styles' }` рдбреЛрдореЗрди рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред рд╢реИрд▓рд┐рдпрд╛рдБ рдХреЗрд╡рд▓ рдореБрдЦреНрдп рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ; рдЙрдк-рдПрдЬреЗрдВрдЯ рд╕рддреНрд░ рдЕрдкрдиреЗ рдкреНрд░реЙрдореНрдкреНрдЯ рд░рдЦрддреЗ рд╣реИрдВ (Claude Code рдХреА рддрд░рд╣)ред
### рдЙрджрд╛рд╣рд░рдг
рдпреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкреНрд░рд╡реЗрд╢ рдмрд┐рдВрджреБ рд╣реИрдВ; рдЗрдВрд╕реНрдЯреЙрд▓ рдХреЗ рдмрд╛рдж рдПрдХ рдЪрд▓рд╛рдПрдБред
#### рд╡рд┐рд╕реНрддреГрдд рдЙрджрд╛рд╣рд░рдг
**рдХрдорд╛рдВрдб**
~~~sh
/style concise
~~~
**рдЖрдЙрдЯрдкреБрдЯ**
~~~text
switched to concise
~~~
*рд╕реНрд░реЛрдд `plugins/dsh-output-styles/src/runtime.ts:474-478; asserted in tests/runtime.spec.ts:91; README ┬зCommand reference line 194`*
#### рд╡рд┐рдлрд▓рддрд╛ рд╢рд╛рдЦрд╛
**рдЗрдирдкреБрдЯ**
~~~text
/style nope
~~~
**рдЖрдЙрдЯрдкреБрдЯ**
~~~text
unknown output style "nope" (available: concise, explanatory, formal, learning, proactive, step-by-step)
~~~
*рд╕реНрд░реЛрдд `plugins/dsh-output-styles/src/runtime.ts:213-214,474-475; plugins/dsh-output-styles/tests/runtime.spec.ts:118-125`*
#### рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЙрджрд╛рд╣рд░рдг
- `/transcript`
- `output_style`
## Configuration
рд╕рднреА рдЯреНрдпреВрдиреЗрдмрд▓ Schemastery `Config` рдлрд╝реАрд▓реНрдб рд╣реИрдВ (cordis.yml рд╕реЗ рдмрджрд▓реЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ)ред рдЕрдорд╛рдиреНрдп рдорд╛рди рд▓реЛрдб рдХреЛ рд╡рд┐рдлрд▓ рдХрд░рддреЗ рд╣реИрдВред
`defaultStyle` рдФрд░ `rules` рдХреЛ `volatile()` рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП settings forms рд╕реАрдо рдХреЛ рд╕рдВрдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ host рдкрд░ рд╡реЗ **рд▓рд╛рдЗрд╡, Web-рд╕рдВрдкрд╛рджрди-рдпреЛрдЧреНрдп рдлрд╝реАрд▓реНрдб** рд╣реИрдВ: рдЙрдиреНрд╣реЗрдВ Web UI рдХреЗ **Plugins тЖТ dsh-output-styles** рдореЗрдВ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рдЪрд▓ рд░рд╣рд╛ рдкреНрд▓рдЧрдЗрди рдмрд┐рдирд╛ рд░реАрдорд╛рдЙрдВрдЯ рдХреЗ рдирдпрд╛ рдорд╛рди рдЕрдкрдирд╛ рд▓реЗрддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рднреА рдлрд╝реАрд▓реНрдб рдХреЗрд╡рд▓ composition рддрдХ рд╕реАрдорд┐рдд рд░рд╣рддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд▓рд┐рдП рд░реАрд▓реЛрдб рдЪрд╛рд╣рд┐рдПред рдХрдорд┐рдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдорд╛рди рд▓рд╛рдЧреВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдорд╛рдиреНрдп рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ тАФ рдЕрдорд╛рдиреНрдп рд╣реЛрдиреЗ рдкрд░ рд╡рд╣ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЪрд▓ рд░рд╣реЗ рдорд╛рди рдЕрдкрд░рд┐рд╡рд░реНрддрд┐рдд рд░рд╣рддреЗ рд╣реИрдВред
| Key | Default | рд╡реЗрдм-рд╕рдВрдкрд╛рджрди рдпреЛрдЧреНрдп | Meaning |
|---|---|---|---|
| `stylesDir` | `[]` | рдирд╣реАрдВ | рд╢реИрд▓реА-рдкреБрд╕реНрддрдХрд╛рд▓рдп рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ, cwd рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖; рдмрд╛рдж рдХреА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдкрд╣рд▓реЗ рд╡рд╛рд▓реЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреА рд╣реИрдВред `[]` = рдХреЗрд╡рд▓ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд `styles/` |
| `maxStyleChars` | `4000` | рдирд╣реАрдВ | рд╢реИрд▓реА-рдореБрдЦреНрдп рдмрдЬрдЯ (тЙе 1); рд▓рдВрдмреЗ рднрд╛рдЧ рдПрдХ рдорд╛рд░реНрдХрд░ рд╕реЗ рдХрд╛рдЯреЗ рдЬрд╛рддреЗ рд╣реИрдВ |
| `defaultStyle` | `''` | **рд╣рд╛рдБ** | рдЙрди рд╕рддреНрд░реЛрдВ рдХреА рд╢реИрд▓реА рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдХрднреА рдЪрдпрди рдирд╣реАрдВ рдХрд┐рдпрд╛; `''` = рдХреЛрдИ рд╢реИрд▓реА рдирд╣реАрдВред рд▓рд╛рдЗрд╡ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рди рдореМрдЬреВрдж рдирд╛рдо рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ |
| `compatJson` | `true` | рдирд╣реАрдВ | Claude Code `outputStyles` JSON рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рд▓реЛрдб рдХрд░реЗрдВ (рдПрдХрд▓ рдСрдмреНрдЬреЗрдХреНрдЯ рдпрд╛ рдРрд░реЗ) |
| `sectionOrder` | `90` | рдирд╣реАрдВ | рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдП рдЧрдП рдЕрдиреБрднрд╛рдЧ рдХрд╛ рдХреНрд░рдо (0 = persona, 100тАУ199 = рдЯреВрд▓ рдорд╛рд░реНрдЧрджрд░реНрд╢рди) |
| `truncationMarker` | `"\n\n[style truncated]"` | рдирд╣реАрдВ | рдХрд╛рдЯрдиреЗ рдХреЗ рдмрд┐рдВрджреБ рдкрд░ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдорд╛рд░реНрдХрд░ |
| `includeBuiltins` | `true` | рдирд╣реАрдВ | рдкреИрдХреЗрдЬ рдХреЗ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд `styles/` рдХреЛ рдирд┐рдореНрдирддрдо-рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдкрд░рдд рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░реЗрдВ |
| `watchStyles` | `true` | рдирд╣реАрдВ | рдбрд┐рд╕реНрдХ рдкрд░ рд╢реИрд▓реА рдлрд╝рд╛рдЗрд▓ рдмрджрд▓рдиреЗ рдкрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдлрд┐рд░ рд╕реЗ рд▓реЛрдб рдХрд░реЗрдВ |
| `rules` | `[]` | **рд╣рд╛рдБ** | рдкреНрд░рддрд┐-рд╕рддреНрд░/рдкреНрд░рддрд┐-рдЯреВрд▓ рд░реЗрдВрдбрд░ рдирд┐рдпрдо: `[{ match: { tool?, contentType?, session? }, style, priority? }]` |
| `enableExport` | `true` | рдирд╣реАрдВ | `/transcript` рдХрдорд╛рдВрдб рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ (Markdown/HTML рд╕рддреНрд░ рдирд┐рд░реНрдпрд╛рдд, рд░реЗрдВрдбрд░рд░-рдЬрд╛рдЧрд░реВрдХ; `--save` рд╕реНрд╡реАрдХреГрддрд┐ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ) |
| `respectCoreOutputStyles` | `true` | рдирд╣реАрдВ | рдХреЛрд░ `outputStyles` рд╕реЗрд╡рд╛ рдХрд╛ рдкрддрд╛ рдЪрд▓рдиреЗ рдкрд░ рдЗрд╕ рдкреНрд▓рдЧрдЗрди рдХрд╛ prompt рдЗрдВрдЬреЗрдХреНрд╢рди рдЫреЛрдбрд╝реЗрдВ (hot-switch / rules / export рдмрдирд╛рдП рд░рдЦреЗрдВ) |
**0.1.6 рдпрд╛ рдкреБрд░рд╛рдиреЗ рд╕реЗ рдорд╛рдЗрдЧреНрд░реЗрд╢рдиред** рдЙрди рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдкреНрд▓рдЧрдЗрди рдХреЗ рдЕрдкрдиреЗ рджреЛ settings рдЕрдиреБрднрд╛рдЧ рдереЗ тАФ `output-style` (`style`) рдФрд░ `output-style-rules` (`rules`)ред 0.1.7 host рдиреЗ рдЬрд┐рд╕ API рдкрд░ рд╡реЗ рдмрдиреЗ рдереЗ рдЙрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рджреЛрдиреЛрдВ рдЕрдиреБрднрд╛рдЧ рдЕрдм рдирд╣реАрдВ рд╣реИрдВред рд╡рд╣рд╛рдБ рд░рдЦрд╛ рдХреЛрдИ рднреА рдорд╛рди рд╕рдВрдмрдВрдзрд┐рдд `Config` рдлрд╝реАрд▓реНрдб рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдБ тАФ `output-style.style` тЖТ `defaultStyle`, `output-style-rules.rules` тЖТ `rules` тАФ рдЕрдкрдиреЗ profile patch (`cordis.yml`) рдореЗрдВ, рдпрд╛ рдЙрд╕реЗ Plugins рдкреЗрдЬ рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдВред `/style` рд╕реЗ рдХрд┐рдП рдЧрдП рдкреНрд░рддрд┐-рд╕рддреНрд░ рдЪрдпрди рдЕрдкреНрд░рднрд╛рд╡рд┐рдд рд░рд╣рддреЗ рд╣реИрдВ: рд╡реЗ `output_style` storage рдбреЛрдореЗрди рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВред
## Tools & surfaces
| Surface | Kind | Notes |
|---|---|---|
| `/style` | command | рд╢реИрд▓рд┐рдпрд╛рдБ рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ, рдмрджрд▓реЗрдВ рдпрд╛ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрд╣рд╛рд▓ рдХрд░реЗрдВ |
| `/transcript` | command | рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдХреЛ Markdown рдпрд╛ рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝реНрдб HTML рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ; `--save` рд╕реНрд╡реАрдХреГрддрд┐ рд╕реЗ рд▓рд┐рдЦрддрд╛ рд╣реИ |
| `output_style` | storage domain | sessionId рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд рд╕рддреНрд░-рд╕реНрдХреЛрдкреНрдб рд╢реИрд▓реА рдЪрдпрди |
| `systemPrompt.section()` | contribution | рд╣рд░ рд╕рдВрдпреЛрдЬрди рдкрд░ рд╡рд░реНрддрдорд╛рди рд╢реИрд▓реА рдХрд╛ рдореБрдЦреНрдп рднрд╛рдЧ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░рддрд╛ рд╣реИ |
| `output.render.*` | renderer registry | `ctx.outputRenderers` + `output.render/before` рд╡реЙрдЯрд░рдлрд╝реЙрд▓ |
| `style` | projection | рд╕реНрдерд┐рд░ рдХрдорд╛рдВрдбреЛрдВ рд╕реЗ рдореБрдбрд╝рд╛ рд╣реБрдЖ `{ options, currentValue }` |
| Web picker | client entry | `dsh-output-styles/client` `/style` рдХреЛ рдкреЙрдк-рдЕрдк рдЪрдпрдирдХрд░реНрддрд╛ рд╕реЗ рд╕рдЬрд╛рддрд╛ рд╣реИ |
## Command reference
| Input | Outcome |
|---|---|
| `/style` | рд╡рд░реНрддрдорд╛рди рдЪрдпрди + рдкреНрд░рддрд┐ рд╢реИрд▓реА рдПрдХ рдкрдВрдХреНрддрд┐ (рдирд╛рдо тАФ рд╡рд┐рд╡рд░рдг) рд╕реВрдЪреАрдмрджреНрдз рдХрд░реЗрдВ |
| `/style concise` | рдмрджрд▓реЗрдВ (рд╕реНрдерд╛рдпреА рд▓реЗрдЦрди), `switched to concise` |
| `/style Diagrams first` | рдмрд╣реБ-рд╢рдмреНрдж рдирд╛рдо рдкреВрд░рд╛ рд╢реЗрд╖ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ |
| `/style off` | рдкрд░рд┐рдпреЛрдЬрдирд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдмрд╣рд╛рд▓ рдХрд░реЗрдВ (settings рдбрд┐рдлрд╝реЙрд▓реНрдЯ, рдлрд┐рд░ `defaultStyle`) |
| `/style nope` | `error: unknown output style "nope" (available: тАж)` |
| `/transcript` | рд░реЗрдВрдбрд░ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗ рд╡рд░реНрддрдорд╛рди рд╕рддреНрд░ рдХреЛ Markdown рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ |
| `/transcript md` | Markdown рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ (`md`, `markdown` рдХрд╛ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░реВрдк рд╣реИ) |
| `/transcript html` | рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝реНрдб HTML рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ |
| `/transcript --renderer=concise` | рдПрдХ рд░реЗрдВрдбрд░рд░ рдмрд╛рдзреНрдп рдХрд░рдХреЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ (рдирд┐рдпрдо рдЫреЛрдбрд╝реЗ рдЧрдП) |
| `/transcript md --save report.md` | рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдВ, рдлрд┐рд░ рд╕реНрд╡реАрдХреГрддрд┐ рдХреЗ рдмрд╛рдж рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝реНрдб рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ `report.md` рдореЗрдВ рд▓рд┐рдЦреЗрдВ |
## Style library
рдкреНрд░рддрд┐ рд╢реИрд▓реА рдПрдХ Markdown рдлрд╝рд╛рдЗрд▓; frontmatter рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП, рдореБрдЦреНрдп рднрд╛рдЧ = рдореЙрдбрд▓ рдирд┐рд░реНрджреЗрд╢ред `name` рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рд░рдЦ рд╕рдХрддрд╛ рд╣реИ (`Diagrams first`)ред
| Field | Default | Meaning |
|---|---|---|
| `name` | рдлрд╝рд╛рдЗрд▓ рдирд╛рдо | рдмрджрд▓рд╛рд╡ рдХрд╛ рд▓рдХреНрд╖реНрдп; рдЕрдХреНрд╖рд░, рдЕрдВрдХ, рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдФрд░ рд╣рд╛рдЗрдлрд╝рди (`off` рдЖрд░рдХреНрд╖рд┐рдд рд╣реИ) |
| `description` | тАФ (рдЖрд╡рд╢реНрдпрдХ) | рд╕реВрдЪрд┐рдпреЛрдВ рдФрд░ рдЪрдпрдирдХрд░реНрддрд╛ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рд╡рд╛рдХреНрдп |
| `whenToUse` | тАФ | рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╡реИрдХрд▓реНрдкрд┐рдХ рдорд╛рд░реНрдЧрджрд░реНрд╢рди |
| `keep-coding-instructions` | `false` | `true` рд╣реЛрдиреЗ рдкрд░ harness рдкреНрд░реЙрдореНрдкреНрдЯ рд░рдЦреЗрдВ; `false` рд╣реЛрдиреЗ рдкрд░ рдЙрд╕реЗ рдмрджрд▓ рджреЗрдВ (Claude Code рдЕрд░реНрдерд╡рд┐рдЬреНрдЮрд╛рди) |
| `force-for-plugin` | `false` | рдмрд┐рдирд╛ рд╢рд░реНрдд рд▓рд╛рдЧреВ рдХрд░реЗрдВ, рдХрд┐рд╕реА рднреА рд╕рддреНрд░ рдЪрдпрди рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рддреЗ рд╣реБрдП; `force` рдПрдХ рдЙрдкрдирд╛рдо рд╣реИ, рдЕрдзрд┐рдХрддрдо рдПрдХ рд╢реИрд▓реА рдЗрд╕реЗ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреА рд╣реИ |
`compatJson: true` рд╣реЛрдиреЗ рдкрд░, Claude Code `outputStyles` JSON рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ (`{ name, description, prompt }`) Markdown рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рд▓реЛрдб рд╣реЛрддреА рд╣реИрдВ; рдкрд╛рд░реНрд╕ рди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдПрдХ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИрдВред
## Renderer protocol
`output.render.*` рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░ рдмрд┐рдВрджреБ рдореЗрдВ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдПрдХ рд░реЗрдВрдбрд░рд░ рдПрдХ **рд╢реБрджреНрдз presenter** рд╣реИ тАФ `presenter(text, context)` рддрд░реНрдХреЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рди рдбреЗрдЯрд╛ рдореЗрдВ рдореИрдк рдХрд░рддрд╛ рд╣реИ, DOM рдХреЛ рдХрднреА рдирд╣реАрдВ рдЫреВрддрд╛ тАФ рдЯреВрд▓ рдирд╛рдо рдФрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рдХрд╛рд░ рд╕реЗ рдорд┐рд▓рд╛рди, рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╕реЗ рдХреНрд░рдордмрджреНрдзред
- **Waterfall рдкрд╣рд▓реЗ**: рд╣рд░ рд░реЗрдВрдбрд░ рдЕрдиреБрд░реЛрдз `output.render/before` (`{ text, context }`) рд╕реЗ рдЧреБрдЬрд╝рд░рддрд╛ рд╣реИ; listeners рдХреЛ `next()` рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
- **Rules**: `rules: [{ match: { tool: 'bash' }, style: 'concise' }]` рдорд┐рд▓рд╛рди рд╡рд╛рд▓реЗ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рд░реЗрдВрдбрд░рд░ рдирд╛рдорд┐рдд рдХрд░рддрд╛ рд╣реИ; рдмрд░рд╛рдмрд░реА `priority` рд╕реЗ рдФрд░ рдлрд┐рд░ рдирд┐рдпрдо рдХреНрд░рдо рд╕реЗ рдЯреВрдЯрддреА рд╣реИред
- **Built-ins**: `concise` (рд╡реНрд╣рд╛рдЗрдЯрд╕реНрдкреЗрд╕ рд╕рдВрдШрдирди + рдмрдЬрдЯ рдХрдЯрд╛рд╡) рдФрд░ `step-by-step` (рд╕реБрд╕рдВрдЧрдд рдЪрд░рдг рдХреНрд░рдорд╛рдВрдХрди)ред
- **Auditability**: рд╣рд░ рд░реЗрдВрдбрд░ рдкрд░рд┐рдгрд╛рдо `{ original, rendered, rendererId, changed }` рд░рдЦрддрд╛ рд╣реИ; рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╛рда рдЬреЛ рджрд┐рдЦрддрд╛ рд╣реИ, рдореВрд▓ рд╕рддреНрд░ рд▓реЙрдЧ рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг-рдпреЛрдЧреНрдп рд░рд╣рддрд╛ рд╣реИред
## Web picker
`dsh.client` рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ host `/style` рдХрдорд╛рдВрдб рдХреЗ рдирдВрдЧреЗ рдЖрд╣реНрд╡рд╛рди рдХреЛ рдПрдХ рдкреЙрдк-рдЕрдк рдЪрдпрдирдХрд░реНрддрд╛ рд╕реЗ рд╕рдЬрд╛рддреА рд╣реИ: рдПрдХ "off" рдкрдВрдХреНрддрд┐ + рдкреНрд░рддрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╢реИрд▓реА рдПрдХ рдкрдВрдХреНрддрд┐ (`description ┬╖ whenToUse`), рд╕рдХреНрд░рд┐рдп рдкрдВрдХреНрддрд┐ рдЪрд┐рд╣реНрдирд┐рддред рдЪреБрдирдирд╛ рдХрдорд╛рдВрдб Remote рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ `/style ` рд╕рдмрдорд┐рдЯ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рд░ рдмрджрд▓рд╛рд╡ host рдХрд╛ рд╕реНрдерд╛рдпреА рдХрдорд╛рдВрдб рдЬреАрд╡рдирдЪрдХреНрд░ рдмрдирд╛рдП рд░рдЦрддрд╛ рд╣реИред рдЪрдпрдирдХрд░реНрддрд╛ Web UI рдХреЗ `zh`/`en` рднрд╛рд╖рд╛ рдпреБрдЧреНрдо рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рддрд╛ рд╣реИред
## Differences from Claude Code
| | Claude Code | dsh-output-styles |
|---|---|---|
| рд╢реИрд▓реА рдлрд╝рд╛рдЗрд▓реЗрдВ | рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛/рдкрд░рд┐рдпреЛрдЬрдирд╛/рдкреНрд░рдмрдВрдзрд┐рдд рд╕реНрддрд░реЛрдВ рдкрд░ `.claude/output-styles` | `stylesDir` рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛рдПрдБ + рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд `styles/`, рдмрд╛рдж рд╡рд╛рд▓реА рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬреАрддрддреА рд╣реИ |
| рдХрд╕реНрдЯрдо рд╢реИрд▓рд┐рдпрд╛рдБ | Markdown, frontmatter `name`/`description`/`keep-coding-instructions`/`force-for-plugin` | рд╕рдорд╛рди рдлрд╝реАрд▓реНрдб (`force-for-plugin` рд╢рдмреНрджрд╢рдГ рд╕реНрд╡реАрдХреГрдд, `force` рдЙрдкрдирд╛рдо) + `whenToUse` |
| рд▓реАрдЧреЗрд╕реА JSON | `settings.json` рдореЗрдВ `outputStyles` рдРрд░реЗ | рд╢рдмреНрджрд╢рдГ рд▓реЛрдб (`compatJson: true`) |
| рдкреНрд░рднрд╛рд╡реА рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп | `/clear` рдХреЗ рдмрд╛рдж рдпрд╛ рдирдпрд╛ рд╕рддреНрд░ | рддреБрд░рдВрдд тАФ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдореНрдкреНрдЯ рдкреНрд░рддрд┐-рдЕрдиреБрд░реЛрдз рдкреБрдирдГ рд╕рдВрдпреЛрдЬрд┐рдд рд╣реЛрддрд╛ рд╣реИ |
| рдЙрдк-рдПрдЬреЗрдВрдЯ | рд╢реИрд▓рд┐рдпрд╛рдБ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреАрдВ | рд╕рдорд╛рди тАФ рдЙрдк-рдПрдЬреЗрдВрдЯ рд╕рддреНрд░ рдЕрдкрдиреЗ рдкреНрд░реЙрдореНрдкреНрдЯ рд░рдЦрддреЗ рд╣реИрдВ |
| рдмрджрд▓рдирд╛ | `/config` рдореЗрдиреВ рдпрд╛ `outputStyle` рд╕реЗрдЯрд┐рдВрдЧ (`/output-style` рдХрдорд╛рдВрдб v2.1.91 рдореЗрдВ рд╣рдЯрд╛рдпрд╛ рдЧрдпрд╛) | `/style` рдХрдорд╛рдВрдб + Web picker + Web рдХреЗ Plugins рдкреЗрдЬ рдкрд░ `defaultStyle` рдлрд╝реАрд▓реНрдб |
## Conflict check
рд╡рд┐рдХрд╛рд╕ рд╕реЗ рдкрд╣рд▓реЗ DSH рдкрд╛рд░рд┐рд╕реНрдерд┐рддрд┐рдХреА рдХреЗ рд╡рд┐рд░реБрджреНрдз рдЬрд╛рдБрдЪрд╛ рдЧрдпрд╛ (2026-08 рд╕реНрдиреИрдкрд╢реЙрдЯ): [topic:dsh-plugin](https://github.com/topics/dsh-plugin) рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдХреЛрдИ `style`/`output-style` рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдирд╣реАрдВ, рдЪрд╛рд░ рдкреНрд░рдореБрдЦ [awesome lists](https://github.com/awesome-dsh-plugin/awesome-dsh-plugin) рдореЗрдВ рдХреЛрдИ output-style рд╢реНрд░реЗрдгреА рдирд╣реАрдВ, рдФрд░ [dsh-hub catalog](https://github.com/omdsh-dev/dsh-hub-workshop) рдореЗрдВ рдХреЛрдИ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдирд╣реАрдВред рдирд┐рдХрдЯрддрдо рдкрдбрд╝реЛрд╕реА тАФ [dsh-soul-md](https://github.com/Scorp1o117/dsh-soul-md) (persona) рдФрд░ [dsh-claude-marketplace](https://github.com/ben7am1n/dsh-claude-marketplace) (рдЖрдЙрдЯрдкреБрдЯ рд╢реИрд▓рд┐рдпрд╛рдБ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ v0.2+ рддрдХ рдЯрд╛рд▓реА рдЧрдИрдВ) тАФ рд╕рдиреНрдирд┐рдХрдЯ рд╣реИрдВ, рд╕рдВрдШрд░реНрд╖рдкреВрд░реНрдг рдирд╣реАрдВред
## Permissions & data
- **Permissions**: workshop рдореИрдирд┐рдлрд╝реЗрд╕реНрдЯ `fs:read`, `fs:write`, `fs:watch`, `storage:read`, `storage:write` рдФрд░ `settings:read` рдШреЛрд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
- **Data**: рд╢реИрд▓реА рдЪрдпрди `output_style` рд╕реНрдЯреЛрд░реЗрдЬ рдбреЛрдореЗрди рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ (sessionId рд╕реЗ рдЕрдиреБрдХреНрд░рдорд┐рдд); рдХреЛрдИ рдЕрдиреНрдп рд╕реНрдерд┐рддрд┐ рд╕реНрдерд╛рдпреА рдирд╣реАрдВ, рдХреЛрдИ рдиреЗрдЯрд╡рд░реНрдХ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВред
- **Session log**: рд╢реИрд▓реА рдирд╛рдо `command/run` рд╕реЗ рдЖрддрд╛ рд╣реИ, рд╕рдЯреАрдХ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкрд╛рда `system/message` рд╕реЗ; рд╕реНрд░реЛрдд рдорд╛рд░реНрдХрд░ `{ kind: 'dsh-output-styles' }` рдбреЛрдореЗрди рд░рд┐рдХреЙрд░реНрдб рдореЗрдВ рдЪрд▓рддрд╛ рд╣реИред
## Security boundaries
- **рдХреЗрд╡рд▓ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рд╕реЗрд╡рд╛рдПрдБред** `systemPrompt`, рдХрдорд╛рдВрдб, рд╕реНрдЯреЛрд░реЗрдЬ рдФрд░ settings рдпреЛрдЧрджрд╛рди рдХрд░рддрд╛ рд╣реИ; engine / agent-loop / apiproxy / рдЖрдзрд┐рдХрд╛рд░рд┐рдХ UI рдореЗрдВ рдХреЛрдИ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВред
- **рдореЙрдбрд▓-рджреГрд╢реНрдп тЯ║ рд▓реЙрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ред** рдореЙрдбрд▓ рдЬреЛ рджреЗрдЦрддрд╛ рд╣реИ рд╡рд╣ рд╕рдм рд╕рддреНрд░ рд▓реЙрдЧ рд╕реЗ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг-рдпреЛрдЧреНрдп рд╣реИ тАФ рдХреЛрдИ рдирдпрд╛ рд╕рддреНрд░ рдШрдЯрдирд╛ рдкреНрд░рдХрд╛рд░ рдирд╣реАрдВ, рдХреЛрдИ agent-loop рдмрджрд▓рд╛рд╡ рдирд╣реАрдВред
- **рдореВрд▓ рд╣рдореЗрд╢рд╛ рд░рдЦрд╛ рдЧрдпрд╛ред** рд╣рд░ рд░реЗрдВрдбрд░ (рдФрд░ `/transcript`) рдореВрд▓ рдкрд╛рда рдХреЛ рд░реЗрдВрдбрд░ рдХрд┐рдП рдЧрдП рдХреЗ рд╕рд╛рде рд░рдЦрддрд╛ рд╣реИ; HTML рдирд┐рд░реНрдпрд╛рдд рдХреЗ рд▓рд┐рдП рд╕реИрдирд┐рдЯрд╛рдЗрдЬрд╝реНрдб HTML рдЙрдкрдпреЛрдЧ рд╣реЛрддрд╛ рд╣реИред
- **рдбрд┐рд╕реНрдХ рд▓реЗрдЦрди рдЧреЗрдЯреЗрдбред** `/transcript --save` рдХреЗрд╡рд▓ рд╕реНрд╡реАрдХреГрддрд┐ рд╕реЗрд╡рд╛ рдХреА рдЕрдиреБрдорддрд┐ рдХреЗ рдмрд╛рдж рд▓рд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдХрдВрдЯреЗрдВрдЯ рдкрд╣рд▓реЗ `sanitizeText` рд╢реБрджреНрдз рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдЧреБрдЬрд╝рд░рддрд╛ рд╣реИ; рд╕реНрд╡реАрдХреГрддрд┐ рдпрд╛ fs рд╕реЗрд╡рд╛ рдХреЗ рдмрд┐рдирд╛ рдХреБрдЫ рднреА рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ (fail-closed)ред
## Known limitations
- **рдХреЛрд░ рдХреЗ рд╕рд╛рде рд╕рд╣рдЕрд╕реНрддрд┐рддреНрд╡ред** рдпрджрд┐ рдХреЛрдИ рдлрд╝рд░реНрд╕реНрдЯ-рдкрд╛рд░реНрдЯреА `outputStyles` рдХреНрд╖рдорддрд╛ рдЖрддреА рд╣реИ, рддреЛ рдпрд╣ рдкреНрд▓рдЧрдЗрди рдЙрд╕рдХреА `outputStyles` рд╕реЗрд╡рд╛ рдкрд╣рдЪрд╛рдирдХрд░ рдЗрдВрдХреНрд░реАрдореЗрдВрдЯрд▓ рд╕рддрд╣ (hot-switch, rules, `/transcript`) рдкрд░ рдбрд┐рдЧреНрд░реЗрдб рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ prompt рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЛрд░ рдХреЛ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИ тАФ рджреЗрдЦреЗрдВ [`docs/COEXISTENCE.md`](docs/COEXISTENCE.md) рддрдерд╛ рдирд┐рд░реНрдпрд╛рддрд┐рдд `detectCoreOutputStyles` / `coexistenceReport`. **рдбрд┐рдЧреНрд░реЗрдбреЗрдб рдореЛрдб рд╡рд╣рд╛рдБ рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рдЙрд╕реЗ рджреЗрдЦ рд╕рдХреЗрдВ**: рд╣рд░ `/style <рд╢реИрд▓реА>` рдФрд░ `/style off` рдХреЗ рдЙрддреНрддрд░ рдореЗрдВ `degraded coexistence mode` рдиреЛрдЯ рдЖрддрд╛ рд╣реИ, рдФрд░ `style` рд╕реЗрд╢рди projection `promptInjection: 'enabled' | 'disabled'` рджреЗрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдХреЛрдИ рд╕рддрд╣ рд╢реИрд▓реА рдХреЛ рд▓рд╛рдЧреВ рдмрддрд╛рдХрд░ рднреНрд░рдо рдирд╣реАрдВ рдлреИрд▓рд╛рддреАред (0.7.0 рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдПрдХрдорд╛рддреНрд░ рдирд┐рд╢рд╛рди рдПрдХ `ctx.logger.info` рдкрдВрдХреНрддрд┐ рдереА, рдЬреЛ рд╕реЗрд╢рди рдЯреНрд░рд╛рдВрд╕рдХреНрд░рд┐рдкреНрдЯ рддрдХ рдХрднреА рдирд╣реАрдВ рдкрд╣реБрдБрдЪрддреАред)
- **рдХреЗрд╡рд▓ рдореБрдЦреНрдп рд╡рд╛рд░реНрддрд╛рд▓рд╛рдкред** рд╢реИрд▓рд┐рдпрд╛рдБ рдореБрдЦреНрдп рд╡рд╛рд░реНрддрд╛рд▓рд╛рдк рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддреА рд╣реИрдВ; рдЙрдк-рдПрдЬреЗрдВрдЯ рд╕рддреНрд░ рдЕрдкрдиреЗ рдкреНрд░реЙрдореНрдкреНрдЯ рд░рдЦрддреЗ рд╣реИрдВ (Claude Code рдХреА рддрд░рд╣)ред
- **рдХрдЯрд╛рд╡ред** `maxStyleChars` рд╕реЗ рд▓рдВрдмреЗ рд╢реИрд▓реА рдореБрдЦреНрдп рднрд╛рдЧ рдПрдХ рдорд╛рд░реНрдХрд░ рд╕реЗ рдХрд╛рдЯреЗ рдЬрд╛рддреЗ рд╣реИрдВред
- **рдЫреЛрдбрд╝реА рдЧрдИ рдлрд╝рд╛рдЗрд▓реЗрдВред** рдПрдХ рдЦрд╝рд░рд╛рдм рд╢реИрд▓реА рдлрд╝рд╛рдЗрд▓ рдЪреЗрддрд╛рд╡рдиреА рд╕реЗ рдЫреЛрдбрд╝ рджреА рдЬрд╛рддреА рд╣реИ рдФрд░ profile рдХреЛ рдХрднреА рдирд╣реАрдВ рддреЛрдбрд╝рддреАред
## Development
```sh
pnpm install
pnpm run typecheck # рджреЛрдиреЛрдВ tsc рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдБ
pnpm test # vitest тАФ 156 tests
pnpm run verify # typecheck + tests + self-contained (prepublishOnly рджреНрд╡рд╛рд░)
pnpm run build # lib/ рдХрд▓рд╛рдХреГрддрд┐рдпрд╛рдБ (host + client рдмрдВрдбрд▓)
pnpm pack # dsh plugin add рдХреЗ рд▓рд┐рдП tarball
```
рд░рд┐рд▓реАрдЬрд╝: `package.json` рд╕рдВрд╕реНрдХрд░рдг рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рдкреНрд░рддреНрдпрдп рд╡рд╛рд▓рд╛ `v*` рдЯреИрдЧ рдкреБрд╢ рдХрд░рдиреЗ рдкрд░ Publish workflow рдЪрд▓рддрд╛ рд╣реИ тАФ рдкреВрд░реНрдг рд╕рддреНрдпрд╛рдкрди, рдлрд┐рд░ provenance рд╕рд╣рд┐рдд npm рдкреНрд░рдХрд╛рд╢рдиред
## Interoperability with other DSH plugins
**DSH `0.2.0-rc.2`** (рд╡рд╣ рд░рдирдЯрд╛рдЗрдо рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдпрд╣ README рдкреНрд░рдХрд╛рд╢рд┐рдд рд╣реИ) рдФрд░ 2026-10-05 рдХреЛ рд╕рд░реНрд╡реЗ рдХрд┐рдП рдЧрдП рдЙрдЪреНрдЪ-рд╕реНрдЯрд╛рд░ рдкреНрд▓рдЧрдЗрди рд╕реЗрдЯ рдХреЗ рд╡рд┐рд░реБрджреНрдз рд╕рддреНрдпрд╛рдкрд┐рддред
рдпрд╣ рдкреНрд▓рдЧрдЗрди рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрдиреЛрдВ рдореЗрдВ **рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддрд╛**, рдЙрди рдЙрдЪреНрдЪ-рд╕реНрдЯрд╛рд░ рдкреНрд▓рдЧрдЗрдиреЛрдВ рд╕рд╣рд┐рдд рдЬреЛ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рд╣реИрдВ:
- **рдХреЛрдИ рдЯреВрд▓-рдирд╛рдо рдЯрдХрд░рд╛рд╡ рдирд╣реАрдВред** рд╕рднреА рдЯреВрд▓ рдиреЗрдорд╕реНрдкреЗрд╕ рдпреБрдХреНрдд рд╣реИрдВ; рдХреЛрдИ рднреА рдРрд╕рд╛ рдирдВрдЧрд╛ рдирд╛рдо рдирд╣реАрдВ рд▓реЗрддрд╛ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рдХрд┐рд╕реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдЯреВрд▓ рдпрд╛ рдЕрдиреНрдп рдкреНрд▓рдЧрдЗрди рдХрд╛ рд╣реЛред
- **рдХреЛрдИ рд╕рд░реНрд╡рд┐рд╕-рдХреА рдЯрдХрд░рд╛рд╡ рдирд╣реАрдВред** рдпрд╣ рдХреЗрд╡рд▓ `outputRenderers` рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ; рдпрд╣ key рди рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╕реАрдо рд╣реИ рдФрд░ рди рдХрд┐рд╕реА рд╕рд░реНрд╡реЗ рдХрд┐рдП рдЧрдП рдЙрдЪреНрдЪ-рд╕реНрдЯрд╛рд░ рдкреНрд▓рдЧрдЗрди рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред
- **рдХреЛрдИ рд╕реНрд▓реЙрдЯ рдЯрдХрд░рд╛рд╡ рдирд╣реАрдВред** рдпрд╣ рдХреЛрдИ рдХреНрд▓рд╛рдЗрдВрдЯ slot key рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд░рддрд╛, рдЗрд╕рд▓рд┐рдП `shadows-shipped-ui` рд╕реАрдЯ рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ред
- **рдХреЛрдИ HTTP рд░реВрдЯ рдЯрдХрд░рд╛рд╡ рдирд╣реАрдВред** рдпрд╣ рдХреЛрдИ `webServer` рдкреНрд░реАрдлрд╝рд┐рдХреНрд╕ рдкрдВрдЬреАрдХреГрдд рдирд╣реАрдВ рдХрд░рддрд╛ред
- **рдХреЛрдИ patch-рд▓реЗрдпрд░ рдЯрдХрд░рд╛рд╡ рдирд╣реАрдВред** рдмрдВрдбрд▓ patch рдХреЗрд╡рд▓ рдЕрдкрдиреА рдкрдВрдХреНрддрд┐ `insert` рдХрд░рддрд╛ рд╣реИ; рдХрднреА рдХрд┐рд╕реА рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдкрдВрдХреНрддрд┐ рдХрд╛ `config` рдУрд╡рд░рд░рд╛рдЗрдб рдирд╣реАрдВ рдХрд░рддрд╛ред
- **рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВред** рдпрд╣ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдирд╣реАрдВ рдмрджрд▓рддрд╛, `process.env` рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛, рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ fetch dispatcher рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ред
**рд╕рд╛рдЭрд╛ рдИрд╡реЗрдВрдЯ рд▓рд┐рд╕рдирд░ рд░рдЪрдирд╛ рд╕реЗ рд╣реА рдЕрд╣рд╕реНрддрдХреНрд╖реЗрдкреА рд╣реИрдВред** рдпрд╣ рдХреНрд░рдо-рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рдИрд╡реЗрдВрдЯ `system-prompt/assemble` рдХреЛ `ctx.on()` рд╕реЗ рджреЗрдЦрддрд╛ рд╣реИ тАФ Cordis рдХрд╛ **рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ** рдкрдВрдЬреАрдХрд░рдг, рдЬрд╣рд╛рдБ рд╣рд░ рд▓рд┐рд╕рдирд░ рдЪрд▓рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рдХрд┐рд╕реА рджреВрд╕рд░реЗ рдХреЛ рд╡рдВрдЪрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред **рдпрд╣рд╛рдБ рдкреНрд░рддреНрдпреЗрдХ рд▓рд┐рд╕рдирд░ `next()` рд╕реЗ рдбреЗрд▓рд┐рдЧреЗрдЯ рдХрд░рддрд╛ рд╣реИ**, рдЗрд╕рд▓рд┐рдП рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрднреА рд╢реЙрд░реНрдЯ-рд╕рд░реНрдХрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреА:
- `system-prompt/assemble` тАФ also used by `dsh-routing-suite` (7000тШЕ, 13 listeners).
рд╕реНрдереИрддрд┐рдХ рдкреНрд░рдорд╛рдг: рдЗрд╕ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА рдкрд░ `dsh-plugin-doctor` рдХреЗ K10тАУK13 рд╕рднреА `pass` рд╣реИрдВред
## Topics
`deepseek-harness`, `dsh`, `dsh-plugin`, `output-style`, `output-styles`, `claude-code`
## Contributors
- [@PerryLink](https://github.com/PerryLink) тАФ рд▓реЗрдЦрдХ рдФрд░ рдЕрдиреБрд░рдХреНрд╖рдХ: рдкреНрд▓рдЧрдЗрди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛, рд╢реИрд▓реА рдкреБрд╕реНрддрдХрд╛рд▓рдп, рдмрдВрдбрд▓ рд╕реНрдерд╛рдкрдирд╛, Web picker, рдкрд╛рдБрдЪ-рднрд╛рд╖рд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ CI/рд░рд┐рд▓реАрдЬрд╝ рдЯреВрд▓рд┐рдВрдЧред
## PerryLink DSH Plugin Family
рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ [PerryLink](https://github.com/PerryLink) рдХреЗ DeepSeek Harness рдкреНрд▓рдЧрдЗрди рдкрд░рд┐рд╡рд╛рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдкреВрд░реА рд╕реВрдЪреА рдиреАрдЪреЗ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд░рдЦреА рдЧрдИ рд╣реИ рддрд╛рдХрд┐ рд╣рд░ README рдХреА рдкрд╣рд▓реА рд╕реНрдХреНрд░реАрди рдЫреЛрдЯреА рд░рд╣реЗ; рд╣рд░ рдкрдВрдХреНрддрд┐ рдФрд░ рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдЦреЛрд▓реЗрдВред
рд╕рднреА рдкреНрд▓рдЧрдЗрди рдЦреЛрд▓реЗрдВ
| рдкреНрд▓рдЧрдЗрди | рд╕реНрдерд┐рддрд┐ |
|---|---|
| **[dsh-aqua-input-check](https://github.com/PerryLink/dsh-aqua-input-check)** | |
| **[dsh-archive-check](https://github.com/PerryLink/dsh-archive-check)** | |
| **[dsh-auto-review](https://github.com/PerryLink/dsh-auto-review)** | |
| **[dsh-autotier](https://github.com/PerryLink/dsh-autotier)** | |
| **[dsh-bid-ca-precheck](https://github.com/PerryLink/dsh-bid-ca-precheck)** | |
| **[dsh-bid-qual-check](https://github.com/PerryLink/dsh-bid-qual-check)** | |
| **[dsh-cert-mcp](https://github.com/PerryLink/dsh-cert-mcp)** | |
| **[dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind)** | |
| **[dsh-click](https://github.com/PerryLink/dsh-click)** | |
| **[dsh-composer-history](https://github.com/PerryLink/dsh-composer-history)** | |
| **[dsh-contract-stance](https://github.com/PerryLink/dsh-contract-stance)** | |
| **[dsh-customs-doc-check](https://github.com/PerryLink/dsh-customs-doc-check)** | |
| **[dsh-data-quality](https://github.com/PerryLink/dsh-data-quality)** | |
| **[dsh-demurrage-ledger](https://github.com/PerryLink/dsh-demurrage-ledger)** | |
| **[dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck)** | |
| **[dsh-drill-script-check](https://github.com/PerryLink/dsh-drill-script-check)** | |
| **[dsh-eia-guide-check](https://github.com/PerryLink/dsh-eia-guide-check)** | |
| **[dsh-emergency-plan](https://github.com/PerryLink/dsh-emergency-plan)** | |
| **[dsh-essay-rubric-check](https://github.com/PerryLink/dsh-essay-rubric-check)** | |
| **[dsh-evidence-check](https://github.com/PerryLink/dsh-evidence-check)** | |
| **[dsh-export-ctl-check](https://github.com/PerryLink/dsh-export-ctl-check)** | |
| **[dsh-fast](https://github.com/PerryLink/dsh-fast)** | |
| **[dsh-fmea-table-check](https://github.com/PerryLink/dsh-fmea-table-check)** | |
| **[dsh-forecast-penalty](https://github.com/PerryLink/dsh-forecast-penalty)** | |
| **[dsh-fund-research](https://github.com/PerryLink/dsh-fund-research)** | |
| **[dsh-github](https://github.com/PerryLink/dsh-github)** | |
| **[dsh-gongwen-flow-check](https://github.com/PerryLink/dsh-gongwen-flow-check)** | |
| **[dsh-gongwen-word-check](https://github.com/PerryLink/dsh-gongwen-word-check)** | |
| **[dsh-guard-plan-qc](https://github.com/PerryLink/dsh-guard-plan-qc)** | |
| **[dsh-hazchem-check](https://github.com/PerryLink/dsh-hazchem-check)** | |
| **[dsh-hazplan-check](https://github.com/PerryLink/dsh-hazplan-check)** | |
| **[dsh-hidden-risk-map](https://github.com/PerryLink/dsh-hidden-risk-map)** | |
| **[dsh-hs-classify](https://github.com/PerryLink/dsh-hs-classify)** | |
| **[dsh-icd-rule-check](https://github.com/PerryLink/dsh-icd-rule-check)** | |
| **[dsh-industry-research](https://github.com/PerryLink/dsh-industry-research)** | |
| **[dsh-lawcite-adapter](https://github.com/PerryLink/dsh-lawcite-adapter)** | |
| **[dsh-laya](https://github.com/PerryLink/dsh-laya)** | |
| **[dsh-lc-doc-check](https://github.com/PerryLink/dsh-lc-doc-check)** | |
| **[dsh-learning-gap-check](https://github.com/PerryLink/dsh-learning-gap-check)** | |
| **[dsh-library](https://github.com/PerryLink/dsh-library)** | |
| **[dsh-local-ai](https://github.com/PerryLink/dsh-local-ai)** | |
| **[dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions)** | |
| **[dsh-mask](https://github.com/PerryLink/dsh-mask)** | |
| **[dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel)** | |
| **[dsh-medrec-qc](https://github.com/PerryLink/dsh-medrec-qc)** | |
| **[dsh-memento](https://github.com/PerryLink/dsh-memento)** | |
| **[dsh-nsfc-form-check](https://github.com/PerryLink/dsh-nsfc-form-check)** | |
| **[dsh-nurse-record-check](https://github.com/PerryLink/dsh-nurse-record-check)** | |
| **[dsh-observe](https://github.com/PerryLink/dsh-observe)** | |
| **[dsh-origin-rvc-check](https://github.com/PerryLink/dsh-origin-rvc-check)** | |
| **[dsh-ota-review-check](https://github.com/PerryLink/dsh-ota-review-check)** | |
| **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | |
| **[dsh-paper-doc-adapter](https://github.com/PerryLink/dsh-paper-doc-adapter)** | |
| **[dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules)** | |
| **[dsh-permit-report-check](https://github.com/PerryLink/dsh-permit-report-check)** | |
| **[dsh-pipeline-check](https://github.com/PerryLink/dsh-pipeline-check)** | |
| **[dsh-pleading-draft](https://github.com/PerryLink/dsh-pleading-draft)** | |
| **[dsh-plugin-doctor](https://github.com/PerryLink/dsh-plugin-doctor)** | |
| **[dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide)** | |
| **[dsh-plugin-kit](https://github.com/PerryLink/dsh-plugin-kit)** | |
| **[dsh-plugin-upgrade](https://github.com/PerryLink/dsh-plugin-upgrade)** | |
| **[dsh-policy-brief-draft](https://github.com/PerryLink/dsh-policy-brief-draft)** | |
| **[dsh-power-loss-split](https://github.com/PerryLink/dsh-power-loss-split)** | |
| **[dsh-power-ticket-check](https://github.com/PerryLink/dsh-power-ticket-check)** | |
| **[dsh-ppap-check](https://github.com/PerryLink/dsh-ppap-check)** | |
| **[dsh-protest-deadline](https://github.com/PerryLink/dsh-protest-deadline)** | |
| **[dsh-railway-window](https://github.com/PerryLink/dsh-railway-window)** | |
| **[dsh-repair-order-qc](https://github.com/PerryLink/dsh-repair-order-qc)** | |
| **[dsh-research-report](https://github.com/PerryLink/dsh-research-report)** | |
| **[dsh-review-reply-check](https://github.com/PerryLink/dsh-review-reply-check)** | |
| **[dsh-rulefile-check](https://github.com/PerryLink/dsh-rulefile-check)** | |
| **[dsh-safety-brief-check](https://github.com/PerryLink/dsh-safety-brief-check)** | |
| **[dsh-score](https://github.com/PerryLink/dsh-score)** | |
| **[dsh-session-sync](https://github.com/PerryLink/dsh-session-sync)** | |
| **[dsh-site-log-check](https://github.com/PerryLink/dsh-site-log-check)** | |
| **[dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security)** | |
| **[dsh-soe-decision-check](https://github.com/PerryLink/dsh-soe-decision-check)** | |
| **[dsh-soilwater-check](https://github.com/PerryLink/dsh-soilwater-check)** | |
| **[dsh-sop-sync-check](https://github.com/PerryLink/dsh-sop-sync-check)** | |
| **[dsh-spc-gbt-adapter](https://github.com/PerryLink/dsh-spc-gbt-adapter)** | |
| **[dsh-talk](https://github.com/PerryLink/dsh-talk)** | |
| **[dsh-tender-extract](https://github.com/PerryLink/dsh-tender-extract)** | |
| **[dsh-tender-matrix](https://github.com/PerryLink/dsh-tender-matrix)** | |
| **[dsh-test-drive](https://github.com/PerryLink/dsh-test-drive)** | |
| **[dsh-ticktick](https://github.com/PerryLink/dsh-ticktick)** | |
| **[dsh-translate](https://github.com/PerryLink/dsh-translate)** | |
| **[dsh-warranty-calc](https://github.com/PerryLink/dsh-warranty-calc)** | |
| **[dsh-budget](https://github.com/PerryLink/dsh-budget)** | ЁЯзК рдлрд╝реНрд░реЛрдЬрд╝рди тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-claude-move](https://github.com/PerryLink/dsh-claude-move)** | ЁЯзК рдлрд╝реНрд░реЛрдЬрд╝рди тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-defend](https://github.com/PerryLink/dsh-defend)** | ЁЯзК рдлрд╝реНрд░реЛрдЬрд╝рди тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-draw](https://github.com/PerryLink/dsh-draw)** | ЁЯзК рдлрд╝реНрд░реЛрдЬрд╝рди тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-reach](https://github.com/PerryLink/dsh-reach)** | ЁЯзК рдлрд╝реНрд░реЛрдЬрд╝рди тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-background-agents](https://github.com/PerryLink/dsh-background-agents)** | ЁЯЪл рд╕реЗрд╡рд╛рдирд┐рд╡реГрддреНрдд тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-session-pin](https://github.com/PerryLink/dsh-session-pin)** | ЁЯЪл рд╕реЗрд╡рд╛рдирд┐рд╡реГрддреНрдд тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
| **[dsh-team-rooms](https://github.com/PerryLink/dsh-team-rooms)** | ЁЯЪл рд╕реЗрд╡рд╛рдирд┐рд╡реГрддреНрдд тАФ рд░рд┐рдкреЙрдЬрд╝рд┐рдЯрд░реА README рджреЗрдЦреЗрдВ |
## License
[Apache License 2.0](LICENSE) ┬й 2026 dsh-output-styles contributors
### DSH Desktop рдорд╛рд░реНрдХреЗрдЯ рд╕реЗ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ
рд╕рднреА PerryLink рдкреНрд▓рдЧрдЗрди DSH Desktop рдХреЗ рдмрд┐рд▓реНрдЯ-рдЗрди рдорд╛рд░реНрдХреЗрдЯ рдореЗрдВ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ: **Market тЖТ Sources тЖТ add source тЖТ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ** `https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json` **тЖТ рдЪреБрдиреЗрдВ**ред рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдорд╛рд░реНрдХреЗрдЯ рдХреЗ npm-identity рд╕рддреНрдпрд╛рдкрди рдФрд░ рдЖрдкрдХреА рдкреБрд╖реНрдЯрд┐ рд╕реЗ рд╣реА рд╣реЛрддрд╛ рд╣реИред