designlang 12.4.0 → 12.8.0

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.
@@ -1,15 +1,15 @@
1
1
  {
2
- "name": "design-extract",
2
+ "name": "designlang",
3
3
  "owner": {
4
4
  "name": "Manavarya Singh",
5
5
  "url": "https://github.com/Manavarya09"
6
6
  },
7
7
  "plugins": [
8
8
  {
9
- "name": "design-extract",
9
+ "name": "designlang",
10
10
  "source": "./",
11
- "description": "Extract the complete design language from any website colors, typography, spacing, shadows, components, and more. Outputs AI-optimized markdown, W3C design tokens, Tailwind config, and CSS variables.",
12
- "version": "1.0.0",
11
+ "description": "Eight slash commands wrapping the designlang CLI: /extract (full design language \u2192 DTCG, Tailwind, Figma), /grade (shareable HTML report card + SVG badge), /battle (head-to-head graded comparison), /remix (restyle in 6 vocabularies \u2014 brutalist, swiss, art-deco, cyberpunk, soft-ui, editorial), /pack (one downloadable design-system bundle), /theme-swap (OKLCH-correct recolour around a new brand primary), /brand (full editorial brand-guidelines book \u2014 13 chapters, hand-off-ready), /pair (fuse two designs across configurable axes \u2014 colours from one site, typography from another).",
12
+ "version": "12.8.0",
13
13
  "author": {
14
14
  "name": "Manavarya Singh"
15
15
  },
@@ -17,12 +17,20 @@
17
17
  "tags": [
18
18
  "design-system",
19
19
  "design-tokens",
20
- "css",
20
+ "dtcg",
21
21
  "tailwind",
22
+ "shadcn",
23
+ "figma",
22
24
  "typography",
23
25
  "colors",
24
- "web-scraping"
26
+ "motion",
27
+ "grade",
28
+ "battle",
29
+ "remix",
30
+ "pack",
31
+ "mcp",
32
+ "playwright"
25
33
  ]
26
34
  }
27
35
  ]
28
- }
36
+ }
@@ -1,24 +1,35 @@
1
1
  {
2
- "name": "design-extract",
3
- "description": "Extract the complete design language from any website. Produces W3C design tokens, AI-optimized markdown, Tailwind config, and CSS custom properties.",
4
- "version": "1.0.0",
2
+ "name": "designlang",
3
+ "description": "Extract any website's design language and ship it. Eight slash commands \u2014 /extract, /grade, /battle, /remix, /pack, /theme-swap, /brand, /pair \u2014 wrap the designlang CLI to pull DTCG tokens, Tailwind/shadcn/Figma vars, motion + voice, generate shareable graded report cards, head-to-head battle pages, six-vocabulary remixes, downloadable design-system bundles, OKLCH-correct theme recolouring, full editorial brand-guidelines books, and design crossovers between two sites.",
4
+ "version": "12.8.0",
5
5
  "author": {
6
6
  "name": "Manavarya Singh",
7
7
  "url": "https://github.com/Manavarya09"
8
8
  },
9
- "homepage": "https://github.com/Manavarya09/design-extract",
9
+ "homepage": "https://designlang.app",
10
10
  "repository": "https://github.com/Manavarya09/design-extract",
11
11
  "license": "MIT",
12
12
  "keywords": [
13
13
  "design-system",
14
14
  "design-tokens",
15
15
  "design-language",
16
- "css",
16
+ "dtcg",
17
17
  "tailwind",
18
+ "shadcn",
19
+ "figma-variables",
20
+ "css",
18
21
  "playwright",
19
22
  "extraction",
20
23
  "colors",
21
- "typography"
24
+ "typography",
25
+ "motion",
26
+ "grade",
27
+ "battle",
28
+ "remix",
29
+ "pack",
30
+ "claude-plugin",
31
+ "mcp"
22
32
  ],
23
- "skills": "./skills/"
24
- }
33
+ "skills": "./skills/",
34
+ "commands": "./commands/"
35
+ }
package/CHANGELOG.md CHANGED
@@ -1,5 +1,259 @@
1
1
  # Changelog
2
2
 
3
+ ## [12.8.0] — 2026-05-10
4
+
5
+ **Pair — fuse two extracted designs into a single hybrid identity.**
6
+
7
+ \`designlang pair <urlA> <urlB>\` extracts both sites in parallel, then
8
+ mixes their design systems along seven configurable axes (colours,
9
+ typography, spacing, shape, motion, voice, components). Default split is
10
+ "visuals from A, voice + type + components from B" — i.e. the most
11
+ distinctive crossover. Override any axis with \`--<axis>-from a|b\`.
12
+
13
+ \`\`\`bash
14
+ npx designlang pair stripe.com linear.app
15
+ \`\`\`
16
+
17
+ \`\`\`
18
+ stripe.com × linear.app
19
+ A Colours · stripe.com
20
+ B Typography · linear.app
21
+ A Spacing · stripe.com
22
+ A Shape · stripe.com
23
+ A Motion · stripe.com
24
+ B Voice · linear.app
25
+ B Components · linear.app
26
+
27
+ ✓ stripe-com-x-linear-app.pair.html
28
+ ✓ stripe-com-x-linear-app.pair.md
29
+ ✓ stripe-com-x-linear-app.pair.json
30
+ \`\`\`
31
+
32
+ ### Added
33
+
34
+ - New CLI command: \`designlang pair <urlA> <urlB>\` with \`--colors-from\`,
35
+ \`--typography-from\`, \`--spacing-from\`, \`--shape-from\`, \`--motion-from\`,
36
+ \`--voice-from\`, \`--components-from\`, plus \`--brand\` to also emit a
37
+ full brand-guidelines book of the fused identity.
38
+ - New module \`src/fuse.js\` — \`fuseDesigns(a, b, opts)\` deep-clones both
39
+ inputs, picks each axis from the requested source, synthesises a
40
+ pair-specific meta URL (\`pair://<a>-x-<b>\`), and strips score /
41
+ cssHealth (those belong to the source extractions, not the fusion).
42
+ - New formatter \`src/formatters/pair.js\` — editorial pair card with a
43
+ three-card crossover (A · B · Fused), per-axis source matrix table,
44
+ and a fused specimen using the *real headline* from whichever site
45
+ contributed the voice axis.
46
+ - Plus \`formatPairMarkdown\` for diff-friendly summaries.
47
+ - 12 new tests covering default split, per-axis overrides, score-stripping,
48
+ meta synthesis, immutability of source designs, HTML rendering, voice
49
+ carry-through to the specimen, XSS escaping, and missing-input errors.
50
+
51
+ ### Plugin
52
+
53
+ \`/pair\` is the 8th slash command in the Claude Code plugin
54
+ (\`/extract\`, \`/grade\`, \`/battle\`, \`/remix\`, \`/pack\`, \`/theme-swap\`,
55
+ \`/brand\`, \`/pair\`). Plugin manifests bumped to 12.8.0.
56
+
57
+ ### Why
58
+
59
+ \`battle\` answers "which is better"; \`pair\` answers "what would the
60
+ intersection look like". Same parallel extraction, opposite operation.
61
+ Pure logic, no LLM, no new dependencies.
62
+
63
+ ## [12.7.1] — 2026-05-09
64
+
65
+ **Brand book — visual polish pass.**
66
+
67
+ The v12.7.0 brand book had a real-data deficit: the cover used a generic
68
+ grade-coloured accent strip, every section opened with a philosophical
69
+ lede ("the felt pace of an interface", "form follows feeling"), and
70
+ components were a metadata table instead of a real mock. This pass
71
+ replaces all of that with the extracted values themselves.
72
+
73
+ Changes:
74
+
75
+ - **Cover** now leads with the brand's actual primary as a full-bleed
76
+ band (auto-detected, falls back through secondary/accent/most-used).
77
+ Asymmetric layout — band + label + hex above, host name in massive
78
+ serif below.
79
+ - **Lede paragraphs replaced with one-line data summaries.**
80
+ "1 primary · 1 secondary · 1 accent · 27 neutrals · 88 total" instead
81
+ of "Brand colours carry meaning. Neutrals carry structure."
82
+ - **Type specimen** now uses real headlines extracted from the site's
83
+ voice (`design.voice.sampleHeadings`). Falls back to a single neutral
84
+ pangram only when those are absent. The recycled aphorisms ("quiet
85
+ authority of restraint", "form follows feeling") are gone.
86
+ - **Colour chapter** — primary at full-width hero card, secondary +
87
+ accent at half-width below, neutrals as a flush horizontal strip,
88
+ full palette grid below. Hex labels render *inside* the swatch in
89
+ high-contrast text (auto black/white).
90
+ - **Components chapter** — renders an actual primary + secondary
91
+ button using the extracted brand colour and radius, plus a card
92
+ mockup using extracted surface + text colours. Metadata table moved
93
+ below the visual mock.
94
+ - **Accessibility chapter** — failing pairs render as actual stacked
95
+ colour blocks (foreground text on background with ratio inline),
96
+ not a pure table. Big score number on top.
97
+ - **Tokens chapter** — code blocks now have a header bar with the
98
+ language label and target filename.
99
+ - **"How to use"** trimmed from six rules of thumb to four punchy
100
+ ones, drops the "rule of thumb" framing.
101
+ - **Layout** — section padding moved into the wrap (no more gutter
102
+ around the hero band), TOC now sits on a tinted sub-paper background,
103
+ chapter headers are thinner with a bottom rule.
104
+
105
+ Same 13 chapters, same public API. No breaking changes.
106
+
107
+ 378/378 tests pass (one assertion updated for the new lowercase
108
+ "Brand guidelines" cover label).
109
+
110
+ ## [12.7.0] — 2026-05-09
111
+
112
+ **Brand book — full editorial design-guidelines document for any URL.**
113
+
114
+ \`designlang brand <url>\` produces a self-contained, print-ready HTML
115
+ "brand guidelines book" that documents every dimension of an extracted
116
+ design system. Cover, table of contents, 13 chapters: about, logo,
117
+ colour, typography, spacing, shape, iconography, motion, components,
118
+ voice, accessibility, tokens, how-to-use. Editorial layout, dark-mode
119
+ toggle, smooth-scroll TOC, drop-in code blocks per stack.
120
+
121
+ \`\`\`bash
122
+ npx designlang brand stripe.com
123
+ \`\`\`
124
+
125
+ \`\`\`
126
+ Brand book · 54 tokens · 3 fonts · grade B · https://stripe.com
127
+ ✓ stripe-com.brand.html
128
+ ✓ stripe-com.brand.md
129
+ ✓ stripe-com.brand.json
130
+ \`\`\`
131
+
132
+ ### Why this is different from \`pack\`, \`grade\`, and \`design-language.md\`
133
+
134
+ | Output | Audience | Format |
135
+ |---|---|---|
136
+ | \`pack\` (v12.4) | Devs picking up a design system | Directory of files (tokens, components, Storybook, starter) |
137
+ | \`grade\` (v12.1) | Audit / share | Single audit page with score + verdict |
138
+ | \`design-language.md\` | LLMs | AI-optimized markdown (data-dense) |
139
+ | **\`brand\` (v12.7)** | **Designers + handoff** | **Editorial brand-guidelines book — readable, print-ready, hand-off-ready** |
140
+
141
+ ### Added
142
+
143
+ - New CLI command: \`designlang brand <url> [-o] [-n] [--format] [--open]\`.
144
+ - New formatter \`src/formatters/brand-book.js\` exporting \`formatBrandBook\`
145
+ (HTML book) and \`formatBrandBookMarkdown\` (terse markdown summary).
146
+ - 13 chapters with editorial typography (Instrument Serif display + Inter
147
+ body), generous whitespace, smooth-scroll anchors, dark-mode toggle,
148
+ print stylesheet with page breaks at chapter boundaries.
149
+ - Per-colour section: large swatch + HEX/RGB/HSL/usage grid for brand
150
+ colours, mini-grid for neutrals + full palette.
151
+ - Per-token section: drop-in code blocks for CSS variables, Tailwind
152
+ config, with cross-reference to \`pack\` for the full bundle.
153
+ - Closing "How to use" chapter with six rules of thumb (hierarchy of
154
+ brand colour, two-family discipline, snap-to-scale spacing, tight
155
+ radius set, motion as feedback, accessibility as hard constraint).
156
+ - 7 new tests covering chapter coverage, host/colour/font rendering,
157
+ XSS escaping, sparse-design fallback, and mixed-shape component
158
+ anatomy (the bug that broke the first integration — slots / variants
159
+ arrive as objects, strings, or arrays from the extractor).
160
+
161
+ ### Plugin
162
+
163
+ \`/brand\` is the 7th slash command in the Claude Code plugin
164
+ (\`/extract\`, \`/grade\`, \`/battle\`, \`/remix\`, \`/pack\`, \`/theme-swap\`,
165
+ \`/brand\`). \`.claude-plugin/plugin.json\` and \`marketplace.json\`
166
+ bumped to 12.7.0.
167
+
168
+ ## [12.6.0] — 2026-05-06
169
+
170
+ **Theme-swap — recolour any extracted design around your brand primary.**
171
+
172
+ \`designlang theme-swap <url> --primary <hex>\` takes the existing
173
+ extraction and rotates the brand palette around a new primary while
174
+ preserving everything else: type scale, spacing rhythm, neutrals, motion,
175
+ component anatomy. Closes
176
+ [#57](https://github.com/Manavarya09/design-extract/issues/57).
177
+
178
+ \`\`\`bash
179
+ npx designlang theme-swap stripe.com --primary "#ff4800"
180
+ \`\`\`
181
+
182
+ \`\`\`
183
+ #533afd → #ff4800 · 91 colours · https://stripe.com
184
+ Hue shift: 118.5° · neutrals preserved · type/spacing/motion untouched
185
+
186
+ ✓ stripe-com-themeswap-ff4800.themeswap.html
187
+ ✓ stripe-com-themeswap-ff4800.themeswap.md
188
+ ✓ stripe-com-themeswap-ff4800.themeswap.json
189
+ ✓ stripe-com-themeswap-ff4800.themeswap.tokens.json
190
+ \`\`\`
191
+
192
+ ### Added
193
+
194
+ - New CLI command: \`designlang theme-swap <url> --primary <hex>\`
195
+ with \`--from\`, \`-o\`, \`-n\`, \`--format\`, \`--open\` flags.
196
+ - New module \`src/recolor.js\` exporting \`recolorDesign(design, opts)\`.
197
+ Operates in OKLCH so perceptual lightness stays constant — only hue
198
+ rotates. Auto-detects the source primary; pin it with \`--from\`.
199
+ Neutrals (chroma < 0.04 in OKLCH) are explicitly preserved so body
200
+ text, surfaces, and rule lines stay readable.
201
+ - New formatter \`src/formatters/theme-swap.js\` exporting
202
+ \`formatThemeSwap\` (HTML side-by-side preview) and
203
+ \`formatThemeSwapMarkdown\`.
204
+ - New OKLCH inverse helpers in \`src/utils/color-gamut.js\`:
205
+ \`srgbToOklab\`, \`srgbToOklch\`, \`hexToOklch\`, \`oklchToHex\` —
206
+ with chroma fallback for out-of-gamut colours.
207
+ - The recoloured design is fed through every existing emitter (DTCG,
208
+ Tailwind, shadcn, Figma vars, CSS vars), so the swap propagates
209
+ for free.
210
+ - 10 new tests covering primary-pinning, neutral preservation,
211
+ hue rotation, error paths, \`--from\` override, HTML/markdown shapes,
212
+ and XSS escaping.
213
+
214
+ ### Why
215
+
216
+ People keep asking *"what would Stripe look like in our brand colors?"*.
217
+ \`theme-swap\` answers it in 30 seconds. Bridges \`remix\` (full-vocab
218
+ restyle) and \`apply\` (token write-through to a project).
219
+
220
+ ## [12.5.0] — 2026-05-06
221
+
222
+ **Claude Code plugin — five slash commands wrapping the CLI.**
223
+
224
+ designlang is now a first-class Claude Code plugin. Drop it into any
225
+ session and every CLI verb becomes a slash command:
226
+
227
+ \`\`\`bash
228
+ /plugin install Manavarya09/design-extract
229
+ \`\`\`
230
+
231
+ | Command | What it does |
232
+ |---|---|
233
+ | \`/extract <url>\` | Full extraction → DTCG, Tailwind, Figma, motion, voice |
234
+ | \`/grade <url>\` | Shareable HTML Design Report Card (+ \`--badge\`) |
235
+ | \`/battle <urlA> <urlB>\` | Head-to-head graded battle card |
236
+ | \`/remix <url> --as <vocab>\` | Restyle in 6 vocabularies |
237
+ | \`/pack <url>\` | Bundle every output into one design-system directory |
238
+
239
+ ### Added
240
+
241
+ - \`commands/extract.md\`, \`commands/grade.md\`, \`commands/battle.md\`,
242
+ \`commands/remix.md\`, \`commands/pack.md\` — five slash-command
243
+ manifests with \`description\` + \`argument-hint\` frontmatter and prompt
244
+ bodies that wrap the CLI and surface tight summaries.
245
+ - Refreshed \`.claude-plugin/plugin.json\` (was stale at v1.0.0) — name
246
+ bumped to \`designlang\`, description rewritten around all v12 surfaces,
247
+ added \`commands\` directory pointer + expanded keywords.
248
+ - Refreshed \`.claude-plugin/marketplace.json\` — same updates plus
249
+ marketplace tags.
250
+ - New README section "Claude Code plugin" documenting install + the
251
+ five slash commands. Existing skills-ecosystem section retained for
252
+ Cursor / Codex / 40+ other agents.
253
+
254
+ No CLI behavior change. The slash commands are pure wrappers — they
255
+ shell out to \`npx designlang …\` and read the same output files.
256
+
3
257
  ## [12.4.0] — 2026-05-05
4
258
 
5
259
  **Pack — one command, one polished design-system bundle.**
package/README.md CHANGED
@@ -26,6 +26,9 @@ It also goes where extractors don't: **layout patterns**, **responsive behavior
26
26
 
27
27
  ```bash
28
28
  npx designlang https://stripe.com # extract everything
29
+ npx designlang pair stripe.com linear.app # fuse two designs (visuals A × voice B) ← v12.8
30
+ npx designlang brand stripe.com # full brand-guidelines book (13 chapters) ← v12.7
31
+ npx designlang theme-swap stripe.com --primary "#ff4800" # recolour around your brand ← v12.6
29
32
  npx designlang pack stripe.com # one polished design-system directory ← v12.4
30
33
  npx designlang remix stripe.com --as cyberpunk # restyle in another vocabulary ← v12.3
31
34
  npx designlang remix stripe.com --all # emit all 6 vocabs at once ← v12.3
@@ -131,7 +134,10 @@ designlang mcp # stdio MCP server for Cursor / Clau
131
134
  | Battle (v12.2) | `designlang battle <A> <B>` | Head-to-head graded battle card with verdict, dimension table, palette comparison |
132
135
  | Badge (v12.2) | `designlang grade --badge` | Shields.io-style SVG badge — `design · B · 87` — drop into any README. Live endpoint: `designlang.app/badge/<host>.svg` |
133
136
  | Remix (v12.3) | `designlang remix <url> --as <vocab>` | Restyle the audited page in another vocabulary (brutalist / swiss / art-deco / cyberpunk / soft-ui / editorial). `--all` emits all 6 |
134
- | Pack (NEW v12.4) | `designlang pack <url>` | Bundle every output (tokens / components / Storybook / starter / prompts) into one polished design-system directory |
137
+ | Pack (v12.4) | `designlang pack <url>` | Bundle every output (tokens / components / Storybook / starter / prompts) into one polished design-system directory |
138
+ | Theme-swap (v12.6) | `designlang theme-swap <url> --primary <hex>` | Recolour the extracted design around a new brand primary. OKLCH hue rotation, neutrals preserved, type/spacing/motion untouched |
139
+ | Brand book (v12.7) | `designlang brand <url>` | Full editorial brand-guidelines document (13 chapters: cover, about, logo, colour, type, spacing, shape, iconography, motion, components, voice, a11y, tokens, how-to-use). Print-ready, dark-mode toggle, hand-off-ready |
140
+ | Pair (NEW v12.8) | `designlang pair <urlA> <urlB>` | Fuse two designs across 7 axes (colours/type/spacing/shape/motion/voice/components). Defaults to "visuals from A, voice + type from B". `--brand` also emits a brand book of the fused identity |
135
141
  | Watch | `designlang watch <url>` | Monitor for design changes on interval |
136
142
  | Diff | `designlang diff <A> <B>` | Compare two sites (MD + HTML) |
137
143
  | Multi-brand | `designlang brands <urls...>` | N-site comparison matrix |
@@ -188,6 +194,9 @@ Commands:
188
194
  battle <urlA> <urlB> Head-to-head graded battle card (--format html|md|json|all, --open)
189
195
  remix <url> Restyle in another vocabulary (--as brutalist|swiss|art-deco|cyberpunk|soft-ui|editorial, --all, --list, --open)
190
196
  pack <url> Bundle every output into one design-system directory (--with-clone, --open)
197
+ theme-swap <url> --primary <hex> Recolour around a new brand primary (--from, --format html|md|json|tokens|all, --open)
198
+ brand <url> Generate a full editorial brand-guidelines book (--format html|md|json|all, --open)
199
+ pair <urlA> <urlB> Fuse two designs across 7 axes (--colors-from, --typography-from, --spacing-from, --shape-from, --motion-from, --voice-from, --components-from, --brand)
191
200
  watch <url> Monitor for design changes on interval
192
201
  diff <urlA> <urlB> Compare two sites' design languages
193
202
  brands <urls...> Multi-brand comparison matrix
@@ -235,16 +244,37 @@ designlang ships surfaces beyond the CLI:
235
244
  | **GitHub Action** | [`github-action/`](github-action/) | "Design regression guard" — diffs tokens on every PR and comments. |
236
245
  | **Chrome extension** | [`chrome-extension/`](chrome-extension/) | One-click handoff from any tab (MV3, `activeTab` only). |
237
246
  | **MCP server** | `npx designlang mcp` | Exposes the extracted design as MCP resources + tools for Cursor, Claude Code, Windsurf, etc. See [`docs/MCP-REGISTRY.md`](docs/MCP-REGISTRY.md). |
247
+ | **Claude Code plugin** | [`.claude-plugin/`](.claude-plugin/) | Five slash commands inside Claude Code — `/extract`, `/grade`, `/battle`, `/remix`, `/pack`. |
238
248
 
239
- ## Agent Skill
249
+ ## Claude Code plugin
240
250
 
241
- Works with **Claude Code, Cursor, Codex, and 40+ AI coding agents** via the skills ecosystem:
251
+ Drop designlang straight into Claude Code as a plugin. Every CLI command becomes a slash command:
252
+
253
+ ```bash
254
+ /plugin install Manavarya09/design-extract
255
+ ```
256
+
257
+ Then inside any Claude Code session:
258
+
259
+ | Slash command | What it does |
260
+ |---|---|
261
+ | `/extract <url>` | Full extraction → DTCG tokens, Tailwind, Figma vars, motion, voice |
262
+ | `/grade <url>` | Shareable HTML "Design Report Card" (+ `--badge` for an SVG) |
263
+ | `/battle <urlA> <urlB>` | Head-to-head graded battle card |
264
+ | `/remix <url> --as <vocab>` | Restyle in brutalist / swiss / art-deco / cyberpunk / soft-ui / editorial |
265
+ | `/pack <url>` | Bundle every output into one design-system directory |
266
+
267
+ Manifest: [`.claude-plugin/plugin.json`](.claude-plugin/plugin.json) · marketplace: [`.claude-plugin/marketplace.json`](.claude-plugin/marketplace.json) · commands: [`commands/`](commands/) · skills: [`skills/`](skills/).
268
+
269
+ ## Agent skill (other ecosystems)
270
+
271
+ Works with **Cursor, Codex, and 40+ AI coding agents** via the skills ecosystem:
242
272
 
243
273
  ```bash
244
274
  npx skills add Manavarya09/design-extract
245
275
  ```
246
276
 
247
- In Claude Code, use `/extract-design <url>`.
277
+ In Cursor / Codex / etc., use `/extract-design <url>`.
248
278
 
249
279
  ## Website
250
280
 
package/SUPPORT.md ADDED
@@ -0,0 +1,22 @@
1
+ # Support
2
+
3
+ Need help with **designlang**?
4
+
5
+ - **Bugs** — open an [issue](https://github.com/Manavarya09/design-extract/issues/new/choose) with steps to reproduce and the URL you were extracting.
6
+ - **Feature requests** — see the [open roadmap](https://github.com/Manavarya09/design-extract/issues?q=is%3Aopen+label%3Aroadmap) (issues #56–#70). Feel free to claim one with a comment, or open a new one.
7
+ - **Security issues** — see [SECURITY.md](SECURITY.md). Please report privately.
8
+ - **Questions** — start a [Discussion](https://github.com/Manavarya09/design-extract/discussions) or DM [@manavaryasingh](https://github.com/Manavarya09).
9
+
10
+ ## Surfaces
11
+
12
+ | Surface | Where to ask |
13
+ |---|---|
14
+ | CLI (`npx designlang`) | issue with the failing command + Node version |
15
+ | Claude Code plugin | issue tagged `claude-code` |
16
+ | MCP server (`designlang mcp`) | issue tagged `mcp` |
17
+ | Website (designlang.app) | issue tagged `website` |
18
+ | VS Code / Raycast / Figma / Chrome extensions | issue tagged with the surface name |
19
+
20
+ ## Response time
21
+
22
+ Best effort within 5 business days. PRs welcome — see [CONTRIBUTING.md](CONTRIBUTING.md).