1. Name Icons by Object + Modifier, Never by Page Location

Naming an icon pricing-card-badge.svg guarantees nobody reuses it on the billing settings page—so a teammate adds a duplicate file next sprint. Follow a predictable {object}-{variant-or-direction} kebab-case convention:

Clean, searchable Git repository layout for a team SVG library
src/assets/vectors/
├── notices/
│   ├── lucide-LICENSE.txt       # Archived from /icon-library-notices/lucide/LICENSE.txt
│   └── tabler-LICENSE.txt
├── icons/
│   ├── arrow-right.svg          # Canonical optimized 24x24 currentColor source
│   ├── arrow-up-right.svg
│   ├── bell.svg
│   ├── bell-ringing.svg
│   └── shield-check.svg
├── brands/                      # Separated so trademark rules stay explicit!
│   └── github.svg
└── illustrations/
    └── empty-search.svg

2. Establish a Three-Rule Intake Gate for New Icons

  1. Search existing repo icons first, then your approved primary pack: Bookmark your team's chosen library on SVG Nexus Icon Libraries (e.g., /en/icons/lucide) so designers and developers pull from the exact same catalog.
  2. Normalize & minify before committing: Every custom addition passes through the SVG Optimizer and the 10-point quality checklist.
  3. Keep brand logos in a separate directory from UI icons: Separating brands/ prevents developers from accidentally running currentColor scripts over multi-color partner logos or overlooking trademark rules.