Claude-skill-registry add-icon
Add a new Tabler icon to the project. Use when adding icons to the UI.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/add-icon" ~/.claude/skills/majiayu000-claude-skill-registry-add-icon && rm -rf "$T"
manifest:
skills/data/add-icon/SKILL.mdsource content
Add Icon Skill
This skill guides you through adding a new icon from Tabler Icons to the project.
Process
Icons are managed via
and automatically built by Vite plugin.icons.json
Steps
-
Choose Icon
- Browse available icons: https://tabler.io/icons
- Note the icon name (e.g.,
,folder-open
)info-circle
-
Add to icons.json
- Edit
renderer/icons.json - Add the icon name to the JSON array (in alphabetical order)
- Edit
-
Build Icon Sprite (Automatic)
- Icon sprite is automatically generated when Vite builds
- Just run
orjust devcargo build
-
Add Rust Enum Variant
- Edit
desktop/src/components/icon.rs - Add variant to
enum (use PascalCase)IconName - Add case to
implementationDisplay
- Edit
Example
renderer/icons.json:
[ "folder", "folder-open", "file" ]
desktop/src/components/icon.rs:
pub enum IconName { Folder, FolderOpen, File, } impl std::fmt::Display for IconName { fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result { match self { IconName::Folder => write!(f, "folder"), IconName::FolderOpen => write!(f, "folder-open"), IconName::File => write!(f, "file"), } } }
File Locations
| File | Purpose | Git Tracked |
|---|---|---|
| Icon list configuration | ✅ Yes |
| Icon sprite plugin | ✅ Yes |
| Generated sprite (Vite source) | ❌ No |
| Build output (Dioxus asset) | ❌ No |
Important
- NEVER edit generated SVG files directly
- The
directory isassets/dist/
d as build output.gitignore - Icon sprite generation is automatic via Vite plugin (
hook)buildStart - Rust code references icons via
asset!("/assets/dist/icons/tabler-sprite.svg") - Icons come from
npm package (outline style only)@tabler/icons
Build Process
icons.json ↓ Vite plugin (buildStart hook) ↓ renderer/public/icons/tabler-sprite.svg ↓ Vite build ↓ assets/dist/icons/tabler-sprite.svg ↓ Rust asset!() macro