Help us improve
Share bugs, ideas, or general feedback.
From fuse-laravel
Create Blade templates with components, slots, layouts, and directives. Use when building views, reusable components, or templating.
npx claudepluginhub fusengine/agents --plugin fuse-laravelHow this skill is triggered — by the user, by Claude, or both
Slash command
/fuse-laravel:laravel-bladeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Before ANY implementation, use `TeamCreate` to spawn 3 agents:
references/advanced-components.mdreferences/advanced-directives.mdreferences/components.mdreferences/custom-directives.mdreferences/directives.mdreferences/forms-validation.mdreferences/fragments.mdreferences/layouts.mdreferences/security.mdreferences/slots-attributes.mdreferences/templates/AdvancedComponents.blade.mdreferences/templates/AdvancedDirectives.blade.mdreferences/templates/AnonymousComponent.blade.mdreferences/templates/CardWithSlots.blade.mdreferences/templates/ClassComponent.php.mdreferences/templates/CustomDirectives.php.mdreferences/templates/DynamicComponent.blade.mdreferences/templates/FormComponent.blade.mdreferences/templates/Fragments.blade.mdreferences/templates/LayoutComponent.blade.mdComposes UIs with Laravel Blade components, slots, and layouts. Covers artisan commands, dumb components with merge() for attributes, named slots, and reusable atoms for pure testable templates.
Provides best practices and patterns for Laravel Blade components including class-based, anonymous components, slots, attribute bags, and reusable UI like alerts and cards.
Livewire 3 reactive components - wire:model, actions, events, Volt, Folio. Use when building reactive UI without JavaScript.
Share bugs, ideas, or general feedback.
Before ANY implementation, use TeamCreate to spawn 3 agents:
After implementation, run fuse-ai-pilot:sniper for validation.
Blade is Laravel's templating engine. It provides a clean syntax for PHP in views while compiling to pure PHP for performance.
| Component Type | When to Use |
|---|---|
| Anonymous | Simple UI, no logic needed |
| Class-based | Dependency injection, complex logic |
| Layout | Page structure, reusable shells |
| Dynamic | Runtime component selection |
{{ }} not {!! !!} unless absolutely necessary$attributes->merge()@csrf in formsNeed dependency injection?
├── YES → Class-based component
└── NO → Anonymous component
│
Need complex props logic?
├── YES → Class-based component
└── NO → Anonymous component
Simple page structure?
├── YES → Component layout (<x-layout>)
└── NO → Need fine-grained sections?
├── YES → @extends/@section
└── NO → Component layout
| Concept | Description | Reference |
|---|---|---|
| @props | Declare component properties | components.md |
| $attributes | Pass-through HTML attributes | slots-attributes.md |
| x-slot | Named content areas | slots-attributes.md |
| @yield/@section | Traditional layout inheritance | layouts.md |
| $loop | Loop iteration info | directives.md |
| Topic | Reference | When to Consult |
|---|---|---|
| Components | components.md | Class vs anonymous, namespacing |
| Slots & Attributes | slots-attributes.md | Data flow, $attributes bag |
| Layouts | layouts.md | Page structure, inheritance |
| Directives | directives.md | @if, @foreach, @auth, @can |
| Security | security.md | XSS, CSRF, escaping |
| Vite | vite.md | Asset bundling |
| Advanced Directives | advanced-directives.md | @once, @use, @inject, @switch, stacks |
| Custom Directives | custom-directives.md | Blade::if, Blade::directive |
| Advanced Components | advanced-components.md | @aware, shouldRender, index |
| Forms & Validation | forms-validation.md | @error, form helpers |
| Fragments | fragments.md | @fragment, HTMX integration |
| Template | When to Use |
|---|---|
| ClassComponent.php.md | Component with logic/DI |
| AnonymousComponent.blade.md | Simple reusable UI |
| LayoutComponent.blade.md | Page layout structure |
| FormComponent.blade.md | Form with validation |
| CardWithSlots.blade.md | Named slots pattern |
| DynamicComponent.blade.md | Runtime component |
| AdvancedDirectives.blade.md | @once, @use, @inject, @switch |
| CustomDirectives.php.md | Create custom directives |
| AdvancedComponents.blade.md | @aware, shouldRender, index |
| Fragments.blade.md | HTMX partial updates |
{{-- resources/views/components/alert.blade.php --}}
@props(['type' => 'info', 'message'])
<div {{ $attributes->merge(['class' => 'alert alert-'.$type]) }}>
{{ $message }}
</div>
// app/View/Components/Alert.php
class Alert extends Component
{
public function __construct(
public string $type = 'info',
public string $message = ''
) {}
public function render(): View
{
return view('components.alert');
}
}
<x-card>
<x-slot:header class="font-bold">
Title
</x-slot>
Content goes here
<x-slot:footer>
Footer content
</x-slot>
</x-card>
@props(['disabled' => false])
<button {{ $attributes->merge([
'type' => 'submit',
'class' => 'btn btn-primary'
])->class(['opacity-50' => $disabled]) }}
@disabled($disabled)
>
{{ $slot }}
</button>
@props to document expected props$attributes->merge() for flexibility{!! !!} without sanitization@csrf in forms