icon-design

v2026.09.24

Select semantically appropriate icons for websites using Lucide, Heroicons, or Phosphor. Covers concept-to-icon mapping, React/HTML templates, and tree-shaking patterns. Use when: building feature sections, service grids, contact info, navigation, or any UI needing icons. Prevents emoji usage, ensures consistency.

GitHub
Install command
npx skhub add oakoss/icon-design
Markdown
SKILL.md

Icon Design

Select the right icon for the job. Maps concepts to icons across three modern libraries, provides ready-to-use templates, and prevents common mistakes like broken tree-shaking and inconsistent styles.

Quick Reference

ConceptLucideHeroiconsPhosphor
Award/QualityTrophytrophyTrophy
Price/ValueTagtagTag
LocationMapPinmap-pinMapPin
ExpertiseGraduationCapacademic-capGraduationCap
SupportMessageCirclechat-bubble-left-rightChatCircle
SecurityShieldshield-checkShield
SpeedZapboltLightning
PhonePhonephonePhone
EmailMailenvelopeEnvelope
User/ProfileUseruserUser
TeamUsersuser-groupUsers
SettingsSettingscog-6-toothGear
HomeHomehomeHouse
SearchSearchmagnifying-glassMagnifyingGlass
Check/SuccessCheckcheckCheck
Close/CancelXx-markX
MenuMenubars-3List
CalendarCalendarcalendarCalendar
Clock/TimeClockclockClock
Heart/FavoriteHeartheartHeart

Library Selection

LibraryBest ForPackage
LucideGeneral use, React projectslucide-react
HeroiconsTailwind projects, minimal style@heroicons/react
PhosphorWeight variations needed@phosphor-icons/react

Default recommendation: Lucide (1,600+ icons, excellent React integration, dynamic loading via lucide-react/dynamic).

Selection Process

  1. Identify the concept -- what does the label/title communicate?
  2. Check semantic mapping -- see references/semantic-mapping.md
  3. Choose library -- Lucide (default), Heroicons (Tailwind), Phosphor (weights)
  4. Apply template -- see references/icon-templates.md
  5. Verify consistency -- same style, same size within each section

Icon Style Rules

RuleDetail
No mixed stylesUse all outline OR all solid in a section
No emojiUse proper icon components (tree-shakeable)
Use currentColorIcons inherit text color via stroke="currentColor"
Semantic colorsUse text-primary, not text-blue-500
Consistent sizingInline w-4 h-4, cards w-8 h-8, hero w-10 h-10
Tree-shaking safeUse explicit named imports and icon maps, never import *
AccessibilityAdd aria-hidden="true" to decorative icons, aria-label to buttons

Common Mistakes

MistakeCorrect Pattern
Importing all icons with import * as Icons breaking tree-shakingUse explicit named imports and a static icon map
Mixing outline and solid icon styles within the same sectionPick one style per section and apply consistently
Using emoji instead of proper icon componentsAlways use tree-shakeable icon components from Lucide, Heroicons, or Phosphor
Hardcoding color values like text-blue-500 on iconsUse semantic colors like text-primary so icons inherit theme changes
Choosing icons by visual appeal rather than semantic meaningMap the concept first using the semantic mapping reference, then select the icon
Missing aria-label on icon-only buttonsAdd aria-label="Description" to buttons containing only icons
Using old Heroicons import paths without size prefixUse @heroicons/react/24/outline with the size prefix

Delegation

  • Audit existing icon usage for consistency and tree-shaking issues: Use Explore agent to scan imports and identify mixed styles or wildcard imports
  • Migrate icons from Font Awesome or Material to modern libraries: Use Task agent with the migration guide reference
  • Plan icon system architecture for a design system: Use Plan agent to select library, define sizing conventions, and establish semantic mappings

References

  • semantic-mapping.md -- Full concept-to-icon tables by category (quality, price, location, trade-specific, navigation, status)
  • icon-templates.md -- React/HTML patterns with Tailwind (feature cards, buttons, inputs, navigation, status badges)
  • library-comparison.md -- Lucide vs Heroicons vs Phosphor (features, bundle size, import patterns)
  • migration-guide.md -- Font Awesome, Material Icons, Feather, and emoji to modern equivalents
  • accessibility.md -- Decorative vs meaningful icons, aria attributes, screen reader patterns
Discovery
Tags

No tags published for this skill.

Version
Latest version metadata

Version

v2026.09.24

Published

Sep 24, 2026

Category

Uncategorized

License

Not specified

Source path

skills/icon-design

Default branch

main

Latest commit

85e3a39

Tree SHA

a4c9e7b