
PerryLink/dsh-output-styles
30Last commit Aug 15, 2026
dsh-output-styles DSH plugin
dsh-output-styles lets you change the AI model's output style on the fly with a simple `/style` command. The selection persists across restarts and is scoped to each session. It injects style directives into the system prompt at every request, immediately affecting responses.
How to install the dsh-output-styles DSH plugin
dsh plugin --profile <name> add dsh-output-stylesThis source command needs manual review. Copying does not run it.
dsh-output-styles DSH plugin data source
dsh-output-styles DSH plugin snapshot date: Aug 16, 2026
discovered
What the dsh-output-styles DSH plugin can do
- Define and switch between output styles stored in Markdown files with frontmatter metadata.
- Session-scoped persistence: each session's style choice survives restarts and doesn't interfere with other sessions.
- Hot reload: style file changes are picked up without restarting the harness.
- Web picker: a popup UI for selecting styles when using the web interface.
Where the dsh-output-styles DSH plugin fits
- Switch to a concise style for quick, tool-heavy coding sessions.
- Use a step-by-step style when debugging complex logic.
- Restore the project default style with `/style off`.
- Create custom styles tailored to specific tasks, like educational explanations or formal reports.
Who the dsh-output-styles DSH plugin is for
- Developers using DeepSeek Harness as their AI coding agent.
- Teams that need consistent, customizable output styles across multiple sessions.
dsh-output-styles DSH plugin limitations
- Styles only apply to the main conversation; subagent sessions keep their own prompts.
- Requires Node.js ^22.19 || >=24.
- The plugin is in early development (0.1.0-rc.6) and may have breaking changes.
dsh-output-styles DSH plugin: from the repository README
Quoted from the PerryLink/dsh-output-styles README, the upstream source of the dsh-output-styles DSH plugin. Copyright remains with the original authors.
**Claude Code `outputStyles` for DeepSeek Harness** — switch the model's output style at runtime, per session, durably. [](LICENSE) [](https://github.com/PerryLink/dsh-output-styles/actions/workflows/ci.yml) [](https://www.npmjs.com/package/dsh-output-styles) [](https://www.npmjs.com/package/dsh-output-styles) [](#) [](#) [](#) 🌐 [English](README.md) · [中文](README.zh.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Español](README.es.md) </div> --- `/style concise` — and every reply from now on is terse. `/style step-by-step` — and the model narrates numbered steps. `/style off` — back to the project default. One command per session, persisted across restarts, zer
Read the full READMERepository license: Apache-2.0
dsh-output-styles DSH plugin questions
How do I install dsh-output-styles?
Run `dsh plugin --profile <name> add dsh-output-styles` in your terminal. This installs the plugin as a bundle layer, composing storage, storage-json, storage-domain, and the plugin row. Then boot with `dsh --profile <name>` and start using `/style` commands.
How do I switch to a different output style?
Type `/style` to list all available styles and see the current selection. Then type `/style concise` (or any style name) to switch. Use `/style off` to restore the project default. The style name can include spaces, like `/style Diagrams first`.
Can I create my own custom styles?
Yes. Place a Markdown file with frontmatter (name, description, keep-coding-instructions, etc.) in any directory listed in the `stylesDir` configuration. The body of the file is the directive injected into the system prompt. The plugin watches for file changes and hot-reloads them.
Why doesn't my style apply to subagent sessions?
By design, output styles only affect the main conversation. Subagent (child) sessions keep their own prompts, matching Claude Code's behavior. This is a documented limitation, not a bug.
Does the plugin support Claude Code's outputStyles JSON format?
Yes. With `compatJson: true` (the default), you can load Claude Code `outputStyles` JSON collections, single entries, or `settings.json`-style arrays. Unparseable entries are skipped with a warning. Fields like `keep-coding-instructions` and `force-for-plugin` are accepted verbatim.