# Canvas Design

> Create beautiful visual art in .png and .pdf documents using design philosophy. Use when the user asks to create a poster, piece of art, design, or other static visual piece. Creates original visual designs.

- Skill: `majiayu000/canvas-design-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/canvas-design-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/canvas-design-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Design & Media
- License: Apache-2.0
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/canvas-design-2

---


# Canvas Design

Create visually striking static designs using HTML Canvas or Python imaging libraries.

## Design Principles

### Composition
- **Rule of Thirds**: Place key elements along grid lines
- **Visual Hierarchy**: Size, color, and position indicate importance
- **White Space**: Embrace negative space for elegance
- **Balance**: Symmetrical for formal, asymmetrical for dynamic

### Color Theory
- **Complementary**: Colors opposite on wheel (high contrast)
- **Analogous**: Adjacent colors (harmonious)
- **Triadic**: Three equidistant colors (vibrant)
- Limit palette to 3-5 colors

### Typography
- Pair one display font with one body font
- Maintain consistent hierarchy
- Ensure readability (contrast, size)

## Python Canvas (Pillow + Cairo)

```python
from PIL import Image, ImageDraw, ImageFont
import cairo

# Create canvas
width, height = 1200, 800
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)
ctx = cairo.Context(surface)

# Background gradient
pattern = cairo.LinearGradient(0, 0, 0, height)
pattern.add_color_stop_rgb(0, 0.1, 0.1, 0.2)
pattern.add_color_stop_rgb(1, 0.05, 0.05, 0.1)
ctx.set_source(pattern)
ctx.paint()

# Draw shapes
ctx.set_source_rgba(1, 0.3, 0.3, 0.8)
ctx.arc(600, 400, 150, 0, 2 * 3.14159)
ctx.fill()

# Add text
ctx.set_source_rgb(1, 1, 1)
ctx.select_font_face("Sans", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_BOLD)
ctx.set_font_size(48)
ctx.move_to(400, 600)
ctx.show_text("Hello Design")

# Save
surface.write_to_png("design.png")
```

## HTML Canvas to Image

```javascript
const canvas = document.createElement('canvas');
canvas.width = 1200;
canvas.height = 800;
const ctx = canvas.getContext('2d');

// Draw
ctx.fillStyle = '#1a1a2e';
ctx.fillRect(0, 0, 1200, 800);

ctx.fillStyle = '#e94560';
ctx.beginPath();
ctx.arc(600, 400, 150, 0, Math.PI * 2);
ctx.fill();

// Export
const dataUrl = canvas.toDataURL('image/png');
```

## Design Styles

- **Minimalist**: Limited colors, lots of whitespace, clean lines
- **Brutalist**: Raw, bold typography, stark contrasts
- **Glassmorphism**: Frosted glass effects, subtle borders
- **Retro/Vintage**: Muted colors, textures, classic typography
- **Abstract**: Geometric shapes, gradients, artistic composition

