Use when the user needs HTML Canvas, SVG graphics, data visualization, generative art, or interactive visual elements with D3.js or similar libraries. Triggers: user says "canvas", "SVG", "chart", "data visualization", "D3", "generative art", "animation", "interactive graphics", drawing on screen.
Create performant, accessible, and visually compelling graphics using HTML Canvas 2D, SVG, and data visualization libraries. This skill covers everything from low-level pixel manipulation to high-level chart composition with D3.js, including generative art, interactive graphics, and animation.
Phase 1: Requirements Analysis
Determine output type (static, animated, interactive, data-driven)
STOP — Verify rendering works correctly at target frame rate before adding polish.
Canvas 2D API Patterns
Responsive Canvas Setup
function createResponsiveCanvas(container) { const canvas = document.createElement(
Animation Loop Pattern
Dirty Rectangle Optimization
SVG Patterns
Programmatic SVG Creation
SVG Accessibility
D3.js Integration Patterns
Data Join Pattern (D3 v7)
Scales and Axes
Responsive D3 Chart
Phase 3: Polish
Add transitions and easing
Implement responsive resizing
Test across devices and browsers
Add fallback content for unsupported environments
STOP — Verify accessibility and performance targets are met.
Generative Art Techniques
Technique
Category
Use Case
Perlin/Simplex noise
Noise-based
Organic shapes, terrain
Fractal Brownian Motion
Noise-based
Terrain-like textures
Domain warping
Noise-based
Fluid-like effects
Particle systems
Simulation
Fire, water, swarms
L-systems
Algorithmic
Plant-like structures
Voronoi diagrams
Algorithmic
Cell-like partitions
Delaunay triangulation
Algorithmic
Mesh generation
Flow fields
Algorithmic
Directional patterns
Accessibility for Visualizations
Requirement
Implementation
Text alternatives
<title> and <desc> in SVG, ARIA labels on Canvas
Data table fallback
Hidden table with same data for screen readers
Keyboard interaction
Tab to elements, arrow keys for navigation
Color-blind safe
Use shape/pattern in addition to color
High contrast mode
Detect and adjust colors
Reduced motion
Simplify or disable animations with prefers-reduced-motion
Performance Guidelines
Technology
Optimization
Canvas
Batch draw calls, minimize state changes (fill/stroke/font)
SVG
Limit to < 1000 DOM nodes, use <use> for repeated elements
Worker
OffscreenCanvas for web worker rendering
Events
Throttle mousemove handlers to 16ms (60fps)
CSS
Use will-change: transform for CSS-animated SVG elements
Cleanup
Dispose of observers, animation frames on unmount
Anti-Patterns / Common Mistakes
Anti-Pattern
Why It Is Wrong
What to Do Instead
Canvas for text-heavy content
Poor text rendering, no accessibility
Use SVG for text-heavy visualizations
Full canvas redraw every frame
Wastes CPU when nothing changed
Use dirty rectangle optimization
Creating new SVG elements instead of updating
Memory leaks, poor performance
Use D3 data join pattern
Forgetting devicePixelRatio
Blurry on Retina/HiDPI displays
Scale canvas by window.devicePixelRatio
No fallback content for Canvas
Screen readers get nothing
Add aria-label and hidden data table
Inline event handlers on 1000+ SVG elements
Memory and performance overhead
Use event delegation on parent
Not cleaning up animation frames
Memory leaks on unmount
cancelAnimationFrame in cleanup
Using D3 for simple static charts
Over-engineering
Use SVG directly or Chart.js
Integration Points
Skill
Integration
ui-ux-pro-max
Chart type selection and color palettes
ui-design-system
Design tokens for chart theming
artifacts-builder
Self-contained visualization artifacts
senior-frontend
Component integration in React/Vue/Svelte
performance-optimization
Frame rate and rendering optimization
mobile-design
Touch interaction for mobile charts
Skill Type
FLEXIBLE — Choose the rendering technology and library that best fits the use case. SVG for accessibility-critical and interactive charts, Canvas for performance-critical and animation-heavy visuals, WebGL for 3D and massive datasets.