Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Wrap raster logos (webp, png, jpg) in self-contained SVG files via base64 embedding for pixel-perfect matches. Use when creating logo SVGs, converting webp/png to svg, fixing hand-drawn logos that do not match the source, or preparing plugin/README logo assets without a vector source file.
.claude/skills/hashgraph-online-raster-logo-svg/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-06 | ✗→✓ | ▲ Improved | 630% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -58% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -41% | 0% |
| case-22 | ✗→✓ | ▲ Improved | -52% | 0% |
| case-21 | ✗→✓ | ▲ Improved | -11% | 0% |
Create an SVG wrapper around an existing raster logo so the output is pixel-identical to the source. This is not true vectorization.
| Need | Do | |------|-----| | Match an existing raster logo exactly | Embed (this skill) | | Crisp at any size, editable paths | Export from Figma/Illustrator, or commission true vector | | Quick monochrome outline | Potrace (usually wrong for brand logos with color/gold/type) | | Hand-redrawn paths | Only if no raster exists and user accepts approximation |
Default to embed when a .webp, .png, or .jpg logo already exists and the user wants .svg.
docs/logo.webp). Do not delete it.bashpython3 skills/raster-logo-svg/scripts/embed-logo.py docs/logo.webp -o docs/logo.svg -l "project-name"
Requires ImageMagick (magick identify) for dimensions. Install: brew install imagemagick.
markdown<img src="docs/logo.webp" alt="project-name" width="580" />
Use the SVG for plugin manifests, favicons, npm package icons, or anywhere a .svg path is required.
icon-traced.svg, potrace output, failed hand-drawn attempts).The script produces:
xml<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 W H" role="img" aria-label="…"> <image width="W" height="H" href="data:image/webp;base64,…"/> </svg>
viewBox matches source pixel dimensions from magick identify.image/webp, image/png, or image/jpeg from file extension.href="logo.webp" (breaks when SVG is copied alone).Only for local tooling that resolves sibling files (not GitHub README <img src="logo.svg">):
xml<image href="logo.webp" width="1163" height="350"/>
Prefer base64 embed for portable .svg files.
bashpython3 skills/raster-logo-svg/scripts/embed-logo.py \ docs/designer-skill-mcp-logo.webp \ -o docs/designer-skill-mcp-logo.svg \ -l "designer-skill-mcp"
README uses designer-skill-mcp-logo.webp; plugin/icon paths can use the .svg.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 15,517 | 14,558 | -6% | 1 | 1 | 0% | 1,620 | 2,030 | +25% | 0 | 0 | — |
case-02 | pass→pass | 17,117 | 19,475 | +14% | 1 | 1 | 0% | 2,226 | 2,842 | +28% | 0 | 0 | — |
case-03 | pass→pass | 8,561 | 12,388 | +45% | 1 | 1 | 0% | 1,341 | 2,131 | +59% | 0 | 0 | — |
case-04 | fail→fail | 17,928 | 16,444 | -8% | 1 | 1 | 0% | 2,523 | 1,650 | -35% | 0 | 0 | — |
case-05 | fail→fail | 36,525 | 13,747 | -62% | 1 | 1 | 0% | 4,454 | 1,500 | -66% | 0 | 0 | — |
case-06 | fail→pass | 22,497 | 16,788 | -25% | 1 | 1 | 0% | 270 | 1,970 | +630% | 0 | 0 | — |
case-07 | fail→pass | 24,586 | 3,057 | -88% | 1 | 1 | 0% | 3,016 | 1,260 | -58% | 0 | 0 | — |
case-08 | fail→pass | 18,941 | 10,030 | -47% | 1 | 1 | 0% | 2,631 | 1,561 | -41% | 0 | 0 | — |
case-09 | pass→pass | 12,432 | 6,806 | -45% | 1 | 1 | 0% | 1,318 | 1,138 | -14% | 0 | 0 | — |
case-22 | fail→pass | 21,657 | 8,144 | -62% | 1 | 1 | 0% | 2,987 | 1,433 | -52% | 0 | 0 | — |
case-10 | pass→pass | 12,808 | 9,382 | -27% | 1 | 1 | 0% | 1,693 | 1,576 | -7% | 0 | 0 | — |
case-11 | pass→pass | 17,514 | 9,305 | -47% | 1 | 1 | 0% | 1,978 | 2,092 | +6% | 0 | 0 | — |
case-12 | pass→pass | 14,394 | 10,680 | -26% | 1 | 1 | 0% | 1,637 | 1,865 | +14% | 0 | 0 | — |
case-13 | pass→pass | 13,660 | 3,540 | -74% | 1 | 1 | 0% | 1,241 | 1,544 | +24% | 0 | 0 | — |
case-14 | pass→pass | 6,492 | 8,784 | +35% | 1 | 1 | 0% | 1,167 | 1,493 | +28% | 0 | 0 | — |
case-15 | pass→pass | 16,493 | 13,170 | -20% | 1 | 1 | 0% | 2,510 | 2,147 | -14% | 0 | 0 | — |
case-16 | pass→pass | 9,719 | 11,676 | +20% | 1 | 1 | 0% | 1,490 | 2,027 | +36% | 0 | 0 | — |
case-17 | pass→pass | 9,665 | 11,129 | +15% | 1 | 1 | 0% | 1,565 | 1,935 | +24% | 0 | 0 | — |
case-18 | pass→pass | 2,825 | 3,579 | +27% | 1 | 1 | 0% | 470 | 1,332 | +183% | 0 | 0 | — |
case-19 | pass→pass | 13,403 | 10,839 | -19% | 1 | 1 | 0% | 1,126 | 1,568 | +39% | 0 | 0 | — |
case-20 | pass→pass | 8,110 | 6,817 | -16% | 1 | 1 | 0% | 316 | 1,092 | +246% | 0 | 0 | — |
case-21 | fail→pass | 19,124 | 4,261 | -78% | 1 | 1 | 0% | 1,724 | 1,530 | -11% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +23 percentage points is the difference between those two pass rates over the 19 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.