~/resources/patterns/icon-search-policy
// pattern

Icon Search Policy

Always free libraries first; drawn SVG as fallback. The order — Lucide → Heroicons → Iconify → claude-drawn — and why paid AI logo generators don't earn their place.

Domain: design · tooling Status: canonical

The rule

When any project needs an icon or logo, follow this order:

  1. Lucide (lucide.dev, MIT) — clean stroke-based, the default for terminal / minimal aesthetics.
  2. Heroicons (heroicons.com, MIT) — Tailwind's set; heavier strokes.
  3. Iconify aggregator (api.iconify.design) — searches across ~200 sets when 1–2 don't fit. Useful prefixes: tabler, mdi, ph (Phosphor), simple-icons (brand logos), octicon.
  4. Fallback: Claude-drawn pixel-art SVG — only when no library icon matches the project's visual style. Match the project's existing pixel-art mark if one exists (dimensions, palette, image-rendering: pixelated).

Never use paid AI logo generators (Looka, Brandmark, Tailor Brands, Hatchful). They produce generic SaaS marks that fight any thoughtful aesthetic and add a license entanglement for zero quality gain.

Why this is durable

Constraints

The implementation

Lives as a Claude Code skill: ~/.claude/skills/find-icon/SKILL.md. Triggered by phrases like "find an icon for X", "I need a logo", "icon for {tool}", or /find-icon. The skill walks the four-step search and returns inline SVG ready to paste.