Visual Design
Quick Reference
| Task |
Tool |
Guide |
| Data chart or graph |
generate_chart |
Read SKILL.md Design Ideas |
| Poster / infographic / art |
create_visual_design |
Read canvas-design.md |
| Architecture / flow diagram |
create_visual_design |
Read diagram-design.md |
Available Tools
generate_chart
Data visualization. Executes matplotlib/plotly code to produce chart PNGs.
python_code (str, required): Chart generation Python code
output_filename (str, required): .png filename
create_visual_design
Visual design creation: posters, infographics, artwork, diagrams.
Uses reportlab, Pillow, svgwrite, or any available library.
python_code (str, required): Design generation Python code
output_filename (str, required): .png or .pdf filename
Available Libraries
| Purpose |
Libraries |
Output |
Notes |
| Data charts |
matplotlib, plotly, bokeh |
PNG |
Best for charts |
| PDF design |
reportlab, fpdf |
PDF |
Full control |
| Image design |
Pillow + fonttools |
PNG |
Best for PNG designs |
| Vector graphics |
svgwrite → svglib + renderPDF |
SVG → PDF |
SVG→PNG NOT supported (no renderPM) |
| Image processing |
Wand (ImageMagick), opencv-python |
PNG |
Check availability first |
IMPORTANT: For PNG output, use Pillow or matplotlib. Do NOT use svgwrite→renderPM (rlPyCairo is unavailable).
Design Workflow
Data Charts (generate_chart)
- Identify data structure and choose appropriate chart type
- Select color palette (see Design Ideas below)
- Write code with
plt.savefig(filename, dpi=300, bbox_inches='tight')
- Review the generated chart
Visual Design (create_visual_design)
- Establish design concept/philosophy (internally)
- Follow the process in canvas-design.md
- Select appropriate library and write code
- Save: reportlab
canvas.save(), Pillow image.save(), matplotlib plt.savefig()
- Review output and refine
Design Ideas
Color Palettes
| Theme |
Primary |
Accent |
Background |
| Midnight Executive |
1E2761 |
408EC6 |
0D1B2A |
| Forest & Moss |
2C5F2D |
97BC62 |
1A1A1A |
| Coral Energy |
F96167 |
F9E795 |
2F3C7E |
| Ocean Gradient |
065A82 |
1B9AAA |
021B29 |
| Charcoal Minimal |
36454F |
E8E8E8 |
1C1C1E |
| Cherry Bold |
990011 |
FCF6F5 |
150E11 |
| Sage Calm |
84B59F |
69A297 |
2D3A2D |
| Warm Terracotta |
B85042 |
E7E8D1 |
2A1F1C |
Typography
Prefer thin/light fonts. Minimize text in designs.
| Element |
Size |
Style |
| Main title |
48-72pt |
Bold or Thin |
| Subtext |
14-18pt |
Light |
| Labels/captions |
8-12pt |
Regular, muted |
Text-to-Canvas Balance (IMPORTANT):
- Text size must be proportional to the overall canvas and surrounding design elements
- Common mistake: text that is too small relative to the canvas, making it unreadable at normal viewing distance
- Rule of thumb: if you need to zoom in to read it, it's too small
- Titles should command attention — when in doubt, go larger
- Labels/captions should be clearly legible, not decorative afterthoughts
- Test: mentally shrink the output to 50% — all text should still be readable
Spacing & Composition
- Generous margins (minimum 10% of canvas)
- Consistent spacing between elements
- No overlapping; all elements within canvas bounds
- Visual hierarchy: convey importance via size, color, position
Avoid
- Elements flush to canvas edges (insufficient margins)
- Overlapping elements
- Too many colors (stick to 3-4)
- Excessive text — visual elements are the focus
- Default matplotlib styles without customization
Code Requirements
- Code must save a file to disk
- Use the exact
output_filename provided
- PNG:
dpi=300 or higher recommended
- PDF: A4 or Letter size recommended
- For Korean text: configure appropriate fonts
QA
Assume there are problems and look for them.
- Review the generated image/PDF
- Check for overlapping elements, clipped text, insufficient margins
- Verify sufficient color contrast
- If issues found, fix the code and regenerate
- Complete at least one fix-verify cycle before finishing
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: visual-design-33description: Use this skill any time the user needs a visual output as an image4---56# Visual Design78## Quick Reference910| Task | Tool | Guide |11|-----------------------------|------------------------|--------------------------------------------|12| Data chart or graph | `generate_chart` | Read SKILL.md Design Ideas |13| Poster / infographic / art | `create_visual_design` | Read [canvas-design.md](canvas-design.md) |14| Architecture / flow diagram | `create_visual_design` | Read [diagram-design.md](diagram-design.md)|1516## Available Tools1718### generate_chart19Data visualization. Executes matplotlib/plotly code to produce chart PNGs.20- `python_code` (str, required): Chart generation Python code21- `output_filename` (str, required): `.png` filename2223### create_visual_design24Visual design creation: posters, infographics, artwork, diagrams.25Uses reportlab, Pillow, svgwrite, or any available library.26- `python_code` (str, required): Design generation Python code27- `output_filename` (str, required): `.png` or `.pdf` filename2829## Available Libraries3031| Purpose | Libraries | Output | Notes |32|---------|-----------|--------|-------|33| Data charts | matplotlib, plotly, bokeh | PNG | Best for charts |34| PDF design | reportlab, fpdf | PDF | Full control |35| Image design | Pillow + fonttools | PNG | Best for PNG designs |36| Vector graphics | svgwrite → svglib + renderPDF | SVG → PDF | SVG→PNG NOT supported (no renderPM) |37| Image processing | Wand (ImageMagick), opencv-python | PNG | Check availability first |3839**IMPORTANT**: For PNG output, use Pillow or matplotlib. Do NOT use svgwrite→renderPM (rlPyCairo is unavailable).4041## Design Workflow4243### Data Charts (`generate_chart`)441. Identify data structure and choose appropriate chart type452. Select color palette (see Design Ideas below)463. Write code with `plt.savefig(filename, dpi=300, bbox_inches='tight')`474. Review the generated chart4849### Visual Design (`create_visual_design`)501. Establish design concept/philosophy (internally)512. Follow the process in [canvas-design.md](canvas-design.md)523. Select appropriate library and write code534. Save: reportlab `canvas.save()`, Pillow `image.save()`, matplotlib `plt.savefig()`545. Review output and refine5556## Design Ideas5758### Color Palettes59| Theme | Primary | Accent | Background |60|-------|---------|--------|------------|61| Midnight Executive | `1E2761` | `408EC6` | `0D1B2A` |62| Forest & Moss | `2C5F2D` | `97BC62` | `1A1A1A` |63| Coral Energy | `F96167` | `F9E795` | `2F3C7E` |64| Ocean Gradient | `065A82` | `1B9AAA` | `021B29` |65| Charcoal Minimal | `36454F` | `E8E8E8` | `1C1C1E` |66| Cherry Bold | `990011` | `FCF6F5` | `150E11` |67| Sage Calm | `84B59F` | `69A297` | `2D3A2D` |68| Warm Terracotta | `B85042` | `E7E8D1` | `2A1F1C` |6970### Typography71Prefer thin/light fonts. Minimize text in designs.72| Element | Size | Style |73|---------|------|-------|74| Main title | 48-72pt | Bold or Thin |75| Subtext | 14-18pt | Light |76| Labels/captions | 8-12pt | Regular, muted |7778**Text-to-Canvas Balance (IMPORTANT):**79- Text size must be proportional to the overall canvas and surrounding design elements80- Common mistake: text that is too small relative to the canvas, making it unreadable at normal viewing distance81- Rule of thumb: if you need to zoom in to read it, it's too small82- Titles should command attention — when in doubt, go larger83- Labels/captions should be clearly legible, not decorative afterthoughts84- Test: mentally shrink the output to 50% — all text should still be readable8586### Spacing & Composition87- Generous margins (minimum 10% of canvas)88- Consistent spacing between elements89- No overlapping; all elements within canvas bounds90- Visual hierarchy: convey importance via size, color, position9192### Avoid93- Elements flush to canvas edges (insufficient margins)94- Overlapping elements95- Too many colors (stick to 3-4)96- Excessive text — visual elements are the focus97- Default matplotlib styles without customization9899## Code Requirements100- Code must save a file to disk101- Use the exact `output_filename` provided102- PNG: `dpi=300` or higher recommended103- PDF: A4 or Letter size recommended104- For Korean text: configure appropriate fonts105106## QA107108**Assume there are problems and look for them.**1091101. Review the generated image/PDF1112. Check for overlapping elements, clipped text, insufficient margins1123. Verify sufficient color contrast1134. If issues found, fix the code and regenerate1145. Complete at least one fix-verify cycle before finishing115116---117> Converted and distributed by [TomeVault](https://tomevault.io/claim/aws-samples) — claim your Tome and manage your conversions.118<!-- tomevault:4.0:skill_md:2026-04-11 -->