Skip to content
Back to skills

Icon Audit

ASecurity

Audit and fix icon usage for movemental — mixed libraries, wrong sizes, hardcoded colors, missing accessibility, and illustration anti-patterns. Enforces lucide-react as the single icon library.

  • 2 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added October 26, 2026
designreact

Security analysis

A100/100

Scanned October 26, 2026

npx -y skills add JoshuaShepherd/my-skills --skill icon-audit --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Icon Audit?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Icon Audit
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/joshuashepherd-icon-audit/badge)](https://www.skillsdirectory.com/skills/joshuashepherd-icon-audit)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: icon-audit
description: Audit and fix icon usage for movemental — mixed libraries, wrong sizes, hardcoded colors, missing accessibility, and illustration anti-patterns. Enforces lucide-react as the single icon library.
user-invocable: true
allowed-tools: Read, Grep, Glob, Edit
---

Audit and fix icon anti-patterns across the movemental codebase.

Target: $ARGUMENTS

If no target is provided, scan `src/components/` and `src/app/(site)/`.

## Before Starting

1. Read `docs/design/DESIGN.md` — icon conventions.
2. Grep for icon imports to understand current usage patterns.

## Icon Standard

**Single library: `lucide-react`** — no other icon libraries allowed.

### Size Scale
| Context | Size | Tailwind |
|---------|------|----------|
| Inline with text | 16px | `size-4` |
| Standard UI | 20px | `size-5` |
| Feature cards | 20-24px | `size-5` or `size-6` |
| Hero features | 24px | `size-6` |

### Color
- Icons inherit `currentColor` by default
- Use semantic tokens via parent: `text-primary`, `text-muted-foreground`, etc.
- **Never** hardcode icon colors (`text-blue-600`, `fill="#000"`)

### Accessibility
- Decorative icons: `aria-hidden` attribute
- Meaningful icons (no adjacent label): wrap with `<span className="sr-only">Label</span>`
- Icon-only buttons: must have `aria-label`

## Audit Checklist

### 1. WRONG LIBRARY (Critical)
Search for non-lucide icon imports:
- `@heroicons/react` → replace with lucide equivalent
- `react-icons` → replace with lucide equivalent
- `@radix-ui/react-icons` → replace with lucide equivalent
- Material Symbols (`material-symbols-outlined`) → replace with lucide
- Inline SVGs that duplicate a lucide icon → use the lucide component

### 2. SIZE INCONSISTENCY (High)
- Mixed icon sizes in the same context (e.g., `size-4` and `size-6` in the same card grid)
- Icons not using the Tailwind `size-*` utility (using `w-5 h-5` instead of `size-5`)
- Icons larger than `size-6` (24px) in non-hero contexts

### 3. COLOR VIOLATIONS (High)
- Hardcoded colors: `text-blue-600`, `fill="#0053db"`, `stroke="black"`
- Should use parent's semantic color or explicit token: `text-primary`, `text-muted-foreground`

### 4. ACCESSIBILITY (Medium)
- Decorative icons missing `aria-hidden`
- Icon-only buttons without `aria-label`
- Icons conveying meaning without text alternative

### 5. FLEX COMPRESSION (Medium)
- Icons inside flex containers without `shrink-0` (can get squished)
- Fix: add `shrink-0` to icons in flex layouts

## Output Format

```
## Icon Audit Report

### Summary
- Files scanned: X
- Icons found: X
- Violations: X

### Issues
| # | Severity | File:Line | Issue | Fix |
|---|----------|-----------|-------|-----|

### Fixes Applied
- file.tsx — description of change
```

## Rules

- Lucide is the ONLY icon library. No exceptions.
- Icons use `size-*` utility, not `w-*/h-*` pairs.
- All decorative icons get `aria-hidden`.
- Never modify `src/components/ui/*` — only domain components and pages.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.