Borrowing it
Nothing to install: this file belongs to jonapoul/aktual. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/jonapoul/aktual/main/.claude/skills/add-svg-icon/SKILL.mdgit clone --depth 1 https://github.com/jonapoul/aktualWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jonapoul/aktual/add-svg-icon)<a href="https://agentmods.dev/skills/jonapoul/aktual/add-svg-icon"><img src="https://agentmods.dev/badge/skills/jonapoul/aktual/add-svg-icon/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/jonapoul/aktual/add-svg-icon"><img src="https://agentmods.dev/badge/skills/jonapoul/aktual/add-svg-icon.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00039 | $0.01617 |
| Opus 5.5 | $0.00016 | $0.00647 |
| Sonnet 5.5 | $0.00008 | $0.00323 |
| Haiku 4.5 | $0.00004 | $0.00162 |
Grade A, and why
add-svg-icon scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 152 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Convert an SVG file to a Kotlin ImageVector and add it to the aktual-core/icons module.
Arguments
$ARGUMENTSshould contain:- A file path or URL to an SVG file
- The icon name in PascalCase (e.g.,
MyIcon,BankTransfer) --material(optional) - generate as aMaterialIconsextension instead ofAktualIcons--size <N>(optional) - override the icon size (default: derived from SVG viewBox)
Step-by-Step Process
1. Fetch the SVG
- If the argument is a URL: use
WebFetchto download the SVG content - If the argument is a file path: use
Readto read the SVG file
2. Parse the SVG
Extract from the SVG:
- The
viewBoxattribute (e.g.,"0 0 24 24"or"0 0 20 20")- Parse as
minX minY width height
- Parse as
- The
dattribute from each<path>element - Any
fill-rule="evenodd"on path elements
Determine the icon size:
- If
--sizewas provided, use that value - Otherwise, use the
widthfrom the viewBox (e.g.,24from"0 0 24 24")
3. Convert path data to Kotlin
Convert SVG path commands to Kotlin PathBuilder calls:
| SVG Command | Kotlin Call |
|---|---|
M x,y |
moveTo(xf, yf) |
m dx,dy |
moveToRelative(dxf, dyf) |
L x,y |
lineTo(xf, yf) |
l dx,dy |
lineToRelative(dxf, dyf) |
H x |
horizontalLineTo(xf) |
h dx |
horizontalLineToRelative(dxf) |
V y |
verticalLineTo(yf) |
v dy |
verticalLineToRelative(dyf) |
C x1,y1 x2,y2 x,y |
curveTo(x1f, y1f, x2f, y2f, xf, yf) |
c dx1,dy1 dx2,dy2 dx,dy |
curveToRelative(dx1f, dy1f, dx2f, dy2f, dxf, dyf) |
S x2,y2 x,y |
reflectiveCurveTo(x2f, y2f, xf, yf) |
s dx2,dy2 dx,dy |
reflectiveCurveToRelative(dx2f, dy2f, dxf, dyf) |
Q x1,y1 x,y |
quadTo(x1f, y1f, xf, yf) |
q dx1,dy1 dx,dy |
quadToRelative(dx1f, dy1f, dxf, dyf) |
T x,y |
reflectiveQuadTo(xf, yf) |
t dx,dy |
reflectiveQuadToRelative(dxf, dyf) |
A rx,ry,rot,largeArc,sweep,x,y |
arcTo(rxf, ryf, rotf, largeArc(bool), sweep(bool), xf, yf) |
a rx,ry,rot,largeArc,sweep,dx,dy |
arcToRelative(rxf, ryf, rotf, largeArc(bool), sweep(bool), dxf, dyf) |
Z or z |
close() |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed 04fe5fe151fd
- 2mo ago First seen · 152 lines · 39 tokens per session scan A 7fdd04fb6259
add-svg-icon is a skill published in the GitHub repository jonapoul/aktual (43 stars, last pushed yesterday), licensed Apache-2.0. It adds 39 tokens to every session and 1,617 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-01.
add-svg-icon compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| add-svg-iconjonapoul/aktual | Skill | 43 | yesterday | Apache-2.0 | A | 39 | Claude Code |
| proto-bot-getting-startedmakecindy/cindy | Skill | 9.3k | yesterday | Apache-2.0 | A | 43 | Claude Code, Codex |
| proto-bot-opsmakecindy/cindy | Skill | 9.3k | yesterday | Apache-2.0 | A | 38 | Claude Code, Codex |
| compose-component-designchrisbanes/skills | Skill | 1.1k | yesterday | Apache-2.0 | A | 41 | Claude Code |
| proceed-videoniki914/zafiro | Skill | 340 | 4d ago | MIT | A | 78 | Claude Code, Codex |
| maui-accessibilitydotnet/maui-labs | Skill | 235 | yesterday | MIT | A | 60 | Claude Code, Codex |
| compose-uiMeet-Miyani/compose-skill | Skill | 303 | 14d ago | MIT | A | 148 | Claude Code |