Diagram Drawing
MANDATORY PRE-WORK CHECKLIST
YOU MUST complete this checklist BEFORE applying this skill:
[ ] 1. Read Task Decomposition Override Section
- WHY: Understand the PROHIBITED sequence (Generic approach with default fonts/colors)
- WHY: Understand the MANDATORY sequence (Design-First Data Visualization with 3 decisions)
- CONSEQUENCE: Skipping = generic "AI slop" diagrams with Inter/Roboto + rainbow gradients
[ ] 2. Acknowledge Output Format Requirement
[ ] 3. Identify Diagram-Specific Requirements
- Design Theme: Choose distinctive theme (NOT generic Material Design - use Technical/Editorial/Minimal/Bold)
- Typography Hierarchy: ≥12px labels, NO Inter/Roboto/Arial alone (use IBM Plex Sans, Space Grotesk, Source Sans)
- Animation Strategy: ≤2 seconds initial reveal, respects prefers-reduced-motion, GPU-accelerated
- Export Format: SVG preferred (scalable), PNG for raster needs, PDF for print
- Accessibility: Alt text, ARIA labels, keyboard navigation, colorblind-safe palettes
- WHY: Generic themes + poor typography + excessive animation = unprofessional diagrams undermining credibility
- CONSEQUENCE: Ignoring = charts that look auto-generated, fail accessibility standards, hurt brand perception
[ ] 4. Check for Multi-Skill Compositions (v5.5.0)
- IF diagram-drawing + data-visualization-designer + design-excellence loaded:
- YOU MUST apply all three skills in conjunction (not isolation)
- Composition: visual-design-excellence (3.2x quality improvement)
- This skill = Chart.js implementation, data-viz = truthful design, design-excellence = aesthetics
- CONSEQUENCE: Single-skill usage when composition available = suboptimal quality
✅ ALL BOXES CHECKED = Ready to proceed to Task Decomposition Override
❌ SKIPPING THIS CHECKLIST = Claiming "Diagram Drawing Applied" while generating generic charts
Task Decomposition Override (v5.4.0)
When this skill applies (diagram/chart/infographic request), DO NOT use your default task decomposition.
❌ PROHIBITED SEQUENCE (Generic approach - low quality):
- TodoWrite for planning
- Gather requirements
- Create generic SVG/Canvas/PNG
- Use default fonts (Inter, Roboto, Arial)
- Use rainbow gradients or generic colors
✅ MANDATORY SEQUENCE (Design-First Data Visualization):
Phase 1: Design System Decisions (Make 3 explicit decisions)
Design Theme Selection: Choose theme matching content context
- Reference: Skill "Themes for Infographics" section
- Output: Selected theme with rationale (e.g., "Technical: monospace fonts, dark background, neon accents for developer dashboard")
Typography Strategy: Select distinctive fonts for labels/titles
- Reference: Skill "Typography for Charts & Infographics" section
- Output: Font family with sizing (e.g., "IBM Plex Sans: title 20px/700, axis 12px/400")
Color Strategy: Define palette approach (Sequential/Diverging/Categorical)
- Reference: Skill "Color Schemes for Data" section
- Output: Palette type with values (e.g., "Sequential: blue #3b82f6 → #1e3a8a, 5 steps, colorblind-safe")
Output Acknowledgment After Phase 1:
Diagram Drawing Applied:
- Design Theme: [Theme + rationale]
- Typography: [Font family + sizing hierarchy]
- Color Strategy: [Palette approach + values]
Phase 2: Implementation (Apply Phase 1 decisions)
4. Configure Chart.js with theme-specific settings
5. Implement typography hierarchy (title/axis/legend fonts)
6. Apply color palette with accessibility support
7. Add animation with prefers-reduced-motion support
8. Generate alt text for accessibility
Phase 3: Validation (Verify quality criteria)
9. Verify typography: NO Inter/Roboto/Arial/Helvetica, minimum 12px labels
10. Verify color: 4.5:1 contrast minimum, colorblind-safe testing
11. Verify accessibility: alt text present, reduced-motion respected
12. Verify animation: ≤2 seconds initial reveal, easeOut timing
IF you use ❌ sequence instead of ✅ sequence = ARCHITECTURE VIOLATION
Rationale: Generic diagrams signal "AI slop." Professional diagrams require design-first thinking with distinctive aesthetics. The 3-phase approach GUARANTEES: (1) explicit design decisions before implementation, (2) theme-consistent application, (3) measurable accessibility compliance. This is MANDATORY for quality output.
Language Standards (v5.4.0)
YOU MUST use directive language throughout this skill:
Required Directives:
- ✅ "YOU MUST use", "DO NOT use", "ALWAYS", "NEVER", "MANDATORY", "PROHIBITED", "REQUIRED"
- ❌ Never: "should", "consider", "might", "could", "try to", "it's recommended", "please", "ideally"
Section Headers:
- ✅ "Required Standards", "Rules", "Requirements", "Anti-Patterns to Avoid"
- ❌ "Best Practices", "Guidelines", "Recommendations", "Suggestions"
Examples of Directive Transformation:
- ❌ "Consider using X" → ✅ "YOU MUST use X"
- ❌ "You should avoid Y" → ✅ "DO NOT use Y (PROHIBITED)"
- ❌ "It's recommended to Z" → ✅ "MANDATORY: Z"
- ❌ "Try to follow pattern P" → ✅ "ALWAYS follow pattern P"
Enforcement Note: Skills with weak language will be rejected by pre-tool-use-write.ts hook.
Design Excellence for Data Visualization
Data visualization design is functional communication—typography, color, and layout directly impact comprehension. Avoid generic "AI slop" aesthetics that undermine credibility.
Typography for Charts & Infographics
Chart labels and titles instantly signal professionalism. Avoid generic fonts.
Never use for chart labels/titles:
- ❌ Inter, Roboto, Arial, Helvetica (signal "AI slop" or placeholder work)
- ❌ Default system fonts
YOU MUST use distinctive choices:
- Code/Technical aesthetic: JetBrains Mono, Fira Code (data-driven, precise)
- Editorial/Report aesthetic: IBM Plex Sans, Source Sans 3 (readable, authoritative)
- Modern/Distinctive: Space Grotesk, Unbounded (memorable, confident)
Typography principles for data viz:
- Readability first: Minimum 12px for axis labels, 14px+ for titles
- Weight hierarchy: Title (700-800), axis labels (400-500), annotations (300-400)
- Consistency: Use same font family throughout chart (not multiple fonts)
- Alignment: Left-align y-axis labels, center titles, bottom-align x-axis labels
Color Schemes for Data
Color communicates meaning and directs attention in data visualization.
Semantic data colors (follow conventions):
- Positive/Growth: Green (#10b981, #22c55e)
- Negative/Decline: Red (#ef4444, #dc2626)
- Neutral/Baseline: Blue (#3b82f6, #2563eb)
- Warning/Attention: Orange/Yellow (#f59e0b, #eab308)
Accessibility requirements:
- Don't rely on color alone: Use patterns/textures + color for differentiation
- Contrast: Background-to-foreground ratio 4.5:1 minimum
- Colorblind-safe palettes: Use tools like ColorBrewer, avoid red-green-only combinations
- Test: Simulate deuteranopia (red-green), protanopia (red-green), tritanopia (blue-yellow)
Palette strategies:
- Sequential (single hue progression): Low to high intensity → quantity/magnitude
- Diverging (two hues from center): Negative ← neutral → positive
- Categorical (distinct hues): Unordered categories (use 5-7 max for clarity)
Avoid:
- ❌ Rainbow gradients (hard to interpret value)
- ❌ Clichéd purple-to-pink gradients (signal generic AI output)
- ❌ Too many colors (>7 in single chart = cognitive overload)
- ❌ Low saturation pastels (hard to differentiate)
Themes for Infographics
Commit to a cohesive aesthetic that matches content context.
Theme inspiration:
- Corporate/Professional: Clean, trustworthy, muted colors, sans-serif, grid layouts
- Technical/Developer: Monospace fonts, terminal aesthetics, dark backgrounds, neon accents
- Editorial/Report: Serif titles, authoritative, newspaper-inspired, strong hierarchy
- Cyberpunk: Neon accents (#00ff00, #ff00ff), dark backgrounds, glitch effects
- Retro/Vintage: Muted 70s palette, textured backgrounds, nostalgic typography
Motion & Animation for Charts
Animation guides attention and reveals data progressively.
Purposeful chart animations:
- Initial reveal: Stagger data point appearance (not all at once)
- Data updates: Smooth transitions when values change (300-600ms duration)
- Hover interactions: Immediate feedback (<100ms), subtle scale/highlight
- Progress indicators: Show loading state while chart renders
Respect reduced motion:
animation: {
duration: window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 800
}
Avoid:
- ❌ Overly long animations (>2 seconds for initial reveal)
- ❌ Bouncing/elastic easing (unprofessional for data viz)
- ❌ Continuous looping animations (distracting)
- ❌ Ignoring
prefers-reduced-motion accessibility setting
Chart.js Technical Reference
Usage
renderDiagram({
type: 'line' | 'bar' | 'pie' | 'doughnut' | 'scatter' | 'bubble' | 'radar',
data: {
labels: string[],
datasets: Array<{
label: string,
data: number[]
}>
},
export: {
format: 'png' | 'svg' | 'pdf',
width: number,
height: number
}
})
Features
- 5 chart types: line, bar, pie, scatter, radar
- 3 export formats: PNG (1x/2x), SVG, PDF
- 5 presets: default, minimal, bold, print, dark
- Auto alt text: Generates descriptive text with trends
- Accessibility: Reduced motion support, contrast checking
- Performance: Data decimation for large datasets
Example Chart.js Configuration
options: {
plugins: {
title: {
display: true,
text: 'Monthly Revenue Growth',
font: {
family: 'IBM Plex Sans',
size: 20,
weight: '700'
},
color: '#e2e8f0'
},
legend: {
labels: {
font: {
family: 'IBM Plex Sans',
size: 14,
weight: '500'
}
}
}
},
scales: {
x: {
grid: { color: 'rgba(100, 116, 139, 0.1)' },
ticks: { font: { family: 'IBM Plex Sans', size: 12 } }
},
y: {
grid: { color: 'rgba(100, 116, 139, 0.1)' },
ticks: { font: { family: 'IBM Plex Sans', size: 12 } }
}
},
animation: {
duration: window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 800,
easing: 'easeOutQuart'
}
}
Resources (Progressive Loading)
Typography: Load @resources/typography-for-data.md for:
- Font pairing strategies
- Hierarchy principles
- Accessibility guidelines
Themes: Load @resources/chart-theme-gallery.md for:
- 5 complete theme configurations
- Copy-paste Chart.js configs
- Color palette definitions
Examples: Load @resources/diagram-examples.md for:
- Production-ready examples
- Before/after comparisons
- Anti-pattern demonstrations
Accessibility: Load @resources/wcag-compliance-charts.md for:
- WCAG 2.1 AA compliance checklist
- Color contrast requirements
- Screen reader compatibility
Anti-Patterns to Avoid
Typography:
- ❌ Inter, Roboto, Arial, Helvetica for chart labels
- ❌ Multiple font families in single chart
- ❌ Tiny labels (<10px)
- ❌ All-caps titles
Color:
- ❌ Rainbow gradients
- ❌ Purple-to-pink gradients
- ❌ Red-green only (colorblind unfriendly)
- ❌ Low contrast (<3:1)
Animation:
- ❌ Bouncing/elastic easing
- ❌ Continuous loops
- ❌ Ignoring prefers-reduced-motion
- ❌ >2 second animations
Structure:
- ❌ Too many data points (>50 without grouping)
- ❌ Missing axis labels
- ❌ No legend for multiple datasets
- ❌ Distracting backgrounds
1---2name: diagram-drawing3description: Creates animated diagrams and professional infographics using Chart.js 4.x with: Auto-activates when user mentions: diagram, chart, graph, infographic, visualization, data visualization, data viz, line chart, bar chart, pie chart4---5
6# Diagram Drawing
7
8## MANDATORY PRE-WORK CHECKLIST
9
10**YOU MUST complete this checklist BEFORE applying this skill:**
11
12**[ ] 1. Read Task Decomposition Override Section**
13 - **WHY**: Understand the PROHIBITED sequence (Generic approach with default fonts/colors)
14 - **WHY**: Understand the MANDATORY sequence (Design-First Data Visualization with 3 decisions)
15 - **CONSEQUENCE**: Skipping = generic "AI slop" diagrams with Inter/Roboto + rainbow gradients
16
17**[ ] 2. Acknowledge Output Format Requirement**
18 - **FORMAT REQUIRED**:
19 ```
20 Diagram Drawing Applied:
21 - Design Theme: [Theme + rationale]
22 - Typography: [Font family + sizing hierarchy]
23 - Color Strategy: [Palette approach + values]
24 ```
25 - **WHY**: Hook validation requires this exact format
26 - **CONSEQUENCE**: Missing acknowledgment = architecture violation
27
28**[ ] 3. Identify Diagram-Specific Requirements**
29 - **Design Theme**: Choose distinctive theme (NOT generic Material Design - use Technical/Editorial/Minimal/Bold)
30 - **Typography Hierarchy**: ≥12px labels, NO Inter/Roboto/Arial alone (use IBM Plex Sans, Space Grotesk, Source Sans)
31 - **Animation Strategy**: ≤2 seconds initial reveal, respects prefers-reduced-motion, GPU-accelerated
32 - **Export Format**: SVG preferred (scalable), PNG for raster needs, PDF for print
33 - **Accessibility**: Alt text, ARIA labels, keyboard navigation, colorblind-safe palettes
34 - **WHY**: Generic themes + poor typography + excessive animation = unprofessional diagrams undermining credibility
35 - **CONSEQUENCE**: Ignoring = charts that look auto-generated, fail accessibility standards, hurt brand perception
36
37**[ ] 4. Check for Multi-Skill Compositions (v5.5.0)**
38 - **IF diagram-drawing + data-visualization-designer + design-excellence loaded**:
39 - YOU MUST apply all three skills in conjunction (not isolation)
40 - Composition: visual-design-excellence (3.2x quality improvement)
41 - This skill = Chart.js implementation, data-viz = truthful design, design-excellence = aesthetics
42 - **CONSEQUENCE**: Single-skill usage when composition available = suboptimal quality
43
44**✅ ALL BOXES CHECKED = Ready to proceed to Task Decomposition Override**
45**❌ SKIPPING THIS CHECKLIST = Claiming "Diagram Drawing Applied" while generating generic charts**
46
47---
48
49## Task Decomposition Override (v5.4.0)
50
51When this skill applies (diagram/chart/infographic request), **DO NOT use your default task decomposition.**
52
53### ❌ PROHIBITED SEQUENCE (Generic approach - low quality):
541. TodoWrite for planning
552. Gather requirements
563. Create generic SVG/Canvas/PNG
574. Use default fonts (Inter, Roboto, Arial)
585. Use rainbow gradients or generic colors
59
60### ✅ MANDATORY SEQUENCE (Design-First Data Visualization):
61
62**Phase 1: Design System Decisions** (Make 3 explicit decisions)
631. **Design Theme Selection**: Choose theme matching content context
64 - Reference: Skill "Themes for Infographics" section
65 - Output: Selected theme with rationale (e.g., "Technical: monospace fonts, dark background, neon accents for developer dashboard")
66
672. **Typography Strategy**: Select distinctive fonts for labels/titles
68 - Reference: Skill "Typography for Charts & Infographics" section
69 - Output: Font family with sizing (e.g., "IBM Plex Sans: title 20px/700, axis 12px/400")
70
713. **Color Strategy**: Define palette approach (Sequential/Diverging/Categorical)
72 - Reference: Skill "Color Schemes for Data" section
73 - Output: Palette type with values (e.g., "Sequential: blue #3b82f6 → #1e3a8a, 5 steps, colorblind-safe")
74
75**Output Acknowledgment After Phase 1:**
76```
77Diagram Drawing Applied:
78- Design Theme: [Theme + rationale]
79- Typography: [Font family + sizing hierarchy]
80- Color Strategy: [Palette approach + values]
81```
82
83**Phase 2: Implementation** (Apply Phase 1 decisions)
844. Configure Chart.js with theme-specific settings
855. Implement typography hierarchy (title/axis/legend fonts)
866. Apply color palette with accessibility support
877. Add animation with prefers-reduced-motion support
888. Generate alt text for accessibility
89
90**Phase 3: Validation** (Verify quality criteria)
919. Verify typography: NO Inter/Roboto/Arial/Helvetica, minimum 12px labels
9210. Verify color: 4.5:1 contrast minimum, colorblind-safe testing
9311. Verify accessibility: alt text present, reduced-motion respected
9412. Verify animation: ≤2 seconds initial reveal, easeOut timing
95
96**IF you use ❌ sequence instead of ✅ sequence = ARCHITECTURE VIOLATION**
97
98**Rationale:** Generic diagrams signal "AI slop." Professional diagrams require design-first thinking with distinctive aesthetics. The 3-phase approach GUARANTEES: (1) explicit design decisions before implementation, (2) theme-consistent application, (3) measurable accessibility compliance. This is MANDATORY for quality output.
99
100---
101
102## Language Standards (v5.4.0)
103
104**YOU MUST use directive language throughout this skill:**
105
106**Required Directives:**
107- ✅ "YOU MUST use", "DO NOT use", "ALWAYS", "NEVER", "MANDATORY", "PROHIBITED", "REQUIRED"
108- ❌ Never: "should", "consider", "might", "could", "try to", "it's recommended", "please", "ideally"
109
110**Section Headers:**
111- ✅ "Required Standards", "Rules", "Requirements", "Anti-Patterns to Avoid"
112- ❌ "Best Practices", "Guidelines", "Recommendations", "Suggestions"
113
114**Examples of Directive Transformation:**
115- ❌ "Consider using X" → ✅ "YOU MUST use X"
116- ❌ "You should avoid Y" → ✅ "DO NOT use Y (PROHIBITED)"
117- ❌ "It's recommended to Z" → ✅ "MANDATORY: Z"
118- ❌ "Try to follow pattern P" → ✅ "ALWAYS follow pattern P"
119
120**Enforcement Note:** Skills with weak language will be rejected by pre-tool-use-write.ts hook.
121
122---
123
124## Design Excellence for Data Visualization
125
126Data visualization design is functional communication—typography, color, and layout directly impact comprehension. Avoid generic "AI slop" aesthetics that undermine credibility.
127
128### Typography for Charts & Infographics
129
130Chart labels and titles instantly signal professionalism. **Avoid generic fonts.**
131
132**Never use for chart labels/titles:**
133- ❌ Inter, Roboto, Arial, Helvetica (signal "AI slop" or placeholder work)
134- ❌ Default system fonts
135
136**YOU MUST use distinctive choices:**
137- **Code/Technical aesthetic**: JetBrains Mono, Fira Code (data-driven, precise)
138- **Editorial/Report aesthetic**: IBM Plex Sans, Source Sans 3 (readable, authoritative)
139- **Modern/Distinctive**: Space Grotesk, Unbounded (memorable, confident)
140
141**Typography principles for data viz:**
142- **Readability first**: Minimum 12px for axis labels, 14px+ for titles
143- **Weight hierarchy**: Title (700-800), axis labels (400-500), annotations (300-400)
144- **Consistency**: Use same font family throughout chart (not multiple fonts)
145- **Alignment**: Left-align y-axis labels, center titles, bottom-align x-axis labels
146
147### Color Schemes for Data
148
149Color communicates meaning and directs attention in data visualization.
150
151**Semantic data colors (follow conventions):**
152- **Positive/Growth**: Green (#10b981, #22c55e)
153- **Negative/Decline**: Red (#ef4444, #dc2626)
154- **Neutral/Baseline**: Blue (#3b82f6, #2563eb)
155- **Warning/Attention**: Orange/Yellow (#f59e0b, #eab308)
156
157**Accessibility requirements:**
158- **Don't rely on color alone**: Use patterns/textures + color for differentiation
159- **Contrast**: Background-to-foreground ratio 4.5:1 minimum
160- **Colorblind-safe palettes**: Use tools like ColorBrewer, avoid red-green-only combinations
161- **Test**: Simulate deuteranopia (red-green), protanopia (red-green), tritanopia (blue-yellow)
162
163**Palette strategies:**
164- **Sequential** (single hue progression): Low to high intensity → quantity/magnitude
165- **Diverging** (two hues from center): Negative ← neutral → positive
166- **Categorical** (distinct hues): Unordered categories (use 5-7 max for clarity)
167
168**Avoid:**
169- ❌ Rainbow gradients (hard to interpret value)
170- ❌ Clichéd purple-to-pink gradients (signal generic AI output)
171- ❌ Too many colors (>7 in single chart = cognitive overload)
172- ❌ Low saturation pastels (hard to differentiate)
173
174### Themes for Infographics
175
176Commit to a cohesive aesthetic that matches content context.
177
178**Theme inspiration:**
179- **Corporate/Professional**: Clean, trustworthy, muted colors, sans-serif, grid layouts
180- **Technical/Developer**: Monospace fonts, terminal aesthetics, dark backgrounds, neon accents
181- **Editorial/Report**: Serif titles, authoritative, newspaper-inspired, strong hierarchy
182- **Cyberpunk**: Neon accents (#00ff00, #ff00ff), dark backgrounds, glitch effects
183- **Retro/Vintage**: Muted 70s palette, textured backgrounds, nostalgic typography
184
185### Motion & Animation for Charts
186
187Animation guides attention and reveals data progressively.
188
189**Purposeful chart animations:**
190- **Initial reveal**: Stagger data point appearance (not all at once)
191- **Data updates**: Smooth transitions when values change (300-600ms duration)
192- **Hover interactions**: Immediate feedback (<100ms), subtle scale/highlight
193- **Progress indicators**: Show loading state while chart renders
194
195**Respect reduced motion:**
196```javascript
197animation: {
198 duration: window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 800
199}
200```
201
202**Avoid:**
203- ❌ Overly long animations (>2 seconds for initial reveal)
204- ❌ Bouncing/elastic easing (unprofessional for data viz)
205- ❌ Continuous looping animations (distracting)
206- ❌ Ignoring `prefers-reduced-motion` accessibility setting
207
208---
209
210## Chart.js Technical Reference
211
212### Usage
213
214```typescript
215renderDiagram({
216 type: 'line' | 'bar' | 'pie' | 'doughnut' | 'scatter' | 'bubble' | 'radar',
217 data: {
218 labels: string[],
219 datasets: Array<{
220 label: string,
221 data: number[]
222 }>
223 },
224 export: {
225 format: 'png' | 'svg' | 'pdf',
226 width: number,
227 height: number
228 }
229})
230```
231
232### Features
233
234- **5 chart types**: line, bar, pie, scatter, radar
235- **3 export formats**: PNG (1x/2x), SVG, PDF
236- **5 presets**: default, minimal, bold, print, dark
237- **Auto alt text**: Generates descriptive text with trends
238- **Accessibility**: Reduced motion support, contrast checking
239- **Performance**: Data decimation for large datasets
240
241### Example Chart.js Configuration
242
243```javascript
244options: {
245 plugins: {
246 title: {
247 display: true,
248 text: 'Monthly Revenue Growth',
249 font: {
250 family: 'IBM Plex Sans',
251 size: 20,
252 weight: '700'
253 },
254 color: '#e2e8f0'
255 },
256 legend: {
257 labels: {
258 font: {
259 family: 'IBM Plex Sans',
260 size: 14,
261 weight: '500'
262 }
263 }
264 }
265 },
266 scales: {
267 x: {
268 grid: { color: 'rgba(100, 116, 139, 0.1)' },
269 ticks: { font: { family: 'IBM Plex Sans', size: 12 } }
270 },
271 y: {
272 grid: { color: 'rgba(100, 116, 139, 0.1)' },
273 ticks: { font: { family: 'IBM Plex Sans', size: 12 } }
274 }
275 },
276 animation: {
277 duration: window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 800,
278 easing: 'easeOutQuart'
279 }
280}
281```
282
283---
284
285## Resources (Progressive Loading)
286
287**Typography**: Load `@resources/typography-for-data.md` for:
288- Font pairing strategies
289- Hierarchy principles
290- Accessibility guidelines
291
292**Themes**: Load `@resources/chart-theme-gallery.md` for:
293- 5 complete theme configurations
294- Copy-paste Chart.js configs
295- Color palette definitions
296
297**Examples**: Load `@resources/diagram-examples.md` for:
298- Production-ready examples
299- Before/after comparisons
300- Anti-pattern demonstrations
301
302**Accessibility**: Load `@resources/wcag-compliance-charts.md` for:
303- WCAG 2.1 AA compliance checklist
304- Color contrast requirements
305- Screen reader compatibility
306
307---
308
309## Anti-Patterns to Avoid
310
311**Typography:**
312- ❌ Inter, Roboto, Arial, Helvetica for chart labels
313- ❌ Multiple font families in single chart
314- ❌ Tiny labels (<10px)
315- ❌ All-caps titles
316
317**Color:**
318- ❌ Rainbow gradients
319- ❌ Purple-to-pink gradients
320- ❌ Red-green only (colorblind unfriendly)
321- ❌ Low contrast (<3:1)
322
323**Animation:**
324- ❌ Bouncing/elastic easing
325- ❌ Continuous loops
326- ❌ Ignoring prefers-reduced-motion
327- ❌ >2 second animations
328
329**Structure:**
330- ❌ Too many data points (>50 without grouping)
331- ❌ Missing axis labels
332- ❌ No legend for multiple datasets
333- ❌ Distracting backgrounds