Skip to content
Deployment
Skill

/livewire-development

Use for any task or question involving Livewire. Activate if user mentions Livewire, wire: directives, or Livewire-specific concepts like wire:model, wire:click, invoke this skill. Covers building new components, debugging reactivity issues, real-time form validation, loading

From plugin
coolify
66k10 skills1 MCP

Claude Code

$ npx -y skills add coollabsio/coolify --skill livewire-development --agent claude-code

SKILL.md

livewire-development.SKILL.md
name: livewire-development
description: "Use for any task or question involving Livewire. Activate if user mentions Livewire, wire: directives, or Livewire-specific concepts like wire:model, wire:click, invoke this skill. Covers building new components, debugging reactivity issues, real-time form validation, loading states, migrating from Livewire 2 to 3, converting component formats (SFC/MFC/class-based), and performance optimization. Do not use for non-Livewire reactive UI (React, Vue, Alpine-only, Inertia.js) or standard Laravel forms without Livewire."
license: MIT
metadata:
  author: laravel

Livewire Development

Documentation

Use `search-docs` for detailed Livewire 3 patterns and documentation.

Basic Usage

Creating Components

Use the `php artisan make:livewire [Posts\CreatePost]` Artisan command to create new components.

Fundamental Concepts

  • State should live on the server, with the UI reflecting it.
  • All Livewire requests hit the Laravel backend; they're like regular HTTP requests. Always validate form data and run authorization checks in Livewire actions.

Livewire 3 Specifics

Key Changes From Livewire 2

These things changed in Livewire 3, but may not have been updated in this application. Verify this application's setup to ensure you follow existing conventions.

  • Use `wire:model.live` for real-time updates, `wire:model` is now deferred by default.
  • Components now use the `App\Livewire` namespace (not `App\Http\Livewire`).
  • Use `$this->dispatch()` to dispatch events (not `emit` or `dispatchBrowserEvent`).
  • Use the `components.layouts.app` view as the typical layout path (not `layouts.app`).

New Directives

  • `wire:show`, `wire:transition`, `wire:cloak`, `wire:offline`, `wire:target` are available for use.

Alpine Integration

  • Alpine is now included with Livewire; don't manually include Alpine.js.
  • Plugins included with Alpine: persist, intersect, collapse, and focus.

Best Practices

Component Structure

  • Livewire components require a single root element.
  • Use `wire:loading` and `wire:dirty` for delightful loading states.

Using Keys in Loops

<!-- Wire Key in Loops -->

@foreach ($items as $item)
    <div wire:key="item-{{ $item->id }}">
        {{ $item->name }}
    </div>
@endforeach

Lifecycle Hooks

Prefer lifecycle hooks like `mount()`, `updatedFoo()` for initialization and reactive side effects:

<!-- Lifecycle Hook Examples -->

public function mount(User $user) { $this->user = $user; }
public function updatedSearch() { $this->resetPage(); }

JavaScript Hooks

You can listen for `livewire:init` to hook into Livewire initialization:

<!-- Livewire Init Hook Example -->

document.addEventListener('livewire:init', function () {
    Livewire.hook('request', ({ fail }) => {
        fail(({ status, preventDefault }) => {
            if (status === 419) {
                preventDefault();
                alert('Your session expired');
            }
        });
    });

    Livewire.hook('commit', ({ fail }) => {
        fail(() => console.error('Livewire commit failed'));
    });
});

Testing

<!-- Example Livewire Component Test -->

Livewire::test(Counter::class)
    ->assertSet('count', 0)
    ->call('increment')
    ->assertSet('count', 1)
    ->assertSee(1)
    ->assertStatus(200);

<!-- Testing Livewire Component Exists on Page -->

$this->get('/posts/create')
    ->assertSeeLivewire(CreatePost::class);

Common Pitfalls

  • Forgetting `wire:key` in loops causes unexpected behavior when items change
  • Using `wire:model` expecting real-time updates (use `wire:model.live` instead in v3)
  • Not validating/authorizing in Livewire actions (treat them like HTTP requests)
  • Including Alpine.js separately when it's already bundled with Livewire 3
Read more
@coollabsio
Ships withcoolify

An open-source platform to deploy applications, databases, and services on your own servers. Open source & free forever, backed by our philosophy. ![Latest Release Version]( )

66k10 skills1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
65.5k
Star history of coollabsio/coolify on GitHub, a chart by star-history.com

Other skills on coolify.

configuring-horizon

configuring-horizon

Use this skill whenever the user mentions Horizon by name in a Laravel context. Covers the full Horizon lifecycle: installing…

@coollabsio@coollabsioInstall Skill
fortify-development

fortify-development

ACTIVATE when the user works on authentication in Laravel. This includes login, registration, password reset, email verification,…

@coollabsio@coollabsioInstall Skill
infer-conventions

infer-conventions

Use this skill to analyze how a Laravel application is actually written and record its conventions as shared rules. Trigger when…

@coollabsio@coollabsioInstall Skill
laravel-actions

laravel-actions

Build, refactor, and troubleshoot Laravel Actions using lorisleiva/laravel-actions. Use when implementing reusable action classes…

@coollabsio@coollabsioInstall Skill
laravel-best-practices

laravel-best-practices

Apply this skill whenever writing, reviewing, or refactoring Laravel PHP code. This includes creating or modifying controllers,…

@coollabsio@coollabsioInstall Skill
mcp-development

mcp-development

Use this skill for Laravel MCP development. Trigger when creating or editing MCP tools, resources, prompts, servers, or UI apps…

@coollabsio@coollabsioInstall Skill

More skills from other plugins.

vercel-cli

vercel-cli

Guides deployment, configuration, and troubleshooting with the Vercel CLI. Use when operating Vercel projects or resources…

vercel12d16k
@vercel@vercelInstall Skill
skypilot

skypilot

Use when launching cloud VMs, Kubernetes pods, or Slurm jobs for GPU/TPU/CPU workloads, training or fine-tuning models on cloud…

@skypilot-org@skypilot-orgInstall Skill
pinme

pinme

Use this skill when the user mentions "pinme", or needs to upload files, store to IPFS, create/publish/deploy websites or…

pinme8w3.8k
@glitternetwork@glitternetworkInstall Skill
mlx-serve

mlx-serve

Hook an app, game or script up to the local mlx-serve server for LLM chat, embeddings, image, speech, music, sound effect, video…

mlx-serve12d2.2k
@ddalcu@ddalcuInstall Skill

Questions about livewire-development.

Which coding agents can use livewire-development?
livewire-development installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.