dsh-output-styles 0.4.0 → 0.4.2

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.hi.md ADDED
@@ -0,0 +1,246 @@
1
+ <div align="center">
2
+
3
+ # 🎨 dsh-output-styles
4
+
5
+ **DeepSeek Harness के लिए Claude Code का `outputStyles`**: मॉडल की आउटपुट शैली को रनटाइम पर, प्रति-सत्र, स्थायी रूप से बदलें।
6
+
7
+ *`/style concise` — और अब से हर उत्तर संक्षिप्त। `/style off` — वापस परियोजना के डिफ़ॉल्ट पर।*
8
+
9
+ [![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)
10
+ [![DSH plugin](https://img.shields.io/badge/dsh-plugin-✅-green)](https://github.com/topics/dsh-plugin)
11
+ [![Node](https://img.shields.io/badge/node-%5E22.19%20%7C%7C%20%3E%3D24-brightgreen.svg)](#)
12
+ [![CI](https://img.shields.io/github/actions/workflow/status/PerryLink/dsh-output-styles/ci.yml?branch=main&label=CI)](https://github.com/PerryLink/dsh-output-styles/actions)
13
+ [![Version](https://img.shields.io/github/v/tag/PerryLink/dsh-output-styles?label=version)](https://github.com/PerryLink/dsh-output-styles/releases)
14
+ [![npm version](https://img.shields.io/npm/v/dsh-output-styles)](https://www.npmjs.com/package/dsh-output-styles)
15
+ [![npm downloads](https://img.shields.io/npm/dm/dsh-output-styles)](https://www.npmjs.com/package/dsh-output-styles)
16
+
17
+ [English](README.md) · [简体中文](README.zh.md) · [Español](README.es.md) · [Português](README.pt.md) · [हिन्दी](README.hi.md)
18
+
19
+ </div>
20
+
21
+ ---
22
+
23
+ ## Compatibility
24
+
25
+ | Surface | Status |
26
+ |---|---|
27
+ | Harness | DeepSeek Harness `0.1.0-rc.8` |
28
+ | Node | `^22.19.0 || >=24.0.0` |
29
+ | Platforms | सभी (host + वेब क्लाइंट) |
30
+ | Model | कोई भी (सिस्टम-प्रॉम्प्ट इंजेक्शन) |
31
+
32
+ ## What you get
33
+
34
+ `dsh-output-styles` DeepSeek Harness के लिए Claude Code के `outputStyles` का समकक्ष है: एक `/style` कमांड जो रनटाइम पर मॉडल की आउटपुट शैली बदलता है, प्रति-सत्र स्थायी होता है और हर प्रॉम्प्ट संयोजन पर इंजेक्ट होता है।
35
+
36
+ - **शैली पुस्तकालय** — प्रति शैली एक Markdown फ़ाइल (`styles/*.md`); मेटाडेटा के लिए frontmatter, मुख्य भाग = मॉडल निर्देश। छह अंतर्निहित (`concise`, `explanatory`, `formal`, `learning`, `proactive`, `step-by-step`), जिनमें Claude Code-समतुल्य `proactive` और `learning` शामिल हैं।
37
+ - **`/style` कमांड** — बिना तर्क शैलियों (विवरण सहित) और वर्तमान चयन को सूचीबद्ध करता है; `/style <name>` बदलता है; `/style off` परियोजना डिफ़ॉल्ट बहाल करता है।
38
+ - **सत्र-स्कोप्ड स्थायित्व** — चयन `output_style` स्टोरेज डोमेन में रहता है, sessionId से अनुक्रमित, और पुनःआरंभ के बाद भी बना रहता है।
39
+ - **सिस्टम-प्रॉम्प्ट इंजेक्शन** — एक `systemPrompt.section()` योगदान (क्रम `sectionOrder`) हर संयोजन पर वर्तमान सत्र की शैली का मुख्य भाग इंजेक्ट करता है, एक विन्यास-योग्य बजट पर काटा गया।
40
+ - **Claude Code समानता** — `keep-coding-instructions`, `force-for-plugin` (उपनाम `force`), `outputStyles` JSON संगतता, स्तरित `stylesDir` निर्देशिकाएँ, हॉट रीलोड और DSH settings सीम पर परियोजना-डिफ़ॉल्ट फ़ॉलबैक।
41
+ - **रेंडरर रजिस्ट्री (`output.render.*`)** — `ctx.outputRenderers` किसी भी प्लगइन को एक शुद्ध presenter पंजीकृत करने देता है, जो `output.render/before` वॉटरफ़ॉल से लागू होता है; अंतर्निहित रेंडरर `concise` और `step-by-step`।
42
+ - **प्रति-सत्र/प्रति-टूल नियम** — `rules: [{ match: { tool: 'bash' }, style: 'concise' }]` मिलान वाले अनुरोधों के लिए रेंडरर नामित करते हैं; `output-style-rules` settings अनुभाग से संपादन-योग्य।
43
+ - **`/export`** — रेंडर पाइपलाइन से वर्तमान सत्र को Markdown या सैनिटाइज़्ड HTML में प्रस्तुत करता है; हर रेंडर मूल पाठ को रेंडर किए गए के साथ रखता है।
44
+
45
+ ## Quick start
46
+
47
+ ```sh
48
+ # 1. install the bundle into your profile
49
+ dsh plugin --profile web add "github:PerryLink/dsh-output-styles#main"
50
+
51
+ # or from npm (published releases)
52
+ dsh plugin --profile web add dsh-output-styles
53
+
54
+ # 2. restart and verify the row
55
+ dsh --profile web --dump-config | grep -A3 'id: output-styles'
56
+ ```
57
+
58
+ ## Demo
59
+
60
+ ```
61
+ You > /style
62
+ output style off
63
+ concise — Terse, direct answers — minimal prose, no preamble. (Daily coding work, tool-heavy sessions, or when prompt length matters.)
64
+ explanatory — Educational answers with short "Insights" that teach as you work. (Learning a codebase, onboarding, …)
65
+ formal — Formal, precise prose with complete sentences and defined terms. (Reports, documentation, release notes, …)
66
+ learning — Collaborative learn-by-doing mode with short "Insights" and small hands-on steps for the user. (Pairing, onboarding, …)
67
+ proactive — Execute immediately, assume reasonable defaults, and prefer action over planning. (Routine multi-step work, …)
68
+ step-by-step — Numbered reasoning steps with explicit intermediate results. (Debugging, design decisions, …)
69
+
70
+ You > /style concise
71
+ switched to concise
72
+
73
+ You > 请只用一句话介绍你自己。
74
+ AI > 我是运行在 DeepSeek Harness 插件化平台上、基于 deepseek-v4-pro 模型的 AI 编码代理。
75
+ ```
76
+
77
+ ## How it works
78
+
79
+ ```mermaid
80
+ flowchart LR
81
+ U[You type /style concise] --> C[command registry]
82
+ C -->|command/run logged| L[(session log)]
83
+ C -->|put {style, source}| D[(output_style domain)]
84
+ D --> R[OutputStyleRuntime]
85
+ R -->|body at every assembly| S[systemPrompt section order 90]
86
+ S --> M[Model request]
87
+ M -->|full system prompt| H[request/header logged]
88
+ ```
89
+
90
+ मॉडल जो देखता है वह सब सत्र लॉग से पुनर्निर्माण-योग्य है — कोई नया सत्र घटना प्रकार नहीं, कोई agent-loop बदलाव नहीं। शैली नाम `command/run` से आता है, सटीक इंजेक्ट किया गया पाठ `request/header` से, और स्रोत मार्कर `{ kind: 'plugin', plugin: 'dsh-output-styles' }` डोमेन रिकॉर्ड में चलता है। शैलियाँ केवल मुख्य वार्तालाप पर लागू होती हैं; उप-एजेंट सत्र अपने प्रॉम्प्ट रखते हैं (Claude Code की तरह)।
91
+
92
+ ## Install & uninstall
93
+
94
+ - **git चैनल** (नवीनतम `main`): `dsh plugin --profile web add "github:PerryLink/dsh-output-styles#main"` — `prepare` स्क्रिप्ट केवल उत्पादन निर्भरताओं से बनाती है।
95
+ - **npm चैनल** (प्रकाशित रिलीज़): `dsh plugin --profile web add dsh-output-styles`.
96
+ - **tarball चैनल**: इस रेपो में `pnpm pack`, फिर `dsh plugin --profile web add ./dsh-output-styles-<version>.tgz`.
97
+ - **uninstall**: `dsh plugin --profile web remove dsh-output-styles`.
98
+
99
+ ## Configuration
100
+
101
+ सभी ट्यूनेबल Schemastery `Config` फ़ील्ड हैं (cordis.yml से बदले जा सकते हैं)। अमान्य मान लोड को विफल करते हैं।
102
+
103
+ | Key | Default | Meaning |
104
+ |---|---|---|
105
+ | `stylesDir` | `[]` | शैली-पुस्तकालय निर्देशिकाएँ, cwd के सापेक्ष; बाद की प्रविष्टियाँ पहले वालों को ओवरराइड करती हैं। `[]` = केवल अंतर्निहित `styles/` |
106
+ | `maxStyleChars` | `4000` | शैली-मुख्य बजट (≥ 1); लंबे भाग एक मार्कर से काटे जाते हैं |
107
+ | `defaultStyle` | `''` | उन सत्रों की शैली जिन्होंने कभी चयन नहीं किया (और कोई settings डिफ़ॉल्ट नहीं); `''` = कोई शैली नहीं |
108
+ | `compatJson` | `true` | Claude Code `outputStyles` JSON प्रविष्टियाँ लोड करें (एकल ऑब्जेक्ट या ऐरे) |
109
+ | `sectionOrder` | `90` | इंजेक्ट किए गए अनुभाग का क्रम (0 = persona, 100–199 = टूल मार्गदर्शन) |
110
+ | `truncationMarker` | `"\n\n[style truncated]"` | काटने के बिंदु पर जोड़ा गया मार्कर |
111
+ | `includeBuiltins` | `true` | पैकेज के अंतर्निहित `styles/` को निम्नतम-प्राथमिकता परत के रूप में शामिल करें |
112
+ | `watchStyles` | `true` | डिस्क पर शैली फ़ाइल बदलने पर पुस्तकालय फिर से लोड करें |
113
+ | `rules` | `[]` | प्रति-सत्र/प्रति-टूल रेंडर नियम: `[{ match: { tool?, contentType?, session? }, style, priority? }]` |
114
+ | `enableExport` | `true` | `/export` कमांड पंजीकृत करें (Markdown/HTML सत्र निर्यात, रेंडरर-जागरूक) |
115
+
116
+ ## Tools & surfaces
117
+
118
+ | Surface | Kind | Notes |
119
+ |---|---|---|
120
+ | `/style` | command | शैलियाँ सूचीबद्ध करें, बदलें या परियोजना डिफ़ॉल्ट बहाल करें |
121
+ | `/export` | command | वर्तमान सत्र को Markdown या सैनिटाइज़्ड HTML में प्रस्तुत करें |
122
+ | `output_style` | storage domain | sessionId से अनुक्रमित सत्र-स्कोप्ड शैली चयन |
123
+ | `systemPrompt.section()` | contribution | हर संयोजन पर वर्तमान शैली का मुख्य भाग इंजेक्ट करता है |
124
+ | `output.render.*` | renderer registry | `ctx.outputRenderers` + `output.render/before` वॉटरफ़ॉल |
125
+ | `style` | projection | स्थिर कमांडों से मुड़ा हुआ `{ options, currentValue }` |
126
+ | Web picker | client entry | `dsh-output-styles/client` `/style` को पॉप-अप चयनकर्ता से सजाता है |
127
+
128
+ ## Command reference
129
+
130
+ | Input | Outcome |
131
+ |---|---|
132
+ | `/style` | वर्तमान चयन + प्रति शैली एक पंक्ति (नाम — विवरण) सूचीबद्ध करें |
133
+ | `/style concise` | बदलें (स्थायी लेखन), `switched to concise` |
134
+ | `/style Diagrams first` | बहु-शब्द नाम पूरा शेष भाग होते हैं |
135
+ | `/style off` | परियोजना डिफ़ॉल्ट बहाल करें (settings डिफ़ॉल्ट, फिर `defaultStyle`) |
136
+ | `/style nope` | `error: unknown output style "nope" (available: …)` |
137
+ | `/export` | रेंडर पाइपलाइन से वर्तमान सत्र को Markdown में प्रस्तुत करें |
138
+ | `/export html` | सैनिटाइज़्ड HTML में प्रस्तुत करें |
139
+ | `/export --renderer=concise` | एक रेंडरर बाध्य करके प्रस्तुत करें (नियम छोड़े गए) |
140
+
141
+ ## Style library
142
+
143
+ प्रति शैली एक Markdown फ़ाइल; frontmatter मेटाडेटा के लिए, मुख्य भाग = मॉडल निर्देश। `name` डिफ़ॉल्ट रूप से फ़ाइल नाम लेता है और रिक्त स्थान रख सकता है (`Diagrams first`)।
144
+
145
+ | Field | Default | Meaning |
146
+ |---|---|---|
147
+ | `name` | फ़ाइल नाम | बदलाव का लक्ष्य; अक्षर, अंक, रिक्त स्थान और हाइफ़न (`off` आरक्षित है) |
148
+ | `description` | — (आवश्यक) | सूचियों और चयनकर्ता में दिखाया गया एक वाक्य |
149
+ | `whenToUse` | — | सूचियों में जोड़ा गया वैकल्पिक मार्गदर्शन |
150
+ | `keep-coding-instructions` | `false` | `true` होने पर harness प्रॉम्प्ट रखें; `false` होने पर उसे बदल दें (Claude Code अर्थविज्ञान) |
151
+ | `force-for-plugin` | `false` | बिना शर्त लागू करें, किसी भी सत्र चयन को ओवरराइड करते हुए; `force` एक उपनाम है, अधिकतम एक शैली इसे सेट कर सकती है |
152
+
153
+ `compatJson: true` होने पर, Claude Code `outputStyles` JSON प्रविष्टियाँ (`{ name, description, prompt }`) Markdown शैलियों के साथ लोड होती हैं; पार्स न होने वाली प्रविष्टियाँ एक चेतावनी से छोड़ दी जाती हैं।
154
+
155
+ ## Renderer protocol
156
+
157
+ `output.render.*` प्रोटोकॉल प्रस्तुति को एक विस्तार बिंदु में बदल देता है। एक रेंडरर एक **शुद्ध presenter** है — `presenter(text, context)` तर्कों को प्रदर्शन डेटा में मैप करता है, DOM को कभी नहीं छूता — टूल नाम और सामग्री प्रकार से मिलान, प्राथमिकता से क्रमबद्ध।
158
+
159
+ - **Waterfall पहले**: हर रेंडर अनुरोध `output.render/before` (`{ text, context }`) से गुज़रता है; listeners को `next()` कॉल करना चाहिए।
160
+ - **Rules**: `rules: [{ match: { tool: 'bash' }, style: 'concise' }]` मिलान वाले अनुरोधों के लिए रेंडरर नामित करता है; बराबरी `priority` से और फिर नियम क्रम से टूटती है।
161
+ - **Built-ins**: `concise` (व्हाइटस्पेस संघनन + बजट कटाव) और `step-by-step` (सुसंगत चरण क्रमांकन)।
162
+ - **Auditability**: हर रेंडर परिणाम `{ original, rendered, rendererId, changed }` रखता है; रेंडर किया गया पाठ जो दिखता है, मूल सत्र लॉग से पुनर्निर्माण-योग्य रहता है।
163
+
164
+ ## Web picker
165
+
166
+ `dsh.client` प्रविष्टि host `/style` कमांड के नंगे आह्वान को एक पॉप-अप चयनकर्ता से सजाती है: एक "off" पंक्ति + प्रति पुस्तकालय शैली एक पंक्ति (`description · whenToUse`), सक्रिय पंक्ति चिह्नित। चुनना कमांड Remote के माध्यम से `/style <name>` सबमिट करता है, इसलिए हर बदलाव host का स्थायी कमांड जीवनचक्र बनाए रखता है। चयनकर्ता Web UI के `zh`/`en` भाषा युग्म का अनुसरण करता है।
167
+
168
+ ## Differences from Claude Code
169
+
170
+ | | Claude Code | dsh-output-styles |
171
+ |---|---|---|
172
+ | शैली फ़ाइलें | उपयोगकर्ता/परियोजना/प्रबंधित स्तरों पर `.claude/output-styles` | `stylesDir` निर्देशिकाएँ + अंतर्निहित `styles/`, बाद वाली निर्देशिका जीतती है |
173
+ | कस्टम शैलियाँ | Markdown, frontmatter `name`/`description`/`keep-coding-instructions`/`force-for-plugin` | समान फ़ील्ड (`force-for-plugin` शब्दशः स्वीकृत, `force` उपनाम) + `whenToUse` |
174
+ | लीगेसी JSON | `settings.json` में `outputStyles` ऐरे | शब्दशः लोड (`compatJson: true`) |
175
+ | प्रभावी होने का समय | `/clear` के बाद या नया सत्र | तुरंत — सिस्टम प्रॉम्प्ट प्रति-अनुरोध पुनः संयोजित होता है |
176
+ | उप-एजेंट | शैलियाँ लागू नहीं होतीं | समान — उप-एजेंट सत्र अपने प्रॉम्प्ट रखते हैं |
177
+ | बदलना | `/config` मेनू या `outputStyle` सेटिंग (`/output-style` कमांड v2.1.91 में हटाया गया) | `/style` कमांड + Web picker + settings `output-style.style` |
178
+
179
+ ## Conflict check
180
+
181
+ विकास से पहले 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+ तक टाली गईं) — सन्निकट हैं, संघर्षपूर्ण नहीं।
182
+
183
+ ## Permissions & data
184
+
185
+ - **Permissions**: workshop मैनिफ़ेस्ट `fs:read`, `fs:watch`, `storage:read`, `storage:write` और `settings:read` घोषित करता है।
186
+ - **Data**: शैली चयन `output_style` स्टोरेज डोमेन में रहता है (sessionId से अनुक्रमित); कोई अन्य स्थिति स्थायी नहीं, कोई नेटवर्क अनुरोध नहीं।
187
+ - **Session log**: शैली नाम `command/run` से आता है, सटीक इंजेक्ट किया गया पाठ `request/header` से; स्रोत मार्कर `{ kind: 'plugin', plugin: 'dsh-output-styles' }` डोमेन रिकॉर्ड में चलता है।
188
+
189
+ ## Security boundaries
190
+
191
+ - **केवल सार्वजनिक सेवाएँ।** `systemPrompt`, कमांड, स्टोरेज और settings योगदान करता है; engine / agent-loop / apiproxy / आधिकारिक UI में कोई बदलाव नहीं।
192
+ - **मॉडल-दृश्य ⟺ लॉग किया गया।** मॉडल जो देखता है वह सब सत्र लॉग से पुनर्निर्माण-योग्य है — कोई नया सत्र घटना प्रकार नहीं, कोई agent-loop बदलाव नहीं।
193
+ - **मूल हमेशा रखा गया।** हर रेंडर (और `/export`) मूल पाठ को रेंडर किए गए के साथ रखता है; HTML निर्यात के लिए सैनिटाइज़्ड HTML उपयोग होता है।
194
+
195
+ ## Known limitations
196
+
197
+ - **केवल मुख्य वार्तालाप।** शैलियाँ मुख्य वार्तालाप पर लागू होती हैं; उप-एजेंट सत्र अपने प्रॉम्प्ट रखते हैं (Claude Code की तरह)।
198
+ - **कटाव।** `maxStyleChars` से लंबे शैली मुख्य भाग एक मार्कर से काटे जाते हैं।
199
+ - **छोड़ी गई फ़ाइलें।** एक ख़राब शैली फ़ाइल चेतावनी से छोड़ दी जाती है और profile को कभी नहीं तोड़ती।
200
+
201
+ ## Development
202
+
203
+ ```sh
204
+ pnpm install
205
+ pnpm run typecheck # दोनों tsc परियोजनाएँ
206
+ pnpm test # vitest — 107 tests
207
+ pnpm run verify # typecheck + tests + self-contained (prepublishOnly द्वार)
208
+ pnpm run build # lib/ कलाकृतियाँ (host + client बंडल)
209
+ pnpm pack # dsh plugin add के लिए tarball
210
+ ```
211
+
212
+ रिलीज़: `package.json` संस्करण से मेल खाते प्रत्यय वाला `v*` टैग पुश करने पर Publish workflow चलता है — पूर्ण सत्यापन, फिर provenance सहित npm प्रकाशन।
213
+
214
+ ## Topics
215
+
216
+ `deepseek-harness`, `dsh`, `dsh-plugin`, `output-style`, `output-styles`, `claude-code`
217
+
218
+ ## Contributors
219
+
220
+ - [@PerryLink](https://github.com/PerryLink) — लेखक और अनुरक्षक: प्लगइन वास्तुकला, शैली पुस्तकालय, बंडल स्थापना, Web picker, पाँच-भाषा दस्तावेज़ और CI/रिलीज़ टूलिंग।
221
+
222
+ ## PerryLink DSH Plugin Family
223
+
224
+ यह परियोजना [PerryLink](https://github.com/PerryLink) द्वारा अनुरक्षित [15 DeepSeek Harness प्लगइन](https://github.com/PerryLink) में से एक है। यदि यह आपकी मदद करता है, तो बाकी भी संभवतः करेंगे:
225
+
226
+ | Plugin | One-liner |
227
+ |---|---|
228
+ | [dsh-mcp-panel](https://github.com/PerryLink/dsh-mcp-panel) | Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors |
229
+ | [dsh-doublecheck](https://github.com/PerryLink/dsh-doublecheck) | Engineering-discipline guard: requirements grill, test gates, adversary review |
230
+ | [dsh-background-agents](https://github.com/PerryLink/dsh-background-agents) | Durable background child agents with a Web UI sidebar, messaging and interrupt |
231
+ | [dsh-lsp-actions](https://github.com/PerryLink/dsh-lsp-actions) | LSP diagnostics, formatting, completion, code actions and rename over language servers |
232
+ | **[dsh-output-styles](https://github.com/PerryLink/dsh-output-styles)** | Claude Code outputStyles-equivalent runtime style switching |
233
+ | [dsh-checkpoint-rewind](https://github.com/PerryLink/dsh-checkpoint-rewind) | Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore |
234
+ | [dsh-permission-rules](https://github.com/PerryLink/dsh-permission-rules) | Claude Code-style declarative allow/deny/ask permission rules with audit |
235
+ | [dsh-auto-review](https://github.com/PerryLink/dsh-auto-review) | Second-model auto-review on the approval chain, fail-closed by default |
236
+ | [dsh-memento](https://github.com/PerryLink/dsh-memento) | Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool |
237
+ | [dsh-skill-pack-security](https://github.com/PerryLink/dsh-skill-pack-security) | Security-audit skill pack: secret scan, dependency and supply-chain review |
238
+ | [dsh-session-pin](https://github.com/PerryLink/dsh-session-pin) | Pin sessions in the Web sidebar with durable ordering |
239
+ | [dsh-composer-history](https://github.com/PerryLink/dsh-composer-history) | Terminal-style input history for the web composer: arrows, Ctrl+R search |
240
+ | [dsh-github](https://github.com/PerryLink/dsh-github) | GitHub PR/issues integration for DSH, every write gated by approval |
241
+ | [dsh-plugin-guide](https://github.com/PerryLink/dsh-plugin-guide) | Plugin-development knowledge base as an on-demand agent skill |
242
+ | [dsh-claude-move](https://github.com/PerryLink/dsh-claude-move) | Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH |
243
+
244
+ ## License
245
+
246
+ [Apache License 2.0](LICENSE) © 2026 dsh-output-styles contributors