picasso-skill 2.5.0 → 2.6.1
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/agents/picasso.md +4 -6
- package/commands/mood.md +3 -2
- package/commands/preset.md +2 -2
- package/commands/preview.md +3 -3
- package/commands/variants.md +3 -4
- package/package.json +1 -1
- package/references/accessibility-wcag.md +3 -0
- package/references/code-typography.md +36 -166
- package/references/color-and-contrast.md +78 -345
- package/references/generative-art.md +49 -561
- package/references/modern-css-performance.md +46 -258
- package/references/motion-and-animation.md +225 -88
- package/references/navigation-patterns.md +29 -186
- package/references/performance-optimization.md +42 -678
- package/references/react-patterns.md +56 -216
- package/references/responsive-design.md +77 -379
- package/references/sensory-design.md +62 -263
- package/references/ux-writing.md +64 -354
- package/references/visual-preview.md +17 -9
- package/references/animation-performance.md +0 -244
- package/references/interaction-design.md +0 -162
package/agents/picasso.md
CHANGED
|
@@ -83,7 +83,7 @@ This is what makes Picasso different from every other design tool. Generate a ga
|
|
|
83
83
|
|
|
84
84
|
5. Also generate a single `/tmp/picasso-gallery/index.html` that shows a thumbnail grid of all samples -- each as a small card (200px wide) with the sample number and the key differentiator (font name + primary color + one-word mood).
|
|
85
85
|
|
|
86
|
-
6.
|
|
86
|
+
6. Screenshot via Bash: `npx playwright screenshot /tmp/picasso-gallery/index.html /tmp/picasso-gallery.png --viewport-size=1200,800`. View: `Read /tmp/picasso-gallery.png`.
|
|
87
87
|
|
|
88
88
|
7. Present: "Here are {N} directions for your app. React to what you see -- which ones do you like? Which do you hate? Anything close but needs tweaking? You can also open `/tmp/picasso-gallery/index.html` in your browser to browse them all."
|
|
89
89
|
|
|
@@ -158,7 +158,7 @@ Do NOT jump to code. Present a **Design Brief** -- a short, opinionated creative
|
|
|
158
158
|
- Generate a self-contained HTML page showing a representative layout in the committed design tokens (nav + hero + card + buttons + input)
|
|
159
159
|
- Use the Full Page Mood Preview structure from `references/visual-preview.md`
|
|
160
160
|
- Write to `/tmp/picasso-brief-preview.html`
|
|
161
|
-
-
|
|
161
|
+
- Screenshot via Bash: `npx playwright screenshot /tmp/picasso-brief-preview.html /tmp/picasso-brief-preview.png --viewport-size=1200,800`. View with `Read`.
|
|
162
162
|
- Present alongside the text brief: "Here's what I'm proposing -- the reasoning and a visual preview."
|
|
163
163
|
|
|
164
164
|
4. **Generate `.picasso.md`** from the answers and save to project root.
|
|
@@ -169,7 +169,7 @@ Do NOT jump to code. Present a **Design Brief** -- a short, opinionated creative
|
|
|
169
169
|
|
|
170
170
|
After the user confirms the brief, load the SPECIFIC reference files for what they selected. Do not load all 30+ references. Load only what's relevant:
|
|
171
171
|
|
|
172
|
-
- Selected motion Tier 2+? Load `motion-and-animation.md` + `micro-interactions.md`
|
|
172
|
+
- Selected motion Tier 2+? Load `motion-and-animation.md` + `micro-interactions.md`
|
|
173
173
|
- Selected sounds? Load `sensory-design.md` (Section 1: UI Sound Design)
|
|
174
174
|
- Selected haptics? Load `sensory-design.md` (Section 2: Haptic Feedback)
|
|
175
175
|
- Selected animated icons? Load `micro-interactions.md` (Section 5: Toggle and Switch Animations)
|
|
@@ -288,10 +288,8 @@ skills/picasso/references/typography.md # Fonts, scales, pairing
|
|
|
288
288
|
skills/picasso/references/color-and-contrast.md # OKLCH, tinted neutrals
|
|
289
289
|
skills/picasso/references/spatial-design.md # Spacing, grids, hierarchy
|
|
290
290
|
skills/picasso/references/depth-and-elevation.md # Shadows, z-index, layering
|
|
291
|
-
skills/picasso/references/motion-and-animation.md # Easing, staggering, duration
|
|
291
|
+
skills/picasso/references/motion-and-animation.md # Easing, staggering, duration, performance (compositor props, will-change, contain)
|
|
292
292
|
skills/picasso/references/micro-interactions.md # Scroll animations, gestures, View Transitions
|
|
293
|
-
skills/picasso/references/animation-performance.md # Compositor props, will-change, contain
|
|
294
|
-
skills/picasso/references/interaction-design.md # Forms, focus, states, Popover API
|
|
295
293
|
skills/picasso/references/navigation-patterns.md # Breadcrumbs, sidebar, tabs, bottom bar
|
|
296
294
|
skills/picasso/references/tables-and-forms.md # Sortable tables, validation, multi-step
|
|
297
295
|
skills/picasso/references/loading-and-states.md # Skeletons, empty states, error boundaries
|
package/commands/mood.md
CHANGED
|
@@ -35,7 +35,8 @@ If no mood word is provided, ask the user for one.
|
|
|
35
35
|
- Footer with muted text
|
|
36
36
|
- Load fonts using the Font Mapping table from `references/visual-preview.md`
|
|
37
37
|
- Write to `/tmp/picasso-mood-{word}.html`
|
|
38
|
-
-
|
|
38
|
+
- Screenshot via Bash: `npx playwright screenshot /tmp/picasso-mood-{word}.html /tmp/picasso-mood-{word}.png --viewport-size=1200,800`
|
|
39
|
+
- View: `Read /tmp/picasso-mood-{word}.png`
|
|
39
40
|
- Present to user: "This is what '{word}' looks like as a design system. Does this feel right, or should I adjust?"
|
|
40
41
|
|
|
41
42
|
3. **Wait for confirmation.** Do not write `.picasso.md` or `DESIGN.md` until the user approves the visual direction.
|
|
@@ -48,4 +49,4 @@ If no mood word is provided, ask the user for one.
|
|
|
48
49
|
|
|
49
50
|
- Never write config files before showing the visual preview
|
|
50
51
|
- If the user says "adjust" or "not quite", iterate on the tokens and regenerate the preview
|
|
51
|
-
- If
|
|
52
|
+
- If npx playwright is unavailable, write the HTML and tell user the path to open manually
|
package/commands/preset.md
CHANGED
|
@@ -21,7 +21,7 @@ The preset name: `$ARGUMENTS`
|
|
|
21
21
|
- Each card: preset name (in its heading font), 5-swatch color palette strip, one-line mood description, a sample button in the preset's primary color and radius
|
|
22
22
|
- Card backgrounds use the preset's surface color, text uses its text color
|
|
23
23
|
3. Write to `/tmp/picasso-preset-browser.html`
|
|
24
|
-
4.
|
|
24
|
+
4. Screenshot via Bash: `npx playwright screenshot /tmp/picasso-preset-browser.html /tmp/picasso-preset-browser.png --viewport-size=1200,800`, then view with `Read`
|
|
25
25
|
5. Present: "Here are all 22 presets. Which one catches your eye?"
|
|
26
26
|
6. Wait for the user to pick
|
|
27
27
|
|
|
@@ -41,4 +41,4 @@ The preset name: `$ARGUMENTS`
|
|
|
41
41
|
## Rules
|
|
42
42
|
|
|
43
43
|
- Never apply a preset without showing a visual preview first
|
|
44
|
-
- If
|
|
44
|
+
- If npx playwright is unavailable, write the HTML and give the user the file path
|
package/commands/preview.md
CHANGED
|
@@ -24,8 +24,8 @@ Generate and display visual previews of design options.
|
|
|
24
24
|
- Nav bar, hero section, card grid, form, footer
|
|
25
25
|
- All styled with the project's committed tokens
|
|
26
26
|
5. Write to `/tmp/picasso-preview.html`
|
|
27
|
-
6.
|
|
28
|
-
7.
|
|
27
|
+
6. Screenshot via Bash: `npx playwright screenshot /tmp/picasso-preview.html /tmp/picasso-preview.png --viewport-size=1200,800`
|
|
28
|
+
7. View: `Read /tmp/picasso-preview.png`
|
|
29
29
|
8. Present to user: "Here's what your current design tokens look like rendered. Open `/tmp/picasso-preview.html` in your browser for full resolution."
|
|
30
30
|
|
|
31
31
|
### `/preview <preset-name>`
|
|
@@ -47,6 +47,6 @@ Generate and display visual previews of design options.
|
|
|
47
47
|
## Rules
|
|
48
48
|
|
|
49
49
|
- Always load font URLs from the Font Mapping table in `references/visual-preview.md`
|
|
50
|
-
- If
|
|
50
|
+
- If npx playwright is unavailable, write the file and tell the user the path to open manually
|
|
51
51
|
- Never describe what the preview looks like without viewing the screenshot first
|
|
52
52
|
- The HTML must be fully self-contained (inline styles, external font imports only)
|
package/commands/variants.md
CHANGED
|
@@ -21,9 +21,8 @@ Generate 2-3 genuinely different aesthetic directions and show them as a side-by
|
|
|
21
21
|
- For each direction, render a preview card showing: color palette strip, nav bar, heading, body text, sample card, primary/secondary buttons, input field -- all in that direction's tokens
|
|
22
22
|
- Load fonts using the Font Mapping table from `references/visual-preview.md`
|
|
23
23
|
- Write the comparison HTML to `/tmp/picasso-variants.html`
|
|
24
|
-
-
|
|
25
|
-
-
|
|
26
|
-
- View the screenshot with the Read tool
|
|
24
|
+
- Screenshot via Bash: `npx playwright screenshot /tmp/picasso-variants.html /tmp/picasso-variants.png --viewport-size=1200,800`
|
|
25
|
+
- View the screenshot: `Read /tmp/picasso-variants.png`
|
|
27
26
|
6. Present the visual comparison to the user: "Here are the directions. Which speaks to you? Pick one, combine elements, or reject all."
|
|
28
27
|
7. Also tell the user: "Open `/tmp/picasso-variants.html` in your browser for full resolution."
|
|
29
28
|
|
|
@@ -33,5 +32,5 @@ Generate 2-3 genuinely different aesthetic directions and show them as a side-by
|
|
|
33
32
|
- No two directions can share the same heading font
|
|
34
33
|
- At least one direction must be surprising or unconventional
|
|
35
34
|
- Always include one "safe" option and one "bold" option
|
|
36
|
-
- Visual preview is MANDATORY, not optional. If
|
|
35
|
+
- Visual preview is MANDATORY, not optional. If npx playwright is unavailable, write the HTML file and tell the user the path to open manually.
|
|
37
36
|
- Never describe what the directions look like without viewing the screenshot first
|
package/package.json
CHANGED
|
@@ -86,6 +86,9 @@ Move focus to `<h1>` of new view (add `tabindex="-1"`) or main content landmark.
|
|
|
86
86
|
<main id="main" tabindex="-1">...</main>
|
|
87
87
|
```
|
|
88
88
|
|
|
89
|
+
### Focus Indicator Rule
|
|
90
|
+
Never remove focus outlines without replacement. Use `:focus-visible` (not `:focus`) to show focus rings only for keyboard navigation, not mouse clicks.
|
|
91
|
+
|
|
89
92
|
### Focus Trapping
|
|
90
93
|
Contain Tab/Shift+Tab within overlays. Use `inert` attribute on background content (modern browsers) or manage via JS. On last focusable element, Tab wraps to first.
|
|
91
94
|
|
|
@@ -1,16 +1,5 @@
|
|
|
1
1
|
# Code Typography Reference
|
|
2
2
|
|
|
3
|
-
## Table of Contents
|
|
4
|
-
1. Monospace Font Selection
|
|
5
|
-
2. Code Block Design
|
|
6
|
-
3. Syntax Highlighting Accessibility
|
|
7
|
-
4. Copy-to-Clipboard
|
|
8
|
-
5. Responsive Code Blocks
|
|
9
|
-
6. Inline Code Styling
|
|
10
|
-
7. Diff Views
|
|
11
|
-
8. Terminal Output
|
|
12
|
-
9. Common Mistakes
|
|
13
|
-
|
|
14
3
|
---
|
|
15
4
|
|
|
16
5
|
## 1. Monospace Font Selection
|
|
@@ -19,204 +8,85 @@
|
|
|
19
8
|
|---|---|---|---|
|
|
20
9
|
| JetBrains Mono | Yes | Clean, geometric | General purpose, IDEs |
|
|
21
10
|
| Fira Code | Yes | Slightly rounded | Tutorials, docs |
|
|
22
|
-
| Source Code Pro | No | Adobe, professional | Enterprise
|
|
11
|
+
| Source Code Pro | No | Adobe, professional | Enterprise |
|
|
23
12
|
| IBM Plex Mono | No | Corporate, legible | Documentation |
|
|
24
13
|
| Geist Mono | No | Vercel, modern | Next.js projects |
|
|
25
14
|
| Cascadia Code | Yes | Microsoft, playful | Terminals |
|
|
26
15
|
|
|
27
|
-
|
|
28
|
-
code, pre, .mono {
|
|
29
|
-
font-family: 'JetBrains Mono', 'Fira Code', 'Cascadia Code', 'Consolas', monospace;
|
|
30
|
-
font-feature-settings: 'liga' 1, 'calt' 1; /* enable ligatures */
|
|
31
|
-
font-variant-ligatures: common-ligatures;
|
|
32
|
-
}
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
Ligatures: `=>` becomes ⇒, `!==` becomes ≢, `>=` becomes ≥. Enable for display, disable for editing if users copy code.
|
|
16
|
+
Always specify a modern monospace font first, then fallback to `monospace`. Enable ligatures with `font-feature-settings: 'liga' 1, 'calt' 1` for display; disable for editing if users copy code.
|
|
36
17
|
|
|
37
18
|
---
|
|
38
19
|
|
|
39
20
|
## 2. Code Block Design
|
|
40
21
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
padding: 1rem 1.25rem;
|
|
47
|
-
font-size: 0.875rem; /* 14px — slightly smaller than body */
|
|
48
|
-
line-height: 1.65; /* Looser than body text for readability */
|
|
49
|
-
overflow-x: auto;
|
|
50
|
-
tab-size: 2;
|
|
51
|
-
-moz-tab-size: 2;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/* Dark mode code blocks on light sites */
|
|
55
|
-
[data-theme="light"] pre {
|
|
56
|
-
background: oklch(0.14 0.02 230);
|
|
57
|
-
color: oklch(0.90 0.01 230);
|
|
58
|
-
}
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
Line numbers (optional):
|
|
62
|
-
```css
|
|
63
|
-
pre.line-numbers {
|
|
64
|
-
counter-reset: line;
|
|
65
|
-
padding-left: 3.5rem;
|
|
66
|
-
position: relative;
|
|
67
|
-
}
|
|
68
|
-
pre.line-numbers .line::before {
|
|
69
|
-
counter-increment: line;
|
|
70
|
-
content: counter(line);
|
|
71
|
-
position: absolute;
|
|
72
|
-
left: 1rem;
|
|
73
|
-
color: var(--text-muted);
|
|
74
|
-
font-size: 0.75rem;
|
|
75
|
-
user-select: none; /* don't copy line numbers */
|
|
76
|
-
}
|
|
77
|
-
```
|
|
22
|
+
- Background: `var(--surface-1)` with 1px border, 8px radius
|
|
23
|
+
- Font size: 0.875rem (14px), line-height: 1.65 (looser than body for readability)
|
|
24
|
+
- `overflow-x: auto; tab-size: 2`
|
|
25
|
+
- Dark code blocks on light sites: `oklch(0.14 0.02 230)` background
|
|
26
|
+
- Line numbers: use CSS counters with `user-select: none` so they don't get copied
|
|
78
27
|
|
|
79
28
|
---
|
|
80
29
|
|
|
81
30
|
## 3. Syntax Highlighting Accessibility
|
|
82
31
|
|
|
83
|
-
Every token color must have **minimum 3:1 contrast** against the code block background. Don't rely on color alone
|
|
32
|
+
Every token color must have **minimum 3:1 contrast** against the code block background. Don't rely on color alone; use font-weight or font-style for emphasis.
|
|
84
33
|
|
|
85
|
-
| Token Type | Suggested OKLCH (dark bg) |
|
|
34
|
+
| Token Type | Suggested OKLCH (dark bg) | Style |
|
|
86
35
|
|---|---|---|
|
|
87
|
-
| Keywords | `oklch(0.75 0.15 300)` |
|
|
88
|
-
| Strings | `oklch(0.72 0.14 150)` |
|
|
89
|
-
| Numbers | `oklch(0.75 0.12 60)` |
|
|
90
|
-
| Comments | `oklch(0.50 0.01 230)` |
|
|
91
|
-
| Functions | `oklch(0.78 0.10 230)` |
|
|
92
|
-
| Variables | `oklch(0.85 0.01 230)` |
|
|
93
|
-
|
|
94
|
-
```css
|
|
95
|
-
.token-keyword { color: oklch(0.75 0.15 300); font-weight: 600; }
|
|
96
|
-
.token-string { color: oklch(0.72 0.14 150); }
|
|
97
|
-
.token-comment { color: oklch(0.50 0.01 230); font-style: italic; }
|
|
98
|
-
```
|
|
36
|
+
| Keywords | `oklch(0.75 0.15 300)` | bold |
|
|
37
|
+
| Strings | `oklch(0.72 0.14 150)` | normal |
|
|
38
|
+
| Numbers | `oklch(0.75 0.12 60)` | normal |
|
|
39
|
+
| Comments | `oklch(0.50 0.01 230)` | italic |
|
|
40
|
+
| Functions | `oklch(0.78 0.10 230)` | normal |
|
|
41
|
+
| Variables | `oklch(0.85 0.01 230)` | normal |
|
|
99
42
|
|
|
100
43
|
---
|
|
101
44
|
|
|
102
45
|
## 4. Copy-to-Clipboard
|
|
103
46
|
|
|
104
|
-
Position
|
|
105
|
-
|
|
106
|
-
```jsx
|
|
107
|
-
function CopyButton({ code }) {
|
|
108
|
-
const [copied, setCopied] = useState(false);
|
|
109
|
-
|
|
110
|
-
return (
|
|
111
|
-
<button
|
|
112
|
-
onClick={() => {
|
|
113
|
-
navigator.clipboard.writeText(code);
|
|
114
|
-
setCopied(true);
|
|
115
|
-
setTimeout(() => setCopied(false), 2000);
|
|
116
|
-
}}
|
|
117
|
-
className="absolute top-2 right-2 p-1.5 rounded-md bg-white/5 hover:bg-white/10 text-xs text-muted"
|
|
118
|
-
aria-label="Copy code"
|
|
119
|
-
>
|
|
120
|
-
{copied ? 'Copied' : 'Copy'}
|
|
121
|
-
</button>
|
|
122
|
-
);
|
|
123
|
-
}
|
|
124
|
-
```
|
|
47
|
+
Position top-right, show on hover, visual feedback ("Copied" for 2s). Use `navigator.clipboard.writeText()`. Add `aria-label="Copy code"`.
|
|
125
48
|
|
|
126
49
|
---
|
|
127
50
|
|
|
128
51
|
## 5. Responsive Code Blocks
|
|
129
52
|
|
|
130
|
-
Code
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
overflow-x: auto;
|
|
135
|
-
white-space: pre; /* code: no wrap */
|
|
136
|
-
-webkit-overflow-scrolling: touch; /* smooth scroll on iOS */
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
pre.terminal {
|
|
140
|
-
white-space: pre-wrap; /* terminal: wrap is OK */
|
|
141
|
-
word-break: break-all;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
/* Hide scrollbar but keep functionality */
|
|
145
|
-
pre::-webkit-scrollbar { height: 4px; }
|
|
146
|
-
pre::-webkit-scrollbar-thumb { background: var(--border); border-radius: 4px; }
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
On very small screens (< 375px), consider reducing code font-size to 12px.
|
|
53
|
+
- Code: `white-space: pre; overflow-x: auto` (never wrap)
|
|
54
|
+
- Terminal output: `white-space: pre-wrap` (wrapping OK)
|
|
55
|
+
- Thin scrollbar: 4px height, subtle thumb color
|
|
56
|
+
- Below 375px, consider reducing to 12px font size
|
|
150
57
|
|
|
151
58
|
---
|
|
152
59
|
|
|
153
60
|
## 6. Inline Code Styling
|
|
154
61
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
```css
|
|
158
|
-
code:not(pre code) {
|
|
159
|
-
background: var(--surface-2);
|
|
160
|
-
padding: 0.15em 0.4em;
|
|
161
|
-
border-radius: 4px;
|
|
162
|
-
font-size: 0.9em; /* slightly smaller than surrounding text */
|
|
163
|
-
font-weight: 500;
|
|
164
|
-
border: 1px solid var(--border);
|
|
165
|
-
}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
Never use inline code for emphasis. It's for code references (`useState`, `border-radius`, `GET /api/users`), not for highlighting words.
|
|
62
|
+
Subtle distinction from body text: light background, 0.15em/0.4em padding, 4px radius, 0.9em font-size, 1px border. Never use inline code for emphasis; it's for code references (`useState`, `GET /api/users`).
|
|
169
63
|
|
|
170
64
|
---
|
|
171
65
|
|
|
172
66
|
## 7. Diff Views
|
|
173
67
|
|
|
174
|
-
Use color + icon
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
.diff-add {
|
|
178
|
-
background: oklch(0.62 0.19 150 / 0.1);
|
|
179
|
-
border-left: 3px solid oklch(0.62 0.19 150);
|
|
180
|
-
}
|
|
181
|
-
.diff-add::before { content: '+'; color: oklch(0.62 0.19 150); }
|
|
182
|
-
|
|
183
|
-
.diff-remove {
|
|
184
|
-
background: oklch(0.55 0.22 25 / 0.1);
|
|
185
|
-
border-left: 3px solid oklch(0.55 0.22 25);
|
|
186
|
-
text-decoration: line-through;
|
|
187
|
-
opacity: 0.7;
|
|
188
|
-
}
|
|
189
|
-
.diff-remove::before { content: '-'; color: oklch(0.55 0.22 25); }
|
|
190
|
-
```
|
|
68
|
+
Use color + icon (not color alone, for colorblind users):
|
|
69
|
+
- Added: green-tinted background + left border + `+` prefix
|
|
70
|
+
- Removed: red-tinted background + left border + `-` prefix + `line-through` + reduced opacity
|
|
191
71
|
|
|
192
72
|
---
|
|
193
73
|
|
|
194
74
|
## 8. Terminal Output
|
|
195
75
|
|
|
196
|
-
Terminal
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
background: oklch(0.08 0.01 230);
|
|
201
|
-
color: oklch(0.80 0.01 150); /* slight green tint for terminal feel */
|
|
202
|
-
font-family: 'JetBrains Mono', monospace;
|
|
203
|
-
padding: 1rem;
|
|
204
|
-
border-radius: 8px;
|
|
205
|
-
}
|
|
206
|
-
.terminal .prompt { color: oklch(0.65 0.10 230); } /* blue prompt */
|
|
207
|
-
.terminal .output { color: oklch(0.75 0.01 230); } /* neutral output */
|
|
208
|
-
.terminal .error { color: oklch(0.65 0.22 25); } /* red errors */
|
|
209
|
-
```
|
|
76
|
+
Terminal styling should feel distinct from code blocks:
|
|
77
|
+
- Darker background: `oklch(0.08 0.01 230)`
|
|
78
|
+
- Slight green tint for text: `oklch(0.80 0.01 150)`
|
|
79
|
+
- Blue prompt, neutral output, red errors
|
|
210
80
|
|
|
211
81
|
---
|
|
212
82
|
|
|
213
83
|
## 9. Common Mistakes
|
|
214
84
|
|
|
215
|
-
-
|
|
216
|
-
-
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
-
|
|
222
|
-
-
|
|
85
|
+
- Code font too large (14px for blocks, 0.9em for inline)
|
|
86
|
+
- No horizontal scroll on code blocks
|
|
87
|
+
- Syntax colors with < 3:1 contrast (especially comments)
|
|
88
|
+
- Color-only diff indication (add +/- markers)
|
|
89
|
+
- Copying includes line numbers (use `user-select: none`)
|
|
90
|
+
- Same styling for code blocks and terminal (different purposes)
|
|
91
|
+
- `font-family: monospace` without named fonts (defaults to Courier New)
|
|
92
|
+
- No copy button
|