@beepflow/mcp 2026.8.0 → 2026.8.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.
Files changed (3) hide show
  1. package/dist/index.js +214 -45
  2. package/package.json +1 -2
  3. package/DESIGN.md +0 -382
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beepflow/mcp",
3
- "version": "2026.8.0",
3
+ "version": "2026.8.2",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": ">=24.6.0"
@@ -11,7 +11,6 @@
11
11
  },
12
12
  "files": [
13
13
  "dist/**",
14
- "DESIGN.md",
15
14
  "README.md",
16
15
  "LICENSE"
17
16
  ],
package/DESIGN.md DELETED
@@ -1,382 +0,0 @@
1
- ---
2
- version: alpha
3
- name: Shopifi-design-analysis
4
- description: An inspired interpretation of Shopifi's design language — a cinematic commerce platform built on near-black canvases with full-bleed photography of merchants, compact Neue Haas Grotesk display type at thin weights, and a single black-pill CTA stroked in white.
5
-
6
- colors:
7
- primary: "#ffffff"
8
- on-dark: "#ffffff"
9
- canvas-night: "#000000"
10
- canvas-night-elevated: "#0a0a0a"
11
- surface-elevated-dark: "#1e2c31"
12
- shade-30: "#d4d4d8"
13
- shade-40: "#a1a1aa"
14
- shade-50: "#71717a"
15
- shade-60: "#52525b"
16
- shade-70: "#3f3f46"
17
- hairline-dark: "#1e2c31"
18
- link-cool-1: "#9dabad"
19
- link-cool-2: "#9797a2"
20
- link-cool-3: "#bdbdca"
21
- link-mint: "#99b3ad"
22
-
23
- typography:
24
- display-xxl:
25
- fontFamily: "NeueHaasGrotesk Display, Helvetica, Arial, sans-serif"
26
- fontSize: 14px
27
- fontWeight: 330
28
- lineHeight: 1.0
29
- letterSpacing: 0.35px
30
- fontFeature: ss03
31
- display-xl:
32
- fontFamily: "NeueHaasGrotesk Display, Helvetica, Arial, sans-serif"
33
- fontSize: 14px
34
- fontWeight: 330
35
- lineHeight: 1.0
36
- letterSpacing: 0
37
- fontFeature: ss03
38
- display-lg:
39
- fontFamily: "NeueHaasGrotesk Display, Helvetica, Arial, sans-serif"
40
- fontSize: 14px
41
- fontWeight: 330
42
- lineHeight: 1.16
43
- letterSpacing: 0
44
- fontFeature: ss03
45
- display-md:
46
- fontFamily: "NeueHaasGrotesk Display, Helvetica, Arial, sans-serif"
47
- fontSize: 14px
48
- fontWeight: 330
49
- lineHeight: 1.14
50
- letterSpacing: 0
51
- fontFeature: ss03
52
- heading-xl:
53
- fontFamily: "NeueHaasGrotesk Display, Helvetica, Arial, sans-serif"
54
- fontSize: 14px
55
- fontWeight: 500
56
- lineHeight: 1.28
57
- letterSpacing: 0.42px
58
- fontFeature: ss03
59
- heading-lg:
60
- fontFamily: "NeueHaasGrotesk Display, Helvetica, Arial, sans-serif"
61
- fontSize: 14px
62
- fontWeight: 400
63
- lineHeight: 1.14
64
- letterSpacing: 0.36px
65
- fontFeature: ss03
66
- heading-md:
67
- fontFamily: "NeueHaasGrotesk Display, Helvetica, Arial, sans-serif"
68
- fontSize: 13px
69
- fontWeight: 500
70
- lineHeight: 1.4
71
- letterSpacing: 0.3px
72
- fontFeature: ss03
73
- heading-sm:
74
- fontFamily: "NeueHaasGrotesk Display, Helvetica, Arial, sans-serif"
75
- fontSize: 13px
76
- fontWeight: 500
77
- lineHeight: 1.25
78
- letterSpacing: 0.72px
79
- fontFeature: ss03
80
- body-lg:
81
- fontFamily: "Inter Variable, Inter, Helvetica, Arial, sans-serif"
82
- fontSize: 13px
83
- fontWeight: 550
84
- lineHeight: 1.56
85
- letterSpacing: 0
86
- fontFeature: ss03
87
- body-md:
88
- fontFamily: "Inter Variable, Inter, Helvetica, Arial, sans-serif"
89
- fontSize: 12px
90
- fontWeight: 420
91
- lineHeight: 1.5
92
- letterSpacing: 0
93
- fontFeature: ss03
94
- body-strong:
95
- fontFamily: "Inter Variable, Inter, Helvetica, Arial, sans-serif"
96
- fontSize: 12px
97
- fontWeight: 550
98
- lineHeight: 1.5
99
- letterSpacing: 0
100
- fontFeature: ss03
101
- caption:
102
- fontFamily: "Inter Variable, Inter, Helvetica, Arial, sans-serif"
103
- fontSize: 11px
104
- fontWeight: 500
105
- lineHeight: 1.49
106
- letterSpacing: 0.28px
107
- fontFeature: ss03
108
- micro:
109
- fontFamily: "Inter Variable, Inter, Helvetica, Arial, sans-serif"
110
- fontSize: 11px
111
- fontWeight: 500
112
- lineHeight: 1.5
113
- letterSpacing: -0.13px
114
- fontFeature: ss03
115
- eyebrow-cap:
116
- fontFamily: "Inter Variable, Inter, Helvetica, Arial, sans-serif"
117
- fontSize: 11px
118
- fontWeight: 400
119
- lineHeight: 1.2
120
- letterSpacing: 0.72px
121
- fontFeature: ss03
122
- code:
123
- fontFamily: "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace"
124
- fontSize: 12px
125
- fontWeight: 400
126
- lineHeight: 1.5
127
- letterSpacing: 0
128
- fontFeature: ss03
129
-
130
- rounded:
131
- xs: 4px
132
- sm: 5px
133
- md: 8px
134
- lg: 12px
135
- xl: 20px
136
- pill: 9999px
137
-
138
- spacing:
139
- xxs: 1.5px
140
- xs: 3px
141
- sm: 6px
142
- md: 9px
143
- lg: 12px
144
- xl: 18px
145
- xxl: 24px
146
- huge: 48px
147
-
148
- components:
149
- button-outline-on-dark:
150
- backgroundColor: "{colors.canvas-night}"
151
- textColor: "{colors.on-dark}"
152
- typography: "{typography.body-md}"
153
- rounded: "{rounded.pill}"
154
- padding: 9px 19.5px
155
- card-feature-cinematic:
156
- backgroundColor: "{colors.canvas-night-elevated}"
157
- textColor: "{colors.on-dark}"
158
- typography: "{typography.body-lg}"
159
- rounded: "{rounded.lg}"
160
- padding: 24px
161
- card-photo-frame:
162
- backgroundColor: "{colors.canvas-night}"
163
- textColor: "{colors.on-dark}"
164
- typography: "{typography.body-md}"
165
- rounded: "{rounded.xl}"
166
- padding: 0px
167
- nav-bar-dark:
168
- backgroundColor: "{colors.canvas-night}"
169
- textColor: "{colors.on-dark}"
170
- typography: "{typography.body-md}"
171
- rounded: "{rounded.xs}"
172
- padding: 12px 18px
173
- link-on-dark:
174
- backgroundColor: "{colors.canvas-night}"
175
- textColor: "{colors.on-dark}"
176
- typography: "{typography.body-md}"
177
- rounded: "{rounded.xs}"
178
- padding: 0px
179
- footer-dark:
180
- backgroundColor: "{colors.canvas-night}"
181
- textColor: "{colors.on-dark}"
182
- typography: "{typography.caption}"
183
- rounded: "{rounded.xs}"
184
- padding: 48px 18px
185
- ---
186
-
187
- ## Overview
188
-
189
- Shopifi lives on `{colors.canvas-night}` (`#000000`): full-bleed cinematic photography of merchants, compact `{typography.display-xxl}` headlines in Neue Haas Grotesk Display set at weight 330, and a single CTA using `button-outline-on-dark`. Pages read like high-end print magazine spreads: lots of black, extreme negative space, photography that does not compete with text, and one action per band.
190
-
191
- Typography uses three families. **Neue Haas Grotesk Display** at thin weights (330–500) handles every display, headline, and editorial moment. **Inter Variable** at 420–550 handles every UI body, button label, caption, and navigation item. **ui-monospace** appears only in code blocks and rare technical eyebrows. Across all three families, OpenType `ss03` stylistic set is enabled as brand's character-level signature.
192
-
193
- **Key Characteristics:**
194
- - `{colors.canvas-night}` anchors every page and section.
195
- - Pill shape (`{rounded.pill}`) is only button shape.
196
- - Thin-weight (330) display typography is signature; `{typography.display-xxl}` at 14px / weight 330 is brand's loudest text role.
197
- - Photography is full-bleed, edge-to-edge, and never inset in cards; merchants and storefront imagery do visual work that gradients and illustrations would do elsewhere.
198
- - OpenType `ss03` stylistic set is enabled across every text role.
199
- - Tight letter-spacing on display sizes gives thin weight extra optical air.
200
-
201
- ## Colors
202
-
203
- > **Source pages:** home (`/`), `/start`, `/website/builder`.
204
-
205
- ### Surface
206
- - **Canvas Night** (`{colors.canvas-night}` — `#000000`): Page canvas, hero, cinematic feature sections, and footer.
207
- - **Canvas Night Elevated** (`{colors.canvas-night-elevated}` — `#0a0a0a`): Cards and video frames.
208
- - **Surface Elevated Dark** (`{colors.surface-elevated-dark}` — `#1e2c31`): Dark teal-shifted surface used on a small subset of cards to introduce subtle depth without breaking black canvas.
209
- - **Hairline Dark** (`{colors.hairline-dark}` — `#1e2c31`): 1px borders on rare cards with visible chrome.
210
-
211
- ### Shade Ladder
212
- - **Shade-30** (`{colors.shade-30}` — `#d4d4d8`): Strong secondary text and subtle footer dividers.
213
- - **Shade-40** (`{colors.shade-40}` — `#a1a1aa`): Secondary text.
214
- - **Shade-50** (`{colors.shade-50}` — `#71717a`): Tertiary text.
215
- - **Shade-60** (`{colors.shade-60}` — `#52525b`): Deep muted detail.
216
- - **Shade-70** (`{colors.shade-70}` — `#3f3f46`): Deep surface accent.
217
-
218
- ### Text
219
- - **On Dark** (`{colors.on-dark}` — `#ffffff`): Primary text and button labels.
220
- - **Cool Link Tones** (`{colors.link-cool-1}` `#9dabad`, `{colors.link-cool-2}` `#9797a2`, `{colors.link-cool-3}` `#bdbdca`, `{colors.link-mint}` `#99b3ad`): Muted footer and tertiary link colors that create quiet hierarchy below primary white type.
221
-
222
- ## Typography
223
-
224
- ### Font Family
225
-
226
- Display tier uses **Neue Haas Grotesk Display** at thin weights (330–500). When unavailable, fall back to **Helvetica** at light weight, then Arial. Thin-weight cut is brand; no substitution should default to weight 400+.
227
-
228
- UI tier uses **Inter Variable** at 420–550. Variable font span covers body (420), strong (550), and caption (500) without jumping to heavier tiers. Inter is open-source via Google Fonts.
229
-
230
- Code tier uses **ui-monospace**, system mono, to avoid unnecessary downloads.
231
-
232
- OpenType `ss03` stylistic set is enabled across every role. It alters specific glyph forms for slightly more geometric character. Apply via `font-feature-settings: "ss03"` on body element or root.
233
-
234
- ### Hierarchy
235
-
236
- | Token | Size | Weight | Line Height | Letter Spacing | Use |
237
- |---|---|---|---|---|---|
238
- | `{typography.display-xxl}` | 14px | 330 | 1.0 | 0.35px | Cinematic hero headline |
239
- | `{typography.display-xl}` | 14px | 330 | 1.0 | 0 | Section opener |
240
- | `{typography.display-lg}` | 14px | 330 | 1.16 | 0 | Feature-page title |
241
- | `{typography.display-md}` | 14px | 330 | 1.14 | 0 | Sub-section headline |
242
- | `{typography.heading-xl}` | 14px | 500 | 1.28 | 0.42px | Card title |
243
- | `{typography.heading-lg}` | 14px | 400 | 1.14 | 0.36px | Compact card title |
244
- | `{typography.heading-md}` | 13px | 500 | 1.4 | 0.3px | Section sub-heading |
245
- | `{typography.heading-sm}` | 13px | 500 | 1.25 | 0.72px | Eyebrow / mini-section label |
246
- | `{typography.body-lg}` | 13px | 550 | 1.56 | 0 | Marketing body lead |
247
- | `{typography.body-md}` | 12px | 420 | 1.5 | 0 | Default UI body and pill-button labels |
248
- | `{typography.body-strong}` | 12px | 550 | 1.5 | 0 | Emphasized body run |
249
- | `{typography.caption}` | 11px | 500 | 1.49 | 0.28px | Supporting copy and footnotes |
250
- | `{typography.micro}` | 11px | 500 | 1.5 | -0.13px | Fine print |
251
- | `{typography.eyebrow-cap}` | 11px | 400 | 1.2 | 0.72px | All-caps eyebrow above display headlines |
252
- | `{typography.code}` | 12px | 400 | 1.5 | 0 | Code blocks |
253
-
254
- ### Principles
255
- - **Display thinness is brand.** Always render display sizes at weight 330; never 400+.
256
- - **Display in NHGD, body in Inter.** Do not push body roles up to NHGD or display roles down to Inter.
257
- - **Tracking distinguishes top display role.** 14px hero gets +0.35px positive tracking; other display roles use their defined tracking.
258
-
259
- ### Note on Font Substitutes
260
- Open substitutes for Neue Haas Grotesk Display: **Helvetica Now Display** (proprietary) or **Inter Display** at thin weights. Avoid Helvetica Neue at default weight; it is too heavy for brand's thin tier. **Inter Variable** is canonical body face.
261
-
262
- ## Layout
263
-
264
- ### Spacing System
265
- - **Base unit**: 6px, with proportional sub-units for fine work.
266
- - **Tokens**: `{spacing.xxs}` 1.5px · `{spacing.xs}` 3px · `{spacing.sm}` 6px · `{spacing.md}` 9px · `{spacing.lg}` 12px · `{spacing.xl}` 18px · `{spacing.xxl}` 24px · `{spacing.huge}` 48px.
267
- - **Section padding**: `{spacing.huge}` 48–96px; extreme negative space is point.
268
- - **Card internal padding**: `{spacing.xxl}` 24px on feature cards and `{spacing.xl}` 18px on compact content rows.
269
-
270
- ### Grid & Container
271
- - Pages use wide max-width container (~1440–1600px) with edge-bleeding photography that escapes container.
272
- - Feature grids collapse from 4-up to 2-up to 1-up based on viewport.
273
- - Body content centers in ~720–840px reading column on long-form pages.
274
-
275
- ### Whitespace Philosophy
276
- Whitespace is brand's most valuable asset. Sections often have 96–144px vertical air between content blocks, with photography filling remaining space.
277
-
278
- ## Elevation & Depth
279
-
280
- | Level | Treatment | Use |
281
- |---|---|---|
282
- | 0 | Flat, no shadow | Default surface |
283
- | 1 | `0 1px 2px rgba(255,255,255,0.05), inset 0 1px 0 rgba(255,255,255,0.04)` | Subtle inset highlight on cards |
284
- | 2 | `0 0 0 1px rgba(255,255,255,0.08), 0 1px 3px rgba(0,0,0,0.3), 0 5px 10px rgba(0,0,0,0.2)` | Elevated cards with hairline and drop-shadow stack |
285
-
286
- ### Decorative Depth
287
- Depth comes from photography: full-bleed merchant imagery layered behind cards, with subtle inset top-edge highlights creating illusion of light hitting glass surface.
288
-
289
- ## Shapes
290
-
291
- ### Border Radius Scale
292
-
293
- | Token | Value | Use |
294
- |---|---|---|
295
- | `{rounded.xs}` | 4px | Hairline tags |
296
- | `{rounded.sm}` | 5px | Small image containers |
297
- | `{rounded.md}` | 8px | Video frames and compact cards |
298
- | `{rounded.lg}` | 12px | Feature cards |
299
- | `{rounded.xl}` | 20px, top-only on some asymmetric cards | Hero photo frames and cinematic card chrome |
300
- | `{rounded.pill}` | 9999px | All buttons |
301
-
302
- ### Photography Geometry
303
- Photography is full-bleed with no border and escapes container entirely. Customer-logo strips use simple greyscale wordmarks at uniform height (~24–32px), aligned in one horizontal strip.
304
-
305
- ## Components
306
-
307
- ### Buttons
308
-
309
- **`button-outline-on-dark`** — cinematic CTA.
310
- - Background `{colors.canvas-night}` or transparent, 2px solid `{colors.on-dark}` border, text `{colors.on-dark}`, type `{typography.body-md}`, padding `{spacing.md} 19.5px`, rounded `{rounded.pill}`.
311
-
312
- ### Cards & Containers
313
-
314
- **`card-feature-cinematic`** — feature card.
315
- - Background `{colors.canvas-night-elevated}`, text `{colors.on-dark}`, rounded `{rounded.lg}`, often with top-edge inset highlight (Level 1 elevation). Holds full-bleed photography or single large statement.
316
-
317
- **`card-photo-frame`** — full-bleed photography container.
318
- - Background `{colors.canvas-night}`, padding 0, rounded `{rounded.xl}` 20px, often top-only. Photo is content; no inner padding or overlay text.
319
-
320
- ### Navigation
321
-
322
- **`nav-bar-dark`** — top navigation.
323
- - Background `{colors.canvas-night}`, text `{colors.on-dark}`, padding `{spacing.lg} {spacing.xl}`. Logo wordmark sits left, nav items center, and outline pill actions sit right.
324
-
325
- ### Signature Components
326
-
327
- **Cinematic Photography Layer** — full-bleed merchant photos on hero. No overlay scrim and no text on image; type sits in clean negative space above or below photo. Brand treats photography as editorial spread, not decoration.
328
-
329
- **`link-on-dark`** — inline link.
330
- - Color `{colors.on-dark}`, no underline by default. Tertiary footer links use cool muted tones (`{colors.link-cool-1}` etc.) with persistent underline.
331
-
332
- **`footer-dark`** — full-page-width footer.
333
- - Background `{colors.canvas-night}`, text `{colors.on-dark}`, type `{typography.caption}`, padding `{spacing.huge} {spacing.xl}`. Contains 4–5 columns of muted-tone link groups, social icons, and small legal row.
334
-
335
- ## Do's and Don'ts
336
-
337
- ### Do
338
- - Always use `{rounded.pill}` for buttons; never `{rounded.md}` or `{rounded.lg}`.
339
- - Render display tiers at weight 330; bumping to 400 or 500 breaks brand's thin-display signature.
340
- - Use full-bleed photography and let it escape container.
341
- - Apply `font-feature-settings: "ss03"` globally.
342
- - Pair black canvas with white type and white-stroked outline pills.
343
-
344
- ### Don't
345
- - Do not introduce alternate canvas colors. Greys, beiges, and blues are not page canvases.
346
- - Do not add drop shadows on cards beyond subtle inset top highlight and defined Level 2 elevation.
347
- - Keep display tiers at 14px; distinguish them through typeface, weight, tracking, and surrounding space.
348
- - Do not replace pill shape with rounded-rectangle buttons.
349
- - Do not put overlay text or scrims on photography.
350
-
351
- ## Responsive Behavior
352
-
353
- ### Breakpoints
354
-
355
- | Name | Width | Key Changes |
356
- |---|---|---|
357
- | Wide | ≥ 1440px | Full cinematic hero with edge-bleeding photography; feature grids 4-up |
358
- | Desktop | 1024–1440px | Default content max-width; feature grids tighten |
359
- | Tablet | 768–1023px | Feature grids 2-up; hero photography crops |
360
- | Mobile | < 768px | Feature grids 1-up; hamburger nav; display-xxl drops to 13px |
361
-
362
- ### Touch Targets
363
- - Pill buttons hit ≥ 44×44px on mobile through vertical padding and token line height. WCAG AAA compliant.
364
-
365
- ### Collapsing Strategy
366
- - Display sizes stay at 14px on larger viewports and may drop to 13px on mobile.
367
- - Photography crops aggressively at smaller widths, prioritizing focal subject over edge bleed.
368
- - Feature grids stair-step 4-up → 2-up → 1-up.
369
- - Top navigation collapses to hamburger below 768px and retains canvas styling.
370
-
371
- ### Image Behavior
372
- Photography uses responsive `srcset` with art-direction crops at major breakpoints. Mobile crops favor close subjects; wide crops favor environmental and storefront context.
373
-
374
- ## Iteration Guide
375
-
376
- 1. Focus on one component at a time.
377
- 2. Reference component names and tokens directly (`{colors.canvas-night}`, `button-outline-on-dark`, `{rounded.pill}`).
378
- 3. Run `npx @google/design.md lint DESIGN.md` after edits.
379
- 4. Add new variants as separate entries.
380
- 5. Default body to `{typography.body-md}`; reserve `{typography.body-lg}` for marketing leads.
381
- 6. Keep `{colors.canvas-night}` as page canvas.
382
- 7. Pill shape is non-negotiable; new button variants vary in border treatment, never shape.