DesignMD Maker
← Home Report · Code analysis
会
Design System

会出现在所有访问 /agents/* 路径的浏览器 Tab 上(React app 启动前的几百毫秒), 若改成邀请语义会让普通浏览场景(首页/项目/待办)的 Tab 短暂出现邀请文案,语义错配。 og:title 仅外部抓取器读取(企微/微信/Slack 等 IM 卡片),改成邀请文案才是 #49388 的目标。 --> 来自 WorkBuddy 项目的分享

Design system extracted from https://www.workbuddy.cn/app on 2026-11-01 (code-based analysis).

Source · https://www.workbuddy.cn/app Engine · Code analysis Created · Nov 1, 2026 08:22 Cost · $0.0000
Detected Language

Design Style

soft-ui / layered elevation
4 large soft low-opacity shadows
gradient-rich / aurora
many gradient definitions
technical / mono accents
monospace font in use
Palette

Colors

primary
#005FB8
6.31 on white · 3.33 on black · 209° 100% 36%
secondary
#000000
21 on white · 1 on black · 0° 0% 0%
accent
#00C29A
2.29 on white · 9.18 on black · 168° 100% 38%
Token Roles 13 tokens
background
#FFFFFF · 21:1 vs black
surface
#F8F8F8 · 19.77:1 vs black
text-primary
#000000 · 21:1 vs white
text-secondary
#E4E4E4 · 16.52:1 vs black
border
#3B3B3B · 11.2:1 vs white
on-primary
#FFFFFF · 21:1 vs black
on-secondary
#FFFFFF · 21:1 vs black
on-accent
#FFFFFF · 21:1 vs black
surface-container-lowest
#FFFFFF · 21:1 vs black
surface-container-low
#F8F8F8 · 19.77:1 vs black
surface-container
#F7F7F7 · 19.6:1 vs black
surface-container-high
#F5F5F5 · 19.26:1 vs black
surface-container-highest
#F2F2F2 · 18.76:1 vs black
Detected Palette 24 colors by frequency in source CSS
#FFFFFF
used 475× · 0° 0% 100%
#000000
used 439× · 0° 0% 0%
#E4E4E4
used 269× · 0° 0% 89%
#3B3B3B
used 96× · 0° 0% 23%
#141414
used 60× · 0° 0% 8%
#CCCCCC
used 44× · 0° 0% 80%
#E5E5E5
used 44× · 0° 0% 90%
#005FB8
used 41× · 209° 100% 36%
#F8F8F8
used 36× · 0° 0% 97%
#88C0D0
used 35× · 193° 43% 67%
#333333
used 33× · 0° 0% 20%
#808080
used 28× · 0° 0% 50%
#00C29A
used 27× · 168° 100% 38%
#007ACC
used 26× · 204° 100% 40%
#181818
used 25× · 0° 0% 9%
#3C3C3C
used 23× · 0° 0% 24%
#EBEBEB
used 22× · 0° 0% 92%
#1A1A1A
used 22× · 0° 0% 10%
#F2F2F2
used 22× · 0° 0% 95%
#3FA266
used 22× · 144° 44% 44%
#F14C4C
used 21× · 0° 85% 62%
#10B981
used 20× · 160° 84% 39%
#FF0000
used 19× · 0° 100% 50%
#666666
used 17× · 0° 0% 40%
Surface Treatments

Gradients

linear-gradient(rgb(240, 253, 244) 0%, rgb(255, 255, 255) 100%)
linear-gradient(315deg, #3870CD -15.38%, #A57AF9 109.96%)
linear-gradient(315deg, #60a5fa -15.38%, #c084fc 109.96%)
linear-gradient(180deg, #f0f0f0 0%, #f5f5f5 100%)
linear-gradient(180deg, rgba(0, 194, 154, 0) 0%, rgba(0, 194, 154, 1) 50%, rgba(0, 194, 154, 0) 100%)
linear-gradient(90deg, rgba(0, 194, 154, 0) 0%, rgba(0, 194, 154, 1) 50%, rgba(0, 194, 154, 0) 100%)
Type System

Typography

body-lg
inherit
18px · 400 · LH 1.5
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-md
inherit
14px · 400 · LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
label-sm
inherit
12px · 400 · LH 1.4
Typography is the discipline of rendering language visible. Spacing, weight, and rhythm carry meaning long before words are read.
Detected Font Stacks
Source Code ProKaTeX_MainKaTeX_SansSerifKaTeX_CaligraphicKaTeX_FrakturKaTeX_MathKaTeX_ScriptKaTeX_Size1
Structure

Layout

Container
Section padding: — · card padding: —
Grid
12-column reference grid · gap —
Spacing Scale
unit
4px
xs
2px
sm
8px
md
16px
lg
32px
detected
2px
detected
.125em
detected
4px
detected
6px
detected
8px
detected
10px
detected
12px
detected
16px
detected
24px
detected
32px
Breakpoints
768px
Depth

Elevation & Depth

level 1
0px 16px 32px -8px rgba(0, 0, 0, .03), 0px 2px 4px -4px rgba(0, 0, 0, .06)
level 2
0 6px 12px -8px rgba(0, 0, 0, .02), 0 2px 4px -4px rgba(0, 0, 0, .03)
level 3
0px 16px 32px rgba(0, 0, 0, .04)
level 4
0px 16px 32px rgba(0, 0, 0, .4)
level 5
inset 0 0 0 100vmax transparent
Geometry

Shapes

sm
2px
md
9px
lg
18px
r4
6px
r5
4px
r6
16px
Tokens in Context

Components

card
background{colors.surface}
border1px solid {colors.border}
radius18px
boxShadow{elevation.md}
button-primary
background{colors.primary}
radius9px
Animation

Motion

Keyframes 18 found
@keyframes skeleton-shimmer
0% { background-position: -200% 0; } 100%{ background-position: 200% 0; }
@keyframes skeleton-fade-out
0% { opacity: 1; } 100%{ opacity: 0; }
@keyframes cr-sub-menu-pop-in
0%{opacity:0}to{opacity:1}
@keyframes wb-button-spin
0%{transform:rotate(0)}to{transform:rotate(360deg)}
@keyframes wb-icon-spin
0%{transform:rotate(0)}to{transform:rotate(360deg)}
@keyframes wb-card-skeleton-shimmer
0%{background-position:200% 0}to{background-position:-200% 0}
@keyframes wb-loading-rotate
0%{transform:rotate(0)}to{transform:rotate(360deg)}
@keyframes wb-popover-fade-in
0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}
@keyframes wb-message-enter
0%{opacity:0;transform:translateY(var(--wb-message-translate))}to{opacity:1;transform:translateY(0)}
Applied Animations
skeleton-fade-out 0.25s ease-out forwardsskeleton-shimmer 1.5s infinitewb-settings-locate-row-breath 1.4s ease-in-out 3none
Easing Curves
cubic-bezier(0, 0, .2, 1)cubic-bezier(.4, 0, 1, 1)cubic-bezier(.4, 0, .2, 1)cubic-bezier(.2, 0, 0, 1)
Transitions
opacity .16s ease
Proof

Live Preview

Complete Reference

Full design.md Specification

Design Specification — 会出现在所有访问 /agents/* 路径的浏览器 Tab 上(React app 启动前的几百毫秒),

若改成邀请语义会让普通浏览场景(首页/项目/待办)的 Tab 短暂出现邀请文案,语义错配。

og:title 仅外部抓取器读取(企微/微信/Slack 等 IM 卡片),改成邀请文案才是 #49388 的目标。

-->

来自 WorkBuddy 项目的分享

FieldValue
Site / Projecthttps://www.workbuddy.cn/app
Analyzed on2026-11-01
Analysis modeAutomated code extraction (no AI)

Overview

This design system was extracted programmatically from the source page. It is built on a light canvas (#FFFFFF), ink text (#000000), a vivid accent (#00C29A). All type is set in Source Code Pro. Detected font weights: 400, 500, 600, 700. Detected style signatures: soft-ui / layered elevation; gradient-rich / aurora; technical / mono accents.

Logo asset(s): https://static.workbuddy.cn/web/agents/38e1cc7eb1640468090a4241355ae65ae569da48/assets/logo.svg

Color System

Detected palette (by frequency)

HexRGBHSLCount
#FFFFFF255, 255, 2550° 0% 100%475
#0000000, 0, 00° 0% 0%439
#E4E4E4228, 228, 2280° 0% 89%269
#3B3B3B59, 59, 590° 0% 23%96
#14141420, 20, 200° 0% 8%60
#CCCCCC204, 204, 2040° 0% 80%44
#E5E5E5229, 229, 2290° 0% 90%44
#005FB80, 95, 184209° 100% 36%41
#F8F8F8248, 248, 2480° 0% 97%36
#88C0D0136, 192, 208193° 43% 67%35
#33333351, 51, 510° 0% 20%33
#808080128, 128, 1280° 0% 50%28
#00C29A0, 194, 154168° 100% 38%27
#007ACC0, 122, 204204° 100% 40%26
#18181824, 24, 240° 0% 9%25
#3C3C3C60, 60, 600° 0% 24%23
#EBEBEB235, 235, 2350° 0% 92%22
#1A1A1A26, 26, 260° 0% 10%22
#F2F2F2242, 242, 2420° 0% 95%22
#3FA26663, 162, 102144° 44% 44%22

Assigned roles

Roles are taken from the page's own semantic CSS custom properties when present, otherwise inferred from usage frequency + luminance/saturation.

TokenHexRGBHSL
--color-primary#005FB80, 95, 184209° 100% 36%
--color-accent#00C29A0, 194, 154168° 100% 38%
--color-background#FFFFFF255, 255, 2550° 0% 100%
--color-surface#F8F8F8248, 248, 2480° 0% 97%
--color-text-primary#0000000, 0, 00° 0% 0%
--color-secondary#0000000, 0, 00° 0% 0%
--color-text-secondary#E4E4E4228, 228, 2280° 0% 89%
--color-border#3B3B3B59, 59, 590° 0% 23%
--color-on-primary#FFFFFF255, 255, 2550° 0% 100%
--color-on-secondary#FFFFFF255, 255, 2550° 0% 100%
--color-on-accent#FFFFFF255, 255, 2550° 0% 100%

Surface ramp (derived from detected light neutrals)

TokenHex
--color-surface-container-lowest#FFFFFF
--color-surface-container-low#F8F8F8
--color-surface-container#F7F7F7
--color-surface-container-high#F5F5F5
--color-surface-container-highest#F2F2F2

Gradients

  • linear-gradient(90deg, rgba(255, 255, 255, 0.04) 25%, rgba(255, 255, 255, 0.08) 50%, rgba(255, 255, 255, 0.04) 75%)
  • linear-gradient(rgb(240, 253, 244) 0%, rgb(255, 255, 255) 100%)
  • linear-gradient(315deg, #3870CD -15.38%, #A57AF9 109.96%)
  • linear-gradient(315deg, #60a5fa -15.38%, #c084fc 109.96%)
  • linear-gradient(180deg, #f0f0f0 0%, #f5f5f5 100%)
  • linear-gradient(180deg, rgba(0, 194, 154, 0) 0%, rgba(0, 194, 154, 1) 50%, rgba(0, 194, 154, 0) 100%)
  • linear-gradient(90deg, rgba(0, 194, 154, 0) 0%, rgba(0, 194, 154, 1) 50%, rgba(0, 194, 154, 0) 100%)
  • linear-gradient(180deg, #ebebeb 0%, #f5f5f5 100%)
  • linear-gradient(180deg, 0%, 100%)
  • linear-gradient(to right, 50%, transparent 100%)

> 6 additional gradient definitions were framework utility templates (unresolvable var(--tw-gradient-stops)) and were omitted.

Typography

Primary typeface: Source Code Pro — stack: Source Code Pro

Font stacks (most used first)

  • Source Code Pro
  • KaTeX_Main
  • KaTeX_SansSerif
  • KaTeX_Caligraphic
  • KaTeX_Fraktur
  • KaTeX_Math
  • KaTeX_Script
  • KaTeX_Size1
  • KaTeX_Size2
  • KaTeX_Size3

Derived type scale

TokenSize
body-lg18px
label-md14px
label-sm12px

Font sizes (by frequency)

SizeCount
14px2
18px1
11px1
13px1
12px1

Weights in use: 400, 500, 600, 700

Line heights (by frequency)

ValueCount
1.516
1.413
1.77
23px2
37px1
33px1
30px1
19px1
1.81
1.61

Spacing

Derived spacing scale

TokenValue
unit4px
xs2px
sm8px
md16px
lg32px

Raw values (by frequency)

ValueCount
8px7
4px4
6px3
10px1
12px1
32px1
16px1
24px1
2px1
.125em1

Borders & Radius

Derived radius tokens

TokenValue
sm2px
md9px
lg18px

Raw values (resolved, by frequency)

RadiusCount
6px5
4px5
16px3
18px3
2px2
9px 9px 0 02

Shadows

Derived elevation

TokenValue
sm0 6px 12px -8px rgba(0, 0, 0, .02), 0 2px 4px -4px rgba(0, 0, 0, .03)
md0px 16px 32px rgba(0, 0, 0, .04)
lg0px 16px 32px rgba(0, 0, 0, .4)

All detected shadows

  • 0px 16px 32px -8px rgba(0, 0, 0, .03), 0px 2px 4px -4px rgba(0, 0, 0, .06)
  • inset 0 0 0 100vmax color-mix(in srgb, 12%,transparent)
  • 0 6px 12px -8px rgba(0, 0, 0, .02), 0 2px 4px -4px rgba(0, 0, 0, .03)
  • 0px 16px 32px rgba(0, 0, 0, .04)
  • 0px 16px 32px rgba(0, 0, 0, .4)
  • inset 0 0 0 100vmax transparent

Layout

Container max-width: 832px

Breakpoints

  • 768px

Animation & Motion

Transitions

  • opacity .16s ease

Easing curves

  • cubic-bezier(0, 0, .2, 1)
  • cubic-bezier(.4, 0, 1, 1)
  • cubic-bezier(.4, 0, .2, 1)
  • cubic-bezier(.2, 0, 0, 1)

Keyframes

@keyframes skeleton-shimmer { 0% { background-position: -200% 0; } 100%{ background-position: 200% 0; } }
@keyframes skeleton-fade-out { 0% { opacity: 1; } 100%{ opacity: 0; } }
@keyframes cr-sub-menu-pop-in { 0%{opacity:0}to{opacity:1} }
@keyframes wb-button-spin { 0%{transform:rotate(0)}to{transform:rotate(360deg)} }
@keyframes wb-icon-spin { 0%{transform:rotate(0)}to{transform:rotate(360deg)} }
@keyframes wb-card-skeleton-shimmer { 0%{background-position:200% 0}to{background-position:-200% 0} }
@keyframes wb-loading-rotate { 0%{transform:rotate(0)}to{transform:rotate(360deg)} }
@keyframes wb-popover-fade-in { 0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)} }
@keyframes wb-message-enter { 0%{opacity:0;transform:translateY(var(--wb-message-translate))}to{opacity:1;transform:translateY(0)} }
@keyframes wb-message-spin { 0%{transform:rotate(0)}to{transform:rotate(360deg)} }
@keyframes wb-switch-spin { to{transform:rotate(360deg)} }
@keyframes wb-tabs-enter-forward { 0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1} }
@keyframes wb-tabs-exit-forward { 0%{transform:translate(0);opacity:1}to{transform:translate(-100%);opacity:0} }
@keyframes wb-tabs-enter-backward { 0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1} }
@keyframes wb-tabs-exit-backward { 0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0} }
@keyframes wb-table-tbody-enter { 0%{opacity:0}to{opacity:1} }
@keyframes wb-table-spin { to{transform:rotate(360deg)} }
@keyframes wb-progress-indeterminate { 0%{transform:translate(-100%)}to{transform:translate(400%)} }

Animations

  • skeleton-fade-out 0.25s ease-out forwards
  • skeleton-shimmer 1.5s infinite
  • wb-settings-locate-row-breath 1.4s ease-in-out 3
  • none

Source Design Tokens (CSS custom properties)

:root {
  --skeleton-bg: #181818;
  --skeleton-sidebar-bg: #141414;
  --skeleton-border: rgba(255, 255, 255, 0.07);
  --skeleton-shimmer-from: rgba(255, 255, 255, 0.04);
  --skeleton-shimmer-to: rgba(255, 255, 255, 0.08);
  --skeleton-card-bg: rgba(255, 255, 255, 0.04);
  --skeleton-card-border: rgba(255, 255, 255, 0.06);
  --skeleton-input-bg: rgba(255, 255, 255, 0.03);
  --skeleton-input-border: rgba(255, 255, 255, 0.1);
  --skeleton-btn-bg: rgba(255, 255, 255, 0.08);
  --skeleton-search-bg: rgba(255, 255, 255, 0.05);
  --skeleton-text-color: rgba(255, 255, 255, 0.6);
  --cb-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;
  --cb-font-family-mono: "Menlo", "Monaco", "Courier New", monospace;
  --cb-spacing-xs: 4px;
  --cb-spacing-sm: 8px;
  --cb-spacing-md: 12px;
  --cb-spacing-lg: 16px;
  --cb-spacing-xl: 20px;
  --cb-spacing-xxl: 24px;
  --cb-border-radius-sm: 4px;
  --cb-border-radius-md: 6px;
  --cb-border-radius-lg: 8px;
  --cb-border-radius-xl: 16px;
  --cb-border-radius-2xl: 24px;
  --cb-transition-fast: .15s ease;
  --cb-transition-base: .2s ease;
  --cb-transition-slow: .3s ease;
  --cb-z-index-dropdown: 100;
  --cb-z-index-modal: 1000;
  --cb-z-index-modal-confirm: 100001;
  --cb-z-index-tooltip: 1100;
  --cb-vscode-editor-background: var(--vscode-editor-background, #ffffff);
  --cb-vscode-sideBar-background: var(--vscode-sideBar-background, #f3f3f3);
  --cb-vscode-input-background: var(--vscode-input-background, #ffffff);
  --cb-vscode-dropdown-background: var(--vscode-dropdown-background, #ffffff);
  --cb-vscode-foreground: var(--vscode-foreground, #333333);
  --cb-vscode-editor-foreground: var(--vscode-editor-foreground, #4c4f69);
  --cb-vscode-titleBar-activeBackground: var(--vscode-titleBar-activeBackground, #dddddd);
  --cb-vscode-titleBar-activeForeground: var(--vscode-titleBar-activeForeground, #333333);
  --cb-vscode-titleBar-inactiveBackground: var(--vscode-titleBar-inactiveBackground, #dddddd);
  --cb-vscode-titleBar-inactiveForeground: var(--vscode-titleBar-inactiveForeground, #666666);
  --cb-titlebar-control-hover-background: rgba(0, 0, 0, .06);
  --cb-vscode-descriptionForeground: var(--vscode-descriptionForeground, #717171);
  --cb-vscode-widget-border: var(--vscode-widget-border, #e1e1e1);
  --cb-vscode-panel-border: var(--vscode-panel-border, #e1e1e1);
  --cb-vscode-list-hoverBackground: var(--vscode-list-hoverBackground, #f0f0f0);
  --cb-vscode-toolbar-hoverBackground: var(--vscode-toolbar-hoverBackground, #f0f0f0);
  --cb-vscode-button-background: var(--vscode-button-background, #007acc);
  --cb-vscode-button-foreground: var(--vscode-button-foreground, #ffffff);
  --cb-vscode-button-hoverBackground: var(--vscode-button-hoverBackground, #0062a3);
  --cb-vscode-scrollbarSlider-background: var(--vscode-scrollbarSlider-background, #c1c1c1);
  --cb-vscode-scrollbarSlider-hoverBackground: var(--vscode-scrollbarSlider-hoverBackground, #a8a8a8);
  --cb-vscode-textLink-foreground: var(--vscode-textLink-foreground, #006ab1);
  --cb-panel-bg-primary: var(--vscode-editor-background, #ffffff);
  --cb-text-primary: #333333;
  --cb-text-secondary: #666666;
  --cb-text-disabled: rgba(0, 0, 0, .3);
  --cb-text-link: #006ab1;
  --cb-stroke-secondary: #d8dee4;
}

Do's and Don'ts

Do

  • Do reserve the accent #00C29A for interactive highlights and key moments — it is used sparingly on the source page.
  • Do keep the canvas at #FFFFFF; surfaces should stay within the detected neutral ramp.
  • Do stick to the detected font weight(s): 400, 500, 600, 700.
  • Do align spacing to the 4px base unit derived from the page.

Don't

  • Don't introduce colors outside the detected palette — every hue above was found in the source.

Design Tokens (copy-paste)

:root {
  --color-primary: #005FB8;
  --color-accent: #00C29A;
  --color-background: #FFFFFF;
  --color-surface: #F8F8F8;
  --color-text-primary: #000000;
  --color-secondary: #000000;
  --color-text-secondary: #E4E4E4;
  --color-border: #3B3B3B;
  --color-on-primary: #FFFFFF;
  --color-on-secondary: #FFFFFF;
  --color-on-accent: #FFFFFF;
  --color-surface-container-lowest: #FFFFFF;
  --color-surface-container-low: #F8F8F8;
  --color-surface-container: #F7F7F7;
  --color-surface-container-high: #F5F5F5;
  --color-surface-container-highest: #F2F2F2;
  --font-sans: Source Code Pro;
  --font-size-body-lg: 18px;
  --font-size-label-md: 14px;
  --font-size-label-sm: 12px;
  --radius-sm: 2px;
  --radius-md: 9px;
  --radius-lg: 18px;
  --shadow-sm: 0 6px 12px -8px rgba(0, 0, 0, .02), 0 2px 4px -4px rgba(0, 0, 0, .03);
  --shadow-md: 0px 16px 32px rgba(0, 0, 0, .04);
  --shadow-lg: 0px 16px 32px rgba(0, 0, 0, .4);
  --space-xs: 2px;
  --space-sm: 8px;
  --space-md: 16px;
  --space-lg: 32px;
  --container-max: 832px;
}

Generated by DesignMD Maker · analyze responsibly — only scan pages you're permitted to study.