Claude svg skill: 10 SVGs you can ship from one prompt
Ten real SVGs — a pixel-snapped icon, a matched icon set, an inline bar chart, an architecture diagram, an animated loader, a cleaned logo, a cross-viewer fix, a sprite sheet, a responsive viewBox, and a to-scale technical drawing — each as one Claude prompt with the exact markup it returns.
The thread running through all ten is the part LLMs usually fumble: structure. Free-handed AI SVG drifts by a few pixels, leaves a path open, or omits the namespace and breaks in Safari. The svg-precision skill specs the coordinates first and validates the output, so what you get back actually renders. If you also work in diagram tools, the Claude drawio skill cookbook is the editable-canvas counterpart.
Already know what skills are? Skip to the cookbook. First time? Read the explainer then come back. Need the install? It’s on the /skills/svg-precision page.

On this page · 21 sections▾
- What this skill does
- The cookbook
- Install + README
- Watch it built
- 01 · Pixel-snapped icon from a one-line description
- 02 · Multi-icon set with one shared stroke and grid
- 03 · Data-driven bar chart as inline SVG
- 04 · Architecture diagram with precise orthogonal connectors
- 05 · Animated SVG loader (SMIL, no JavaScript)
- 06 · Logo path cleanup and optimization
- 07 · Cross-viewer validation (fix the Safari / Figma drift)
- 08 · Sprite sheet with <symbol> and <use>
- 09 · Responsive viewBox + preserveAspectRatio fix
- 10 · Sketch description → structurally correct technical drawing
- Community signal
- The contrarian take
- Real SVG shipped
- Gotchas
- Pairs well with
- FAQ
- Sources
What this skill actually does
Sixty seconds of context before the cookbook — what the svg skill is, what Claude hands back when you invoke it, and the one thing it deliberately won’t do.
What this skill actually does
“Deterministic SVG generation, validation, and rendering. Use for icons, diagrams, charts, UI mockups, or technical drawings.”
— dkyazzentwatwa, the skill author · /skills/svg-precision
What Claude returns
When triggered, Claude first turns your request into a concrete spec — fixed width, height, and viewBox with absolute coordinates — instead of free-handing shapes. It builds the SVG with the bundled CLI (`scripts/svg_cli.py build`), then runs `svg_cli.py validate` to check the markup is well-formed and the paths close. When precise rendering matters it renders a PNG preview so you can eyeball the result. You get back the SVG markup plus a pass/fail on structural correctness.
What it does NOT do
It does not do photorealistic art or complex text-as-graphics, and it leans away from exotic filters and relative coordinates — the things that render differently across viewers.
How you trigger it
Build a 24×24 download icon as a validated SVG.Make this exported logo a clean, optimized SVG path.Why does this SVG break in Safari but not Chrome?Cost when idle
~100 tokens at idle (the skill name + description in the system prompt). The spec templates, recipes, and CLI scripts load only when the skill is triggered.
The cookbook
Each entry is an SVG you could ship today. They run roughly from simplest to fiddliest — the early ones are single icons on a grid, the middle ones lean on real SVG primitives (markers, SMIL, <symbol>), and the later ones are the cross-renderer and to-scale problems where eyeballing fails. Every entry pairs with one or two skills or MCP servers already on mcp.directory.
Install + README
If the skill isn’t on your machine yet, here’s the one-liner. The full install panel (Codex, Copilot, Antigravity variants) is on the skill page — the same UI is embedded below.
One-line install · by dkyazzentwatwa
Open skill pageInstall
mkdir -p .claude/skills/svg-precision && curl -L -o skill.zip "https://mcp.directory/api/skills/download/405" && unzip -o skill.zip -d .claude/skills/svg-precision && rm skill.zipInstalls to .claude/skills/svg-precision
Watch it built
Simon Willison’s conference talk on what 2025’s models can and can’t do, narrated entirely through pelican-on-a-bicycle SVGs. It’s the clearest way to internalize why structure is the hard part — a text model writes SVG blind, with no renderer to check its own work. That’s the gap the skill’s build-and-validate step closes.
Pixel-snapped icon from a one-line description
Turn a sentence into a single 24×24 icon that lines up on the pixel grid, so it stays crisp at 1× instead of going fuzzy on a half-pixel stroke.
ForFrontend engineers who need one icon and don't want to open Figma.
The prompt
Use the svg-precision skill. Build a 24×24 'download' icon: a downward arrow into a tray. Set viewBox="0 0 24 24", stroke-width 2, round caps and joins, no fill. Snap every coordinate to the 24-unit grid and keep the stroke centered on integer-plus-0.5 lines so it stays crisp at 1×. Validate it, then render a 4× PNG preview so I can eyeball the alignment. Output only the SVG markup, nothing wrapped in a font or filter.What slides.md looks like
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 3v12" />
<path d="M7 11l5 5 5-5" />
<path d="M4 20h16" />
</svg>One-line tweak
Swap the three paths for a single closed `d` and add `fill="currentColor"` to get a solid-style icon from the same grid.
Multi-icon set with one shared stroke and grid
Generate six icons that share a viewBox, stroke width, and corner radius so they read as a family — not six icons drawn by six different people.
ForDesign-system maintainers extending an existing icon set.
The prompt
Use the svg-precision skill. Build six 24×24 line icons for a settings menu: gear, bell, user, lock, search, logout. Every icon: viewBox="0 0 24 24", stroke-width 2, round caps/joins, 2-unit visual padding, optical center on the 12,12 axis. Keep the same corner radius on every rounded shape. Emit each as a standalone file named icon-{name}.svg and validate the whole set. Flag any icon whose bounding box drifts more than 1 unit off the others.What slides.md looks like
<!-- icon-bell.svg -->
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none" stroke="currentColor"
stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M6 9a6 6 0 0 1 12 0c0 5 2 7 2 7H4s2-2 2-7" />
<path d="M10 21a2 2 0 0 0 4 0" />
</svg>One-line tweak
Change `stroke-width` to 1.5 in the prompt and the whole set re-renders thinner — consistency holds because the grid is shared.
Data-driven bar chart as inline SVG
Render a labeled bar chart straight from numbers — no D3, no canvas, no chart library. The bars, axis, and labels are real SVG elements you can drop into an email or a static page.
ForBackend devs who need a chart in an email or a report with zero JS.
The prompt
Use the svg-precision skill. Build a 400×240 bar chart from this series: Jan 42, Feb 58, Mar 75, Apr 61, May 88. viewBox="0 0 400 240". Reserve 30px left for the y-axis and 24px bottom for x-labels. Compute bar x-positions and heights from the data (max=88 maps to the top of the plot area). Five bars, 12px gap, fill #14b8a6. Add a baseline rule and a value label centered above each bar. Validate, then render a PNG so I can confirm the bars don't overflow the viewBox.What slides.md looks like
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="240"
viewBox="0 0 400 240" font-family="sans-serif" font-size="11">
<line x1="30" y1="206" x2="392" y2="206" stroke="#94a3b8" />
<rect x="40" y="118" width="58" height="88" fill="#14b8a6" />
<rect x="110" y="86" width="58" height="120" fill="#14b8a6" />
<rect x="180" y="51" width="58" height="155" fill="#14b8a6" />
<text x="69" y="112" text-anchor="middle">42</text>
<text x="139" y="80" text-anchor="middle">58</text>
</svg>One-line tweak
Ask for `<rect rx="3">` and a second series offset by the bar width to turn the single chart into a grouped comparison.
Architecture diagram with precise orthogonal connectors
Draw a three-box service diagram where the connectors are right-angled and actually touch the box edges — the thing LLMs usually get visibly wrong by 4px.
ForEngineers documenting a system in a README without a diagram tool.
The prompt
Use the svg-precision skill. Build a 560×200 architecture diagram: three rounded boxes left-to-right — 'Client' (x=20), 'API' (x=230), 'Postgres' (x=440), each 100×60 vertically centered at y=70. Connect Client→API and API→Postgres with orthogonal (right-angle) connectors that meet the box edges exactly, with an arrowhead marker at the target. Label each connector ('HTTPS', 'SQL') centered on the horizontal run. viewBox="0 0 560 200". Validate that no connector endpoint floats off a box edge.What slides.md looks like
<svg xmlns="http://www.w3.org/2000/svg" width="560" height="200"
viewBox="0 0 560 200" font-family="sans-serif" font-size="12">
<defs>
<marker id="arrow" markerWidth="8" markerHeight="8" refX="7" refY="4"
orient="auto"><path d="M0 0l8 4-8 4z" fill="#475569"/></marker>
</defs>
<rect x="20" y="40" width="100" height="60" rx="8" fill="#0f172a" stroke="#334155"/>
<rect x="230" y="40" width="100" height="60" rx="8" fill="#0f172a" stroke="#334155"/>
<line x1="120" y1="70" x2="230" y2="70" stroke="#475569" marker-end="url(#arrow)"/>
<text x="175" y="62" text-anchor="middle" fill="#94a3b8">HTTPS</text>
</svg>One-line tweak
Ask for the connector to route as `M120 70 H175 V40 H230` and it bends up-and-over instead of straight across — useful when boxes aren't on the same row.
Animated SVG loader (SMIL, no JavaScript)
A spinner that animates with native SMIL inside the SVG — it loops in an <img> tag, an email-safe-ish context, or anywhere a CSS keyframe wouldn't reach.
ForAnyone who wants a self-contained loader with zero script and zero CSS file.
The prompt
Use the svg-precision skill. Build a 48×48 ring spinner. viewBox="0 0 48 48". A circle of radius 18 centered at 24,24, stroke #14b8a6, stroke-width 4, with stroke-dasharray set so roughly a quarter of the ring is visible. Rotate the visible arc 360° using a native SMIL <animateTransform> on 1s linear infinite. No CSS, no JS — the animation must live inside the SVG so it loops when embedded via <img>. Validate that the animate element references the right attributeName.What slides.md looks like
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" viewBox="0 0 48 48">
<circle cx="24" cy="24" r="18" fill="none" stroke="#1e293b" stroke-width="4"/>
<circle cx="24" cy="24" r="18" fill="none" stroke="#14b8a6" stroke-width="4"
stroke-linecap="round" stroke-dasharray="28 85">
<animateTransform attributeName="transform" type="rotate"
from="0 24 24" to="360 24 24"
dur="1s" repeatCount="indefinite"/>
</circle>
</svg>One-line tweak
Swap `<animateTransform>` for a CSS `@keyframes spin` block if the loader lives in a stylesheet-controlled app — the skill knows both paths.
Logo path cleanup and optimization
Take a messy exported logo — absolute coordinates with 9 decimal places, redundant points — and emit a clean, rounded-precision path that renders identically at a fraction of the bytes.
ForDevelopers shipping a vendor logo that bloats the bundle.
The prompt
Use the svg-precision skill. Here's a logo SVG with full-precision path data (@attach logo-raw.svg). Re-emit it with: coordinates rounded to 2 decimals, redundant collinear points removed, the viewBox tightened to the actual bounding box, and any unused <defs> or empty groups stripped. Keep the rendered shape pixel-identical — validate the cleaned version's bounding box matches the original within 0.5 units before you hand it back. Report the byte delta.What slides.md looks like
<!-- before: 2.41 KB, 9-decimal coords, redundant points -->
<path d="M12.000000001 4.5000002 L 35.99999 4.5 L 36 28.0001 ..."/>
<!-- after: 0.74 KB, 2-decimal coords, collinear points dropped -->
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 28">
<path d="M12 4.5H36V28H12z" fill="#0f172a"/>
</svg>One-line tweak
Add 'and convert strokes to filled paths' so the logo survives a `currentColor` recolor without stroke-scaling surprises.
Cross-viewer validation (fix the Safari / Figma drift)
An SVG that looks right in Chrome but breaks in Safari or imports wrong into Figma — usually an implicit unit, a missing namespace, or a filter nobody tested. The skill finds it before you ship.
ForAnyone burned by an SVG that renders in one tool and not another.
The prompt
Use the svg-precision skill. Validate @attach hero-graphic.svg for cross-viewer fidelity. Check specifically: the xmlns is present, width/height are unitless or explicit (no bare numbers Safari reads as px-but-not), every gradient/filter has an id that's actually referenced, text isn't relied on for layout, and there are no relative coordinates that shift when the viewBox changes. List each issue with the exact line, and emit a corrected version that renders the same in Chrome, Safari, and Figma. Then render a PNG to confirm.What slides.md looks like
validate hero-graphic.svg
✗ line 1: missing xmlns — Figma import will drop the shapes
✗ line 4: <filter id="blur"> defined but never referenced
✗ line 9: width="300" height="auto" — "auto" is invalid on width
✓ viewBox present, coordinates absolute
→ emitting hero-graphic.fixed.svg (3 fixes applied)One-line tweak
Add 'and inline any <image href> as base64' so the SVG is fully self-contained and survives being moved between repos.
Sprite sheet with <symbol> and <use>
Bundle a set of icons into one sprite file using <symbol> definitions, so a page references them with <use href="#icon-x"> instead of shipping a dozen separate requests.
ForFrontend devs cutting icon HTTP requests on a content-heavy page.
The prompt
Use the svg-precision skill. Take these four 24×24 icons (gear, bell, user, search) and assemble a single sprite SVG. Each icon becomes a <symbol id="icon-{name}" viewBox="0 0 24 24"> wrapping its paths. The root SVG is hidden (width=0 height=0, position absolute). Output a one-line usage example: <svg><use href="#icon-bell"/></svg>. Validate that every symbol id is unique and every referenced path closes. Confirm the sprite renders each symbol identically to its standalone version.What slides.md looks like
<svg xmlns="http://www.w3.org/2000/svg" style="display:none">
<symbol id="icon-search" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round">
<circle cx="11" cy="11" r="7"/><path d="M21 21l-4.3-4.3"/>
</symbol>
<symbol id="icon-user" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round">
<circle cx="12" cy="8" r="4"/><path d="M5 21a7 7 0 0 1 14 0"/>
</symbol>
</svg>
<!-- use: <svg class="w-6 h-6"><use href="#icon-user"/></svg> -->One-line tweak
Ask for each `<symbol>` to keep its own `stroke-width` so a heavier icon (e.g. a logo mark) can sit in the same sheet without inheriting the 2px stroke.
Responsive viewBox + preserveAspectRatio fix
An SVG that should scale to its container but instead stretches, crops, or pins to a corner. The fix is almost always the viewBox/preserveAspectRatio pair — and getting it exactly right is fiddly.
ForDevs whose hero illustration distorts on mobile.
The prompt
Use the svg-precision skill. @attach banner.svg stretches when its container changes aspect ratio. Make it responsive: set a correct viewBox matching the artwork's real bounds, drop the hard-coded width/height so it fills the parent, and set preserveAspectRatio so the art stays centered and uncropped (xMidYMid meet). Explain in one line what each value does. Then show me two render previews — one wide container, one square — to prove it doesn't distort in either.What slides.md looks like
<!-- before: pins to top-left, stretches on resize -->
<svg width="800" height="200" preserveAspectRatio="none"> ... </svg>
<!-- after: scales to parent, stays centered, no distortion -->
<svg xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 800 200"
preserveAspectRatio="xMidYMid meet"
style="width:100%;height:auto"> ... </svg>
<!-- xMidYMid = center; meet = scale to fit, never crop -->One-line tweak
Change `meet` to `slice` and the artwork fills the container edge-to-edge (cropping the overflow) — the right call for a full-bleed background.
Sketch description → structurally correct technical drawing
A described mechanical or schematic drawing — dimensions, labeled parts, leader lines — rendered as a clean SVG where the measurements are actually to scale, not eyeballed.
ForEngineers and makers who think in dimensions, not pixels.
The prompt
Use the svg-precision skill. Draw a labeled top-view of a 120mm × 80mm PCB at 2px/mm scale (so 240×160 in the viewBox). Place four 3.2mm mounting holes inset 5mm from each corner. Add a 16×16mm chip centered, two 2.54mm-pitch header rows along the top edge, and dimension lines with leader text for the board width and a hole-to-hole spacing. viewBox="0 0 240 160". Keep every dimension to scale and validate that holes don't overlap the board edge.What slides.md looks like
<svg xmlns="http://www.w3.org/2000/svg" width="240" height="160"
viewBox="0 0 240 160" font-family="monospace" font-size="8">
<rect x="10" y="10" width="220" height="140" fill="#0b3d2e" stroke="#0f766e"/>
<circle cx="20" cy="20" r="3.2" fill="#0b1120"/>
<circle cx="220" cy="20" r="3.2" fill="#0b1120"/>
<rect x="104" y="64" width="32" height="32" fill="#1e293b"/>
<line x1="10" y1="156" x2="230" y2="156" stroke="#64748b"/>
<text x="120" y="154" text-anchor="middle" fill="#94a3b8">120 mm</text>
</svg>One-line tweak
Bump the scale to 4px/mm for a print-ready drawing — the skill recomputes every coordinate so the ratios stay exact.
Community signal
Four voices on what models can and can’t do with SVG. Willison sets the benchmark; a Reddit developer documents the raster-to-SVG switch that motivates a skill like this; and two Hacker News practitioners describe where AI SVG falls short and the hybrid workflow they use to finish it.
“I decided to roll out my own LLM benchmark: how well can different models render an SVG of a pelican riding a bicycle?”
Simon Willison · Blog
Willison's 'pelican on a bicycle' test is now the most-cited informal benchmark for how well a model emits structured SVG. It works because the model has to construct coordinates from scratch — which is where closed paths, a sane viewBox, and non-overlapping shapes actually get tested.
“Spent over an hour prompting and never got anything close to what I was looking for. The outputs were cool images but not logos (if that makes sense). Too much detail/fell apart at small sizes... Ended up going an interesting direction: wrote a Claude Code skill that teaches Claude actual logo design principles and had it design directly in SVG.”
No_Paramedic_4881 (r/ClaudeAI) · Reddit
A developer who tried a raster image generator for a logo, watched it fall apart at small sizes, then switched to a skill that makes Claude author SVG directly with constraints. The exact before/after the svg-precision angle relies on.
“Think of diagrams in nice technical talks or papers. I've even tried having the LLM (Claude) generate SVGs. They all fall short.”
d4rkp4ttern (Hacker News) · Hacker News
From a discussion of AI image generation. A concise statement of the gap for technical-diagram-quality work — and why structure, not just pixels, is the missing piece.
“Prompting Claude to make SVGs then dropping them into Inkscape and getting the last ~20% of it to match the picture in my head has been a phenomenal user experience for me.”
pizza (Hacker News) · Hacker News
The prevailing hybrid workflow: generate with Claude, finish in a real editor. A validation-and-determinism skill is aimed at shrinking that last 20%.
The contrarian take
The sharpest pushback comes from an Ask HN thread literally titled “Best approach for generating SVG graphics with LLMs?” One commenter argues the problem isn’t the SVG — it’s deeper than any validator can reach:
“The problem is likely not the SVG aspect. It's the fact that LLMs don't have any real cross-training between visual concepts and the syntax that produces them. We have this problem with CSS, too, which LLMs are notoriously bad at. It's actually easier to do bitmaps which is why the visual models create those.”
dtagames (Hacker News) · Hacker News
From the Ask HN thread 'Best approach for generating SVG graphics with LLMs?' — the argument that the gap is conceptual, not syntactic.
It’s a fair point, and worth being honest about: a validator checks that an SVG is well-formed, not that it looks good. The skill doesn’t claim to give a model visual taste it lacks. What it does do is remove the entire class of failures that are syntactic — an unclosed path, a missing namespace, a stroke off the pixel grid, a coordinate that drifts when the viewBox changes. Those are most of what makes AI SVG “look broken,” and they’re mechanical to catch. For the parts that need real visual judgment — an illustration, a brand mark — reach for SVGMaker or a designer. For a 24×24 icon that has to sit on the grid and render the same in Safari and Figma, structure is the whole job, and that’s where the skill earns its place.
One more comparison worth naming: there are several SVG-adjacent MCP servers — SVGMaker (text-to-SVG over an API), Iconify SVG (search 200k+ existing icons), and SVG Converter (rasterize to PNG/JPG). The trade-off is the usual skill-vs-MCP one: the skill is ~100 idle tokens, an MCP’s tool schemas load every turn. Use the MCP when you genuinely need a running service or a huge icon library; otherwise the skill in this cookbook is the lighter path.
Real SVG shipped with Claude
Public examples of people generating real, structured SVG with Claude. Most don’t use the svg-precision skill specifically — they’re here to show the shape of the spec-render-validate loop in the wild, so you have a target in mind when you write the prompt.
- No_Paramedic_4881 (tryopendata) — open-source Claude Code skill that designs logos natively in SVG: generated 15 concepts, built an HTML comparison page with size ramps and dark-mode previews, shipped a final mark as five <path> elements
- Cole Medin — published a diagram skill so Claude Code generates spec-based diagrams, renders them, screenshots the PNG, and iterates on the imperfections (the same render-and-validate loop)
- Simon Willison — maintains the 'pelican riding a bicycle' benchmark (simonw/pelican-bicycle) that scores LLMs purely on SVG-as-code output, the de facto reference for how well models draw without a renderer in the loop
- Hacker News — 'Best approach for generating SVG graphics with LLMs?' — an Ask HN thread weighing direct generation, validation, and hand-finishing in Inkscape/Illustrator
- pizza (Hacker News) — production workflow: prompt Claude for the SVG, then close the last ~20% in Inkscape to match intent
Gotchas (the four that bite)
Sourced from the SVG spec’s well-known cross-renderer footguns and the skill’s own validation checklist. These are the failures the skill exists to catch.
A missing xmlns silently breaks Figma and standalone files
Inline SVG inside HTML works without the namespace, so it's easy to forget. But the moment the SVG is a standalone .svg file or gets imported into Figma, a missing xmlns="http://www.w3.org/2000/svg" makes the shapes vanish. Validation flags it every time (use case 7).
Half-pixel strokes blur small icons
A 1px stroke centered on an integer coordinate straddles two pixels and renders as a fuzzy 2px-ish line at 1×. Snap stroke centers to integer-plus-0.5 (or use even stroke widths on integer coords). The skill specs this up front instead of leaving it to chance.
preserveAspectRatio="none" stretches everything
It's the default culprit behind distorted logos. 'none' forces the artwork to fill the box on both axes independently. You almost always want xMidYMid meet (scale to fit, centered) — use case 9 is the fix. Pair it with a correct viewBox or the scaling has nothing to scale against.
Unreferenced gradient/filter ids bloat and confuse
A <linearGradient id="g"> or <filter id="blur"> that nothing points to is dead weight, and a typo'd reference (url(#grad) vs url(#g)) silently drops the effect. The optimizer in use case 6 strips orphans; the validator in use case 7 catches dangling references.
Pairs well with
Curated to match the cookbook’s actual integrations: the icon-and-diagram skills the use cases hand off to, plus the SVG MCP servers for generation, retrieval, and rasterization.
Related skills
Related MCP servers
Two posts that compose well with this cookbook: What are Claude Code skills? covers the mechanism, and the Claude drawio skill cookbook covers the editable-diagram side — the same cookbook shape, a different output format, and the natural pair when the drawing needs to stay editable rather than ship as raw markup.
Frequently asked questions
What is the svg skill, and what does it actually guarantee?
The svg-precision skill (by dkyazzentwatwa) makes Claude generate SVGs deterministically: it converts your request into a concrete spec with an explicit viewBox and absolute coordinates, builds the markup, then validates it. The guarantee is structural — well-formed XML, closed paths, a sane viewBox, no implicit units — not artistic. It's built for icons, charts, diagrams, and technical drawings where correctness matters more than flourish.
How do I generate an SVG with Claude that doesn't come out broken?
Trigger the svg skill and be specific about dimensions: give it a viewBox, a stroke width, and a target size. The skill's whole point is that it doesn't free-hand coordinates — it specs them first, builds with `svg_cli.py build`, and validates before handing back. The most common cause of a 'broken' AI SVG is a missing xmlns or a relative coordinate that shifts when the viewBox changes; validation catches both. Use case 1 above is the canonical clean-icon example.
Can the svg skill make a set of claude svg icons that actually match?
Yes — that's use case 2. Pass it a shared viewBox, stroke width, and corner radius, and ask for several named icons in one go. Because every icon is built against the same grid spec, the set reads as a family instead of drifting. The skill flags any icon whose bounding box wanders off the others. Pair it with the svg-icon-generator skill when you need a larger batch.
Why does an SVG render fine in Chrome but break in Safari or Figma?
Almost always one of three things: a missing xmlns namespace (Figma silently drops the shapes), a bare or invalid width/height value Safari interprets differently, or a gradient/filter id that's defined but never referenced. Use case 7 runs exactly this cross-viewer check and emits a corrected file. The validation-first design exists because 'looks right in my browser' is not the same as 'renders the same everywhere.'
Is there an SVG MCP server I should use instead of the svg skill?
There are a few, and they solve different problems. SVGMaker generates SVGs from a text prompt over an API; Iconify SVG retrieves existing icons from 200k+ collections; SVG Converter rasterizes SVG to PNG/JPG. Reach for those when a running service or a huge icon library is the point. The svg skill is the lighter choice for authoring correct vector markup from one Claude session — about 100 idle tokens versus an MCP whose tool schemas load every turn.
Does the svg skill do animation and sprite sheets, or only static icons?
Both. Use case 5 builds an animated loader with native SMIL (`<animateTransform>`) that loops even inside an `<img>` tag — no JS, no CSS file. Use case 8 assembles a sprite sheet from `<symbol>` definitions referenced via `<use href="#id">`. For animation-heavy work where motion is the hard part, the rendering-animate-svg skill is the more specialized tool.
Can it clean up or optimize a messy exported logo?
Yes — use case 6. Hand it a logo with 9-decimal coordinates and redundant points, and it re-emits rounded-precision path data, tightens the viewBox to the real bounds, and strips unused defs — while validating the cleaned shape still matches the original bounding box. It reports the byte delta so you can see the win. For turning a raster logo into vectors in the first place, use trace-to-svg.
Sources
Primary
- svg-precision skill — SKILL.md, references/spec.md, references/recipes.md, scripts/svg_cli.py
- MDN — SVG viewBox attribute
- MDN — preserveAspectRatio
- MDN — SVG <symbol> and <use>
- MDN — SMIL <animateTransform>
Community
- Simon Willison — “Pelicans on a bicycle” (the LLM SVG benchmark)
- Simon Willison — “The last six months in LLMs, illustrated by pelicans on bicycles”
- AI Engineer — Simon Willison’s “Pelicans on Bicycles” talk (video)
- Cole Medin — “Build BEAUTIFUL Diagrams with Claude Code” (video)
- Hacker News — “Best approach for generating SVG graphics with LLMs?”
- r/ClaudeAI — a Claude Code skill that designs logos directly in SVG
Internal