designlang 11.1.0 → 11.3.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/SECURITY.md ADDED
@@ -0,0 +1,46 @@
1
+ # Security Policy
2
+
3
+ ## Supported versions
4
+
5
+ | Version | Supported |
6
+ | ------- | ------------------ |
7
+ | 11.x | :white_check_mark: |
8
+ | 10.x | :white_check_mark: (critical only) |
9
+ | < 10 | :x: |
10
+
11
+ Only the latest minor of each supported major receives fixes.
12
+
13
+ ## Reporting a vulnerability
14
+
15
+ **Please don't open a public issue.** Use GitHub's private vulnerability reporting instead:
16
+
17
+ 👉 <https://github.com/Manavarya09/design-extract/security/advisories/new>
18
+
19
+ What to include:
20
+
21
+ - A description of the issue and its impact.
22
+ - A minimal repro (URL being extracted, CLI flags, OS + Node version).
23
+ - Suggested severity and, if you have one, a proposed fix.
24
+
25
+ ### What to expect
26
+
27
+ - Acknowledgement within **72 hours**.
28
+ - A triage verdict (accepted / needs info / out of scope) within **7 days**.
29
+ - Public disclosure coordinated with you after a fix ships — usually as part of a patch release.
30
+
31
+ ## Scope
32
+
33
+ In scope:
34
+
35
+ - The `designlang` CLI and all subcommands (`extract`, `clone`, `ci`, `studio`, `replay`, `mcp`, etc.).
36
+ - The MCP server (`src/mcp/server.js`).
37
+ - The hosted extractor website (`website/`) when used at its canonical URL.
38
+ - The Figma, Chrome, Raycast, and VS Code extensions shipped in this repo.
39
+
40
+ Out of scope:
41
+
42
+ - Vulnerabilities that require the user to run `designlang` against a page **they themselves control** (i.e. self-owned XSS in content they feed us).
43
+ - Denial of service via crafted sites that simply take a long time to extract — we already time-bound Playwright operations.
44
+ - Browser-level shadow-DOM opacity (closed shadow roots are unreachable by web platform design, not a designlang bug).
45
+
46
+ Thanks for taking the time to report responsibly.
@@ -94,6 +94,7 @@ program
94
94
  .option('--smart', 'use optional LLM fallback when heuristic classifiers have low confidence (needs OPENAI_API_KEY or ANTHROPIC_API_KEY)')
95
95
  .option('--pages <n>', 'crawl N canonical pages (pricing/docs/blog/about/product) in addition to the homepage', parseInt)
96
96
  .option('--no-prompts', 'skip writing the prompt-pack directory')
97
+ .option('--no-design-md', 'skip writing the agent-native DESIGN.md (single-file, 8-section, YAML front matter)')
97
98
  .option('--responsive-shots', 'capture full-page PNGs at 4 breakpoints × (light,dark)')
98
99
  .option('--perf', 'measure Core Web Vitals + bundle profile (LCP/CLS/INP, JS/CSS/font/img bytes, third-party count)')
99
100
  .option('--json', 'output raw JSON to stdout (for CI/CD)')
@@ -352,6 +353,13 @@ program
352
353
  }
353
354
  files.push({ name: `${prefix}-voice.json`, content: JSON.stringify(design.voice || {}, null, 2), label: 'Brand Voice' });
354
355
 
356
+ // v11.2: agent-native single-file DESIGN.md (compatible with the
357
+ // 8-canonical-section convention; default-on, opt-out via --no-design-md).
358
+ if (merged.designMd !== false) {
359
+ const { formatDesignMd } = await import('../src/formatters/design-md.js');
360
+ files.push({ name: `${prefix}-DESIGN.md`, content: formatDesignMd(design), label: 'DESIGN.md (agent-native)' });
361
+ }
362
+
355
363
  // v10: page intent + section roles + visual DNA + component library + multi-page + prompt pack.
356
364
  files.push({ name: `${prefix}-intent.json`, content: JSON.stringify({ pageIntent: design.pageIntent, sectionRoles: design.sectionRoles }, null, 2), label: 'Page Intent + Section Roles' });
357
365
  files.push({ name: `${prefix}-visual-dna.json`, content: JSON.stringify({ materialLanguage: design.materialLanguage, imageryStyle: design.imageryStyle, backgroundPatterns: design.backgroundPatterns }, null, 2), label: 'Visual DNA' });
@@ -1077,6 +1085,21 @@ program
1077
1085
  }
1078
1086
  });
1079
1087
 
1088
+ // ── Chat — REPL over a live extraction (v12) ──────────────
1089
+ program
1090
+ .command('chat <target>')
1091
+ .description('Interactive REPL over an extraction. <target> is either a URL or a path to an existing *-design-tokens.json file.')
1092
+ .option('-o, --out <dir>', 'output directory for `save`', './chat-output')
1093
+ .action(async (target, opts) => {
1094
+ try {
1095
+ const { runChat } = await import('../src/chat.js');
1096
+ await runChat(target, opts);
1097
+ } catch (err) {
1098
+ console.error(chalk.red(`\n ${err.message}\n`));
1099
+ process.exit(1);
1100
+ }
1101
+ });
1102
+
1080
1103
  // ── Replay — record a short WebM of motion from a URL ─────
1081
1104
  program
1082
1105
  .command('replay <url>')
@@ -0,0 +1,95 @@
1
+ # designlang — Distribution Submission Playbook
2
+
3
+ Submit each marketplace below. All listing copy + manifests are pre-written.
4
+ Review queues take 1–7 days; this playbook is everything you need to click "submit".
5
+
6
+ ---
7
+
8
+ ## 1. Figma Community (`figma-plugin/`)
9
+
10
+ **Goal:** publicly listed in the Figma Community plugin store.
11
+
12
+ **Steps:**
13
+ 1. Open Figma Desktop → Community → Publish a plugin.
14
+ 2. Upload from local: `figma-plugin/`.
15
+ 3. Use the title, tagline, description, tags, and cover-image brief from `marketplace/figma-listing.md`.
16
+ 4. Screenshots: take 4 from the live extraction studio.
17
+ 5. Submit. Review queue: 3–7 days.
18
+
19
+ ---
20
+
21
+ ## 2. Cursor — Custom Tool listing
22
+
23
+ **Goal:** Cursor users can `Cmd+Shift+P → designlang: Extract` from any URL.
24
+
25
+ **Steps:**
26
+ 1. Read `marketplace/cursor-listing.md`.
27
+ 2. The provided `mcp.json` snippet is what users paste into `~/.cursor/mcp.json`.
28
+ 3. We don't submit to Cursor's marketplace directly (no formal review process yet);
29
+ the MCP integration is documented and self-served. Promotion = blog post + tweet.
30
+
31
+ ---
32
+
33
+ ## 3. VS Code Marketplace (`vscode-extension/`)
34
+
35
+ **Goal:** publicly listed at marketplace.visualstudio.com/items?itemName=designlang.
36
+
37
+ **Steps:**
38
+ 1. Install `vsce` once: `npm install -g @vscode/vsce`.
39
+ 2. From `vscode-extension/`: `vsce package` → produces `.vsix`.
40
+ 3. Create publisher account: <https://marketplace.visualstudio.com/manage>.
41
+ 4. `vsce publish` (or upload the `.vsix` via the dashboard).
42
+ 5. Use the listing copy from `marketplace/vscode-listing.md`.
43
+ 6. Review queue: ~24h.
44
+
45
+ ---
46
+
47
+ ## 4. Claude Code Skill registry
48
+
49
+ **Goal:** designlang appears in the official Claude Code skills list.
50
+
51
+ **Steps:**
52
+ 1. Read `marketplace/claude-code-skill.md` — it contains the SKILL.md the registry expects.
53
+ 2. The SKILL.md is already emitted by `designlang <url> --emit-agent-rules` at
54
+ `.claude/skills/designlang/SKILL.md`. We submit a copy at the project root for discovery.
55
+ 3. Open a PR against <https://github.com/anthropics/claude-code-skills> (or the
56
+ then-current registry repo) — title: "Add: designlang skill".
57
+
58
+ ---
59
+
60
+ ## 5. Raycast Store (`raycast-extension/`)
61
+
62
+ **Goal:** designlang as a one-keystroke Raycast command.
63
+
64
+ **Steps:**
65
+ 1. Read `marketplace/raycast-listing.md`.
66
+ 2. From `raycast-extension/`: follow Raycast's contribution guide
67
+ <https://developers.raycast.com/basics/publish-an-extension>.
68
+ 3. PR to <https://github.com/raycast/extensions>.
69
+ 4. Review queue: 5–14 days.
70
+
71
+ ---
72
+
73
+ ## 6. Chrome Web Store (`chrome-extension/`)
74
+
75
+ **Goal:** one-click extract from any tab via the Chrome toolbar.
76
+
77
+ **Steps:**
78
+ 1. Read `marketplace/chrome-listing.md`.
79
+ 2. Zip `chrome-extension/`: `cd chrome-extension && zip -r ../designlang-chrome.zip .`.
80
+ 3. Upload at <https://chrome.google.com/webstore/devconsole>. ($5 one-time dev fee.)
81
+ 4. Review queue: 1–3 days.
82
+
83
+ ---
84
+
85
+ ## Sequencing
86
+
87
+ Do them in this order — easiest payoff first, most setup last:
88
+ 1. **Cursor MCP** (no review, just docs + tweet — ship today).
89
+ 2. **Chrome Web Store** ($5 fee, 1–3 day review — submit today).
90
+ 3. **VS Code Marketplace** (free, ~24h review — submit today).
91
+ 4. **Figma Community** (free, 3–7 day review — submit today).
92
+ 5. **Claude Code Skills registry** (PR-based, async — submit this week).
93
+ 6. **Raycast Store** (PR-based, 5–14 day review — submit this week).
94
+
95
+ Total click-time across all six: ~90 minutes. The wall-clock for everything to be live: ~2 weeks.
@@ -0,0 +1,45 @@
1
+ # Chrome Web Store — designlang extension
2
+
3
+ ## Name
4
+
5
+ designlang — Extract design system from this tab
6
+
7
+ ## Summary (max 132 chars)
8
+
9
+ One click to extract any website's design system: tokens, typography, spacing, components, voice. $0, no account, MIT.
10
+
11
+ ## Description (long)
12
+
13
+ designlang lives in your Chrome toolbar. Click the icon on any tab; the active URL is sent to designlang.app, which runs a Playwright extraction and opens the result inline as tabs (DESIGN.md, DTCG tokens, Tailwind, CSS variables, Figma variables, and 7 more).
14
+
15
+ Permissions:
16
+ • `activeTab` — read the URL of the current tab. Nothing else.
17
+
18
+ Use cases:
19
+ • Read a competitor's design tokens in 5 seconds
20
+ • Pull a Tailwind config off any production site
21
+ • Generate a DESIGN.md for AI coding agents (Claude Code, Cursor, Windsurf)
22
+ • One-click copy hex / radius / shadow values
23
+ • Import a Figma Variable collection from any URL
24
+
25
+ Open source: https://github.com/Manavarya09/design-extract
26
+
27
+ ## Category
28
+
29
+ Developer Tools
30
+
31
+ ## Languages
32
+
33
+ English
34
+
35
+ ## Screenshots (4 — 1280x800)
36
+
37
+ 1. Browser tab on a real site (e.g. Stripe), with the designlang toolbar icon highlighted.
38
+ 2. The same tab after clicking — designlang.app opens with extraction in progress (token paint streaming).
39
+ 3. The result viewer with the DESIGN.md tab active, source code visible, copy/download buttons.
40
+ 4. The result viewer on the Tailwind config tab, showing extracted palette + scale.
41
+
42
+ ## Submission
43
+
44
+ ZIP the `chrome-extension/` directory, upload at <https://chrome.google.com/webstore/devconsole>.
45
+ $5 one-time developer fee.
@@ -0,0 +1,52 @@
1
+ # Claude Code Skills registry — designlang
2
+
3
+ ## Skill name
4
+
5
+ designlang
6
+
7
+ ## SKILL.md (the file the registry expects)
8
+
9
+ ```markdown
10
+ ---
11
+ name: designlang
12
+ description: Reverse-engineer any website into a complete design system. Outputs DTCG W3C tokens, motion, anatomy, voice, page intent, material language, plus a single agent-native DESIGN.md and a one-command Next.js clone. Use when the user wants to extract, mirror, or compare design tokens against a live URL.
13
+ when_to_use: |
14
+ Use this skill when the user wants to:
15
+ - Extract design tokens, palette, typography, or shadows from a public website
16
+ - Generate a DESIGN.md for an existing site (agent-native single-file artifact)
17
+ - Clone a website's design as a runnable Next.js starter
18
+ - Compare local tokens against a deployed site (drift detection)
19
+ - Import a website's tokens into Figma, Tailwind, iOS, Android, Flutter, or WordPress
20
+ arguments:
21
+ - name: url
22
+ description: Public URL of the site to extract from.
23
+ required: true
24
+ ---
25
+
26
+ # designlang skill
27
+
28
+ `npx designlang <url>` runs a Playwright extraction and writes ~25 files
29
+ (DTCG tokens, Tailwind, CSS vars, Figma vars, motion, anatomy, voice,
30
+ intent, material, library detection, prompt pack for v0/Lovable/Cursor,
31
+ plus the single-file `DESIGN.md`).
32
+
33
+ Sub-commands:
34
+ - `designlang clone <url>` — generates a working Next.js repo from the extraction
35
+ - `designlang ci <url> --tokens ./tokens.json` — drift bot, writes a PR-comment markdown
36
+ - `designlang studio` — local web studio over the latest extraction
37
+ - `designlang chat <url>` — REPL with mutations (sharpen / soften / dark / brutalist / glass / swap-color / swap-font)
38
+ - `designlang mcp` — stdio MCP server
39
+
40
+ For agent rules and ready-to-paste prompts, run with `--emit-agent-rules` or read
41
+ the `*-prompts/` directory.
42
+
43
+ The full spec for `DESIGN.md` is at <https://designlang.app/spec>.
44
+ ```
45
+
46
+ ## Submission flow
47
+
48
+ 1. Fork <https://github.com/anthropics/claude-code> (or the then-current registry repo).
49
+ 2. Add `skills/designlang/SKILL.md` with the content above.
50
+ 3. PR title: `Add: designlang skill`.
51
+ 4. PR body: link to <https://designlang.app>, describe the surface, mention 1.6k stars + 5K npm downloads.
52
+ 5. Tag the PR with `skill` and `community`.
@@ -0,0 +1,55 @@
1
+ # Cursor — designlang MCP integration
2
+
3
+ ## What it gives the user
4
+
5
+ Inside Cursor (and Windsurf, and Claude Desktop), `designlang` exposes the **last extraction** as a live MCP resource. Cursor can read tokens, regions, components, and CSS health without re-extracting, and call MCP tools to refine the design (`designlang chat` ops are wired here).
6
+
7
+ ## Install (paste into `~/.cursor/mcp.json`)
8
+
9
+ ```json
10
+ {
11
+ "mcpServers": {
12
+ "designlang": {
13
+ "command": "npx",
14
+ "args": ["-y", "designlang", "mcp", "--output-dir", "./design-extract-output"]
15
+ }
16
+ }
17
+ }
18
+ ```
19
+
20
+ ## What Cursor sees
21
+
22
+ Resources:
23
+ - `designlang://latest/tokens` — DTCG W3C token tree of the most recent extraction
24
+ - `designlang://latest/regions` — semantic region map (nav, hero, pricing, …)
25
+ - `designlang://latest/components` — component clusters with variant/size/state
26
+ - `designlang://latest/css-health` — specificity graph + unused-CSS report
27
+ - `designlang://latest/design-md` — the agent-native single-file artifact
28
+
29
+ Tools:
30
+ - `designlang_extract` — paste a URL, get tokens
31
+ - `designlang_chat` — apply mutations (sharpen / soften / dark / brutalist / glass / swap-color / swap-font)
32
+ - `designlang_clone` — generate a working Next.js repo from a URL
33
+ - `designlang_drift` — compare local tokens against a live URL
34
+
35
+ ## Tweet thread for launch
36
+
37
+ ```
38
+ 1/ Cursor + designlang. Paste any URL inside Cursor and it reads the live design system as MCP resources.
39
+
40
+ `~/.cursor/mcp.json`:
41
+ {
42
+ "mcpServers": {
43
+ "designlang": {
44
+ "command": "npx",
45
+ "args": ["-y", "designlang", "mcp"]
46
+ }
47
+ }
48
+ }
49
+
50
+ 2/ Then ask: "Refactor my <Button> to match stripe.com's design language" — Cursor reads designlang://latest/tokens and rewrites against the real palette, radii, shadows, voice.
51
+
52
+ 3/ It also exposes `designlang_chat` as a tool. "Make it brutalist" → tokens regenerate. "Swap primary to #ff4800" → updated. Then ask Cursor to apply the new tokens to your repo.
53
+
54
+ 4/ $0. MIT. https://designlang.app
55
+ ```
@@ -0,0 +1,50 @@
1
+ # Figma Community — designlang plugin listing
2
+
3
+ ## Title
4
+
5
+ designlang — Import any website's design system
6
+
7
+ ## Tagline (max 100 chars)
8
+
9
+ Paste a URL, get a Figma Variable collection — colors, typography, spacing — pulled live from any site.
10
+
11
+ ## Description (max 1000 chars)
12
+
13
+ designlang reverse-engineers any website into a complete design system and imports it directly into Figma as a Variable collection.
14
+
15
+ Paste a URL or paste an exported `*-figma-variables.json` from the [designlang CLI](https://www.npmjs.com/package/designlang). The plugin creates a fresh VariableCollection (or updates an existing one), maps every primitive, semantic, and composite token, and supports multi-mode payloads (light/dark) automatically.
16
+
17
+ What you get:
18
+ • Colors with proper roles (primary, secondary, accent, background, foreground, neutrals)
19
+ • Typography variables (sans, mono, body size, heading scale)
20
+ • Spacing scale (with detected base unit)
21
+ • Radii (xs/sm/md/lg/xl/full)
22
+ • Shadows (kept as raw strings — Figma doesn't natively type box-shadow)
23
+
24
+ Free, MIT-licensed, no account. The whole system also runs as a CLI: `npx designlang <url>`.
25
+
26
+ ## Tags (pick up to 12)
27
+
28
+ design-system, design-tokens, design-extractor, dtcg, figma-variables, color-palette, typography, tokens, brand, design-system-import, w3c, ai-coding-agents
29
+
30
+ ## Cover-image brief
31
+
32
+ Layout: paper background (#f3f1ea), single orange accent (#ff4800).
33
+ Hero: "designlang" in Fraunces, 96px, with the `d` mark to the left.
34
+ Below: a 5-swatch palette strip showing primary / secondary / accent / fg / bg.
35
+ Right side: a tiny mock Figma Variable panel showing 6 imported variables.
36
+
37
+ ## Screenshots (4)
38
+
39
+ 1. Plugin UI on plugin run — "Paste URL or upload .json" state.
40
+ 2. Mid-import — token list streaming in.
41
+ 3. Figma side panel showing the imported VariableCollection with 24 colors expanded.
42
+ 4. After import — a frame using the imported variables (button + card mock).
43
+
44
+ ## Support email
45
+
46
+ [your email]
47
+
48
+ ## Source code link
49
+
50
+ https://github.com/Manavarya09/design-extract/tree/main/figma-plugin
@@ -0,0 +1,38 @@
1
+ # Raycast Store — designlang extension
2
+
3
+ ## Title
4
+
5
+ designlang — Extract a website's design system
6
+
7
+ ## Subtitle
8
+
9
+ Paste any URL, get DTCG tokens / DESIGN.md / Tailwind config in one keystroke.
10
+
11
+ ## Description
12
+
13
+ Designlang reverse-engineers any website into a complete design system, all from inside Raycast.
14
+
15
+ Triggers a Playwright extraction (or pulls from cache), then opens the result in your default browser as a shareable permalink at `designlang.app/x/<hash>`. Paste the URL, hit ⌘ Enter, see the design system within 5 seconds.
16
+
17
+ What you get every time:
18
+ • A shareable permalink (works on every device, no account)
19
+ • A single-file DESIGN.md for AI coding agents
20
+ • 12 file formats: DTCG tokens, Tailwind config, CSS variables, Figma variables, shadcn theme, React/Vue/Svelte themes, iOS SwiftUI, Android Compose, Flutter, WordPress block theme
21
+
22
+ Free, MIT, no signup.
23
+
24
+ ## Categories
25
+
26
+ Developer Tools, Productivity
27
+
28
+ ## Keywords
29
+
30
+ design, tokens, design-system, css, tailwind, figma, dtcg, ai
31
+
32
+ ## Author
33
+
34
+ Manav Arya Singh (@manavarya09)
35
+
36
+ ## Submission
37
+
38
+ PR to https://github.com/raycast/extensions with the contents of `raycast-extension/`.
@@ -0,0 +1,46 @@
1
+ # VS Code Marketplace — designlang listing
2
+
3
+ ## Display name
4
+
5
+ designlang — Extract any website's design system
6
+
7
+ ## Description (short, max 200 chars)
8
+
9
+ CLI + MCP + VS Code commands that reverse-engineer any URL into DTCG tokens, Tailwind, CSS vars, Figma variables, and an agent-native DESIGN.md. $0, MIT, no account.
10
+
11
+ ## README (long description)
12
+
13
+ The README at the root of `vscode-extension/` is what the marketplace renders. Make sure it covers:
14
+
15
+ 1. **What it does** — paste a URL, extract a design system, import into the active workspace.
16
+ 2. **Commands** —
17
+ - `Designlang: Extract from URL` (Cmd+Shift+P)
18
+ - `Designlang: Apply to Workspace` (writes Tailwind + CSS vars next to the user's existing files)
19
+ - `Designlang: Open DESIGN.md`
20
+ - `Designlang: Compare with Production` (drift bot inside the editor)
21
+ 3. **MCP integration** — point at the same `npx designlang mcp` server, gets the live extraction.
22
+ 4. **Screenshots** — the streaming token paint inside the VS Code panel.
23
+
24
+ ## Categories
25
+
26
+ Programming Languages, Other, Visualization, AI
27
+
28
+ ## Tags
29
+
30
+ design-system, design-tokens, dtcg, w3c, tailwind, figma, css, ai, mcp, claude, cursor
31
+
32
+ ## Pricing
33
+
34
+ Free.
35
+
36
+ ## License
37
+
38
+ MIT — link to the LICENSE file at the repo root.
39
+
40
+ ## Repo
41
+
42
+ https://github.com/Manavarya09/design-extract
43
+
44
+ ## Publisher
45
+
46
+ `designlang` (matches package.json `name`)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "designlang",
3
- "version": "11.1.0",
3
+ "version": "11.3.0",
4
4
  "description": "Extract the complete design language from any website and ship it — clone to a working Next.js starter, guard tokens with a CI drift bot, or browse everything in a local studio. Outputs W3C DTCG tokens, motion tokens, typed anatomy stubs, Tailwind config, and ready-to-paste v0 / Lovable / Cursor / Claude-Artifacts prompts.",
5
5
  "type": "module",
6
6
  "bin": {