skills/lucide-laravel/SKILL.md
Lucide icon library integration for Laravel Blade templates. Use when working with Lucide icons in Laravel applications, Blade components with the x-lucide- prefix, icon styling with Tailwind CSS, dynamic icon rendering in Blade, or any Laravel view work requiring SVG icons. Keywords include lucide icons, blade icons, x-lucide, SVG icons Laravel, blade-lucide-icons, mallardduck/blade-lucide-icons.
npx skillsauth add 1naichii/ai-code-tools lucide-laravelInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Laravel Blade integration for the Lucide icon library - 1,666+ beautiful, consistent SVG icons.
composer require mallardduck/blade-lucide-icons
Clear view cache if icons don't appear:
php artisan view:clear
Icons use the x-lucide- prefix with kebab-case naming:
<x-lucide-activity />
<x-lucide-heart />
<x-lucide-shopping-cart />
<x-lucide-circle-check />
Convert PascalCase icon names to kebab-case:
| Icon Name | Blade Component |
|-----------|----------------|
| Activity | <x-lucide-activity /> |
| ShoppingCart | <x-lucide-shopping-cart /> |
| CircleCheck | <x-lucide-circle-check /> |
| ArrowRight | <x-lucide-arrow-right /> |
<!-- Size and color -->
<x-lucide-album class="w-6 h-6 text-gray-500"/>
<!-- Responsive sizing -->
<x-lucide-heart class="w-4 h-4 md:w-6 md:h-6 text-red-500"/>
<!-- Hover effects -->
<x-lucide-star class="w-5 h-5 text-yellow-400 hover:text-yellow-500 cursor-pointer"/>
<!-- Transitions -->
<x-lucide-bell class="w-6 h-6 text-gray-700 hover:text-gray-900 transition-colors duration-200"/>
<x-lucide-anchor style="color: #555"/>
<x-lucide-heart style="color: #ff0000; width: 48px; height: 48px;"/>
<x-lucide-activity style="color: var(--primary-color); stroke-width: 1.5;"/>
<nav>
<div class="flex items-center gap-6">
<a href="/dashboard" class="flex items-center gap-2">
<x-lucide-layout-dashboard class="w-5 h-5"/>
<span>Dashboard</span>
</a>
<a href="/products" class="flex items-center gap-2">
<x-lucide-package class="w-5 h-5"/>
<span>Products</span>
</a>
<a href="/settings" class="flex items-center gap-2">
<x-lucide-settings class="w-5 h-5"/>
<span>Settings</span>
</a>
</div>
</nav>
<div class="relative">
<div class="absolute inset-y-0 left-0 pl-3 flex items-center pointer-events-none">
<x-lucide-search class="w-5 h-5 text-gray-400"/>
</div>
<input type="text" class="pl-10 w-full border rounded-lg" placeholder="Search..."/>
</div>
<!-- Success -->
<div class="flex items-start gap-3 p-4 bg-green-50 border-l-4 border-green-500 rounded">
<x-lucide-check-circle class="w-6 h-6 text-green-600 flex-shrink-0"/>
<div>
<h4 class="font-semibold text-green-800">Success!</h4>
<p class="text-green-700">Your changes have been saved.</p>
</div>
</div>
<!-- Error -->
<div class="flex items-start gap-3 p-4 bg-red-50 border-l-4 border-red-500 rounded">
<x-lucide-alert-circle class="w-6 h-6 text-red-600 flex-shrink-0"/>
<div>
<h4 class="font-semibold text-red-800">Error</h4>
<p class="text-red-700">Something went wrong.</p>
</div>
</div>
<!-- Info -->
<div class="flex items-start gap-3 p-4 bg-blue-50 border-l-4 border-blue-500 rounded">
<x-lucide-info class="w-6 h-6 text-blue-600 flex-shrink-0"/>
<p class="text-blue-700">Please review your changes before submitting.</p>
</div>
<!-- Icon-only button with aria-label -->
<button class="p-2 hover:bg-gray-100 rounded" aria-label="Delete">
<x-lucide-trash class="w-5 h-5 text-red-600"/>
</button>
<!-- Button with icon and text -->
<button class="flex items-center gap-2 bg-blue-600 text-white px-4 py-2 rounded-lg hover:bg-blue-700">
<x-lucide-save class="w-5 h-5"/>
<span>Save</span>
</button>
<!-- Primary action -->
<button class="flex items-center gap-2 bg-green-600 text-white px-4 py-2 rounded-lg">
<x-lucide-plus class="w-5 h-5"/>
<span>Add New</span>
</button>
<!-- Loading states -->
<button wire:click="refresh" class="flex items-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg">
<x-lucide-refresh-cw class="w-5 h-5" wire:loading.class="animate-spin"/>
<span wire:loading.remove>Refresh Data</span>
<span wire:loading>Loading...</span>
</button>
<!-- Toggle icon based on state -->
<div class="flex items-center gap-2">
@if($isFavorited)
<x-lucide-heart class="w-5 h-5 text-red-500 fill-current" wire:click="unfavorite"/>
@else
<x-lucide-heart class="w-5 h-5 text-gray-400" wire:click="favorite"/>
@endif
</div>
Use <x-dynamic-component> for dynamic icon names:
@php
$iconName = 'heart';
$iconComponent = 'lucide-' . $iconName;
@endphp
<x-dynamic-component :component="$iconComponent" class="w-6 h-6" />
Common use case - icon from database:
<x-dynamic-component
:component="'lucide-' . $menu->icon"
class="w-5 h-5"
/>
| Context | Size |
|---------|------|
| Navigation | w-5 h-5 |
| Button (small) | w-4 h-4 |
| Button (medium) | w-5 h-5 |
| Feature icons | w-12 h-12 |
| Hero icons | w-16 h-16 |
Choose icons that clearly represent their action:
<x-lucide-trash /> <!-- Delete -->
<x-lucide-edit /> <!-- Edit -->
<x-lucide-download /> <!-- Download -->
<x-lucide-upload /> <!-- Upload -->
<x-lucide-copy /> <!-- Copy -->
<x-lucide-share /> <!-- Share -->
<x-lucide-settings /> <!-- Settings -->
<x-lucide-user /> <!-- User/Profile -->
<x-lucide-home /> <!-- Home -->
<!-- Primary actions -->
<x-lucide-save class="w-5 h-5 text-blue-600"/>
<!-- Success states -->
<x-lucide-check class="w-5 h-5 text-green-600"/>
<x-lucide-check-circle class="w-5 h-5 text-green-600"/>
<!-- Danger/warning -->
<x-lucide-trash class="w-5 h-5 text-red-600"/>
<x-lucide-alert-triangle class="w-5 h-5 text-yellow-600"/>
<!-- Neutral/secondary -->
<x-lucide-info class="w-5 h-5 text-gray-600"/>
<!-- Icon-only button - always include aria-label -->
<button aria-label="Close dialog">
<x-lucide-x class="w-6 h-6"/>
</button>
<!-- Decorative icon - hide from screen readers -->
<x-lucide-star class="w-5 h-5" aria-hidden="true"/>
<!-- Icon with visible text - accessible by default -->
<button class="flex items-center gap-2">
<x-lucide-download class="w-5 h-5"/>
<span>Download</span>
</button>
Total Icons: 1,666 across 43 categories
| Category | Count | File | Common Icons |
|----------|-------|------|--------------|
| Accessibility | 30 | accessibility.md | accessibility, eye, ear, glasses, sun, moon |
| Accounts & access | 133 | accounts-access.md | user, users, shield, key, lock, log-in, log-out |
| Animals | 23 | animals.md | dog, cat, bird, bug, fish, paw-print |
| Arrows | 209 | arrows.md | arrow-up, arrow-down, chevron-left, chevron-right |
| Brands | 21 | brands.md | github, twitter, facebook, instagram, youtube |
| Buildings | 25 | buildings.md | building, building-2, home, warehouse, store |
| Charts | 31 | charts.md | bar-chart, line-chart, pie-chart, trending-up, trending-down |
| Coding & development | 243 | coding-development.md | code, terminal, git-branch, git-commit, bug, cpu |
| Communication | 54 | communication.md | mail, message-circle, phone, send, bell, rss |
| Connectivity | 90 | connectivity.md | wifi, bluetooth, usb, cast, radio, signal |
| Cursors | 33 | cursors.md | mouse-pointer, hand, move, crosshair, pointer |
| Design | 145 | design.md | palette, paintbrush, eraser, pen-tool, selection |
| Devices | 164 | devices.md | laptop, monitor, smartphone, tablet, keyboard, hard-drive |
| Emoji | 28 | emoji.md | smile, frown, meh, heart, thumbs-up, thumbs-down |
| File icons | 162 | file-icons.md | file, file-text, folder, upload, download, copy |
| Finance | 56 | finance.md | dollar-sign, credit-card, wallet, banknote, coins, piggy-bank |
| Food & beverage | 69 | food-beverage.md | coffee, utensils, pizza, burger, beer, cake |
| Gaming | 148 | gaming.md | gamepad, gamepad-2, trophy, dice, puzzle, sword |
| Home | 57 | home.md | couch, chair, bed, lamp, tv, bathtub |
| Layout | 139 | layout.md | layout, panel-left, panel-right, columns, sidebar, grid |
| Mail | 26 | mail.md | mail, inbox, send, at-sign, mail-open, mail-check |
| Mathematics | 74 | mathematics.md | equal, plus, minus, divide, percent, infinity |
| Medical | 42 | medical.md | heart-pulse, activity, pill, syringe, stethoscope, bone |
| Multimedia | 138 | multimedia.md | play, pause, volume, music, image, video |
| Nature | 23 | nature.md | tree, flower, leaf, sun, cloud, mountain |
| Navigation, Maps, POIs | 84 | navigation-maps-pois.md | map, map-pin, compass, navigation, route, flag |
| Notification | 39 | notification.md | bell, bell-ring, alert-circle, alert-triangle, info |
| People | 3 | people.md | user, users, user-plus |
| Photography | 75 | photography.md | camera, image, aperture, shutter, lens, film |
| Science | 32 | science.md | flask, microscope, atom, beaker, magnet, dna |
| Seasons | 5 | seasons.md | sun, cloud-rain, snowflake, thermometer |
| Security | 55 | security.md | shield, lock, unlock, key, fingerprint, eye-off |
| Shapes | 48 | shapes.md | circle, square, triangle, star, hexagon, diamond |
| Shopping | 27 | shopping.md | shopping-cart, shopping-bag, credit-card, tag, package |
| Social | 119 | social.md | heart, thumbs-up, share, bookmark, user-plus, link |
| Sports | 13 | sports.md | football, basketball, tennis, golf, trophy, medal |
| Sustainability | 24 | sustainability.md | recycle, leaf, tree, sun, wind, droplet |
| Text formatting | 246 | text-formatting.md | bold, italic, underline, align-left, list, quote |
| Time & calendar | 58 | time-calendar.md | calendar, clock, timer, hourglass, watch, alarm |
| Tools | 66 | tools.md | hammer, wrench, screwdriver, saw, drill, measure |
| Transportation | 64 | transportation.md | car, bus, train, plane, bike, ship |
| Travel | 67 | travel.md | suitcase, plane, hotel, map, compass, passport |
| Weather | 45 | weather.md | sun, cloud, cloud-rain, snowflake, lightning, wind |
Each category file contains:
Icons not displaying:
php artisan view:clear
Styling not applied:
Publish raw SVGs (optional):
php artisan vendor:publish --tag=blade-lucide-icons --force
tools
Full-stack Laravel framework for building dynamic, reactive interfaces using PHP without writing JavaScript. Use when creating or modifying Livewire components, implementing data binding with wire:model, working with lifecycle hooks, building forms with validation, handling events and parent-child communication, implementing file uploads/pagination/lazy loading, writing tests, or optimizing performance. Supports Laravel Livewire v4+ development. Keywords: Livewire, wire:model, wire:click, livewire component, Alpine.js integration, wire:submit, real-time validation, computed properties, Laravel Livewire.
tools
Build modern monolith applications with Inertia.js - combining server-side frameworks (Laravel, Rails, etc.) with React/Vue/Svelte frontends without building APIs. Use when creating Inertia pages and layouts, working with Link component for navigation, building forms with Form component or useForm hook, handling validation and errors, managing shared data and props, implementing authentication and authorization, using manual visits with router, working with partial reloads, setting up persistent layouts, or configuring client-side setup.
development
Fetch web content with automatic markdown version detection using curl. Use when Claude needs to retrieve documentation from websites that offer both HTML and markdown formats. First checks if a .md version exists (more efficient and cleaner), then falls back to HTML if unavailable. Ideal for fetching documentation from sites like ui.shadcn.com, GitHub wikis, or any documentation site that mirrors content in markdown format.
development
CSS component library for Tailwind CSS 4 providing pre-built UI components with semantic class names. Use when building web interfaces with HTML/Tailwind that need: (1) Rapid UI development with consistent styling, (2) Accessible component patterns (buttons, forms, modals, etc.), (3) Theme-aware color systems that work across light/dark modes, (4) Responsive layouts with Tailwind utilities. Works with daisyUI v5+ which requires Tailwind CSS v4+.