agentsclimarketplace

Vectormark idealize

Skill pradeepmouli/vectormark/skills/vectormark-idealize

Turn a raster logo image into a clean, editable, exactly-symmetric SVG using the vectormark CLI. Use when the user wants to vectorize, idealize, clean up, trace, or convert a logo/icon/emblem image (PNG/JPG) to SVG — including an image the agent just generated. Best on flat-color marks, app icons, and simple logos.From its SKILL.md

Install
npx -y skills add pradeepmouli/vectormark --skill vectormark-idealize

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.7 KB, as published. Nobody here has run it

Idealize a logo into SVG with vectormark

vectormark is a deterministic raster-logo → SVG idealizer. This skill takes a raster image — one the user supplies, or one you just generated — and produces a clean, editable, symmetric SVG by running the vectormark command-line tool.

The handoff is a file path, not image bytes: you save the raster to a file, then point the CLI at it. (A path is short text you can pass between steps; raw image bytes are not.)

Step 1 — Decide how to run vectormark

vectormark is published on PyPI. Pick the invocation that fits the environment; you will reuse it as <VM> in Step 3.

Preferred — uvx (no install, ephemeral). If uv is available (uv --version succeeds), run vectormark with no persistent install — uvx fetches and caches it on first use, later runs reuse the cache. Prefer the scoring extra, which enables render-ΔE candidate scoring for the best output:

# <VM> = full, with scoring (preferred)
uvx --from "vectormark[scoring]" vectormark
# <VM> = minimal (no resvg-py; cascade-priority pick, warns once)
uvx vectormark

Fallback — pip install (persistent). If uv is not available but Python ≥ 3.12 and pip are, install once, then call vectormark directly:

pip install "vectormark[scoring]"   # or: pip install vectormark   (minimal)
# <VM> = vectormark

If the scoring extra can't be fetched (a locked-down sandbox with no resvg-py wheel), drop [scoring] — vectormark still works, just with the cascade pick.

Notes

  • Requires Python ≥ 3.12. vectormark's own wheel is pure-Python; its dependencies and the scoring extra ship prebuilt manylinux/musllinux/ macOS/Windows wheels, so this works in any networked environment.
  • No PyPI? Install from the git source instead. Minimal: uvx --from "git+https://github.com/pradeepmouli/vectormark" vectormark. With scoring, use the PEP 508 form so the extra is carried: uvx --from "vectormark[scoring] @ git+https://github.com/pradeepmouli/vectormark" vectormark (same "<spec> @ git+…" form for pip install).

Step 2 — Get the raster onto disk

You need a PNG/JPG file path. Two cases:

  • The user already gave you an image file → use that path; skip to Step 3.
  • You are generating the logo (image-gen tool / model) → generate it, then save the bytes to a file, e.g. /tmp/vm-logo.png. Some hosts already expose the generated image as a file in the working sandbox; if so, use that path. Otherwise write the bytes out explicitly before Step 3.

The CLI reads the file from disk, so the generator and vectormark must share a filesystem — true when both run locally, or both run inside the same sandbox.

Step 3 — Run vectormark

Use the <VM> invocation you chose in Step 1:

# preferred (uvx + scoring):
uvx --from "vectormark[scoring]" vectormark /tmp/vm-logo.png -o /tmp/vm-logo.svg --colors 16
# or, after a pip install:
vectormark /tmp/vm-logo.png -o /tmp/vm-logo.svg --colors 16

The SVG is written to -o; omit -o to print it to stdout (handy when you want to read the SVG back to the user directly).

Useful flags (all optional):

FlagDefaultMeaning
-o, --outputstdoutwrite the SVG to this path
--colors16maximum palette colors
--epsilon1.5primitive/polygon recognition tolerance, px
--max-error1.0Bézier fit tolerance, px
--flattenoffemit plain paths instead of native primitives + <use>
--no-symmetryoffdisable symmetry detection

Guidance: start with defaults. Raise --colors for richer marks; lower it to force a flatter palette. Raise --epsilon if curves are coming out too busy. Use --flatten only if the consumer can't handle <use>/native primitives.

Step 3b — Explore looks across the geometry space (optional)

When the user wants to compare options or pick a look, --variants idealizes the mark across an epsilon × max_error grid and writes the set to a directory — no need to hand-tune flags one run at a time:

# 3×3 default grid -> ./<stem>-variants/
<VM> /tmp/vm-logo.png --variants --out-dir /tmp/vm-looks
# custom axes (any grid):
<VM> /tmp/vm-logo.png --variants --out-dir /tmp/vm-looks --epsilons 0.5,2,4 --max-errors 0.5,2
# also overlay the detected symmetry axis on each tile (a diagnostic view):
<VM> /tmp/vm-logo.png --variants --axes --out-dir /tmp/vm-looks

It writes one variant-e<ε>-m<max_error>.svg per cell, a manifest.json (each variant's params and the fitter strategies it actually used), and — when the scoring extra is installed — an annotated contact-sheet.png. Show the user the contact sheet (or summarize the manifest); let them pick a cell; then deliver that variant's SVG as the result.

The contact-sheet.png here is a real artifact the tool produced — that is exactly what Step 4's "don't fabricate a contact sheet" rule does NOT forbid. Show vectormark's real sheet; never invent one.

Step 4 — Deliver the result

  • For a single run, the deliverable is the SVG itself — report it and its output path, nothing more. vectormark emits one SVG string; do not fabricate optimization stats, file-size tables, color-swatch grids, "production ready" checklists, or a multi-panel contact sheet around it. Those are invented, not produced by the tool, and only add noise. (The real contact-sheet.png from --variants is a different thing — it's an actual tool output; show that.)
  • If you can't run vectormark, do not try to draw the SVG yourself. Never hand-author, guess, or hallucinate an output. If the tool didn't actually run (not installed, no network, an error, or you only have the input image), say so and stop — a fabricated SVG is worse than none, and only vectormark's real output is meaningful here.
  • To preview, open the file (open /tmp/vm-logo.svg on macOS, xdg-open on Linux) or read the SVG text back to the user — an <svg> document renders directly in any browser or markdown preview.

Tips

  • vectormark is deterministic: same input + flags → same SVG every time.
  • It targets flat-color logos/icons/emblems. Photographic or heavily-gradient images are out of scope and will produce poor results.
  • If you generated the image, keep the prompt simple and the mark flat — that is what idealizes cleanly.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.