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.
- package/.claude-plugin/marketplace.json +15 -7
- package/.claude-plugin/plugin.json +19 -8
- package/CHANGELOG.md +254 -0
- package/README.md +34 -4
- package/SUPPORT.md +22 -0
- package/bin/design-extract.js +295 -0
- package/commands/battle.md +27 -0
- package/commands/brand.md +59 -0
- package/commands/extract.md +41 -0
- package/commands/grade.md +29 -0
- package/commands/pack.md +37 -0
- package/commands/pair.md +68 -0
- package/commands/remix.md +29 -0
- package/commands/theme-swap.md +42 -0
- package/package.json +3 -3
- package/src/ci.js +36 -2
- package/src/formatters/brand-book.js +1052 -0
- package/src/formatters/pair.js +331 -0
- package/src/formatters/theme-swap.js +272 -0
- package/src/fuse.js +154 -0
- package/src/recolor.js +199 -0
- package/src/utils/color-gamut.js +64 -0
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name": "
|
|
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": "
|
|
9
|
+
"name": "designlang",
|
|
10
10
|
"source": "./",
|
|
11
|
-
"description": "
|
|
12
|
-
"version": "
|
|
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
|
-
"
|
|
20
|
+
"dtcg",
|
|
21
21
|
"tailwind",
|
|
22
|
+
"shadcn",
|
|
23
|
+
"figma",
|
|
22
24
|
"typography",
|
|
23
25
|
"colors",
|
|
24
|
-
"
|
|
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": "
|
|
3
|
-
"description": "Extract
|
|
4
|
-
"version": "
|
|
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://
|
|
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
|
-
"
|
|
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 (
|
|
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
|
-
##
|
|
249
|
+
## Claude Code plugin
|
|
240
250
|
|
|
241
|
-
|
|
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
|
|
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).
|