iconography — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited iconography (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
icon_search → icon_create).In auto-layout, the children array index directly controls visual position:
icon_create with parentId appends to END by default. Use index to control position:
index: 0 — icon appears FIRST (left of text in HORIZONTAL)| UI Pattern | Correct children order | icon_create index |
|---|---|---|
| Search input | [search-icon, text-input] | index: 0 |
| Password input | [lock-icon, text-input, eye-icon] | lock: index: 0, eye: omit |
| Nav menu item | [icon, label, chevron-right] | icon: index: 0, chevron: omit |
| Button with leading icon | [icon, label] | index: 0 |
| Button with trailing icon | [label, icon] | omit (default append) |
| Settings row | [icon, label, toggle/chevron] | icon: index: 0 |
| List item | [thumbnail, content, trailing-action] | thumbnail: index: 0 |
| Tab bar item | [icon, label] (VERTICAL) | index: 0 |
| Notification badge | [bell-icon, red-dot] | bell: index: 0 |
| Back navigation | [arrow-left, title] | index: 0 |
Two approaches for placing icons in create_frame:
type: "frame" placeholder in the children array at the correct position, then use icon_create(parentId: "<placeholder-id>") to fill it. Array position controls visual order directly.icon_create(parentId: "<frame-id>", index: 0) to insert at the correct position.Note: create_frame children type: "svg" requires raw SVG markup string, NOT icon names like "lucide:home". Use icon_create for named icons.
search_design_system(query: "icon chevron") — find library icon componentstype: "instance" in children or component inserticon_search(query: "search", prefix: "lucide") — find icon nameicon_create(icon: "lucide:search", parentId: "...", index: 0, size: 20) — create + placeicon_create accepts icon name ("prefix:name") — fetches SVG automaticallycreate_frame children type: "svg" requires raw SVG markup, NOT icon name| Context | Icon Size | itemSpacing to text | Notes |
|---|---|---|---|
| Inline (body text) | 16px | 4-6px | Match text line height |
| Input field | 20px | 8px | Vertically centered |
| Navigation / toolbar | 24px | 8-12px | Default icon_create size |
| Button with icon | 20px | 8px | Match button text size |
| Feature / empty state | 32-64px | 12-16px | Prominent, muted color |
| Tab bar | 24px | 4px | Above label (VERTICAL layout) |
| Avatar placeholder | 40-80px | — | Inside circular frame |
counterAxisAlignItems: "CENTER" to vertically center icon with texttype: "frame" with layoutMode, primaryAxisAlignItems: "CENTER", counterAxisAlignItems: "CENTER"colorVariableName in icon_create to bind icon color to design tokenicon_create auto-detects fill vs stroke icons and binds accordinglylucide:, or all mdi:, etc.) — never mix sets| Pitfall | Prevention |
|---|---|
| Icon placed after text (wrong order) | Use icon_create with index: 0 for leading icons |
| Text as icon (">" for chevron, "..." for more) | Runtime detection warns; use icon_create instead |
| Rectangle as icon container | Use type: "frame" — rectangles can't have children |
| Forgot icon entirely (search bar without search icon) | Plan ALL icons before create_frame |
| Icon name in SVG child | type: "svg" needs raw SVG markup; use icon_create for named icons |
| Icon too small / too large | Follow sizing table above per context |
| No color binding | Pass colorVariableName when design system has tokens |
| Mixed icon sets (lucide + mdi) | Pick one prefix and use it consistently |
| Mixed icon styles (outline + filled) | Choose one style for the entire design |
| Touch target too small | Icon buttons need 44x44px minimum via padding |
| Icon-text vertical misalignment | Set counterAxisAlignItems: "CENTER" on parent |
| Icon spacing inconsistent | Use sizing table itemSpacing values per context |
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.