mozaic-mcp-server 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.
Files changed (161) hide show
  1. package/INSTALLATION.md +232 -0
  2. package/README.md +262 -0
  3. package/SKILLS.md +411 -0
  4. package/bin/install-skills.js +171 -0
  5. package/data/mozaic.db +0 -0
  6. package/data/mozaic.db-shm +0 -0
  7. package/data/mozaic.db-wal +0 -0
  8. package/dist/__tests__/sanity-check.test.d.ts +2 -0
  9. package/dist/__tests__/sanity-check.test.d.ts.map +1 -0
  10. package/dist/__tests__/sanity-check.test.js +167 -0
  11. package/dist/__tests__/sanity-check.test.js.map +1 -0
  12. package/dist/__tests__/tools.integration.test.d.ts +2 -0
  13. package/dist/__tests__/tools.integration.test.d.ts.map +1 -0
  14. package/dist/__tests__/tools.integration.test.js +220 -0
  15. package/dist/__tests__/tools.integration.test.js.map +1 -0
  16. package/dist/db/queries.d.ts +144 -0
  17. package/dist/db/queries.d.ts.map +1 -0
  18. package/dist/db/queries.js +536 -0
  19. package/dist/db/queries.js.map +1 -0
  20. package/dist/db/schema.d.ts +4 -0
  21. package/dist/db/schema.d.ts.map +1 -0
  22. package/dist/db/schema.js +253 -0
  23. package/dist/db/schema.js.map +1 -0
  24. package/dist/index.d.ts +3 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +416 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/parsers/__tests__/docs-parser.test.d.ts +2 -0
  29. package/dist/parsers/__tests__/docs-parser.test.d.ts.map +1 -0
  30. package/dist/parsers/__tests__/docs-parser.test.js +251 -0
  31. package/dist/parsers/__tests__/docs-parser.test.js.map +1 -0
  32. package/dist/parsers/__tests__/icons-parser.test.d.ts +2 -0
  33. package/dist/parsers/__tests__/icons-parser.test.d.ts.map +1 -0
  34. package/dist/parsers/__tests__/icons-parser.test.js +169 -0
  35. package/dist/parsers/__tests__/icons-parser.test.js.map +1 -0
  36. package/dist/parsers/__tests__/react-parser.test.d.ts +2 -0
  37. package/dist/parsers/__tests__/react-parser.test.d.ts.map +1 -0
  38. package/dist/parsers/__tests__/react-parser.test.js +274 -0
  39. package/dist/parsers/__tests__/react-parser.test.js.map +1 -0
  40. package/dist/parsers/__tests__/scss-parser.test.d.ts +2 -0
  41. package/dist/parsers/__tests__/scss-parser.test.d.ts.map +1 -0
  42. package/dist/parsers/__tests__/scss-parser.test.js +364 -0
  43. package/dist/parsers/__tests__/scss-parser.test.js.map +1 -0
  44. package/dist/parsers/__tests__/tokens-parser.test.d.ts +2 -0
  45. package/dist/parsers/__tests__/tokens-parser.test.d.ts.map +1 -0
  46. package/dist/parsers/__tests__/tokens-parser.test.js +172 -0
  47. package/dist/parsers/__tests__/tokens-parser.test.js.map +1 -0
  48. package/dist/parsers/__tests__/vue-parser.test.d.ts +2 -0
  49. package/dist/parsers/__tests__/vue-parser.test.d.ts.map +1 -0
  50. package/dist/parsers/__tests__/vue-parser.test.js +207 -0
  51. package/dist/parsers/__tests__/vue-parser.test.js.map +1 -0
  52. package/dist/parsers/docs-parser.d.ts +4 -0
  53. package/dist/parsers/docs-parser.d.ts.map +1 -0
  54. package/dist/parsers/docs-parser.js +237 -0
  55. package/dist/parsers/docs-parser.js.map +1 -0
  56. package/dist/parsers/icons-parser.d.ts +33 -0
  57. package/dist/parsers/icons-parser.d.ts.map +1 -0
  58. package/dist/parsers/icons-parser.js +125 -0
  59. package/dist/parsers/icons-parser.js.map +1 -0
  60. package/dist/parsers/react-parser.d.ts +3 -0
  61. package/dist/parsers/react-parser.d.ts.map +1 -0
  62. package/dist/parsers/react-parser.js +406 -0
  63. package/dist/parsers/react-parser.js.map +1 -0
  64. package/dist/parsers/scss-parser.d.ts +9 -0
  65. package/dist/parsers/scss-parser.d.ts.map +1 -0
  66. package/dist/parsers/scss-parser.js +351 -0
  67. package/dist/parsers/scss-parser.js.map +1 -0
  68. package/dist/parsers/tokens/border-parser.d.ts +3 -0
  69. package/dist/parsers/tokens/border-parser.d.ts.map +1 -0
  70. package/dist/parsers/tokens/border-parser.js +83 -0
  71. package/dist/parsers/tokens/border-parser.js.map +1 -0
  72. package/dist/parsers/tokens/color-parser.d.ts +3 -0
  73. package/dist/parsers/tokens/color-parser.d.ts.map +1 -0
  74. package/dist/parsers/tokens/color-parser.js +88 -0
  75. package/dist/parsers/tokens/color-parser.js.map +1 -0
  76. package/dist/parsers/tokens/grid-parser.d.ts +3 -0
  77. package/dist/parsers/tokens/grid-parser.d.ts.map +1 -0
  78. package/dist/parsers/tokens/grid-parser.js +97 -0
  79. package/dist/parsers/tokens/grid-parser.js.map +1 -0
  80. package/dist/parsers/tokens/index.d.ts +9 -0
  81. package/dist/parsers/tokens/index.d.ts.map +1 -0
  82. package/dist/parsers/tokens/index.js +10 -0
  83. package/dist/parsers/tokens/index.js.map +1 -0
  84. package/dist/parsers/tokens/screen-parser.d.ts +3 -0
  85. package/dist/parsers/tokens/screen-parser.d.ts.map +1 -0
  86. package/dist/parsers/tokens/screen-parser.js +54 -0
  87. package/dist/parsers/tokens/screen-parser.js.map +1 -0
  88. package/dist/parsers/tokens/shadow-parser.d.ts +3 -0
  89. package/dist/parsers/tokens/shadow-parser.d.ts.map +1 -0
  90. package/dist/parsers/tokens/shadow-parser.js +62 -0
  91. package/dist/parsers/tokens/shadow-parser.js.map +1 -0
  92. package/dist/parsers/tokens/spacing-parser.d.ts +4 -0
  93. package/dist/parsers/tokens/spacing-parser.d.ts.map +1 -0
  94. package/dist/parsers/tokens/spacing-parser.js +85 -0
  95. package/dist/parsers/tokens/spacing-parser.js.map +1 -0
  96. package/dist/parsers/tokens/types.d.ts +33 -0
  97. package/dist/parsers/tokens/types.d.ts.map +1 -0
  98. package/dist/parsers/tokens/types.js +42 -0
  99. package/dist/parsers/tokens/types.js.map +1 -0
  100. package/dist/parsers/tokens/typography-parser.d.ts +3 -0
  101. package/dist/parsers/tokens/typography-parser.d.ts.map +1 -0
  102. package/dist/parsers/tokens/typography-parser.js +76 -0
  103. package/dist/parsers/tokens/typography-parser.js.map +1 -0
  104. package/dist/parsers/tokens-parser.d.ts +18 -0
  105. package/dist/parsers/tokens-parser.d.ts.map +1 -0
  106. package/dist/parsers/tokens-parser.js +57 -0
  107. package/dist/parsers/tokens-parser.js.map +1 -0
  108. package/dist/parsers/vue-parser.d.ts +3 -0
  109. package/dist/parsers/vue-parser.d.ts.map +1 -0
  110. package/dist/parsers/vue-parser.js +343 -0
  111. package/dist/parsers/vue-parser.js.map +1 -0
  112. package/dist/tools/generate-react-component.d.ts +35 -0
  113. package/dist/tools/generate-react-component.d.ts.map +1 -0
  114. package/dist/tools/generate-react-component.js +81 -0
  115. package/dist/tools/generate-react-component.js.map +1 -0
  116. package/dist/tools/generate-vue-component.d.ts +35 -0
  117. package/dist/tools/generate-vue-component.d.ts.map +1 -0
  118. package/dist/tools/generate-vue-component.js +81 -0
  119. package/dist/tools/generate-vue-component.js.map +1 -0
  120. package/dist/tools/get-component-info.d.ts +52 -0
  121. package/dist/tools/get-component-info.d.ts.map +1 -0
  122. package/dist/tools/get-component-info.js +94 -0
  123. package/dist/tools/get-component-info.js.map +1 -0
  124. package/dist/tools/get-css-utility.d.ts +41 -0
  125. package/dist/tools/get-css-utility.d.ts.map +1 -0
  126. package/dist/tools/get-css-utility.js +57 -0
  127. package/dist/tools/get-css-utility.js.map +1 -0
  128. package/dist/tools/get-design-tokens.d.ts +44 -0
  129. package/dist/tools/get-design-tokens.d.ts.map +1 -0
  130. package/dist/tools/get-design-tokens.js +124 -0
  131. package/dist/tools/get-design-tokens.js.map +1 -0
  132. package/dist/tools/get-icon.d.ts +32 -0
  133. package/dist/tools/get-icon.d.ts.map +1 -0
  134. package/dist/tools/get-icon.js +108 -0
  135. package/dist/tools/get-icon.js.map +1 -0
  136. package/dist/tools/get-install-info.d.ts +39 -0
  137. package/dist/tools/get-install-info.d.ts.map +1 -0
  138. package/dist/tools/get-install-info.js +160 -0
  139. package/dist/tools/get-install-info.js.map +1 -0
  140. package/dist/tools/list-components.d.ts +32 -0
  141. package/dist/tools/list-components.d.ts.map +1 -0
  142. package/dist/tools/list-components.js +62 -0
  143. package/dist/tools/list-components.js.map +1 -0
  144. package/dist/tools/list-css-utilities.d.ts +27 -0
  145. package/dist/tools/list-css-utilities.d.ts.map +1 -0
  146. package/dist/tools/list-css-utilities.js +48 -0
  147. package/dist/tools/list-css-utilities.js.map +1 -0
  148. package/dist/tools/search-documentation.d.ts +37 -0
  149. package/dist/tools/search-documentation.d.ts.map +1 -0
  150. package/dist/tools/search-documentation.js +120 -0
  151. package/dist/tools/search-documentation.js.map +1 -0
  152. package/dist/tools/search-icons.d.ts +41 -0
  153. package/dist/tools/search-icons.d.ts.map +1 -0
  154. package/dist/tools/search-icons.js +134 -0
  155. package/dist/tools/search-icons.js.map +1 -0
  156. package/package.json +98 -0
  157. package/skills/mozaic-css-utilities/skill.md +633 -0
  158. package/skills/mozaic-design-tokens/skill.md +621 -0
  159. package/skills/mozaic-icons/skill.md +624 -0
  160. package/skills/mozaic-react-builder/skill.md +652 -0
  161. package/skills/mozaic-vue-builder/skill.md +491 -0
@@ -0,0 +1,633 @@
1
+ ---
2
+ name: mozaic-css-utilities
3
+ description: Mozaic CSS utility classes and layout systems expert. Master Flexy grid, Container, Margin, Padding, Ratio, and Scroll utilities for responsive layouts without writing custom CSS.
4
+ version: 1.0.0
5
+ ---
6
+
7
+ # Mozaic CSS Utilities
8
+
9
+ An expert assistant for working with Mozaic CSS-only utility classes. These utilities work without any framework (no Vue or React needed) and provide powerful layout and spacing capabilities through simple CSS classes.
10
+
11
+ ## What This Skill Does
12
+
13
+ 1. **Browse Utilities**: Discover available CSS utilities (Flexy, Container, Margin, Padding, etc.)
14
+ 2. **Layout Systems**: Build responsive grids with Flexy
15
+ 3. **Spacing Utilities**: Apply consistent margins and padding
16
+ 4. **Container Management**: Create centered, responsive containers
17
+ 5. **Aspect Ratios**: Maintain element ratios with Ratio utility
18
+ 6. **Scroll Behavior**: Control scrolling with Scroll utility
19
+
20
+ ## MCP Tools Used
21
+
22
+ This skill uses the Mozaic MCP server tools:
23
+ - `mcp__mozaic__list_css_utilities` - Browse utilities by category
24
+ - `mcp__mozaic__get_css_utility` - Get detailed utility class documentation
25
+ - `mcp__mozaic__search_documentation` - Search for utility usage examples
26
+
27
+ ## When to Use This Skill
28
+
29
+ Use this skill when you:
30
+ - Need to build responsive grid layouts
31
+ - Want to apply consistent spacing without custom CSS
32
+ - Need container components for page layouts
33
+ - Want to maintain aspect ratios (videos, images)
34
+ - Need to control scroll behavior
35
+ - Prefer utility-first CSS approach
36
+ - Don't want to write custom CSS for common patterns
37
+
38
+ ## Available CSS Utilities
39
+
40
+ ### Layout Utilities
41
+ - **Flexy**: Flexbox-based responsive grid system
42
+ - **Container**: Centered, max-width containers
43
+
44
+ ### Spacing Utilities
45
+ - **Margin**: Margin utility classes
46
+ - **Padding**: Padding utility classes
47
+
48
+ ### Display Utilities
49
+ - **Ratio**: Aspect ratio containers
50
+ - **Scroll**: Scroll behavior control
51
+
52
+ ## Interactive Workflow
53
+
54
+ ### Step 1: What Do You Need?
55
+
56
+ When you activate this skill, I'll ask:
57
+
58
+ **"What type of layout or utility do you need?"**
59
+
60
+ Options:
61
+ - A) Grid/Layout (Flexy for responsive columns)
62
+ - B) Container (Centered page containers)
63
+ - C) Spacing (Margin and Padding)
64
+ - D) Aspect Ratio (Ratio for videos/images)
65
+ - E) Scroll Control (Scroll utilities)
66
+ - F) Browse all utilities
67
+
68
+ ### Step 2: Get Utility Details
69
+
70
+ I'll use `mcp__mozaic__list_css_utilities` and `mcp__mozaic__get_css_utility` to show:
71
+ - Available CSS classes
72
+ - Responsive modifiers
73
+ - Usage examples
74
+ - Best practices
75
+
76
+ ### Step 3: Generate Examples
77
+
78
+ Provide ready-to-use HTML examples with utility classes applied.
79
+
80
+ ## Flexy Grid System
81
+
82
+ The Flexy utility is a powerful flexbox-based grid system.
83
+
84
+ ### Basic Grid
85
+
86
+ ```html
87
+ <!-- 2-column grid -->
88
+ <div class="flexy">
89
+ <div class="flexy__col flexy__col--6">Column 1 (50%)</div>
90
+ <div class="flexy__col flexy__col--6">Column 2 (50%)</div>
91
+ </div>
92
+
93
+ <!-- 3-column grid -->
94
+ <div class="flexy">
95
+ <div class="flexy__col flexy__col--4">Column 1 (33.33%)</div>
96
+ <div class="flexy__col flexy__col--4">Column 2 (33.33%)</div>
97
+ <div class="flexy__col flexy__col--4">Column 3 (33.33%)</div>
98
+ </div>
99
+
100
+ <!-- 4-column grid -->
101
+ <div class="flexy">
102
+ <div class="flexy__col flexy__col--3">Column 1 (25%)</div>
103
+ <div class="flexy__col flexy__col--3">Column 2 (25%)</div>
104
+ <div class="flexy__col flexy__col--3">Column 3 (25%)</div>
105
+ <div class="flexy__col flexy__col--3">Column 4 (25%)</div>
106
+ </div>
107
+ ```
108
+
109
+ ### Responsive Grid
110
+
111
+ ```html
112
+ <!-- Mobile: 1 column, Tablet: 2 columns, Desktop: 3 columns -->
113
+ <div class="flexy">
114
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
115
+ Item 1
116
+ </div>
117
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
118
+ Item 2
119
+ </div>
120
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
121
+ Item 3
122
+ </div>
123
+ </div>
124
+ ```
125
+
126
+ **Responsive Modifiers**:
127
+ - `@s`: Small screens (≥480px)
128
+ - `@m`: Medium screens (≥768px)
129
+ - `@l`: Large screens (≥1024px)
130
+ - `@xl`: Extra large screens (≥1280px)
131
+
132
+ ### Grid Gutters
133
+
134
+ ```html
135
+ <!-- Default gutter (16px) -->
136
+ <div class="flexy flexy--gutter">
137
+ <div class="flexy__col flexy__col--6">Column 1</div>
138
+ <div class="flexy__col flexy__col--6">Column 2</div>
139
+ </div>
140
+
141
+ <!-- Small gutter (8px) -->
142
+ <div class="flexy flexy--gutter-s">
143
+ <div class="flexy__col flexy__col--6">Column 1</div>
144
+ <div class="flexy__col flexy__col--6">Column 2</div>
145
+ </div>
146
+
147
+ <!-- Large gutter (24px) -->
148
+ <div class="flexy flexy--gutter-l">
149
+ <div class="flexy__col flexy__col--6">Column 1</div>
150
+ <div class="flexy__col flexy__col--6">Column 2</div>
151
+ </div>
152
+
153
+ <!-- No gutter -->
154
+ <div class="flexy flexy--gutter-none">
155
+ <div class="flexy__col flexy__col--6">Column 1</div>
156
+ <div class="flexy__col flexy__col--6">Column 2</div>
157
+ </div>
158
+ ```
159
+
160
+ ### Alignment
161
+
162
+ ```html
163
+ <!-- Vertical alignment -->
164
+ <div class="flexy flexy--align-start">Start aligned</div>
165
+ <div class="flexy flexy--align-center">Center aligned</div>
166
+ <div class="flexy flexy--align-end">End aligned</div>
167
+
168
+ <!-- Horizontal alignment -->
169
+ <div class="flexy flexy--justify-start">Start justified</div>
170
+ <div class="flexy flexy--justify-center">Center justified</div>
171
+ <div class="flexy flexy--justify-end">End justified</div>
172
+ <div class="flexy flexy--justify-between">Space between</div>
173
+ <div class="flexy flexy--justify-around">Space around</div>
174
+ ```
175
+
176
+ ### Column Offset
177
+
178
+ ```html
179
+ <!-- Offset column by 2 (push right) -->
180
+ <div class="flexy">
181
+ <div class="flexy__col flexy__col--6 flexy__col--offset-2">
182
+ Offset by 2 columns
183
+ </div>
184
+ </div>
185
+
186
+ <!-- Responsive offset -->
187
+ <div class="flexy">
188
+ <div class="flexy__col flexy__col--8 flexy__col--offset-2@l">
189
+ Offset only on large screens
190
+ </div>
191
+ </div>
192
+ ```
193
+
194
+ ### Column Order
195
+
196
+ ```html
197
+ <!-- Change order on different screens -->
198
+ <div class="flexy">
199
+ <div class="flexy__col flexy__col--6 flexy__col--order-2@m">
200
+ First on mobile, second on tablet+
201
+ </div>
202
+ <div class="flexy__col flexy__col--6 flexy__col--order-1@m">
203
+ Second on mobile, first on tablet+
204
+ </div>
205
+ </div>
206
+ ```
207
+
208
+ ## Container Utility
209
+
210
+ Create centered, max-width containers.
211
+
212
+ ```html
213
+ <!-- Default container (max-width responsive) -->
214
+ <div class="container">
215
+ <p>Centered content with responsive max-width</p>
216
+ </div>
217
+
218
+ <!-- Fluid container (full width with padding) -->
219
+ <div class="container container--fluid">
220
+ <p>Full width with consistent padding</p>
221
+ </div>
222
+
223
+ <!-- Fixed width containers -->
224
+ <div class="container container--sm">Max 540px</div>
225
+ <div class="container container--md">Max 720px</div>
226
+ <div class="container container--lg">Max 960px</div>
227
+ <div class="container container--xl">Max 1140px</div>
228
+ ```
229
+
230
+ ## Margin Utilities
231
+
232
+ Apply consistent margins using the spacing scale.
233
+
234
+ ### All Sides
235
+
236
+ ```html
237
+ <!-- Margin all sides -->
238
+ <div class="m-0">No margin</div>
239
+ <div class="m-xs">Margin 8px</div>
240
+ <div class="m-s">Margin 12px</div>
241
+ <div class="m-m">Margin 16px</div>
242
+ <div class="m-l">Margin 24px</div>
243
+ <div class="m-xl">Margin 32px</div>
244
+ <div class="m-auto">Margin auto (centering)</div>
245
+ ```
246
+
247
+ ### Specific Sides
248
+
249
+ ```html
250
+ <!-- Margin top -->
251
+ <div class="mt-m">Margin top 16px</div>
252
+
253
+ <!-- Margin bottom -->
254
+ <div class="mb-l">Margin bottom 24px</div>
255
+
256
+ <!-- Margin left -->
257
+ <div class="ml-s">Margin left 12px</div>
258
+
259
+ <!-- Margin right -->
260
+ <div class="mr-s">Margin right 12px</div>
261
+
262
+ <!-- Margin horizontal (left + right) -->
263
+ <div class="mx-m">Margin horizontal 16px</div>
264
+
265
+ <!-- Margin vertical (top + bottom) -->
266
+ <div class="my-l">Margin vertical 24px</div>
267
+ ```
268
+
269
+ ### Responsive Margins
270
+
271
+ ```html
272
+ <!-- Different margins at breakpoints -->
273
+ <div class="m-s m-m@m m-l@l">
274
+ Small margin on mobile, medium on tablet, large on desktop
275
+ </div>
276
+
277
+ <!-- Remove margin on specific breakpoints -->
278
+ <div class="mb-m mb-0@l">
279
+ Margin bottom on mobile/tablet, none on desktop
280
+ </div>
281
+ ```
282
+
283
+ ### Negative Margins
284
+
285
+ ```html
286
+ <!-- Pull element up/left -->
287
+ <div class="mt--m">Negative margin top -16px</div>
288
+ <div class="ml--l">Negative margin left -24px</div>
289
+ ```
290
+
291
+ ## Padding Utilities
292
+
293
+ Apply consistent padding using the spacing scale.
294
+
295
+ ### All Sides
296
+
297
+ ```html
298
+ <!-- Padding all sides -->
299
+ <div class="p-0">No padding</div>
300
+ <div class="p-xs">Padding 8px</div>
301
+ <div class="p-s">Padding 12px</div>
302
+ <div class="p-m">Padding 16px</div>
303
+ <div class="p-l">Padding 24px</div>
304
+ <div class="p-xl">Padding 32px</div>
305
+ ```
306
+
307
+ ### Specific Sides
308
+
309
+ ```html
310
+ <!-- Padding top -->
311
+ <div class="pt-m">Padding top 16px</div>
312
+
313
+ <!-- Padding bottom -->
314
+ <div class="pb-l">Padding bottom 24px</div>
315
+
316
+ <!-- Padding left -->
317
+ <div class="pl-s">Padding left 12px</div>
318
+
319
+ <!-- Padding right -->
320
+ <div class="pr-s">Padding right 12px</div>
321
+
322
+ <!-- Padding horizontal (left + right) -->
323
+ <div class="px-m">Padding horizontal 16px</div>
324
+
325
+ <!-- Padding vertical (top + bottom) -->
326
+ <div class="py-l">Padding vertical 24px</div>
327
+ ```
328
+
329
+ ### Responsive Padding
330
+
331
+ ```html
332
+ <!-- Different padding at breakpoints -->
333
+ <div class="p-s p-m@m p-l@l">
334
+ Small padding on mobile, medium on tablet, large on desktop
335
+ </div>
336
+
337
+ <!-- Card with responsive padding -->
338
+ <div class="card p-m p-l@m p-xl@l">
339
+ Responsive card padding
340
+ </div>
341
+ ```
342
+
343
+ ## Ratio Utility
344
+
345
+ Maintain aspect ratios for images, videos, and containers.
346
+
347
+ ```html
348
+ <!-- 16:9 ratio (video) -->
349
+ <div class="ratio ratio--16x9">
350
+ <iframe src="video.mp4"></iframe>
351
+ </div>
352
+
353
+ <!-- 4:3 ratio -->
354
+ <div class="ratio ratio--4x3">
355
+ <img src="image.jpg" alt="4:3 image">
356
+ </div>
357
+
358
+ <!-- 1:1 ratio (square) -->
359
+ <div class="ratio ratio--1x1">
360
+ <img src="avatar.jpg" alt="Square avatar">
361
+ </div>
362
+
363
+ <!-- 21:9 ratio (ultrawide) -->
364
+ <div class="ratio ratio--21x9">
365
+ <video src="ultrawide.mp4"></video>
366
+ </div>
367
+
368
+ <!-- Custom ratio with CSS variable -->
369
+ <div class="ratio" style="--ratio: 2.35;">
370
+ <img src="cinema.jpg" alt="Cinematic ratio">
371
+ </div>
372
+ ```
373
+
374
+ ## Scroll Utility
375
+
376
+ Control scroll behavior.
377
+
378
+ ```html
379
+ <!-- Horizontal scroll container -->
380
+ <div class="scroll scroll--x">
381
+ <div style="width: 2000px">
382
+ Wide content that scrolls horizontally
383
+ </div>
384
+ </div>
385
+
386
+ <!-- Vertical scroll container -->
387
+ <div class="scroll scroll--y" style="height: 300px">
388
+ <p>Long content...</p>
389
+ <p>That scrolls...</p>
390
+ <p>Vertically...</p>
391
+ </div>
392
+
393
+ <!-- Scroll with shadows at edges -->
394
+ <div class="scroll scroll--x scroll--shadow">
395
+ <div style="width: 2000px">
396
+ Scrollable with edge shadows
397
+ </div>
398
+ </div>
399
+
400
+ <!-- Smooth scrolling -->
401
+ <div class="scroll scroll--smooth">
402
+ Content with smooth scroll behavior
403
+ </div>
404
+ ```
405
+
406
+ ## Common Layout Patterns
407
+
408
+ ### Pattern 1: Sidebar Layout
409
+
410
+ ```html
411
+ <div class="container">
412
+ <div class="flexy flexy--gutter">
413
+ <!-- Sidebar: full width on mobile, 1/3 on desktop -->
414
+ <aside class="flexy__col flexy__col--12 flexy__col--4@l">
415
+ <div class="p-m">Sidebar</div>
416
+ </aside>
417
+
418
+ <!-- Main: full width on mobile, 2/3 on desktop -->
419
+ <main class="flexy__col flexy__col--12 flexy__col--8@l">
420
+ <div class="p-m">Main content</div>
421
+ </main>
422
+ </div>
423
+ </div>
424
+ ```
425
+
426
+ ### Pattern 2: Card Grid
427
+
428
+ ```html
429
+ <div class="container">
430
+ <div class="flexy flexy--gutter">
431
+ <!-- 1 column mobile, 2 columns tablet, 3 columns desktop -->
432
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
433
+ <div class="card p-m mb-m">Card 1</div>
434
+ </div>
435
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
436
+ <div class="card p-m mb-m">Card 2</div>
437
+ </div>
438
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
439
+ <div class="card p-m mb-m">Card 3</div>
440
+ </div>
441
+ </div>
442
+ </div>
443
+ ```
444
+
445
+ ### Pattern 3: Hero Section
446
+
447
+ ```html
448
+ <section class="hero py-xl">
449
+ <div class="container">
450
+ <div class="flexy flexy--align-center flexy--justify-center">
451
+ <div class="flexy__col flexy__col--12 flexy__col--8@m flexy__col--6@l">
452
+ <h1 class="mb-m">Hero Title</h1>
453
+ <p class="mb-l">Hero description text</p>
454
+ <button class="btn">Call to Action</button>
455
+ </div>
456
+ </div>
457
+ </div>
458
+ </section>
459
+ ```
460
+
461
+ ### Pattern 4: Feature Grid
462
+
463
+ ```html
464
+ <div class="container py-xl">
465
+ <div class="flexy flexy--gutter-l">
466
+ <!-- 1 col mobile, 2 col tablet, 4 col desktop -->
467
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--3@l">
468
+ <div class="text-center p-m">
469
+ <div class="ratio ratio--1x1 mb-m">
470
+ <img src="icon1.svg" alt="Feature 1">
471
+ </div>
472
+ <h3>Feature 1</h3>
473
+ </div>
474
+ </div>
475
+ <!-- Repeat for more features -->
476
+ </div>
477
+ </div>
478
+ ```
479
+
480
+ ### Pattern 5: Form Layout
481
+
482
+ ```html
483
+ <div class="container">
484
+ <div class="flexy flexy--gutter">
485
+ <div class="flexy__col flexy__col--12 flexy__col--6@m">
486
+ <div class="mb-m">
487
+ <label>First Name</label>
488
+ <input type="text" class="px-s py-s">
489
+ </div>
490
+ </div>
491
+ <div class="flexy__col flexy__col--12 flexy__col--6@m">
492
+ <div class="mb-m">
493
+ <label>Last Name</label>
494
+ <input type="text" class="px-s py-s">
495
+ </div>
496
+ </div>
497
+ <div class="flexy__col flexy__col--12">
498
+ <div class="mb-m">
499
+ <label>Email</label>
500
+ <input type="email" class="px-s py-s">
501
+ </div>
502
+ </div>
503
+ </div>
504
+ </div>
505
+ ```
506
+
507
+ ## Best Practices
508
+
509
+ ### 1. Mobile-First Approach
510
+
511
+ ```html
512
+ <!-- Good: Start mobile, add breakpoints up -->
513
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
514
+ Mobile: 100%, Tablet: 50%, Desktop: 33.33%
515
+ </div>
516
+
517
+ <!-- Avoid: Desktop-first -->
518
+ <div class="flexy__col flexy__col--4 flexy__col--6@m flexy__col--12@s">
519
+ Harder to reason about
520
+ </div>
521
+ ```
522
+
523
+ ### 2. Consistent Spacing Scale
524
+
525
+ ```html
526
+ <!-- Good: Use spacing utilities -->
527
+ <div class="mb-m p-l">Consistent spacing</div>
528
+
529
+ <!-- Avoid: Arbitrary values -->
530
+ <div style="margin-bottom: 17px; padding: 23px">
531
+ Inconsistent spacing
532
+ </div>
533
+ ```
534
+
535
+ ### 3. Semantic Container Usage
536
+
537
+ ```html
538
+ <!-- Good: Use container for page sections -->
539
+ <section class="py-xl">
540
+ <div class="container">
541
+ <h2>Section Title</h2>
542
+ </div>
543
+ </section>
544
+
545
+ <!-- Avoid: Multiple nested containers -->
546
+ <div class="container">
547
+ <div class="container">
548
+ Don't nest containers
549
+ </div>
550
+ </div>
551
+ ```
552
+
553
+ ### 4. Grid Within Grid (Nested Grids)
554
+
555
+ ```html
556
+ <!-- Good: Nest grids for complex layouts -->
557
+ <div class="flexy flexy--gutter">
558
+ <div class="flexy__col flexy__col--8">
559
+ <div class="flexy flexy--gutter">
560
+ <div class="flexy__col flexy__col--6">Nested 1</div>
561
+ <div class="flexy__col flexy__col--6">Nested 2</div>
562
+ </div>
563
+ </div>
564
+ <div class="flexy__col flexy__col--4">Sidebar</div>
565
+ </div>
566
+ ```
567
+
568
+ ## Commands
569
+
570
+ When this skill is active:
571
+
572
+ - **"Show [utility] classes"**: Get all classes for a utility
573
+ - **"Build a [layout] with Flexy"**: Get layout examples
574
+ - **"How do I [task]?"**: Get utility guidance
575
+ - **"Responsive [pattern]"**: Get responsive patterns
576
+ - **"Spacing utilities"**: Get margin/padding classes
577
+
578
+ ## Integration with Other Skills
579
+
580
+ This skill works well with:
581
+ - **mozaic-design-tokens**: Get spacing/breakpoint values
582
+ - **mozaic-vue-builder**: Add utilities to Vue components
583
+ - **mozaic-react-builder**: Add utilities to React components
584
+
585
+ ## Example Session
586
+
587
+ **User**: "I need a 3-column product grid"
588
+
589
+ **Skill**:
590
+ I'll help you build a responsive 3-column grid with Flexy!
591
+
592
+ Do you want:
593
+ - A) Equal columns (33.33% each)
594
+ - B) Responsive (1 col mobile, 2 tablet, 3 desktop)
595
+ - C) With gutters between items
596
+
597
+ **User**: "B - Responsive with gutters"
598
+
599
+ **Skill**:
600
+ Perfect! Here's your responsive product grid:
601
+
602
+ [Uses `mcp__mozaic__get_css_utility` for Flexy]
603
+
604
+ ```html
605
+ <div class="container">
606
+ <div class="flexy flexy--gutter">
607
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
608
+ <div class="card p-m">Product 1</div>
609
+ </div>
610
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
611
+ <div class="card p-m">Product 2</div>
612
+ </div>
613
+ <div class="flexy__col flexy__col--12 flexy__col--6@m flexy__col--4@l">
614
+ <div class="card p-m">Product 3</div>
615
+ </div>
616
+ </div>
617
+ </div>
618
+ ```
619
+
620
+ This creates:
621
+ - Mobile: 1 column (stacked)
622
+ - Tablet (≥768px): 2 columns
623
+ - Desktop (≥1024px): 3 columns
624
+ - With 16px gutters between items
625
+
626
+ Would you like me to:
627
+ - Add more products?
628
+ - Adjust gutter size?
629
+ - Add card styling?
630
+
631
+ ---
632
+
633
+ **Let's build beautiful layouts with Mozaic CSS utilities!**