oxycode-skills 1.0.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/LICENSE +21 -0
- package/README.md +143 -0
- package/index.js +17 -0
- package/package.json +49 -0
- package/skills/anti-slop/README.md +106 -0
- package/skills/anti-slop/SKILL.md +311 -0
- package/skills/anti-slop/examples/before-after.md +380 -0
- package/skills/anti-slop/references/quality-rubric.md +313 -0
- package/skills/anti-slop/references/slop-patterns.md +433 -0
- package/skills/component-architect/README.md +186 -0
- package/skills/component-architect/SKILL.md +644 -0
- package/skills/component-architect/examples/component-patterns.md +569 -0
- package/skills/component-architect/references/atomic-design.md +516 -0
- package/skills/design-audit/README.md +114 -0
- package/skills/design-audit/SKILL.md +305 -0
- package/skills/design-audit/examples/audit-report.md +424 -0
- package/skills/design-audit/references/scoring-rubric.md +498 -0
- package/skills/design-md/README.md +106 -0
- package/skills/design-md/SKILL.md +262 -0
- package/skills/design-md/examples/bad-design.md +195 -0
- package/skills/design-md/examples/good-design.md +250 -0
- package/skills/design-md/references/design-md-spec.md +267 -0
- package/skills/design-md/scripts/validate.sh +134 -0
- package/skills/ui-builder/README.md +169 -0
- package/skills/ui-builder/SKILL.md +357 -0
- package/skills/ui-builder/examples/dashboard.md +323 -0
- package/skills/ui-builder/examples/landing-page.md +396 -0
- package/skills/ui-builder/references/component-patterns.md +396 -0
- package/skills/ui-builder/references/layout-system.md +423 -0
- package/skills/ui-builder/references/polish-checklist.md +221 -0
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
# design-md
|
|
2
|
+
|
|
3
|
+
## Description
|
|
4
|
+
|
|
5
|
+
Generate and validate DESIGN.md files following Google's open-source design system standard. DESIGN.md defines design tokens (colors, typography, spacing, shadows) that ensure consistent UI across projects.
|
|
6
|
+
|
|
7
|
+
## Trigger
|
|
8
|
+
|
|
9
|
+
Use this skill when:
|
|
10
|
+
- User asks to create a design system
|
|
11
|
+
- User wants to generate DESIGN.md
|
|
12
|
+
- User needs to validate an existing DESIGN.md
|
|
13
|
+
- User says "create design tokens" or "set up design system"
|
|
14
|
+
|
|
15
|
+
## Instructions
|
|
16
|
+
|
|
17
|
+
### Step 1: Understand the Project
|
|
18
|
+
|
|
19
|
+
Before generating DESIGN.md, understand:
|
|
20
|
+
- Project type (dashboard, landing page, ecommerce, etc.)
|
|
21
|
+
- Brand colors (if provided)
|
|
22
|
+
- Target audience
|
|
23
|
+
- Platform (web, mobile, both)
|
|
24
|
+
|
|
25
|
+
### Step 2: Generate DESIGN.md
|
|
26
|
+
|
|
27
|
+
Create a DESIGN.md file with these sections:
|
|
28
|
+
|
|
29
|
+
```markdown
|
|
30
|
+
# [Project Name] Design System
|
|
31
|
+
|
|
32
|
+
## Overview
|
|
33
|
+
Brief description of the design system.
|
|
34
|
+
|
|
35
|
+
## Colors
|
|
36
|
+
|
|
37
|
+
### Primary Palette
|
|
38
|
+
- primary-50: #eff6ff
|
|
39
|
+
- primary-100: #dbeafe
|
|
40
|
+
- primary-200: #bfdbfe
|
|
41
|
+
- primary-300: #93c5fd
|
|
42
|
+
- primary-400: #60a5fa
|
|
43
|
+
- primary-500: #3b82f6
|
|
44
|
+
- primary-600: #2563eb
|
|
45
|
+
- primary-700: #1d4ed8
|
|
46
|
+
- primary-800: #1e40af
|
|
47
|
+
- primary-900: #1e3a8a
|
|
48
|
+
|
|
49
|
+
### Neutral Palette
|
|
50
|
+
- neutral-50: #fafafa
|
|
51
|
+
- neutral-100: #f4f4f5
|
|
52
|
+
- neutral-200: #e4e4e7
|
|
53
|
+
- neutral-300: #d4d4d8
|
|
54
|
+
- neutral-400: #a1a1aa
|
|
55
|
+
- neutral-500: #71717a
|
|
56
|
+
- neutral-600: #52525b
|
|
57
|
+
- neutral-700: #3f3f46
|
|
58
|
+
- neutral-800: #27272a
|
|
59
|
+
- neutral-900: #18181b
|
|
60
|
+
|
|
61
|
+
### Semantic Colors
|
|
62
|
+
- success: #22c55e
|
|
63
|
+
- warning: #f59e0b
|
|
64
|
+
- error: #ef4444
|
|
65
|
+
- info: #3b82f6
|
|
66
|
+
|
|
67
|
+
## Typography
|
|
68
|
+
|
|
69
|
+
### Font Family
|
|
70
|
+
- Headings: Inter, system-ui, sans-serif
|
|
71
|
+
- Body: Inter, system-ui, sans-serif
|
|
72
|
+
- Mono: JetBrains Mono, monospace
|
|
73
|
+
|
|
74
|
+
### Type Scale
|
|
75
|
+
- display-lg: 36px / 40px / 700 weight
|
|
76
|
+
- display-md: 30px / 36px / 700 weight
|
|
77
|
+
- display-sm: 24px / 32px / 600 weight
|
|
78
|
+
- heading-lg: 20px / 28px / 600 weight
|
|
79
|
+
- heading-md: 16px / 24px / 600 weight
|
|
80
|
+
- heading-sm: 14px / 20px / 600 weight
|
|
81
|
+
- body-lg: 16px / 24px / 400 weight
|
|
82
|
+
- body-md: 14px / 20px / 400 weight
|
|
83
|
+
- body-sm: 12px / 16px / 400 weight
|
|
84
|
+
- code: 14px / 20px / 400 weight
|
|
85
|
+
|
|
86
|
+
## Spacing
|
|
87
|
+
|
|
88
|
+
- xs: 4px
|
|
89
|
+
- sm: 8px
|
|
90
|
+
- md: 16px
|
|
91
|
+
- lg: 24px
|
|
92
|
+
- xl: 32px
|
|
93
|
+
- 2xl: 48px
|
|
94
|
+
- 3xl: 64px
|
|
95
|
+
|
|
96
|
+
## Borders
|
|
97
|
+
|
|
98
|
+
- radius-sm: 4px
|
|
99
|
+
- radius-md: 8px
|
|
100
|
+
- radius-lg: 12px
|
|
101
|
+
- radius-xl: 16px
|
|
102
|
+
- radius-full: 9999px
|
|
103
|
+
|
|
104
|
+
## Shadows
|
|
105
|
+
|
|
106
|
+
- shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05)
|
|
107
|
+
- shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)
|
|
108
|
+
- shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)
|
|
109
|
+
- shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)
|
|
110
|
+
|
|
111
|
+
## Breakpoints
|
|
112
|
+
|
|
113
|
+
- sm: 640px
|
|
114
|
+
- md: 768px
|
|
115
|
+
- lg: 1024px
|
|
116
|
+
- xl: 1280px
|
|
117
|
+
- 2xl: 1536px
|
|
118
|
+
|
|
119
|
+
## Components
|
|
120
|
+
|
|
121
|
+
### Button
|
|
122
|
+
- Primary: primary-600 bg, white text, radius-md
|
|
123
|
+
- Secondary: neutral-100 bg, neutral-900 text, radius-md
|
|
124
|
+
- Ghost: transparent bg, neutral-600 text, radius-md
|
|
125
|
+
|
|
126
|
+
### Card
|
|
127
|
+
- Background: white
|
|
128
|
+
- Border: neutral-200
|
|
129
|
+
- Radius: lg
|
|
130
|
+
- Shadow: md
|
|
131
|
+
- Padding: lg
|
|
132
|
+
|
|
133
|
+
### Input
|
|
134
|
+
- Background: white
|
|
135
|
+
- Border: neutral-300
|
|
136
|
+
- Focus border: primary-500
|
|
137
|
+
- Radius: md
|
|
138
|
+
- Padding: sm md
|
|
139
|
+
|
|
140
|
+
### Navigation
|
|
141
|
+
- Background: white
|
|
142
|
+
- Border bottom: neutral-200
|
|
143
|
+
- Height: 64px
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### Step 3: Validate DESIGN.md
|
|
147
|
+
|
|
148
|
+
Check the DESIGN.md for:
|
|
149
|
+
- All required sections present
|
|
150
|
+
- Color values are valid hex
|
|
151
|
+
- Typography has font families and sizes
|
|
152
|
+
- Spacing is consistent
|
|
153
|
+
- Breakpoints are standard
|
|
154
|
+
|
|
155
|
+
### Step 4: Convert to Tailwind Config
|
|
156
|
+
|
|
157
|
+
Generate a tailwind.config.js that uses the DESIGN.md tokens:
|
|
158
|
+
|
|
159
|
+
```javascript
|
|
160
|
+
/** @type {import('tailwindcss').Config} */
|
|
161
|
+
module.exports = {
|
|
162
|
+
content: ['./src/**/*.{js,ts,jsx,tsx,mdx}'],
|
|
163
|
+
theme: {
|
|
164
|
+
extend: {
|
|
165
|
+
colors: {
|
|
166
|
+
primary: {
|
|
167
|
+
50: '#eff6ff',
|
|
168
|
+
100: '#dbeafe',
|
|
169
|
+
// ... all values from DESIGN.md
|
|
170
|
+
},
|
|
171
|
+
neutral: {
|
|
172
|
+
50: '#fafafa',
|
|
173
|
+
// ... all values from DESIGN.md
|
|
174
|
+
},
|
|
175
|
+
},
|
|
176
|
+
fontFamily: {
|
|
177
|
+
sans: ['Inter', 'system-ui', 'sans-serif'],
|
|
178
|
+
mono: ['JetBrains Mono', 'monospace'],
|
|
179
|
+
},
|
|
180
|
+
fontSize: {
|
|
181
|
+
'display-lg': ['36px', { lineHeight: '40px', fontWeight: '700' }],
|
|
182
|
+
// ... all values from DESIGN.md
|
|
183
|
+
},
|
|
184
|
+
spacing: {
|
|
185
|
+
xs: '4px',
|
|
186
|
+
sm: '8px',
|
|
187
|
+
md: '16px',
|
|
188
|
+
lg: '24px',
|
|
189
|
+
xl: '32px',
|
|
190
|
+
'2xl': '48px',
|
|
191
|
+
'3xl': '64px',
|
|
192
|
+
},
|
|
193
|
+
borderRadius: {
|
|
194
|
+
sm: '4px',
|
|
195
|
+
md: '8px',
|
|
196
|
+
lg: '12px',
|
|
197
|
+
xl: '16px',
|
|
198
|
+
full: '9999px',
|
|
199
|
+
},
|
|
200
|
+
boxShadow: {
|
|
201
|
+
sm: '0 1px 2px 0 rgb(0 0 0 / 0.05)',
|
|
202
|
+
md: '0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)',
|
|
203
|
+
lg: '0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)',
|
|
204
|
+
xl: '0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)',
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
plugins: [],
|
|
209
|
+
}
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## Examples
|
|
213
|
+
|
|
214
|
+
### Example 1: Dashboard Design System
|
|
215
|
+
|
|
216
|
+
**Input:**
|
|
217
|
+
"Create a design system for a dark-themed analytics dashboard"
|
|
218
|
+
|
|
219
|
+
**Output:**
|
|
220
|
+
```markdown
|
|
221
|
+
# Analytics Dashboard Design System
|
|
222
|
+
|
|
223
|
+
## Colors
|
|
224
|
+
- background: #09090b (zinc-950)
|
|
225
|
+
- surface: #18181b (zinc-900)
|
|
226
|
+
- border: #27272a (zinc-800)
|
|
227
|
+
- text-primary: #fafafa (zinc-50)
|
|
228
|
+
- text-secondary: #a1a1aa (zinc-400)
|
|
229
|
+
- accent: #3b82f6 (blue-500)
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
### Example 2: Ecommerce Design System
|
|
233
|
+
|
|
234
|
+
**Input:**
|
|
235
|
+
"Generate a design system for a modern ecommerce site"
|
|
236
|
+
|
|
237
|
+
**Output:**
|
|
238
|
+
```markdown
|
|
239
|
+
# Ecommerce Design System
|
|
240
|
+
|
|
241
|
+
## Colors
|
|
242
|
+
- background: #ffffff (white)
|
|
243
|
+
- surface: #f9fafb (gray-50)
|
|
244
|
+
- border: #e5e7eb (gray-200)
|
|
245
|
+
- primary: #111827 (gray-900)
|
|
246
|
+
- accent: #2563eb (blue-600)
|
|
247
|
+
- success: #059669 (emerald-600)
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
## References
|
|
251
|
+
|
|
252
|
+
- [Google DESIGN.md Spec](https://github.com/google-labs-code/design.md)
|
|
253
|
+
- [Tailwind CSS Documentation](https://tailwindcss.com/docs)
|
|
254
|
+
- [shadcn/ui](https://ui.shadcn.com/)
|
|
255
|
+
|
|
256
|
+
## Validation Rules
|
|
257
|
+
|
|
258
|
+
1. **Colors**: Must be valid hex (#RRGGBB or #RRGGBBAA)
|
|
259
|
+
2. **Typography**: Must include font-family, size, line-height, weight
|
|
260
|
+
3. **Spacing**: Must be consistent unit (px, rem, or em)
|
|
261
|
+
4. **Breakpoints**: Must follow mobile-first approach
|
|
262
|
+
5. **Components**: Must define variant styles
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Bad DESIGN.md Examples (What NOT To Do)
|
|
2
|
+
|
|
3
|
+
## ❌ Example 1: Incomplete Design System
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
# My Design System
|
|
7
|
+
|
|
8
|
+
## Colors
|
|
9
|
+
- blue: #3b82f6
|
|
10
|
+
- red: #ef4444
|
|
11
|
+
- green: #22c55e
|
|
12
|
+
|
|
13
|
+
## Font
|
|
14
|
+
- font: Inter
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Why This Is Bad:
|
|
18
|
+
❌ No color hierarchy (no shades)
|
|
19
|
+
❌ No semantic meaning for colors
|
|
20
|
+
❌ No typography scale
|
|
21
|
+
❌ No spacing system
|
|
22
|
+
❌ No component definitions
|
|
23
|
+
❌ Missing essential sections
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## ❌ Example 2: Too Many Colors
|
|
28
|
+
|
|
29
|
+
```markdown
|
|
30
|
+
# Rainbow Design System
|
|
31
|
+
|
|
32
|
+
## Colors
|
|
33
|
+
- red: #ff0000
|
|
34
|
+
- orange: #ff8800
|
|
35
|
+
- yellow: #ffff00
|
|
36
|
+
- green: #00ff00
|
|
37
|
+
- cyan: #00ffff
|
|
38
|
+
- blue: #0000ff
|
|
39
|
+
- purple: #8800ff
|
|
40
|
+
- pink: #ff00ff
|
|
41
|
+
- maroon: #800000
|
|
42
|
+
- olive: #808000
|
|
43
|
+
- lime: #00ff00
|
|
44
|
+
- aqua: #00ffff
|
|
45
|
+
- teal: #008080
|
|
46
|
+
- navy: #000080
|
|
47
|
+
- fuchsia: #ff00ff
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Why This Is Bad:
|
|
51
|
+
❌ Too many colors (overwhelming)
|
|
52
|
+
❌ No primary/secondary hierarchy
|
|
53
|
+
❌ No semantic meaning
|
|
54
|
+
❌ Hard to maintain
|
|
55
|
+
❌ Inconsistent naming
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## ❌ Example 3: Inconsistent Spacing
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
# Spacing System
|
|
63
|
+
|
|
64
|
+
## Sizes
|
|
65
|
+
- tiny: 3px
|
|
66
|
+
- small: 7px
|
|
67
|
+
- medium: 15px
|
|
68
|
+
- large: 23px
|
|
69
|
+
- huge: 41px
|
|
70
|
+
- massive: 67px
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Why This Is Bad:
|
|
74
|
+
❌ Inconsistent values (not on a grid)
|
|
75
|
+
❌ Arbitrary names
|
|
76
|
+
❌ Not following standard scale (4, 8, 16, 24, etc.)
|
|
77
|
+
❌ Hard to remember
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## ❌ Example 4: No Typography Scale
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
# Typography
|
|
85
|
+
|
|
86
|
+
## Font
|
|
87
|
+
- font: Inter
|
|
88
|
+
|
|
89
|
+
## Sizes
|
|
90
|
+
- small: 12px
|
|
91
|
+
- medium: 16px
|
|
92
|
+
- large: 20px
|
|
93
|
+
- extra large: 24px
|
|
94
|
+
- huge: 32px
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### Why This Is Bad:
|
|
98
|
+
❌ No line-height defined
|
|
99
|
+
❌ No font-weight defined
|
|
100
|
+
❌ No font-family for different contexts
|
|
101
|
+
❌ Not following type scale ratio
|
|
102
|
+
❌ Missing code/mono font
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## ❌ Example 5: Missing Dark Theme
|
|
107
|
+
|
|
108
|
+
```markdown
|
|
109
|
+
# Light Theme Only
|
|
110
|
+
|
|
111
|
+
## Colors
|
|
112
|
+
- background: #ffffff
|
|
113
|
+
- text: #000000
|
|
114
|
+
- primary: #007bff
|
|
115
|
+
- secondary: #6c757d
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Why This Is Bad:
|
|
119
|
+
❌ No dark theme support
|
|
120
|
+
❌ No semantic colors (success, error, warning)
|
|
121
|
+
❌ No neutral palette
|
|
122
|
+
❌ Limited use cases
|
|
123
|
+
|
|
124
|
+
---
|
|
125
|
+
|
|
126
|
+
## ❌ Example 6: Random Breakpoints
|
|
127
|
+
|
|
128
|
+
```markdown
|
|
129
|
+
# Breakpoints
|
|
130
|
+
|
|
131
|
+
## Sizes
|
|
132
|
+
- xs: 320px
|
|
133
|
+
- sm: 480px
|
|
134
|
+
- md: 600px
|
|
135
|
+
- lg: 768px
|
|
136
|
+
- xl: 900px
|
|
137
|
+
- xxl: 1024px
|
|
138
|
+
- xxxl: 1200px
|
|
139
|
+
- huge: 1440px
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Why This Is Bad:
|
|
143
|
+
❌ Non-standard breakpoints
|
|
144
|
+
❌ Too many breakpoints
|
|
145
|
+
❌ Not mobile-first
|
|
146
|
+
❌ Hard to remember
|
|
147
|
+
❌ Inconsistent naming
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## ❌ Example 7: No Component Tokens
|
|
152
|
+
|
|
153
|
+
```markdown
|
|
154
|
+
# Design System
|
|
155
|
+
|
|
156
|
+
## Colors
|
|
157
|
+
- primary: #3b82f6
|
|
158
|
+
- background: #ffffff
|
|
159
|
+
|
|
160
|
+
## Typography
|
|
161
|
+
- font: Inter
|
|
162
|
+
- size: 16px
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Why This Is Bad:
|
|
166
|
+
❌ No component-specific tokens
|
|
167
|
+
❌ No button styles
|
|
168
|
+
❌ No card styles
|
|
169
|
+
❌ No input styles
|
|
170
|
+
❌ Forces developers to guess
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Summary: What Makes a Bad DESIGN.md
|
|
175
|
+
|
|
176
|
+
| Issue | Impact |
|
|
177
|
+
|-------|--------|
|
|
178
|
+
| Missing sections | Incomplete design system |
|
|
179
|
+
| Too many colors | Visual chaos |
|
|
180
|
+
| Inconsistent spacing | Unpredictable layouts |
|
|
181
|
+
| No typography scale | Inconsistent text |
|
|
182
|
+
| No dark theme | Limited use cases |
|
|
183
|
+
| Random breakpoints | Responsive chaos |
|
|
184
|
+
| No component tokens | Developer confusion |
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## How To Fix
|
|
189
|
+
|
|
190
|
+
1. **Add all required sections** (Colors, Typography, Spacing, etc.)
|
|
191
|
+
2. **Use consistent naming** (primary-500, neutral-100, etc.)
|
|
192
|
+
3. **Follow standard scales** (4, 8, 16, 24 for spacing)
|
|
193
|
+
4. **Include dark theme** (background-dark, text-dark, etc.)
|
|
194
|
+
5. **Define component tokens** (button-primary, card-bg, etc.)
|
|
195
|
+
6. **Use standard breakpoints** (sm: 640, md: 768, lg: 1024)
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Good DESIGN.md Examples
|
|
2
|
+
|
|
3
|
+
## Example 1: Dark Dashboard
|
|
4
|
+
|
|
5
|
+
```markdown
|
|
6
|
+
# Analytics Dashboard Design System
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
Dark-themed analytics dashboard for data visualization.
|
|
10
|
+
Optimized for long viewing sessions with reduced eye strain.
|
|
11
|
+
|
|
12
|
+
## Colors
|
|
13
|
+
|
|
14
|
+
### Background
|
|
15
|
+
- background-primary: #09090b (zinc-950)
|
|
16
|
+
- background-secondary: #18181b (zinc-900)
|
|
17
|
+
- background-tertiary: #27272a (zinc-800)
|
|
18
|
+
|
|
19
|
+
### Text
|
|
20
|
+
- text-primary: #fafafa (zinc-50)
|
|
21
|
+
- text-secondary: #a1a1aa (zinc-400)
|
|
22
|
+
- text-tertiary: #71717a (zinc-500)
|
|
23
|
+
|
|
24
|
+
### Borders
|
|
25
|
+
- border-primary: #27272a (zinc-800)
|
|
26
|
+
- border-secondary: #3f3f46 (zinc-700)
|
|
27
|
+
|
|
28
|
+
### Accent
|
|
29
|
+
- accent-primary: #3b82f6 (blue-500)
|
|
30
|
+
- accent-hover: #2563eb (blue-600)
|
|
31
|
+
|
|
32
|
+
### Semantic
|
|
33
|
+
- success: #22c55e (green-500)
|
|
34
|
+
- warning: #f59e0b (amber-500)
|
|
35
|
+
- error: #ef4444 (red-500)
|
|
36
|
+
|
|
37
|
+
## Typography
|
|
38
|
+
|
|
39
|
+
### Font Family
|
|
40
|
+
- headings: Inter, system-ui, sans-serif
|
|
41
|
+
- body: Inter, system-ui, sans-serif
|
|
42
|
+
- mono: JetBrains Mono, monospace
|
|
43
|
+
|
|
44
|
+
### Type Scale
|
|
45
|
+
- display: 30px / 36px / 700 weight
|
|
46
|
+
- heading-lg: 20px / 28px / 600 weight
|
|
47
|
+
- heading-md: 16px / 24px / 600 weight
|
|
48
|
+
- heading-sm: 14px / 20px / 600 weight
|
|
49
|
+
- body-lg: 16px / 24px / 400 weight
|
|
50
|
+
- body-md: 14px / 20px / 400 weight
|
|
51
|
+
- body-sm: 12px / 16px / 400 weight
|
|
52
|
+
- code: 14px / 20px / 400 weight
|
|
53
|
+
|
|
54
|
+
## Spacing
|
|
55
|
+
- xs: 4px
|
|
56
|
+
- sm: 8px
|
|
57
|
+
- md: 16px
|
|
58
|
+
- lg: 24px
|
|
59
|
+
- xl: 32px
|
|
60
|
+
|
|
61
|
+
## Borders
|
|
62
|
+
- radius-sm: 4px
|
|
63
|
+
- radius-md: 8px
|
|
64
|
+
- radius-lg: 12px
|
|
65
|
+
|
|
66
|
+
## Breakpoints
|
|
67
|
+
- sm: 640px
|
|
68
|
+
- md: 768px
|
|
69
|
+
- lg: 1024px
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### Why This Is Good:
|
|
73
|
+
✅ Clear color hierarchy (primary, secondary, tertiary)
|
|
74
|
+
✅ Consistent spacing scale
|
|
75
|
+
✅ Proper typography with weights
|
|
76
|
+
✅ Dark theme optimized
|
|
77
|
+
✅ Semantic colors defined
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Example 2: Light SaaS Landing Page
|
|
82
|
+
|
|
83
|
+
```markdown
|
|
84
|
+
# SaaS Landing Page Design System
|
|
85
|
+
|
|
86
|
+
## Overview
|
|
87
|
+
Clean, modern landing page for B2B SaaS product.
|
|
88
|
+
Focus on trust signals and conversion.
|
|
89
|
+
|
|
90
|
+
## Colors
|
|
91
|
+
|
|
92
|
+
### Background
|
|
93
|
+
- background: #ffffff (white)
|
|
94
|
+
- background-alt: #f9fafb (gray-50)
|
|
95
|
+
|
|
96
|
+
### Text
|
|
97
|
+
- text-primary: #111827 (gray-900)
|
|
98
|
+
- text-secondary: #6b7280 (gray-500)
|
|
99
|
+
- text-tertiary: #9ca3af (gray-400)
|
|
100
|
+
|
|
101
|
+
### Primary
|
|
102
|
+
- primary: #2563eb (blue-600)
|
|
103
|
+
- primary-hover: #1d4ed8 (blue-700)
|
|
104
|
+
|
|
105
|
+
### Secondary
|
|
106
|
+
- secondary: #f3f4f6 (gray-100)
|
|
107
|
+
- secondary-hover: #e5e7eb (gray-200)
|
|
108
|
+
|
|
109
|
+
### Border
|
|
110
|
+
- border: #e5e7eb (gray-200)
|
|
111
|
+
|
|
112
|
+
### Semantic
|
|
113
|
+
- success: #059669 (emerald-600)
|
|
114
|
+
- warning: #d97706 (amber-600)
|
|
115
|
+
- error: #dc2626 (red-600)
|
|
116
|
+
|
|
117
|
+
## Typography
|
|
118
|
+
|
|
119
|
+
### Font Family
|
|
120
|
+
- headings: Inter, system-ui, sans-serif
|
|
121
|
+
- body: Inter, system-ui, sans-serif
|
|
122
|
+
|
|
123
|
+
### Type Scale
|
|
124
|
+
- display: 48px / 56px / 700 weight
|
|
125
|
+
- heading-lg: 30px / 36px / 700 weight
|
|
126
|
+
- heading-md: 24px / 32px / 600 weight
|
|
127
|
+
- heading-sm: 20px / 28px / 600 weight
|
|
128
|
+
- body-lg: 18px / 28px / 400 weight
|
|
129
|
+
- body-md: 16px / 24px / 400 weight
|
|
130
|
+
- body-sm: 14px / 20px / 400 weight
|
|
131
|
+
|
|
132
|
+
## Spacing
|
|
133
|
+
- xs: 4px
|
|
134
|
+
- sm: 8px
|
|
135
|
+
- md: 16px
|
|
136
|
+
- lg: 24px
|
|
137
|
+
- xl: 32px
|
|
138
|
+
- 2xl: 48px
|
|
139
|
+
- 3xl: 64px
|
|
140
|
+
- 4xl: 96px
|
|
141
|
+
|
|
142
|
+
## Borders
|
|
143
|
+
- radius-sm: 4px
|
|
144
|
+
- radius-md: 8px
|
|
145
|
+
- radius-lg: 12px
|
|
146
|
+
- radius-xl: 16px
|
|
147
|
+
- radius-full: 9999px
|
|
148
|
+
|
|
149
|
+
## Shadows
|
|
150
|
+
- shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05)
|
|
151
|
+
- shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)
|
|
152
|
+
- shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)
|
|
153
|
+
|
|
154
|
+
## Breakpoints
|
|
155
|
+
- sm: 640px
|
|
156
|
+
- md: 768px
|
|
157
|
+
- lg: 1024px
|
|
158
|
+
- xl: 1280px
|
|
159
|
+
|
|
160
|
+
## Components
|
|
161
|
+
|
|
162
|
+
### Button
|
|
163
|
+
- Primary: primary bg, white text, radius-full, padding 12px 24px
|
|
164
|
+
- Secondary: secondary bg, text-primary text, radius-full, padding 12px 24px
|
|
165
|
+
- Ghost: transparent bg, text-primary text, radius-full, padding 12px 24px
|
|
166
|
+
|
|
167
|
+
### Card
|
|
168
|
+
- Background: white
|
|
169
|
+
- Border: border
|
|
170
|
+
- Radius: lg
|
|
171
|
+
- Shadow: md
|
|
172
|
+
- Padding: lg
|
|
173
|
+
|
|
174
|
+
### Badge
|
|
175
|
+
- Background: primary with 10% opacity
|
|
176
|
+
- Text: primary
|
|
177
|
+
- Radius: full
|
|
178
|
+
- Padding: 4px 12px
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
### Why This Is Good:
|
|
182
|
+
✅ Light theme optimized
|
|
183
|
+
✅ Clear visual hierarchy
|
|
184
|
+
✅ Generous spacing for landing page
|
|
185
|
+
✅ Component variants defined
|
|
186
|
+
✅ Conversion-focused (trust signals)
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Example 3: Mobile-First App
|
|
191
|
+
|
|
192
|
+
```markdown
|
|
193
|
+
# Mobile App Design System
|
|
194
|
+
|
|
195
|
+
## Overview
|
|
196
|
+
iOS/Android mobile app design system.
|
|
197
|
+
Optimized for touch interactions and small screens.
|
|
198
|
+
|
|
199
|
+
## Colors
|
|
200
|
+
|
|
201
|
+
### Background
|
|
202
|
+
- background: #ffffff (white)
|
|
203
|
+
- background-secondary: #f9fafb (gray-50)
|
|
204
|
+
|
|
205
|
+
### Text
|
|
206
|
+
- text-primary: #111827 (gray-900)
|
|
207
|
+
- text-secondary: #6b7280 (gray-500)
|
|
208
|
+
|
|
209
|
+
### Primary
|
|
210
|
+
- primary: #8b5cf6 (violet-500)
|
|
211
|
+
- primary-hover: #7c3aed (violet-600)
|
|
212
|
+
|
|
213
|
+
### Border
|
|
214
|
+
- border: #e5e7eb (gray-200)
|
|
215
|
+
|
|
216
|
+
## Typography
|
|
217
|
+
|
|
218
|
+
### Font Family
|
|
219
|
+
- body: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif
|
|
220
|
+
|
|
221
|
+
### Type Scale
|
|
222
|
+
- heading-lg: 28px / 34px / 700 weight
|
|
223
|
+
- heading-md: 22px / 28px / 600 weight
|
|
224
|
+
- heading-sm: 18px / 24px / 600 weight
|
|
225
|
+
- body-lg: 17px / 24px / 400 weight
|
|
226
|
+
- body-md: 15px / 22px / 400 weight
|
|
227
|
+
- body-sm: 13px / 18px / 400 weight
|
|
228
|
+
|
|
229
|
+
## Spacing
|
|
230
|
+
- xs: 4px
|
|
231
|
+
- sm: 8px
|
|
232
|
+
- md: 16px
|
|
233
|
+
- lg: 24px
|
|
234
|
+
- xl: 32px
|
|
235
|
+
|
|
236
|
+
## Touch Targets
|
|
237
|
+
- minimum: 44px x 44px
|
|
238
|
+
- comfortable: 48px x 48px
|
|
239
|
+
|
|
240
|
+
## Breakpoints
|
|
241
|
+
- sm: 375px (iPhone SE)
|
|
242
|
+
- md: 390px (iPhone 14)
|
|
243
|
+
- lg: 428px (iPhone 14 Pro Max)
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### Why This Is Good:
|
|
247
|
+
✅ Mobile-specific touch targets
|
|
248
|
+
✅ System font stack for performance
|
|
249
|
+
✅ Larger body text for readability
|
|
250
|
+
✅ Proper spacing for thumbs
|