Gemini SVG Creator
Generate high-quality SVG graphics by orchestrating Gemini 3.1 Pro via mcp__gemini__gemini-query. Claude handles prompt engineering, quality analysis, and optimization; Gemini 3.1 Pro handles SVG generation with its SOTA animated SVG and reasoning capabilities.
Prerequisites
This skill requires the @rlabs-inc/gemini-mcp MCP server. On first use, verify setup:
- Check MCP server is available: Try calling
mcp__gemini__gemini-query. If it fails, tell the user to add the Gemini MCP server:claude mcp add -e GEMINI_API_KEY=<your-key> -e GEMINI_PRO_MODEL=gemini-3.1-pro-preview gemini -- npx -y @rlabs-inc/gemini-mcp
- Recommend Gemini 3.1 Pro: If the MCP server works but uses an older model, suggest adding
GEMINI_PRO_MODEL=gemini-3.1-pro-preview to the MCP server env for best SVG quality. The user can update their .claude.json or run claude mcp remove gemini then re-add with the env variable above.
- API key: Requires a Google AI Studio API key (
GEMINI_API_KEY). Get one free at https://aistudio.google.com/apikey
Model Notes — Gemini 3.1 Pro
- Model ID:
gemini-3.1-pro-preview (configured via GEMINI_PRO_MODEL env)
- Thinking levels:
low, medium, high (default). Use medium for simple SVGs, high for complex/animated
- Strengths: Animated SVG generation, anatomically accurate illustrations, semantic SVG comments, complex scene composition, CSS animation with proper keyframes
- Context: 1M input tokens, 64K output tokens
- Known quirk: May have high latency under load. If timeout occurs, retry once
- Temperature: Keep default (1.0) — lower values degrade reasoning quality
Workflow
1. Understand request → Determine SVG category + complexity
2. Build prompt → Load category template from references/prompt-templates.md
3. Generate → Call Gemini 3.1 Pro with crafted prompt (thinkingLevel by complexity)
4. Analyze → Claude reviews SVG for issues
5. Refine → Send fix prompt back to Gemini (up to 2 rounds)
6. Optimize → Claude cleans up final SVG (see references/svg-optimization.md)
7. Save → Write .svg file(s) and present to user
Step 1: Understand & Classify
Determine the SVG category and complexity:
| Category |
Triggers |
Complexity |
| logo |
logo, brand, wordmark, lettermark, emblem, badge |
medium |
| icon |
icon, symbol, pictogram, glyph, favicon |
low |
| illustration |
illustration, scene, drawing, artwork, graphic |
high |
| infographic |
infographic, data visualization, chart, diagram |
high |
| pattern |
pattern, texture, background, tile, seamless |
medium |
| animated |
animated, animation, motion, loading, spinner |
high |
| animated-scene |
animated illustration, character animation, story |
high |
| ui-element |
button, card, banner, header, component |
low-medium |
Gather any missing essentials:
- What to depict (subject, content, data)
- Style preference (minimalist, gradient, hand-drawn, isometric, etc.)
- Colors (specific hex values, or a mood like "warm", "corporate", "playful")
- Size/ratio (square, wide, tall — defaults to
0 0 800 600 if unspecified)
- Animation (if animated: what moves, speed, loop behavior)
Do NOT over-question. If the user gave a clear description, proceed immediately.
Step 2: Build the Prompt
Read references/prompt-templates.md for the system prompt and category-specific suffix.
Construct the Gemini prompt as:
[Master System Prompt for Gemini 3.1 Pro]
[Category-Specific Suffix]
[Style Modifier (if applicable)]
Now create: [user's description, enriched with design details]
Colors: [specified or "choose a harmonious palette suited to the subject"]
ViewBox: [specified or default]
Prompt enrichment rules:
- Add composition guidance (center the subject, use negative space, layer foreground/background)
- Specify element count to control complexity (fewer = cleaner)
- Name specific SVG features when relevant (gradients, filters, clipPaths, masks)
- For text in SVGs, specify: font-family (use web-safe), font-size, font-weight, fill
- For animations, describe timing, easing, and which elements move
- Leverage Gemini 3.1 Pro's strength: request semantic HTML comments describing each section
Step 3: Generate
Select thinking level based on complexity:
| Complexity |
thinkingLevel |
Use for |
| low |
low |
Simple icons, basic shapes |
| medium |
medium |
Logos, patterns, UI elements |
| high |
high |
Illustrations, animations, complex scenes |
Call Gemini 3.1 Pro:
mcp__gemini__gemini-query(
prompt: <constructed prompt>,
model: "pro",
thinkingLevel: <selected level>
)
Extract the SVG from the response. Strip any markdown fences, explanatory text, or preamble — keep only <svg>...</svg>.
If timeout/error occurs: Retry once. Gemini 3.1 Pro may have high latency for complex SVGs.
Step 4: Analyze
Review the returned SVG for:
- Validity — Well-formed XML? All tags closed? Attributes quoted?
- Completeness — Does it match what was requested? Missing elements?
- Quality — Proportions correct? Colors harmonious? Text readable?
- Structure — Has viewBox? Uses
<defs> for reusables? Groups organized?
- Bloat — Unnecessary elements? Excessive precision? Redundant attributes?
- Animation (if animated) — All @keyframes defined? prefers-reduced-motion? Smooth loops?
stdDeviation not stdDev?
Score mentally: if 2+ issues found, proceed to refinement.
Step 5: Refine (up to 2 rounds)
If issues exist, send a targeted fix prompt to Gemini:
Here is an SVG that needs fixes:
<svg>...the current SVG...</svg>
Issues to fix:
1. [specific issue and how to fix it]
2. [specific issue and how to fix it]
[Include Quality Checklist Prompt from references/prompt-templates.md]
Call mcp__gemini__gemini-query again with model: "pro", same or higher thinkingLevel.
After 2 refinement rounds, stop refining and proceed to optimization — diminishing returns beyond this.
Step 6: Optimize
Apply Claude-side cleanup (see references/svg-optimization.md for full checklist):
- Strip wrapping — Remove markdown fences, text outside
<svg> tags
- Fix xmlns — Ensure
xmlns="http://www.w3.org/2000/svg" present
- Fix viewBox — Ensure viewBox is set and frames content properly
- Consolidate colors — Move inline colors to
<defs><style> classes
- Add accessibility — Add
<title> and <desc>, role="img", aria-labelledby
- Clean decimals — Round to 2 decimal places
- Remove dead code — Empty groups, hidden elements, unused defs
- Fix deprecated —
xlink:href → href
- Fix filter typos —
stdDev → stdDeviation (common Gemini output error)
- Animation safety — Ensure
prefers-reduced-motion media query present for animated SVGs
Step 7: Save & Present
Save SVG file(s) using the Write tool:
- Use descriptive filename:
{subject}-{style}.svg (e.g., rocket-minimalist.svg)
- For multiple variations, use numbered suffixes or style names
- Default save location: current working directory, or user-specified path
Present to the user:
- Show the SVG inline (the raw code)
- Describe what was created and key design choices
- Offer to iterate: "Want me to adjust colors, style, or add variations?"
Multi-Variation Workflow
When the user wants multiple concepts or variations:
- Generate each variation as a separate Gemini call with modified prompts
- Name files clearly:
logo-concept-1-geometric.svg, logo-concept-2-organic.svg
- Present all variations with brief rationale for each
- Let user pick favorites for refinement
Style Quick Reference
| Style |
Key characteristics |
| Minimalist |
Few elements, monochrome/2-color, geometric, whitespace |
| Flat |
No gradients/shadows, bold solids, clear silhouettes |
| Gradient |
Linear/radial gradients, smooth transitions, modern depth |
| Hand-drawn |
Imperfect lines, organic shapes, warm and friendly |
| Isometric |
30-degree angles, consistent depth, flat-shaded faces |
| Glassmorphism |
Semi-transparent, blur filters, frosted glass, subtle borders |
| Retro |
Muted palette, halftone textures, rounded shapes |
| Line Art |
Strokes only, no fills, consistent width, single color |
| Neon |
Dark background, bright strokes, glow filter, high contrast |
| Geometric |
Circles/rects/triangles only, mathematical precision, bold blocks |
For full prompt templates per style, see references/prompt-templates.md.
Resources
- references/prompt-templates.md — Master system prompt (Gemini 3.1 Pro optimized), category suffixes, animation templates, style modifiers, quality checklist
- references/svg-optimization.md — Post-generation cleanup checklist, common Gemini 3.1 Pro SVG issues and fixes
1---2name: gemini-svg-creator3description: Create professional SVG graphics powered by Gemini 3.1 Pro via the Gemini MCP server. Generates logos, icons, illustrations, infographics, patterns, animated SVGs, and UI elements with a dual-model refinement loop (Claude orchestrates + Gemini generates). Gemini 3.1 Pro has SOTA animated SVG capabilities and advanced reasoning. Use this skill when the user asks to: create an SVG, design a logo, make an icon, draw an illustration, create an infographic, design a pattern, make an animated SVG, generate vector graphics, create SVG art, or any request involving SVG creation or generation. Also triggers on: 'generate SVG', 'draw me', 'design graphic', 'create vector', 'SVG illustration', 'SVG icon', 'SVG animation', 'create badge', 'design emblem', 'make a diagram'.4---56# Gemini SVG Creator78Generate high-quality SVG graphics by orchestrating **Gemini 3.1 Pro** via `mcp__gemini__gemini-query`. Claude handles prompt engineering, quality analysis, and optimization; Gemini 3.1 Pro handles SVG generation with its SOTA animated SVG and reasoning capabilities.910## Prerequisites1112This skill requires the `@rlabs-inc/gemini-mcp` MCP server. On first use, verify setup:13141. **Check MCP server is available**: Try calling `mcp__gemini__gemini-query`. If it fails, tell the user to add the Gemini MCP server:15 ```16 claude mcp add -e GEMINI_API_KEY=<your-key> -e GEMINI_PRO_MODEL=gemini-3.1-pro-preview gemini -- npx -y @rlabs-inc/gemini-mcp17 ```182. **Recommend Gemini 3.1 Pro**: If the MCP server works but uses an older model, suggest adding `GEMINI_PRO_MODEL=gemini-3.1-pro-preview` to the MCP server env for best SVG quality. The user can update their `.claude.json` or run `claude mcp remove gemini` then re-add with the env variable above.193. **API key**: Requires a Google AI Studio API key (`GEMINI_API_KEY`). Get one free at https://aistudio.google.com/apikey2021## Model Notes — Gemini 3.1 Pro2223- **Model ID**: `gemini-3.1-pro-preview` (configured via `GEMINI_PRO_MODEL` env)24- **Thinking levels**: `low`, `medium`, `high` (default). Use `medium` for simple SVGs, `high` for complex/animated25- **Strengths**: Animated SVG generation, anatomically accurate illustrations, semantic SVG comments, complex scene composition, CSS animation with proper keyframes26- **Context**: 1M input tokens, 64K output tokens27- **Known quirk**: May have high latency under load. If timeout occurs, retry once28- **Temperature**: Keep default (1.0) — lower values degrade reasoning quality2930## Workflow3132```331. Understand request → Determine SVG category + complexity342. Build prompt → Load category template from references/prompt-templates.md353. Generate → Call Gemini 3.1 Pro with crafted prompt (thinkingLevel by complexity)364. Analyze → Claude reviews SVG for issues375. Refine → Send fix prompt back to Gemini (up to 2 rounds)386. Optimize → Claude cleans up final SVG (see references/svg-optimization.md)397. Save → Write .svg file(s) and present to user40```4142## Step 1: Understand & Classify4344Determine the SVG category and complexity:4546| Category | Triggers | Complexity |47|----------|----------|------------|48| **logo** | logo, brand, wordmark, lettermark, emblem, badge | medium |49| **icon** | icon, symbol, pictogram, glyph, favicon | low |50| **illustration** | illustration, scene, drawing, artwork, graphic | high |51| **infographic** | infographic, data visualization, chart, diagram | high |52| **pattern** | pattern, texture, background, tile, seamless | medium |53| **animated** | animated, animation, motion, loading, spinner | high |54| **animated-scene** | animated illustration, character animation, story | high |55| **ui-element** | button, card, banner, header, component | low-medium |5657Gather any missing essentials:58- **What** to depict (subject, content, data)59- **Style** preference (minimalist, gradient, hand-drawn, isometric, etc.)60- **Colors** (specific hex values, or a mood like "warm", "corporate", "playful")61- **Size/ratio** (square, wide, tall — defaults to `0 0 800 600` if unspecified)62- **Animation** (if animated: what moves, speed, loop behavior)6364Do NOT over-question. If the user gave a clear description, proceed immediately.6566## Step 2: Build the Prompt6768Read `references/prompt-templates.md` for the system prompt and category-specific suffix.6970Construct the Gemini prompt as:7172```73[Master System Prompt for Gemini 3.1 Pro]7475[Category-Specific Suffix]7677[Style Modifier (if applicable)]7879Now create: [user's description, enriched with design details]8081Colors: [specified or "choose a harmonious palette suited to the subject"]82ViewBox: [specified or default]83```8485**Prompt enrichment rules:**86- Add composition guidance (center the subject, use negative space, layer foreground/background)87- Specify element count to control complexity (fewer = cleaner)88- Name specific SVG features when relevant (gradients, filters, clipPaths, masks)89- For text in SVGs, specify: font-family (use web-safe), font-size, font-weight, fill90- For animations, describe timing, easing, and which elements move91- Leverage Gemini 3.1 Pro's strength: request semantic HTML comments describing each section9293## Step 3: Generate9495Select thinking level based on complexity:9697| Complexity | thinkingLevel | Use for |98|------------|---------------|---------|99| low | `low` | Simple icons, basic shapes |100| medium | `medium` | Logos, patterns, UI elements |101| high | `high` | Illustrations, animations, complex scenes |102103Call Gemini 3.1 Pro:104105```106mcp__gemini__gemini-query(107 prompt: <constructed prompt>,108 model: "pro",109 thinkingLevel: <selected level>110)111```112113Extract the SVG from the response. Strip any markdown fences, explanatory text, or preamble — keep only `<svg>...</svg>`.114115**If timeout/error occurs**: Retry once. Gemini 3.1 Pro may have high latency for complex SVGs.116117## Step 4: Analyze118119Review the returned SVG for:1201211. **Validity** — Well-formed XML? All tags closed? Attributes quoted?1222. **Completeness** — Does it match what was requested? Missing elements?1233. **Quality** — Proportions correct? Colors harmonious? Text readable?1244. **Structure** — Has viewBox? Uses `<defs>` for reusables? Groups organized?1255. **Bloat** — Unnecessary elements? Excessive precision? Redundant attributes?1266. **Animation** (if animated) — All @keyframes defined? prefers-reduced-motion? Smooth loops? `stdDeviation` not `stdDev`?127128Score mentally: if 2+ issues found, proceed to refinement.129130## Step 5: Refine (up to 2 rounds)131132If issues exist, send a targeted fix prompt to Gemini:133134```135Here is an SVG that needs fixes:136137<svg>...the current SVG...</svg>138139Issues to fix:1401. [specific issue and how to fix it]1412. [specific issue and how to fix it]142143[Include Quality Checklist Prompt from references/prompt-templates.md]144```145146Call `mcp__gemini__gemini-query` again with `model: "pro"`, same or higher `thinkingLevel`.147148After 2 refinement rounds, stop refining and proceed to optimization — diminishing returns beyond this.149150## Step 6: Optimize151152Apply Claude-side cleanup (see `references/svg-optimization.md` for full checklist):1531541. **Strip wrapping** — Remove markdown fences, text outside `<svg>` tags1552. **Fix xmlns** — Ensure `xmlns="http://www.w3.org/2000/svg"` present1563. **Fix viewBox** — Ensure viewBox is set and frames content properly1574. **Consolidate colors** — Move inline colors to `<defs><style>` classes1585. **Add accessibility** — Add `<title>` and `<desc>`, `role="img"`, `aria-labelledby`1596. **Clean decimals** — Round to 2 decimal places1607. **Remove dead code** — Empty groups, hidden elements, unused defs1618. **Fix deprecated** — `xlink:href` → `href`1629. **Fix filter typos** — `stdDev` → `stdDeviation` (common Gemini output error)16310. **Animation safety** — Ensure `prefers-reduced-motion` media query present for animated SVGs164165## Step 7: Save & Present166167Save SVG file(s) using the Write tool:168- Use descriptive filename: `{subject}-{style}.svg` (e.g., `rocket-minimalist.svg`)169- For multiple variations, use numbered suffixes or style names170- Default save location: current working directory, or user-specified path171172Present to the user:173- Show the SVG inline (the raw code)174- Describe what was created and key design choices175- Offer to iterate: "Want me to adjust colors, style, or add variations?"176177## Multi-Variation Workflow178179When the user wants multiple concepts or variations:1801811. Generate each variation as a separate Gemini call with modified prompts1822. Name files clearly: `logo-concept-1-geometric.svg`, `logo-concept-2-organic.svg`1833. Present all variations with brief rationale for each1844. Let user pick favorites for refinement185186## Style Quick Reference187188| Style | Key characteristics |189|-------|-------------------|190| Minimalist | Few elements, monochrome/2-color, geometric, whitespace |191| Flat | No gradients/shadows, bold solids, clear silhouettes |192| Gradient | Linear/radial gradients, smooth transitions, modern depth |193| Hand-drawn | Imperfect lines, organic shapes, warm and friendly |194| Isometric | 30-degree angles, consistent depth, flat-shaded faces |195| Glassmorphism | Semi-transparent, blur filters, frosted glass, subtle borders |196| Retro | Muted palette, halftone textures, rounded shapes |197| Line Art | Strokes only, no fills, consistent width, single color |198| Neon | Dark background, bright strokes, glow filter, high contrast |199| Geometric | Circles/rects/triangles only, mathematical precision, bold blocks |200201For full prompt templates per style, see `references/prompt-templates.md`.202203## Resources204205- **references/prompt-templates.md** — Master system prompt (Gemini 3.1 Pro optimized), category suffixes, animation templates, style modifiers, quality checklist206- **references/svg-optimization.md** — Post-generation cleanup checklist, common Gemini 3.1 Pro SVG issues and fixes