From ls-clad
Search curated Google Material Icons catalog to find the right icon for Specs UI, then import via IconSelector MCP tool. Use when building UI that needs icons.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ls-clad:icon-selector description of the icon needed — for example close button, settings gear, or play buttondescription of the icon needed — for example close button, settings gear, or play buttonThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
<!--
Search the curated catalog (references/material-icons-curated.md); return the exact name. If multiple icons fit, suggest 2-3 with brief reasoning.
ALWAYS use the IconSelector Lens Studio MCP tool to import icons. The tool rasterizes the Material Symbol to a PNG inside Lens Studio, imports it through the asset pipeline, generates the .meta file, and makes it available to requireAsset().
FIRST — resolve the tool (once per session). Tool naming, deferred schemas, and ask/spawn semantics: see lens-studio-field-notes Hard Rule 2 / Cross-runtime orchestration. Do not fall back to curl — files placed on disk without .meta files are invisible to Lens Studio and requireAsset() will fail.
Once loaded, call it with just the name — all appearance and size params have sane defaults:
IconSelector({ name: "close" })
Defaults the tool applies (Specs-recommended): style: "Rounded", weight: 600, fill: false, grade: 0, opticalSize: 24, color: "#ffffff", size: 512. Don't pass appearance overrides unless you have a specific reason — the asset filename gets a suffix when any value differs from default (e.g. home_outlined_wght400.png instead of home.png), which breaks requireAsset("../Icons/<name>.png") lookups in /specs-build-ui. If you do override, communicate the resulting filename to the caller.
size is optional. Valid values: 256, 384, 512, 768, 1024. The default (512) is the right choice for Specs UI. Use 256 only if you specifically need a smaller texture; use 768/1024 only for hero icons where pixel density matters. size does NOT affect the filename — the most recent call wins for a given name + appearance.
One call per icon. Call once per icon — do not batch.
Icons are imported to Assets/Icons/<name>.png automatically by the MCP tool.
If an icon appears missing or corrupted after import, see references/import-troubleshooting.md.
const MY_ICON: Texture = requireAsset("../Icons/icon_name.png") as Texture
With ElementContent for labeled buttons or list items:
this.content(obj, {leadingIcon: MY_ICON, ...})
For icon-only buttons, use the Round shape:
this.btn(obj, "Primary", "Round", 6, 6)
this.content(obj, {leadingIcon: MY_ICON, iconLayout: "left", leadingIconSize: 2.8})
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub lens-studio-devs/ls-extensions --plugin ls-clad