From image-production
Use when the user wants to trace a raster image (PNG/JPEG) into an SVG vector — useful for logos, line art, diagrams, and stylized illustrations. Wraps `vtracer` (Rust-backed, via Python wheel in the plugin venv). Companion to `svg-to-raster` (other direction).
npx claudepluginhub danielrosehill/claude-code-plugins --plugin image-productionThis skill uses the workspace's default tool permissions.
Convert raster images to SVG via [vtracer](https://github.com/visioncortex/vtracer). vtracer is a colour-clustering tracer — much better than `potrace` for full-colour images, comparable for B/W line art. Installed as a Python wheel in the plugin venv (bundled Rust binary, no `cargo` needed at install time).
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Convert raster images to SVG via vtracer. vtracer is a colour-clustering tracer — much better than potrace for full-colour images, comparable for B/W line art. Installed as a Python wheel in the plugin venv (bundled Rust binary, no cargo needed at install time).
--filter-speckle + low --color-precision).svg-to-raster if you want to upscale a small raster losslessly.Do not use this skill when:
upscale-image for raster upscaling instead.<input-dir>/svg/. Never overwrites originals.color (default, multi-colour with clustering) or binary (B/W line art, faster, smaller output).1..8, default 6. Lower = fewer colours = smaller / more abstract SVG.0..255, default 16. Larger = fewer layers, simpler output.4. Discards regions smaller than N pixels — raise to denoise.corner threshold (default 60 deg), length threshold (default 4.0), splice threshold (default 45 deg). Most users won't tune these; expose only if asked.--recursive for directory descent.Resolve venv: VENV_DIR="${CLAUDE_USER_DATA:-${XDG_DATA_HOME:-$HOME/.local/share}/claude-plugins}/image-production/venv".
Verify vtracer is importable:
"$VENV_DIR/bin/python" -c "import vtracer" 2>&1
If missing → point at install-deps.
Enumerate inputs (*.png, *.jpg, *.jpeg, *.bmp, *.tiff). Skip already-SVG with note.
For each file, call vtracer via Python:
"$VENV_DIR/bin/python" -c "
import vtracer, sys
vtracer.convert_image_to_svg_py(
sys.argv[1], # input
sys.argv[2], # output
colormode='<color|binary>',
color_precision=<int>,
layer_difference=<int>,
filter_speckle=<int>,
corner_threshold=<int>,
length_threshold=<float>,
splice_threshold=<int>,
path_precision=8,
)
" "<input>" "<output.svg>"
Track size deltas and a quick "vector quality" sniff: file size ratio (SVG / PNG), and visually-noticeable degradation flags (very large filter_speckle on a detailed source = likely loss).
<output-dir>/.grep -c '<path' <file>), file size delta.filter_speckle) or low (likely over-simplified — drop layer_difference).binary mode is dramatically faster and produces cleaner output than color.color, color_precision=6, filter_speckle=4, layer_difference=16. Defaults are tuned for this.color, color_precision=3, filter_speckle=20, layer_difference=32. Aggressive simplification, painterly look.binary, filter_speckle=10. Smallest output.potrace (B/W only). vtracer is the right default for everything else.vtracer-cli) — the Python wheel is preferred here so the venv is self-contained.