Pixel Art SVG Generator
Create a pixel art SVG illustration: $ARGUMENTS
Design Principles
Pixel Grid
- Each "pixel" is a
<rect> with width/height of 7px
- Grid spacing: 7px (no gaps between pixels)
- Characters are typically 8-10 pixels wide, 8-12 pixels tall
- Use
<g transform="translate(x,y)"> to position and reuse character groups
Color Palette
Keep it simple — 3-5 colors per character:
- Skin:
#FFDAB9 (light), #E8967A / #D4956A (blush/shadow)
- Eyes:
#333
- Hair:
#8B5E3C (brown), #2C2C2C (black), #FFD700 (blonde), #C0392B (red)
- Clothes: use project's brand color (e.g.
#4A9EDA for blue, #74AA63 for green)
- Shoes/pants:
#444
- Accessories:
#555 (glasses frames), #FFD700 (crown)
Character Template (7px grid)
Row 0 (hair top): 4 pixels centered
Row 1 (hair): 6 pixels wide
Row 2 (face top): 6 pixels — all skin
Row 3 (eyes): 6 pixels — skin, eye, skin, skin, eye, skin
Row 4 (mouth): 6 pixels — skin, skin, mouth, mouth, skin, skin
Row 5 (body top): 8 pixels — hand, 6 shirt, hand
Row 6 (body): 6 pixels — all shirt
Row 7 (legs): 2+2 pixels — with gap in middle
Scene Composition
Chat Dialogue Layout (like our hero image)
- Two characters on left/right sides, vertically centered
- Chat bubbles between them, alternating left/right
- Bubble tails point toward the speaking character
- Arrows between bubbles show direction of communication
- Use
orient="auto" markers for arrow heads
- Bottom: tagline or decoration
Single Character with Label
- Character centered
- Label text below
- Optional: speech bubble above
Group Scene
- Characters spaced evenly
- Optional: ground line, background elements
- Keep viewBox tight — no wasted space
SVG Structure
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 W H" font-family="monospace">
<defs>
<!-- Arrow markers if needed -->
</defs>
<rect width="W" height="H" fill="#fafbfc" rx="12"/> <!-- Background -->
<!-- Characters via <g transform="translate(...)"> -->
<!-- Dialogue bubbles: <rect> + <polygon> tail + <text> -->
<!-- Arrows: <line> with marker-end -->
<!-- Labels: <text> with text-anchor="middle" -->
</svg>
Chat Bubble Recipe
<!-- Blue bubble (left character speaks) -->
<rect x="110" y="29" width="280" height="26" fill="#e8f4fd" stroke="#4a9eda" stroke-width="1.5" rx="8"/>
<!-- Tail pointing left toward character -->
<polygon points="108,41 99,47 108,46" fill="#e8f4fd" stroke="#4a9eda" stroke-width="1.5"/>
<rect x="107" y="40" width="3" height="7" fill="#e8f4fd"/> <!-- covers stroke at junction -->
<text x="123" y="46" font-size="13px">📄 Message here</text>
<!-- Orange bubble (right character responds) -->
<rect x="490" y="71" width="280" height="26" fill="#fdf2e8" stroke="#da8a4a" stroke-width="1.5" rx="8"/>
<!-- Tail pointing right toward character -->
<polygon points="772,83 781,89 772,88" fill="#fdf2e8" stroke="#da8a4a" stroke-width="1.5"/>
<rect x="770" y="82" width="3" height="7" fill="#fdf2e8"/>
<text x="503" y="88" font-size="13px">🤔 Response here</text>
Arrow Recipe
<defs>
<marker id="ar" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">
<polygon points="0 0, 8 3, 0 6" fill="#4a9eda"/>
</marker>
</defs>
<!-- Right arrow (→): x1 < x2 -->
<line x1="392" y1="42" x2="465" y2="42" stroke="#4a9eda" stroke-width="2" marker-end="url(#ar)"/>
<!-- Left arrow (←): x1 > x2 -->
<line x1="488" y1="84" x2="420" y2="84" stroke="#da8a4a" stroke-width="2" marker-end="url(#ar-o)"/>
Workflow
Step 1: Understand the Request
- What characters/objects to draw?
- What's the scene? (dialogue, portrait, group, diagram)
- What colors/brand to match?
- What size? (compact for badge, wide for README hero)
Step 2: Generate SVG
- Write to a temp file or project directory
- Open with
open <file.svg> for preview
- Keep viewBox tight — measure actual content bounds
Step 3: Iterate with User
- User provides feedback on screenshot
- Common fixes: overlap, arrow direction, spacing, sizing
- Use
Edit for small tweaks, Write for major redesigns
- Typical: 2-4 iterations to get it right
Step 4: Finalize
- Ensure no personal info in the SVG
- Clean up: remove unused defs, tighten viewBox
- Suggest adding to README:

Common Pitfalls
- Arrow direction:
orient="auto" follows line direction. Line going right→left = arrowhead points left
- Bubble overlap: keep 38-44px vertical spacing between rows
- Text overflow: monospace 13px ≈ 7.8px/char, emoji ≈ 14px. Measure before setting bubble width
- Character overlap with bubbles: keep character x-zone and bubble x-zone separated by ≥10px
- viewBox too large: match viewBox to actual content, add ~10px padding
- Tail stroke artifact: always add a small
<rect> at the bubble-tail junction to cover the stroke line
1---2name: pixel-art3description: Generate pixel art illustrations.4---56# Pixel Art SVG Generator78Create a pixel art SVG illustration: $ARGUMENTS910## Design Principles1112### Pixel Grid13- Each "pixel" is a `<rect>` with width/height of 7px14- Grid spacing: 7px (no gaps between pixels)15- Characters are typically 8-10 pixels wide, 8-12 pixels tall16- Use `<g transform="translate(x,y)">` to position and reuse character groups1718### Color Palette19Keep it simple — 3-5 colors per character:20- **Skin**: `#FFDAB9` (light), `#E8967A` / `#D4956A` (blush/shadow)21- **Eyes**: `#333`22- **Hair**: `#8B5E3C` (brown), `#2C2C2C` (black), `#FFD700` (blonde), `#C0392B` (red)23- **Clothes**: use project's brand color (e.g. `#4A9EDA` for blue, `#74AA63` for green)24- **Shoes/pants**: `#444`25- **Accessories**: `#555` (glasses frames), `#FFD700` (crown)2627### Character Template (7px grid)28```29Row 0 (hair top): 4 pixels centered30Row 1 (hair): 6 pixels wide31Row 2 (face top): 6 pixels — all skin32Row 3 (eyes): 6 pixels — skin, eye, skin, skin, eye, skin33Row 4 (mouth): 6 pixels — skin, skin, mouth, mouth, skin, skin34Row 5 (body top): 8 pixels — hand, 6 shirt, hand35Row 6 (body): 6 pixels — all shirt36Row 7 (legs): 2+2 pixels — with gap in middle37```3839### Scene Composition4041#### Chat Dialogue Layout (like our hero image)42- Two characters on left/right sides, vertically centered43- Chat bubbles between them, alternating left/right44- Bubble tails point toward the speaking character45- Arrows between bubbles show direction of communication46- Use `orient="auto"` markers for arrow heads47- Bottom: tagline or decoration4849#### Single Character with Label50- Character centered51- Label text below52- Optional: speech bubble above5354#### Group Scene55- Characters spaced evenly56- Optional: ground line, background elements57- Keep viewBox tight — no wasted space5859### SVG Structure60```xml61<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 W H" font-family="monospace">62 <defs>63 <!-- Arrow markers if needed -->64 </defs>6566 <rect width="W" height="H" fill="#fafbfc" rx="12"/> <!-- Background -->6768 <!-- Characters via <g transform="translate(...)"> -->69 <!-- Dialogue bubbles: <rect> + <polygon> tail + <text> -->70 <!-- Arrows: <line> with marker-end -->71 <!-- Labels: <text> with text-anchor="middle" -->72</svg>73```7475### Chat Bubble Recipe76```xml77<!-- Blue bubble (left character speaks) -->78<rect x="110" y="29" width="280" height="26" fill="#e8f4fd" stroke="#4a9eda" stroke-width="1.5" rx="8"/>79<!-- Tail pointing left toward character -->80<polygon points="108,41 99,47 108,46" fill="#e8f4fd" stroke="#4a9eda" stroke-width="1.5"/>81<rect x="107" y="40" width="3" height="7" fill="#e8f4fd"/> <!-- covers stroke at junction -->82<text x="123" y="46" font-size="13px">📄 Message here</text>8384<!-- Orange bubble (right character responds) -->85<rect x="490" y="71" width="280" height="26" fill="#fdf2e8" stroke="#da8a4a" stroke-width="1.5" rx="8"/>86<!-- Tail pointing right toward character -->87<polygon points="772,83 781,89 772,88" fill="#fdf2e8" stroke="#da8a4a" stroke-width="1.5"/>88<rect x="770" y="82" width="3" height="7" fill="#fdf2e8"/>89<text x="503" y="88" font-size="13px">🤔 Response here</text>90```9192### Arrow Recipe93```xml94<defs>95 <marker id="ar" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto">96 <polygon points="0 0, 8 3, 0 6" fill="#4a9eda"/>97 </marker>98</defs>99<!-- Right arrow (→): x1 < x2 -->100<line x1="392" y1="42" x2="465" y2="42" stroke="#4a9eda" stroke-width="2" marker-end="url(#ar)"/>101<!-- Left arrow (←): x1 > x2 -->102<line x1="488" y1="84" x2="420" y2="84" stroke="#da8a4a" stroke-width="2" marker-end="url(#ar-o)"/>103```104105## Workflow106107### Step 1: Understand the Request108- What characters/objects to draw?109- What's the scene? (dialogue, portrait, group, diagram)110- What colors/brand to match?111- What size? (compact for badge, wide for README hero)112113### Step 2: Generate SVG114- Write to a temp file or project directory115- Open with `open <file.svg>` for preview116- Keep viewBox tight — measure actual content bounds117118### Step 3: Iterate with User119- User provides feedback on screenshot120- Common fixes: overlap, arrow direction, spacing, sizing121- Use `Edit` for small tweaks, `Write` for major redesigns122- Typical: 2-4 iterations to get it right123124### Step 4: Finalize125- Ensure no personal info in the SVG126- Clean up: remove unused defs, tighten viewBox127- Suggest adding to README: ``128129## Common Pitfalls130- **Arrow direction**: `orient="auto"` follows line direction. Line going right→left = arrowhead points left131- **Bubble overlap**: keep 38-44px vertical spacing between rows132- **Text overflow**: monospace 13px ≈ 7.8px/char, emoji ≈ 14px. Measure before setting bubble width133- **Character overlap with bubbles**: keep character x-zone and bubble x-zone separated by ≥10px134- **viewBox too large**: match viewBox to actual content, add ~10px padding135- **Tail stroke artifact**: always add a small `<rect>` at the bubble-tail junction to cover the stroke line136