К основному содержанию
скилл CX Codex

livewire-development — скилл для Claude Code: компоненты Livewire 4

Помогает агенту писать и отлаживать реактивные компоненты Livewire 4: директивы wire:, острова, асинхронные действия и тесты.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add spatie/freek.dev --skill livewire-development -a claude-code
Открыть на GitHub

Что делает livewire-development

Скилл включается, когда вы создаёте или правите компонент Livewire, работаете с директивами wire:model, wire:click, wire:loading, добавляете живые обновления или пишете тесты. Внутри — справка по форматам компонентов и командам: php artisan make:livewire create-post даёт однофайловый компонент, флаг --mfc — многофайловый, --class — класс в стиле третьей версии. Переключиться между форматами можно через php artisan livewire:convert create-post.

Отдельный блок посвящён отличиям четвёртой версии от третьей. Полностраничные компоненты теперь вешаются на Route::livewire(), ключи конфига переименованы (layout → component_layout, lazy_placeholder → component_placeholder), а wire:model по умолчанию игнорирует события дочерних компонентов — за старое поведение отвечает wire:model.deep. Теги компонентов обязаны быть закрыты, иначе получите синтаксическую ошибку. Если проект ещё на третьей версии, эти правила разойдутся с кодом, поэтому скилл советует сначала сверить текущие соглашения приложения.

Из нового — острова @island для изолированных обновлений, асинхронные действия wire:click.async и атрибут #[Async], отложенная загрузка через defer и lazy.bundle. Есть директивы wire:sort, wire:intersect, wire:ref. В разделе практик — wire:key во всех циклах @foreach, wire:model.live для мгновенных обновлений вместо отложенных по умолчанию, проверка прав прямо в действиях. Alpine.js отдельно подключать не нужно, он уже входит в Livewire 4.

Какие задачи решает

  • создать компонент Livewire в однофайловом или многофайловом формате
  • перевести компонент из классового формата в SFC
  • настроить живые обновления через wire:model.live
  • разбить страницу на острова с изолированными обновлениями
  • написать тест компонента с проверкой состояния после вызова действия

Примеры запросов агенту

  • создай компонент Livewire для формы создания поста
  • почему wire:model не обновляет счётчик в реальном времени?
  • напиши тест для компонента Counter с вызовом increment

Как установить livewire-development

1Через Skills CLI (Vercel)

npx skills add spatie/freek.dev --skill livewire-development -a claude-code

2Вручную: положить файлы

~/.claude/skills/livewire-development/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/livewire-development/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора2

Похожие

filament-pro marcelorodrigo Скилл для сборки админ-панелей Laravel на Filament v5: ресурсы, формы, таблицы, виджеты и тесты на Livewire v4. CX Codex +1 1 200установок laravel-specialist https://github.com/Jeffallan Настраивает агента на разработку бэкенда на Laravel 10+ и PHP 8.2+. Помогает писать модели Eloquent, очереди Horizon, API resources и тесты Pest. CX Codex +1 23 300установок spatie-laravel-php Spatie Настраивает правила кодинга Spatie и PSR-12 для задач по созданию, рефакторингу и ревью PHP-кода или шаблонов Blade в проектах на Laravel. CX Codex +1 1 200установок laravel-development Mindrally Скилл задаёт агенту рамки Laravel-разработки: SOLID, PSR-12, Eloquent вместо сырого SQL. Пригодится, когда ИИ пишет код в Laravel-проекте. CX Codex +1 909установок alpine-js Mindrally Набор правил для создания реактивных интерфейсов на Alpine.js. Помогает писать лёгкий клиентский код в связке с Tailwind CSS, Laravel Livewire и Ghost CMS. CX Codex +1 1 300установок php-pro https://github.com/Jeffallan Задаёт правила разработки на PHP 8.3+ для Laravel и Symfony: включает strict_types, анализ в PHPStan на уровне 9 и тесты PHPUnit или Pest. CX Codex +1 15 500установок

Рядом в теме «Фронтенд и UI»

Всё по теме «Фронтенд и UI» →

Вопросы о livewire-development

Как установить livewire-development в Claude?

Выполните npx skills add spatie/freek.dev --skill livewire-development -a claude-code. Скилл окажется в ~/.claude/skills/livewire-development/SKILL.md.

Что делает livewire-development?

Даёт агенту справочник по Livewire 4: команды создания компонентов, директивы wire:, острова, асинхронные действия, тесты и частые ошибки.

Чем Livewire 4 отличается от третьей версии?

Полностраничные компоненты используют Route::livewire(), ключи конфига переименованы, wire:model игнорирует события дочерних компонентов без .deep, а wire:transition перешёл на View Transitions API.

Исходный текст

SKILL.md · MIT
---
name: livewire-development
description: >-
  Develops reactive Livewire 4 components. Activates when creating, updating, or modifying
  Livewire components; working with wire:model, wire:click, wire:loading, or any wire: directives;
  adding real-time updates, loading states, or reactivity; debugging component behavior;
  writing Livewire tests; or when the user mentions Livewire, component, counter, or reactive UI.
---

# Livewire Development

## When to Apply

Activate this skill when:

- Creating or modifying Livewire components
- Using wire: directives (model, click, loading, sort, intersect)
- Implementing islands or async actions
- Writing Livewire component tests

## Documentation

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

## Basic Usage

### Creating Components

<code-snippet name="Component Creation Commands" lang="bash">

# Single-file component (default in v4)

{{ $assist->artisanCommand('make:livewire create-post') }}

# Multi-file component

{{ $assist->artisanCommand('make:livewire create-post --mfc') }}

# Class-based component (v3 style)

{{ $assist->artisanCommand('make:livewire create-post --class') }}

# With namespace

{{ $assist->artisanCommand('make:livewire Posts/CreatePost') }}

</code-snippet>

### Converting Between Formats

Use `php artisan livewire:convert create-post` to convert between single-file, multi-file, and class-based formats.

### Component Format Reference

| Format | Flag | Structure |
|--------|------|-----------|
| Single-file (SFC) | default | PHP + Blade in one file |
| Multi-file (MFC) | `--mfc` | Separate PHP class, Blade, JS, tests |
| Class-based | `--class` | Traditional v3 style class |
| View-based | ⚡ prefix | Blade-only with functional state |

### Single-File Component Example

<code-snippet name="Single-File Component Example" lang="php">

<?php
use Livewire\Component;

new class extends Component {
    public int $count = 0;

    public function increment(): void
    {
        $this->count++;
    }
}
?>

<div>
    <button wire:click="increment">Count: @{{ $count }}</button>
</div>

</code-snippet>

## Livewire 4 Specifics

### Key Changes From Livewire 3

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

- Use `Route::livewire()` for full-page components; config keys renamed: `layout` → `component_layout`, `lazy_placeholder` → `component_placeholder`.
- `wire:model` now ignores child events by default (use `wire:model.deep` for old behavior); `wire:scroll` renamed to `wire:navigate:scroll`.
- Component tags must be properly closed; `wire:transition` now uses View Transitions API (modifiers removed).
- JavaScript: `$wire.$js('name', fn)` → `$wire.$js.name = fn`; `commit`/`request` hooks → `interceptMessage()`/`interceptRequest()`.

### New Features

- Component formats: single-file (SFC), multi-file (MFC), view-based components.
- Islands (`@island`) for isolated updates; async actions (`wire:click.async`, `#[Async]`) for parallel execution.
- Deferred/bundled loading: `defer`, `lazy.bundle` for optimized component loading.

| Feature | Usage | Purpose |
|---------|-------|---------|
| Islands | `@island(name: 'stats')` | Isolated update regions |
| Async | `wire:click.async` or `#[Async]` | Non-blocking actions |
| Deferred | `defer` attribute | Load after page render |
| Bundled | `lazy.bundle` | Load multiple together |

### New Directives

- `wire:sort`, `wire:intersect`, `wire:ref`, `.renderless`, `.preserve-scroll` are available for use.
- `data-loading` attribute automatically added to elements triggering network requests.

| Directive | Purpose |
|-----------|---------|
| `wire:sort` | Drag-and-drop sorting |
| `wire:intersect` | Viewport intersection detection |
| `wire:ref` | Element references for JS |
| `.renderless` | Component without rendering |
| `.preserve-scroll` | Preserve scroll position |

## Best Practices

- Always use `wire:key` in loops
- Use `wire:loading` for loading states
- Use `wire:model.live` for instant updates (default is debounced)
- Validate and authorize in actions (treat like HTTP requests)

## Configuration

- `smart_wire_keys` defaults to `true`; new configs: `component_locations`, `component_namespaces`, `make_command`, `csp_safe`.

## Alpine & JavaScript

- `wire:transition` uses browser View Transitions API; `$errors` and `$intercept` magic properties available.
- Non-blocking `wire:poll` and parallel `wire:model.live` updates improve performance.

For interceptors and hooks, see [reference/javascript-hooks.md](reference/javascript-hooks.md).

## Testing

<code-snippet name="Testing Example" lang="php">

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

</code-snippet>

## Verification

1. Browser console: Check for JS errors
2. Network tab: Verify Livewire requests return 200
3. Ensure `wire:key` on all `@foreach` loops

## Common Pitfalls

- Missing `wire:key` in loops → unexpected re-rendering
- Expecting `wire:model` real-time → use `wire:model.live`
- Unclosed component tags → syntax errors in v4
- Using deprecated config keys or JS hooks
- Including Alpine.js separately (already bundled in Livewire 4)

© spatie · MIT · spatie/freek.dev

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой