picasso-skill 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 +124 -0
- package/SKILL.md +202 -0
- package/bin/install.mjs +81 -0
- package/package.json +36 -0
- package/references/anti-patterns.md +95 -0
- package/references/color-and-contrast.md +174 -0
- package/references/component-patterns.md +113 -0
- package/references/design-system.md +176 -0
- package/references/generative-art.md +54 -0
- package/references/interaction-design.md +162 -0
- package/references/motion-and-animation.md +260 -0
- package/references/react-patterns.md +216 -0
- package/references/responsive-design.md +118 -0
- package/references/sensory-design.md +125 -0
- package/references/spatial-design.md +176 -0
- package/references/typography.md +168 -0
- package/skills/picasso/SKILL.md +202 -0
- package/skills/picasso/references/anti-patterns.md +95 -0
- package/skills/picasso/references/color-and-contrast.md +174 -0
- package/skills/picasso/references/component-patterns.md +113 -0
- package/skills/picasso/references/design-system.md +176 -0
- package/skills/picasso/references/generative-art.md +54 -0
- package/skills/picasso/references/interaction-design.md +162 -0
- package/skills/picasso/references/motion-and-animation.md +260 -0
- package/skills/picasso/references/react-patterns.md +216 -0
- package/skills/picasso/references/responsive-design.md +118 -0
- package/skills/picasso/references/sensory-design.md +125 -0
- package/skills/picasso/references/spatial-design.md +176 -0
- package/skills/picasso/references/typography.md +168 -0
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Spatial Design Reference
|
|
2
|
+
|
|
3
|
+
## Table of Contents
|
|
4
|
+
1. Spacing Scale
|
|
5
|
+
2. Grid Systems
|
|
6
|
+
3. Visual Hierarchy
|
|
7
|
+
4. Whitespace
|
|
8
|
+
5. Layout Patterns
|
|
9
|
+
6. Common Mistakes
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Spacing Scale
|
|
14
|
+
|
|
15
|
+
Use a consistent spacing scale based on a 4px unit. Never use arbitrary values like 13px or 7px.
|
|
16
|
+
|
|
17
|
+
```css
|
|
18
|
+
:root {
|
|
19
|
+
--space-1: 0.25rem; /* 4px - tight inline gaps */
|
|
20
|
+
--space-2: 0.5rem; /* 8px - icon-to-text, compact lists */
|
|
21
|
+
--space-3: 0.75rem; /* 12px - form field padding */
|
|
22
|
+
--space-4: 1rem; /* 16px - standard element spacing */
|
|
23
|
+
--space-5: 1.25rem; /* 20px - card padding */
|
|
24
|
+
--space-6: 1.5rem; /* 24px - section padding */
|
|
25
|
+
--space-8: 2rem; /* 32px - group separation */
|
|
26
|
+
--space-10: 2.5rem; /* 40px - major section gaps */
|
|
27
|
+
--space-12: 3rem; /* 48px - large section spacing */
|
|
28
|
+
--space-16: 4rem; /* 64px - page-level spacing */
|
|
29
|
+
--space-20: 5rem; /* 80px - hero-level breathing room */
|
|
30
|
+
--space-24: 6rem; /* 96px - dramatic separation */
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### When to Use Which Size
|
|
35
|
+
- **1-2 (4-8px)**: Internal component spacing (icon + label, badge padding)
|
|
36
|
+
- **3-4 (12-16px)**: Component padding, list item spacing
|
|
37
|
+
- **5-6 (20-24px)**: Card padding, form group margins
|
|
38
|
+
- **8-10 (32-40px)**: Section separation within a page
|
|
39
|
+
- **12-16 (48-64px)**: Major content blocks, above/below fold
|
|
40
|
+
- **20-24 (80-96px)**: Hero areas, page-level breathing room
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
## 2. Grid Systems
|
|
45
|
+
|
|
46
|
+
### CSS Grid Defaults
|
|
47
|
+
```css
|
|
48
|
+
.grid {
|
|
49
|
+
display: grid;
|
|
50
|
+
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
|
51
|
+
gap: var(--space-6);
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 12-Column Grid
|
|
56
|
+
For dashboard and editorial layouts:
|
|
57
|
+
```css
|
|
58
|
+
.page-grid {
|
|
59
|
+
display: grid;
|
|
60
|
+
grid-template-columns: repeat(12, 1fr);
|
|
61
|
+
gap: var(--space-6);
|
|
62
|
+
max-width: 1200px;
|
|
63
|
+
margin: 0 auto;
|
|
64
|
+
padding: 0 var(--space-6);
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Asymmetric Grids
|
|
69
|
+
For editorial and portfolio layouts, break the 12-column grid:
|
|
70
|
+
```css
|
|
71
|
+
.editorial-grid {
|
|
72
|
+
display: grid;
|
|
73
|
+
grid-template-columns: 2fr 1fr; /* 2:1 ratio */
|
|
74
|
+
gap: var(--space-8);
|
|
75
|
+
}
|
|
76
|
+
.portfolio-grid {
|
|
77
|
+
display: grid;
|
|
78
|
+
grid-template-columns: 3fr 2fr; /* golden-ish ratio */
|
|
79
|
+
gap: var(--space-6);
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## 3. Visual Hierarchy
|
|
86
|
+
|
|
87
|
+
Hierarchy is established through size, weight, color, and space. Not all four at once. Pick two.
|
|
88
|
+
|
|
89
|
+
### Hierarchy Techniques (in order of strength)
|
|
90
|
+
1. **Size difference**: The fastest way to establish priority
|
|
91
|
+
2. **Weight difference**: Bold vs. regular within the same size
|
|
92
|
+
3. **Color contrast**: Primary vs. secondary text color
|
|
93
|
+
4. **Spatial separation**: More space around important elements
|
|
94
|
+
5. **Position**: Top-left gets seen first (in LTR languages)
|
|
95
|
+
|
|
96
|
+
### Rules
|
|
97
|
+
- If everything is bold, nothing is bold. Limit bold to headings and key data points.
|
|
98
|
+
- If everything is the same size, the eye has nowhere to land. Vary size by at least 1.5x between hierarchy levels.
|
|
99
|
+
- Use secondary/tertiary text colors for supporting information (timestamps, metadata, helper text).
|
|
100
|
+
- Reduce visual weight of labels and increase weight of values in data-heavy UIs.
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 4. Whitespace
|
|
105
|
+
|
|
106
|
+
Whitespace is not wasted space. It is a design element.
|
|
107
|
+
|
|
108
|
+
### Internal vs. External Spacing
|
|
109
|
+
- **Internal**: Padding inside a component (card padding, button padding). Relates to the component's own content.
|
|
110
|
+
- **External**: Margin between components. Relates to the component's relationship with siblings.
|
|
111
|
+
|
|
112
|
+
### Gestalt Grouping
|
|
113
|
+
Elements that are closer together are perceived as related. Use tighter spacing within groups and wider spacing between groups. The ratio between intra-group and inter-group spacing should be at least 2:1 (e.g., 8px within, 24px between).
|
|
114
|
+
|
|
115
|
+
### Generous vs. Dense
|
|
116
|
+
- **Generous**: Marketing pages, portfolios, editorial content. Use 80-120px between major sections.
|
|
117
|
+
- **Dense**: Dashboards, admin panels, data tables. Use 16-32px between sections but maintain consistent rhythm.
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 5. Layout Patterns
|
|
122
|
+
|
|
123
|
+
### Centered Content
|
|
124
|
+
Max-width container with auto margins. Standard max-widths: 640px (narrow/reading), 960px (medium), 1200px (wide), 1440px (ultrawide).
|
|
125
|
+
|
|
126
|
+
### Sidebar + Main
|
|
127
|
+
```css
|
|
128
|
+
.layout {
|
|
129
|
+
display: grid;
|
|
130
|
+
grid-template-columns: 260px 1fr;
|
|
131
|
+
min-height: 100vh;
|
|
132
|
+
}
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Sticky Header + Scrollable Content
|
|
136
|
+
```css
|
|
137
|
+
.header { position: sticky; top: 0; z-index: 10; }
|
|
138
|
+
.main { overflow-y: auto; }
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Bento Grid
|
|
142
|
+
Irregular grid with varied cell sizes:
|
|
143
|
+
```css
|
|
144
|
+
.bento {
|
|
145
|
+
display: grid;
|
|
146
|
+
grid-template-columns: repeat(4, 1fr);
|
|
147
|
+
grid-auto-rows: 200px;
|
|
148
|
+
gap: var(--space-4);
|
|
149
|
+
}
|
|
150
|
+
.bento .featured {
|
|
151
|
+
grid-column: span 2;
|
|
152
|
+
grid-row: span 2;
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Overlap/Layer
|
|
157
|
+
Elements that break out of the grid create visual tension:
|
|
158
|
+
```css
|
|
159
|
+
.overlap-element {
|
|
160
|
+
position: relative;
|
|
161
|
+
z-index: 2;
|
|
162
|
+
margin-top: -3rem; /* pulls up into previous section */
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## 6. Common Mistakes
|
|
169
|
+
|
|
170
|
+
- Using inconsistent spacing values (17px here, 23px there)
|
|
171
|
+
- Centering everything on the page (creates a vertical highway with no anchor points)
|
|
172
|
+
- Not using max-width on content (text that spans 1400px is unreadable)
|
|
173
|
+
- Applying the same padding to all components regardless of their content
|
|
174
|
+
- Putting too many items in a row on mobile (three columns at 375px is almost never right)
|
|
175
|
+
- Using margin-top and margin-bottom on the same element (pick one direction, usually bottom, and stick with it throughout the project)
|
|
176
|
+
- Neglecting the space between the last element and the container edge
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# Typography Reference
|
|
2
|
+
|
|
3
|
+
## Table of Contents
|
|
4
|
+
1. Font Selection
|
|
5
|
+
2. Type Scale
|
|
6
|
+
3. Font Pairing
|
|
7
|
+
4. Line Height and Spacing
|
|
8
|
+
5. OpenType Features
|
|
9
|
+
6. Pixel and Display Fonts
|
|
10
|
+
7. Web Font Loading
|
|
11
|
+
8. Common Mistakes
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 1. Font Selection
|
|
16
|
+
|
|
17
|
+
### Banned Defaults
|
|
18
|
+
Never use these as primary typefaces: Inter, Roboto, Arial, Helvetica, system-ui, sans-serif (as the only declaration), Space Grotesk (overused in AI contexts), or any font that ships as a browser default.
|
|
19
|
+
|
|
20
|
+
### Where to Find Good Fonts
|
|
21
|
+
- Google Fonts: vast but requires curation. Sort by trending, not popular.
|
|
22
|
+
- Bunny Fonts: privacy-friendly Google Fonts mirror.
|
|
23
|
+
- Fontshare: free, high-quality fonts from Indian Type Foundry.
|
|
24
|
+
- Atipo Foundry: distinctive display and text faces.
|
|
25
|
+
- CDN: `https://fonts.cdnfonts.com` for broader selection.
|
|
26
|
+
|
|
27
|
+
### Selection Criteria
|
|
28
|
+
A good typeface for a project should:
|
|
29
|
+
- Match the emotional register of the content (a legal dashboard should not use a playful rounded sans)
|
|
30
|
+
- Have sufficient weight range (at minimum: regular, medium, bold)
|
|
31
|
+
- Include tabular figures if displaying data
|
|
32
|
+
- Support the required character sets
|
|
33
|
+
- Feel distinct from the last 5 things you built
|
|
34
|
+
|
|
35
|
+
### The Geist System
|
|
36
|
+
Vercel's Geist family offers three complementary typefaces:
|
|
37
|
+
- **Geist Sans**: clean, geometric sans for UI text
|
|
38
|
+
- **Geist Mono**: monospaced for code and data
|
|
39
|
+
- **Geist Pixel**: bitmap-inspired display font with 5 variants (Square, Grid, Circle, Triangle, Line), useful for banners, experimental layouts, and product moments where typography becomes part of the interface language
|
|
40
|
+
|
|
41
|
+
Install via `npm i geist`. Each variant has its own CSS variable (e.g., `--font-geist-pixel-square`).
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 2. Type Scale
|
|
46
|
+
|
|
47
|
+
Use a modular scale. Pick a ratio and apply it consistently.
|
|
48
|
+
|
|
49
|
+
| Ratio | Name | Use Case |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| 1.125 | Major Second | Dense data UIs, admin panels |
|
|
52
|
+
| 1.200 | Minor Third | General purpose, balanced |
|
|
53
|
+
| 1.250 | Major Third | Most common, works broadly |
|
|
54
|
+
| 1.333 | Perfect Fourth | Editorial, generous spacing |
|
|
55
|
+
| 1.500 | Perfect Fifth | Display-heavy, marketing |
|
|
56
|
+
| 1.618 | Golden Ratio | High-impact landing pages |
|
|
57
|
+
|
|
58
|
+
### Calculating Sizes
|
|
59
|
+
Base size: 16px (1rem). Multiply up for headings, divide down for captions.
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
Caption: 0.75rem (12px)
|
|
63
|
+
Small: 0.875rem (14px)
|
|
64
|
+
Body: 1rem (16px)
|
|
65
|
+
Large: 1.125rem (18px)
|
|
66
|
+
H4: 1.25rem (20px)
|
|
67
|
+
H3: 1.563rem (25px)
|
|
68
|
+
H2: 1.953rem (31px)
|
|
69
|
+
H1: 2.441rem (39px)
|
|
70
|
+
Display: 3.052rem (49px)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
For fluid type, use `clamp()`:
|
|
74
|
+
```css
|
|
75
|
+
h1 { font-size: clamp(2rem, 5vw + 1rem, 3.5rem); }
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 3. Font Pairing
|
|
81
|
+
|
|
82
|
+
### Principles
|
|
83
|
+
- Pair fonts with contrasting structures: a serif display with a sans body, or a geometric sans heading with a humanist sans body.
|
|
84
|
+
- Never pair fonts that are too similar (two geometric sans faces will fight).
|
|
85
|
+
- One display font is enough. Two is almost always too many.
|
|
86
|
+
- The body font does the heavy lifting. It must be supremely readable at 16px.
|
|
87
|
+
|
|
88
|
+
### Proven Pairs
|
|
89
|
+
- **Display serif + sans body**: Playfair Display / Source Sans 3
|
|
90
|
+
- **Geometric sans + humanist sans**: Outfit / Nunito Sans
|
|
91
|
+
- **Slab + grotesque**: Zilla Slab / Work Sans
|
|
92
|
+
- **Monospace accent + sans body**: JetBrains Mono / DM Sans
|
|
93
|
+
- **Variable display + clean body**: Instrument Serif / Instrument Sans
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## 4. Line Height and Spacing
|
|
98
|
+
|
|
99
|
+
| Context | Line Height | Letter Spacing |
|
|
100
|
+
|---|---|---|
|
|
101
|
+
| Body text | 1.5 to 1.6 | 0 to 0.01em |
|
|
102
|
+
| Headings (large) | 1.1 to 1.2 | -0.02 to -0.01em |
|
|
103
|
+
| Headings (small) | 1.2 to 1.3 | 0 |
|
|
104
|
+
| Captions | 1.4 | 0.02 to 0.05em |
|
|
105
|
+
| All caps text | 1.2 | 0.08 to 0.15em |
|
|
106
|
+
| Monospace/code | 1.5 to 1.7 | 0 |
|
|
107
|
+
|
|
108
|
+
### Paragraph Spacing
|
|
109
|
+
Use margin-bottom on paragraphs, not margin-top. Space between paragraphs should equal roughly the line-height value (1.5em works well). Never use `<br>` for spacing.
|
|
110
|
+
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
## 5. OpenType Features
|
|
114
|
+
|
|
115
|
+
When the font supports them, enable:
|
|
116
|
+
```css
|
|
117
|
+
.body-text {
|
|
118
|
+
font-feature-settings: "liga" 1, "kern" 1;
|
|
119
|
+
font-variant-ligatures: common-ligatures;
|
|
120
|
+
}
|
|
121
|
+
.data-table {
|
|
122
|
+
font-variant-numeric: tabular-nums;
|
|
123
|
+
}
|
|
124
|
+
.legal-text {
|
|
125
|
+
font-variant-numeric: oldstyle-nums;
|
|
126
|
+
}
|
|
127
|
+
.heading {
|
|
128
|
+
font-feature-settings: "ss01" 1; /* Stylistic set */
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
## 6. Pixel and Display Fonts
|
|
135
|
+
|
|
136
|
+
Pixel fonts are useful for specific moments: retro interfaces, game UIs, terminal aesthetics, or when the digital nature of the medium should be emphasized. They are not novelty fonts when used with system thinking.
|
|
137
|
+
|
|
138
|
+
Key principles for pixel fonts:
|
|
139
|
+
- Only use at sizes that align with the pixel grid (multiples of the font's design size)
|
|
140
|
+
- Disable anti-aliasing for crisp rendering: `font-smooth: never; -webkit-font-smoothing: none;`
|
|
141
|
+
- Pair with a clean sans for body text
|
|
142
|
+
- Use for headings, labels, badges, or UI accents, not paragraphs
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 7. Web Font Loading
|
|
147
|
+
|
|
148
|
+
Use `font-display: swap` to prevent invisible text during load. Preload critical fonts:
|
|
149
|
+
|
|
150
|
+
```html
|
|
151
|
+
<link rel="preload" href="/fonts/display.woff2" as="font" type="font/woff2" crossorigin>
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Subset fonts to the characters actually used. For Google Fonts, append `&text=` with the specific characters or use `&subset=latin`.
|
|
155
|
+
|
|
156
|
+
Self-host when possible. CDN fonts introduce a third-party dependency and a DNS lookup.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## 8. Common Mistakes
|
|
161
|
+
|
|
162
|
+
- Using more than 3 font families on a page
|
|
163
|
+
- Setting body text below 16px on desktop or 14px on mobile
|
|
164
|
+
- Applying letter-spacing to body text (it reduces readability)
|
|
165
|
+
- Using light (300) font weight for body text on low-contrast backgrounds
|
|
166
|
+
- Centering long paragraphs (center alignment works for 1-2 lines maximum)
|
|
167
|
+
- Forgetting to set `max-width` on text blocks (ideal: 60-75 characters per line, roughly 600-750px)
|
|
168
|
+
- Using all caps for more than a few words without increasing letter-spacing
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: picasso
|
|
3
|
+
description: >
|
|
4
|
+
The ultimate frontend design and UI engineering skill. Use this whenever the user asks to build, design, style, or improve any web interface, component, page, application, dashboard, landing page, artifact, poster, or visual output. Covers typography, color systems, spatial design, motion/animation, interaction design, responsive layouts, sound design, haptic feedback, icon systems, generative art, theming, React best practices, and DESIGN.md system generation. Also use when the user asks to audit, critique, polish, simplify, animate, or normalize a frontend. Triggers on any mention of "make it look good," "fix the design," "UI," "UX," "frontend," "component," "landing page," "dashboard," "artifact," "poster," "design system," "theme," "animation," "responsive," or any request to improve visual quality. Use this skill even when the user does not explicitly ask for design help but the task involves producing a visual interface.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Picasso
|
|
8
|
+
|
|
9
|
+
The ultimate design skill for producing distinctive, production-grade frontend interfaces, visual artifacts, and design systems. This skill consolidates best practices from Anthropic's frontend-design, canvas-design, algorithmic-art, and theme-factory skills, Impeccable's 7-domain reference system, VoltAgent's DESIGN.md format, Vercel's React and typography standards, and specialized libraries for sound, haptics, icons, and text animation.
|
|
10
|
+
|
|
11
|
+
Every output should look like it was built by a senior design engineer who spent days refining it, not generated by an AI in seconds.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Configurable Settings
|
|
16
|
+
|
|
17
|
+
These three dials (1-10) control the overall character of the output. Adjust based on what is being built. The user can set these explicitly or they can be inferred from context.
|
|
18
|
+
|
|
19
|
+
- **DESIGN_VARIANCE** (default: 6) — How experimental the layout is. 1-3: clean, centered, conventional. 4-6: considered asymmetry, intentional breaks. 7-10: avant-garde, overlapping elements, unconventional grids.
|
|
20
|
+
- **MOTION_INTENSITY** (default: 5) — How much animation is present. 1-3: hover states and fades only. 4-6: staggered reveals, scroll-triggered, text morphing. 7-10: magnetic cursors, parallax, complex choreography.
|
|
21
|
+
- **VISUAL_DENSITY** (default: 5) — How much content fits on one screen. 1-3: spacious, luxury, breathing room. 4-6: balanced, structured whitespace. 7-10: dense dashboards, data-heavy, compact.
|
|
22
|
+
|
|
23
|
+
When the user says "make it premium" or "luxury feel," drop VISUAL_DENSITY to 2-3 and MOTION_INTENSITY to 4-5. When they say "dashboard" or "admin panel," raise VISUAL_DENSITY to 7-8. When they say "make it pop" or "wow factor," raise DESIGN_VARIANCE and MOTION_INTENSITY to 7-8.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Step 0: Read the Right References
|
|
28
|
+
|
|
29
|
+
Before writing any code, read the reference files relevant to the task. Each covers a domain in depth with rules, examples, and anti-patterns. Load only what you need.
|
|
30
|
+
|
|
31
|
+
| Reference File | When to Read |
|
|
32
|
+
|---|---|
|
|
33
|
+
| `references/typography.md` | Any task involving text, fonts, headings, or type hierarchy |
|
|
34
|
+
| `references/color-and-contrast.md` | Color palettes, dark mode, accessibility, tinted neutrals |
|
|
35
|
+
| `references/spatial-design.md` | Layout, spacing, grids, visual hierarchy, whitespace |
|
|
36
|
+
| `references/motion-and-animation.md` | Transitions, scroll effects, text morphing, micro-interactions |
|
|
37
|
+
| `references/interaction-design.md` | Forms, focus states, loading, empty states, error handling |
|
|
38
|
+
| `references/responsive-design.md` | Mobile-first, fluid, container queries, touch targets |
|
|
39
|
+
| `references/sensory-design.md` | UI sound effects, haptic feedback, multi-sensory interfaces |
|
|
40
|
+
| `references/react-patterns.md` | React/Next.js component architecture, hooks, performance |
|
|
41
|
+
| `references/anti-patterns.md` | Explicit list of what NOT to do (the most important reference) |
|
|
42
|
+
| `references/design-system.md` | Generating DESIGN.md files, theming, systematic tokens |
|
|
43
|
+
| `references/generative-art.md` | Algorithmic art, p5.js, seeded randomness, flow fields |
|
|
44
|
+
| `references/component-patterns.md` | Standard component naming, taxonomy, and state patterns |
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Step 1: Design Thinking
|
|
49
|
+
|
|
50
|
+
Before writing a single line of code, answer these questions internally:
|
|
51
|
+
|
|
52
|
+
**Purpose.** What problem does this interface solve? Who uses it? What is the single most important action?
|
|
53
|
+
|
|
54
|
+
**Tone.** Commit to a specific aesthetic direction. Not "clean and modern" (that is meaningless). Pick something with teeth: brutalist, editorial, retro-terminal, luxury serif, toy-like, industrial, organic, Swiss grid, art deco, vaporwave, newspaper broadsheet, scientific journal, or something entirely original. The direction should be informed by the content, not applied generically.
|
|
55
|
+
|
|
56
|
+
**Differentiation.** What makes this unforgettable? What is the one thing someone will remember after closing the tab? If there is no answer, the design is not ready.
|
|
57
|
+
|
|
58
|
+
**Constraints.** Framework requirements, accessibility targets, performance budgets, existing design tokens.
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Step 2: Aesthetic Execution
|
|
63
|
+
|
|
64
|
+
### Typography
|
|
65
|
+
|
|
66
|
+
Choose fonts that are distinctive, not default. Never use Inter, Roboto, Arial, or system fonts as primary choices. Pair a display font with a body font. Use a modular type scale (1.25 or 1.333 ratio). Set line heights between 1.4 and 1.6 for body text. Use OpenType features (ligatures, tabular numbers, small caps) when the font supports them. See `references/typography.md` for the full system.
|
|
67
|
+
|
|
68
|
+
### Color
|
|
69
|
+
|
|
70
|
+
Build palettes with intention. Use OKLCH for perceptually uniform color manipulation. Always tint neutrals (never use pure gray or pure black). Dominant color with sharp accent outperforms evenly distributed palettes. Test contrast ratios: 4.5:1 minimum for body text, 3:1 for large text and UI elements. See `references/color-and-contrast.md`.
|
|
71
|
+
|
|
72
|
+
### Spatial Composition
|
|
73
|
+
|
|
74
|
+
Use a spacing scale (4px base: 4, 8, 12, 16, 24, 32, 48, 64, 96). Asymmetric layouts, overlapping elements, diagonal flow, and grid-breaking moments create visual interest. Generous negative space communicates confidence. Dense layouts need careful rhythm. See `references/spatial-design.md`.
|
|
75
|
+
|
|
76
|
+
### Backgrounds and Visual Depth
|
|
77
|
+
|
|
78
|
+
Never default to flat solid colors. Create atmosphere with gradient meshes, noise textures, geometric patterns, layered transparencies, dramatic shadows, grain overlays, or subtle backdrop filters. Depth comes from elevation systems: consistent shadow scales, surface hierarchy, and z-index discipline.
|
|
79
|
+
|
|
80
|
+
### Motion
|
|
81
|
+
|
|
82
|
+
One well-orchestrated page load with staggered reveals (using animation-delay) creates more impact than scattered micro-interactions. Use CSS transitions for simple state changes. Use `framer-motion` or the Motion library for React when choreography matters. Never use bounce or elastic easing (it looks dated). Respect `prefers-reduced-motion`. See `references/motion-and-animation.md`.
|
|
83
|
+
|
|
84
|
+
### Text Animation
|
|
85
|
+
|
|
86
|
+
For text morphing effects (counters, status changes, tab labels), use `torph` (dependency-free, works with React/Vue/Svelte). Import as `import { TextMorph } from 'torph/react'` and wrap any text that changes dynamically.
|
|
87
|
+
|
|
88
|
+
### Sound
|
|
89
|
+
|
|
90
|
+
For UI sound feedback (clicks, notifications, transitions), use the soundcn pattern: inline base64 audio data URIs with a `useSound` hook via Web Audio API. Zero dependencies. See `references/sensory-design.md`.
|
|
91
|
+
|
|
92
|
+
### Haptics
|
|
93
|
+
|
|
94
|
+
For mobile web, use the WebHaptics pattern via the Vibration API (`navigator.vibrate()`) to provide tactile feedback on button presses, toggles, and destructive actions. Always gate behind feature detection and user preference. See `references/sensory-design.md`.
|
|
95
|
+
|
|
96
|
+
### Icons
|
|
97
|
+
|
|
98
|
+
Use Lucide React as the default icon library (`lucide-react`). For broader searches across 200K+ icons from 150+ collections, use the `better-icons` CLI pattern: search by keyword, retrieve SVG, sync to project. Prefer outline style for UI, solid for emphasis.
|
|
99
|
+
|
|
100
|
+
### Avatars and Identity
|
|
101
|
+
|
|
102
|
+
For deterministic avatar generation from strings (usernames, emails, UUIDs), use the Facehash pattern: a React component that generates unique face avatars. Same input always produces the same face. Zero external assets.
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Step 3: Implementation Standards
|
|
107
|
+
|
|
108
|
+
### Single-File Artifacts
|
|
109
|
+
|
|
110
|
+
When building for claude.ai artifacts (HTML or React), everything goes in one file. No external CSS files, no separate JS. Inline everything. For HTML artifacts, import external scripts only from `https://cdnjs.cloudflare.com`. For React artifacts, use only available libraries (lucide-react, recharts, d3, Three.js r128, Tone, shadcn/ui, Tailwind core utilities, lodash, mathjs, papaparse, Chart.js).
|
|
111
|
+
|
|
112
|
+
### React Best Practices
|
|
113
|
+
|
|
114
|
+
Follow these rules (see `references/react-patterns.md` for details):
|
|
115
|
+
|
|
116
|
+
- Server Components by default, `'use client'` only when needed
|
|
117
|
+
- Colocate state with the component that uses it
|
|
118
|
+
- Prefer composition over prop drilling
|
|
119
|
+
- Use `Suspense` boundaries with meaningful fallbacks
|
|
120
|
+
- Never store derived state, compute it during render
|
|
121
|
+
- Use semantic HTML elements, not `div` soup
|
|
122
|
+
- Memoize expensive computations, not everything
|
|
123
|
+
- Default export for page/route components, named exports for utilities
|
|
124
|
+
|
|
125
|
+
### CSS Variables for Theming
|
|
126
|
+
|
|
127
|
+
Always define a CSS variable system for colors, spacing, typography, and shadows. This makes themes swappable and dark mode trivial.
|
|
128
|
+
|
|
129
|
+
```css
|
|
130
|
+
:root {
|
|
131
|
+
--color-surface: #fafaf9;
|
|
132
|
+
--color-text: #1c1917;
|
|
133
|
+
--color-accent: #dc2626;
|
|
134
|
+
--radius: 8px;
|
|
135
|
+
--shadow-sm: 0 1px 2px oklch(0% 0 0 / 0.05);
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Accessibility Defaults
|
|
140
|
+
|
|
141
|
+
Every interface must include: visible focus indicators (never `outline: none` without replacement), sufficient color contrast, keyboard navigability, ARIA labels on interactive elements without visible text, and `alt` text on meaningful images. Do not treat accessibility as optional.
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Step 4: Audit and Polish
|
|
146
|
+
|
|
147
|
+
Before delivering any interface, run this mental checklist:
|
|
148
|
+
|
|
149
|
+
1. **Typography audit.** Is there a clear type hierarchy? Are fonts loaded and rendering? Is body text readable at default zoom?
|
|
150
|
+
2. **Color audit.** Does the palette feel cohesive? Do accents draw the eye to the right places? Does it work in both light and dark contexts?
|
|
151
|
+
3. **Spatial audit.** Is spacing consistent? Are elements aligned to an invisible grid? Is there breathing room?
|
|
152
|
+
4. **Interaction audit.** Do all interactive elements have hover, focus, and active states? Are transitions smooth? Is there loading feedback?
|
|
153
|
+
5. **Responsive audit.** Does it work on 375px wide screens? Does it scale gracefully to ultrawide?
|
|
154
|
+
6. **Motion audit.** Does the page load feel choreographed? Are transitions purposeful? Does `prefers-reduced-motion` disable non-essential animation?
|
|
155
|
+
7. **Accessibility audit.** Can you tab through the entire interface? Are contrast ratios sufficient? Do screen readers make sense of the structure?
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Step 5: Design System Generation
|
|
160
|
+
|
|
161
|
+
When asked to create a design system or DESIGN.md, follow the VoltAgent/Stitch format. See `references/design-system.md` for the complete template covering: visual theme and atmosphere, color palette with semantic roles, typography hierarchy, component styling (buttons, cards, inputs, navigation with states), layout principles, depth and elevation system, explicit dos and don'ts, responsive behavior, and an agent prompt guide.
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## Step 6: Generative and Canvas Art
|
|
166
|
+
|
|
167
|
+
When the task involves algorithmic art, generative visuals, or static poster/print design, see `references/generative-art.md`. The process: write an algorithmic philosophy (4-6 paragraphs), then express it through p5.js code with seeded randomness, parameter controls, and seed navigation.
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## Commands
|
|
172
|
+
|
|
173
|
+
These optional directives can be used to steer design refinement:
|
|
174
|
+
|
|
175
|
+
| Command | Effect |
|
|
176
|
+
|---|---|
|
|
177
|
+
| `/audit` | Technical quality check: accessibility, performance, responsive |
|
|
178
|
+
| `/critique` | UX design review: hierarchy, clarity, emotional resonance |
|
|
179
|
+
| `/polish` | Final pass: refine spacing, transitions, copy |
|
|
180
|
+
| `/simplify` | Strip to essence, remove visual noise |
|
|
181
|
+
| `/animate` | Add purposeful motion and transitions |
|
|
182
|
+
| `/bolder` | Amplify timid designs with stronger visual choices |
|
|
183
|
+
| `/quieter` | Tone down overly aggressive designs |
|
|
184
|
+
| `/normalize` | Align with design system standards |
|
|
185
|
+
| `/theme` | Generate or apply a color/font theme |
|
|
186
|
+
| `/sound` | Add UI sound effects to interactions |
|
|
187
|
+
| `/haptics` | Add haptic feedback for mobile web |
|
|
188
|
+
| `/redesign` | Audit an existing project, identify design problems, fix them systematically |
|
|
189
|
+
| `/soft` | Apply premium soft aesthetic: generous whitespace, depth, smooth spring animations |
|
|
190
|
+
| `/minimalist` | Apply editorial minimalism: monochrome, crisp borders, inspired by Linear/Notion |
|
|
191
|
+
| `/brutalist` | Apply raw mechanical aesthetic: Swiss typography meets CRT terminal |
|
|
192
|
+
| `/stitch` | Generate a Google Stitch-compatible DESIGN.md for the current project |
|
|
193
|
+
|
|
194
|
+
---
|
|
195
|
+
|
|
196
|
+
## The Non-Negotiables
|
|
197
|
+
|
|
198
|
+
1. No design should ever look like "AI made this." No purple gradients on white. No Inter font. No centered everything. No cards nested in cards. No gray text on colored backgrounds.
|
|
199
|
+
2. Every design must have a clear aesthetic point of view. If it could belong to any product, it belongs to none.
|
|
200
|
+
3. Match implementation complexity to vision. Maximalist designs need elaborate code. Minimalist designs need surgical precision. Both require the same level of care.
|
|
201
|
+
4. Text is always a design element, never an afterthought.
|
|
202
|
+
5. Every detail matters. The shadow radius, the letter spacing, the hover transition duration, the border color in dark mode. These are not small decisions.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Anti-Patterns Reference
|
|
2
|
+
|
|
3
|
+
This is the most important reference file. These are the patterns that make AI-generated interfaces immediately recognizable. Avoid all of them.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Typography Anti-Patterns
|
|
8
|
+
|
|
9
|
+
- **Inter everywhere.** The default safe choice. It signals "I did not think about fonts."
|
|
10
|
+
- **Roboto, Arial, Helvetica, system-ui as primary.** Same problem.
|
|
11
|
+
- **Space Grotesk on repeat.** Overused in AI/crypto contexts. Pick something else.
|
|
12
|
+
- **Light (300) weight for body text.** Hard to read on most screens.
|
|
13
|
+
- **Centered paragraphs.** Center alignment works for 1-2 lines (headings, quotes). Never for body text.
|
|
14
|
+
- **No max-width on text.** Lines spanning 1400px are unreadable. Cap at 600-750px for body text.
|
|
15
|
+
- **All caps without letter-spacing.** All-caps text needs 0.08-0.15em spacing to be legible.
|
|
16
|
+
- **More than 3 font families.** Two is ideal. Three is the maximum.
|
|
17
|
+
- **Font size under 14px for body text.** Especially on mobile.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Color Anti-Patterns
|
|
22
|
+
|
|
23
|
+
- **Purple gradient on white background.** The signature AI slop aesthetic.
|
|
24
|
+
- **Pure black text (#000000).** Always use tinted near-black (e.g., oklch(0.15 0.02 260)).
|
|
25
|
+
- **Pure gray (#808080, #cccccc).** Always tint neutrals toward the palette hue.
|
|
26
|
+
- **Gray text on colored backgrounds.** Creates low contrast and looks washed out.
|
|
27
|
+
- **Full-saturation brand colors for large surfaces.** Reserve maximum chroma for small accents. Large areas need reduced saturation.
|
|
28
|
+
- **Too many accent colors.** One primary, one secondary maximum. More creates visual chaos.
|
|
29
|
+
- **Using opacity instead of actual color values.** opacity:0.5 on colored elements creates inconsistent results depending on background.
|
|
30
|
+
- **No dark mode consideration.** Even if not implementing dark mode, design with the possibility in mind.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Layout Anti-Patterns
|
|
35
|
+
|
|
36
|
+
- **Everything centered vertically and horizontally.** Creates a lifeless vertical highway. Use left-aligned content with intentional centering for specific elements.
|
|
37
|
+
- **Cards nested inside cards.** One level of card is usually enough. Nesting creates visual confusion about hierarchy.
|
|
38
|
+
- **Wrapping everything in cards.** Not every piece of content needs a container with rounded corners and a shadow. Sometimes flat sections, dividers, or whitespace work better.
|
|
39
|
+
- **Uniform rounded corners on everything.** Vary border-radius by context: pills for tags (999px), subtle rounding for cards (8-12px), sharper for data elements (4px).
|
|
40
|
+
- **Equal spacing everywhere.** Groups need tighter internal spacing and wider external spacing. Without this, there is no visual structure.
|
|
41
|
+
- **Three or four equal columns at every breakpoint.** Asymmetric grids (2:1, 3:2) are more interesting and create clearer hierarchy.
|
|
42
|
+
- **Content that could belong to any product.** If the layout has no personality, the design is not done.
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Motion Anti-Patterns
|
|
47
|
+
|
|
48
|
+
- **Bounce/elastic easing.** Feels dated and gimmicky. Use ease-out curves.
|
|
49
|
+
- **Animating everything on the page.** Creates visual noise. Animate the important moments.
|
|
50
|
+
- **transition: all 0.3s.** Animates properties you did not intend. Be specific: `transition: opacity 0.2s, transform 0.3s`.
|
|
51
|
+
- **No loading feedback.** User clicks a button and nothing happens for 2 seconds. Always show progress.
|
|
52
|
+
- **Spinner for content areas.** Use skeleton screens instead. Spinners should be reserved for small inline actions.
|
|
53
|
+
- **Animation without prefers-reduced-motion handling.** Always provide a reduced-motion path.
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Interaction Anti-Patterns
|
|
58
|
+
|
|
59
|
+
- **Placeholder text as the only label.** Disappears on focus. Inaccessible.
|
|
60
|
+
- **outline: none without replacement.** Keyboard users lose all orientation.
|
|
61
|
+
- **Hover-only interactions.** Must have keyboard and touch equivalents.
|
|
62
|
+
- **Custom scrollbars that break native behavior.** Users expect scrolling to work natively.
|
|
63
|
+
- **Toast notifications for errors.** They disappear. Use inline error messages instead.
|
|
64
|
+
- **Alert/confirm dialogs for minor actions.** Blocking the entire page for "Are you sure?" on non-destructive actions.
|
|
65
|
+
- **No focus trapping in modals.** Tab key escapes the modal and the user gets lost.
|
|
66
|
+
- **Links that look like buttons and buttons that look like links.** Use the correct element for the correct purpose.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Code Anti-Patterns
|
|
71
|
+
|
|
72
|
+
- **div soup.** Use semantic HTML: nav, main, section, article, aside, header, footer.
|
|
73
|
+
- **Inline styles for everything.** Use CSS variables, modules, or Tailwind. Inline styles cannot be overridden or themed.
|
|
74
|
+
- **!important everywhere.** If specificity requires !important, the CSS architecture is broken.
|
|
75
|
+
- **z-index: 9999.** Use a z-index scale (1, 10, 20, 30...) with named CSS variables.
|
|
76
|
+
- **Fixed pixel values for everything.** Use rem for typography and spacing, em for component-internal sizing, px only for borders and shadows.
|
|
77
|
+
- **console.log left in production.** Clean it up.
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Content Anti-Patterns
|
|
82
|
+
|
|
83
|
+
- **"Lorem ipsum" in final deliverables.** Use real or realistic content. Design without content is decoration.
|
|
84
|
+
- **Stock photo people smiling at laptops.** If using imagery, make it contextual.
|
|
85
|
+
- **"Click here" link text.** Links should describe their destination: "View documentation" not "Click here".
|
|
86
|
+
- **"Submit" button text.** Use the specific action: "Create account", "Send message", "Save changes".
|
|
87
|
+
- **Walls of text without hierarchy.** Break content with headings, spacing, and visual rhythm.
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## The Overall Pattern to Avoid
|
|
92
|
+
|
|
93
|
+
The "AI slop" aesthetic is recognizable by its combination of: Inter/Roboto font, purple/blue gradient accents, evenly spaced centered layouts, uniform card grids with identical rounded corners, and generic stock imagery. Any single element might be fine in isolation. Together, they signal "an AI made this with zero human judgment."
|
|
94
|
+
|
|
95
|
+
The antidote is intentionality. Every choice (font, color, spacing, layout, animation) should be a conscious decision tied to the specific context of what you are building.
|