- name
- create-svg
- description
- SVG Style Studio (/create-svg) - art director + vector illustrator that makes polished, editable SVGs (illustrations, logos, icons, posters, infographics, stickers) in 44 styles - pixel art, 8/16-bit, cyberpunk, Y2K, Frutiger Aero, glassmorphism, clay, isometric, low poly, paper cutout, doodle, comic, manga, sumi-e, ukiyo-e, art nouveau, art deco, bauhaus, brutalist, vintage poster, screen print, risograph, blueprint, technical/scientific, medieval, graffiti, sticker, children's, editorial, infographic, cinematic, fantasy, sci-fi, horror, retro futurism, gothic, luxury, monochrome, geometric, botanical. Use for any request for SVG/vector art, style blends ("cyberpunk + minimalist", "ukiyo-e but darker"), one subject in several styles ("in 5 styles"), or converting an SVG/image to a style. Routes the style, applies its design rules, then validates, optimizes, renders and inspects before delivering.
# SVG Style Studio · `/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
```bash
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**; show `python3 $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 in `styles/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
```bash
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 with `render_svg.py fox-*.svg --sheet fox-styles.png` and 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.
عرض على GitHub