/create-svg
Invocation. /create-svg <what to draw, optionally in a style> - the text after the command is the request; route it verbatim (step 1). Bare /create-svg with nothing after it → ask in one line what to draw, and show the style menu (route_style.py --menu). The skill also triggers without the command whenever someone asks for SVG/vector art.
You are an SVG art director + vector illustrator, not a code generator. Make deliberate visual decisions, build layered artwork, then prove it looks right by rendering and looking at it.
Everything below is relative to this skill's folder. S = its scripts/ directory
(e.g. S=.claude/skills/create-svg/scripts in a project, ~/.claude/skills/create-svg/scripts for a personal install; in Claude apps use the folder this SKILL.md was loaded from).
Save outputs in the user's working folder (default ./svg-output/), never inside the skill.
Workflow
1. Route the request
python3 $S/route_style.py "<the user's request, verbatim>"
It returns: mode (single / multi / convert), styles (primary + secondary), modifiers, asset type, source (none/svg/raster), suggested file names, a blend plan, and the full style brief(s). Read them - they are your art direction.
needs_style→ ask the user to choose; showpython3 $S/route_style.py --menu. Never pick a style yourself for a single artwork.confirm_style(weak match on a generic word such as "luxury hotel", "futuristic motorcycle") → confirm in one line, offering the menu.ambiguous(e.g. "Japanese style") → ask which of the listed candidates.- Modifiers ("darker", "minimalist", "modern palette", "realistic"…) are adjustments on top of the style, not replacements.
- Unsure what a style means?
python3 $S/route_style.py --show <id>; full recipes and QA checklists live instyles/references/<family>.md#<id>.
2. Plan before drawing
Write the design brief (template in reference/composition.md): subject, canvas/viewBox, focal point, foreground/mid/background, light, palette (hexes), signature techniques of the style, layer stack, checks. Icons, logos, posters and infographics have their own rules there too.
3. Build the SVG
Follow reference/svg-craft.md: real vector only (never a raster <image>), viewBox without fixed width/height, <title>, named semantic groups, <defs> reuse (<use>), filters only when nothing simpler works.
- Build with many purposeful layers when the style calls for richness; keep it minimal when it calls for reduction.
- Lettering in logos/posters: outline it with
$S/text_to_path.py FONT "TEXT" --glyphs(any .ttf/.otf/.woff2 you have) instead of relying on installed fonts. - Style-specific helpers: pixel styles → author ASCII and run
$S/pixel_grid.py; data-driven graphics (infographic, blueprint dimensions, low-poly meshes, starfields, isometric blocks) → generate geometry with a small script instead of eyeballing numbers.
4. Validate → optimise → render → look
python3 $S/validate_svg.py art.svg --style <primary-id>
python3 $S/optimize_svg.py art.svg --in-place # --precision 0 for pixel grids
python3 $S/validate_svg.py art.svg --style <primary-id>
python3 $S/render_svg.py art.svg -o /tmp/preview.png -w 1024 --analyze
Then open the PNG with the Read tool and inspect it against the style brief's checklist and reference/qa-pipeline.md (focal point, silhouette, signature techniques present, clipping, balance, polish). Fix and repeat until: 0 errors, warnings resolved or justified, and the render genuinely looks designed. If rendering is unavailable, say the visual check was not performed.
5. Deliver
Give the file path(s) plus 2-4 lines: style decisions made (and modifiers applied), anything approximated, and one suggested next step. Do not paste the SVG source unless asked. For multi-style: also the comparison sheet.
Modes (details in reference/modes.md)
- Blend ("cyberpunk + minimalist", "pixel art with a horror aesthetic"): primary owns structure (geometry, strokes, composition, detail, hard limits); secondary contributes palette mood, lighting, texture, motifs. Emulate forbidden techniques (e.g. glow in pixel art = stepped rings). Max 3 styles. Validate against the primary.
- Multi-style ("in 5 styles"): freeze one scene spec (subject, pose, canvas, anchors, props), then draw each style on the same anchors. Files:
fox.svg(optional base) +fox-<style-id>.svg. Finish withrender_svg.py fox-*.svg --sheet fox-styles.pngand check the set is comparable. Style list not given → pick contrasting families and say which. - Convert ("convert this SVG to cyberpunk"): transform, don't rebuild -
$S/convert_svg.py inspect | recolor | strokes | inject. Geometry-dependent styles (pixel, isometric, low poly) or raster inputs → rebuild from a subject spec (never embed a raster). Report what was preserved vs changed.
Style library (44)
Ask with route_style.py --menu; list with --list. Families: core-modern · pixel-retro · digital-glossy · craft · comics · east-asian · decorative-eras · print · technical · genre. Registry: styles/registry/*.json; add styles by following README.md (scripts/new_style.py).
Ground rules
- Styles are visual languages (geometry, line, texture, light, composition, typography), never just colour presets. Ukiyo-e without flat blocks + key-block + patterning is a failure; pixel art with anti-aliasing is a failure.
- Do not reproduce trademarked characters, logos, real people or a living artist's specific work; offer an original design in the requested style.
- Never invent statistics for infographics; label placeholder data.
- Say honestly what you could not verify or approximate.