Claude-skill-registry icon-design
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/icon-design" ~/.claude/skills/majiayu000-claude-skill-registry-icon-design-a23b01 && rm -rf "$T"
manifest:
skills/data/icon-design/SKILL.mdsource content
Icon Design
Select the right icon for the job. Maps concepts to icons, provides templates, prevents common mistakes.
Quick Reference (Top 20 Concepts)
| Concept | Lucide | Heroicons | Phosphor |
|---|---|---|---|
| Award/Quality | | | |
| Price/Value | | | |
| Location | | | |
| Expertise | | | |
| Support | | | |
| Security | | | |
| Speed | | | |
| Phone | | | |
| | | |
| User/Profile | | | |
| Team | | | |
| Settings | | | |
| Home | | | |
| Search | | | |
| Check/Success | | | |
| Close/Cancel | | | |
| Menu | | | |
| Calendar | | | |
| Clock/Time | | | |
| Heart/Favourite | | | |
Library Selection
| Library | Best For | Package |
|---|---|---|
| Lucide | General use, React projects | |
| Heroicons | Tailwind projects, minimal style | |
| Phosphor | Weight variations needed | |
Default recommendation: Lucide (1,400+ icons, excellent React integration)
See
references/library-comparison.md for detailed comparison.
Icon Style Rules
Sizing
| Context | Tailwind Class | Pixels |
|---|---|---|
| Inline with text | or | 16-20px |
| Feature cards | | 32px |
| Hero sections | or | 40-48px |
| Large decorative | | 64px |
Consistency Rules
- Never mix styles - Use all outline OR all solid in a section
- Never use emoji - Use proper icon components (tree-shakeable)
- Use currentColor - Icons inherit text color via
stroke="currentColor" - Semantic colours - Use
, nottext-primarytext-blue-500
Tree-Shaking (Critical)
Dynamic icon selection breaks tree-shaking. Use explicit maps:
// BAD - all icons bundled import * as Icons from 'lucide-react' const Icon = Icons[iconName] // Tree-shaken away! // GOOD - explicit map import { Home, Users, Settings, type LucideIcon } from 'lucide-react' const ICON_MAP: Record<string, LucideIcon> = { Home, Users, Settings } const Icon = ICON_MAP[iconName]
Selection Process
- Identify the concept - What does the label/title communicate?
- Check semantic mapping - See
references/semantic-mapping.md - Choose library - Lucide (default), Heroicons (Tailwind), Phosphor (weights)
- Apply template - See
references/icon-templates.md - Verify consistency - Same style, same size in section
Decision Tree
When unsure which icon:
Is it about recognition/awards? → Trophy, Star, Award Is it about money/price? → Tag, DollarSign, CreditCard Is it about location? → MapPin, Globe, Map Is it about people/team? → Users, UserGroup, User Is it about communication? → MessageCircle, Phone, Mail Is it about safety/trust? → Shield, Lock, ShieldCheck Is it about speed/time? → Zap, Clock, Timer Is it trade-specific? → Check semantic-mapping.md Still unsure? → CheckCircle (generic positive) or Sparkles (generic feature)
Resources
- Full concept→icon tables by categoryreferences/semantic-mapping.md
- React/HTML patterns with Tailwindreferences/icon-templates.md
- Lucide vs Heroicons vs Phosphorreferences/library-comparison.md
- FA/Material → modern equivalentsreferences/migration-guide.md
- Correction rules for projectsrules/icon-design.md