alpine-js — скилл для Claude Code: что делает и как установить
Набор правил для создания реактивных интерфейсов на Alpine.js. Помогает писать лёгкий клиентский код в связке с Tailwind CSS, Laravel Livewire и Ghost CMS.
npx skills add Mindrally/skills --skill alpine-js -a claude-codeЧто делает alpine-js
Скилл задаёт ассистенту правила разработки на Alpine.js с упором на минимальный объём JavaScript в разметке. В инструкции собраны директивы (x-data, x-model, x-bind, x-init), готовые паттерны для выпадающих меню и валидации форм. Сложную логику скилл требует выносить в методы или компоненты Alpine.data(), а общее состояние — в Alpine.store().
Внутри описаны правила интеграции со сторонними инструментами. Для стилей задаётся сочетание x-transition и x-bind:class с классами Tailwind CSS. В связке с Laravel и Livewire ассистент использует директиву @entangle для синхронизации состояния, оставляя сетевые запросы серверной части.
Скилл советует предпочитать x-show вместо x-if ради производительности в большинстве сценариев. Если в разметке появляются тяжёлые блоки, фокус смещается на ленивую загрузку и контроль доступности через атрибуты ARIA.
Какие задачи решает
- настроить выпадающее меню с плавной анимацией через Tailwind CSS
- организовать двустороннюю привязку данных с Laravel Livewire через
@entangle - вынести разросшуюся логику компонента в
Alpine.data() - реализовать валидацию формы без раздувания клиентского бандла
Примеры запросов агенту
- Сделай выпадающее меню на Alpine.js с закрытием по клику вне элемента и классами Tailwind CSS
- Напиши форму подписки с валидацией поля email через x-model на Alpine.js
- Свяжи локальное состояние компонента Alpine.js с переменной Livewire через @entangle
Как установить alpine-js
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill alpine-js -a claude-code2Вручную: положить файлы
~/.claude/skills/alpine-js/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/alpine-js/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill alpine-js -a codex2Вручную: положить файлы
.agents/skills/alpine-js/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill alpine-js -a cursor2Вручную: положить файлы
.cursor/skills/alpine-js/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills alpine-js2Вручную: положить файлы
.github/skills/alpine-js/SKILL.md1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill alpine-js -a gemini-cli2Командой платформы
gemini skills install https://github.com/Mindrally/skills --path alpine-jsВручную: положить файлы
.devin/skills/alpine-js/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill alpine-js -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о alpine-js
Как установить alpine-js в Claude Code?
Выполните команду npx skills add Mindrally/skills --skill alpine-js -a claude-code. Настройки сохранятся в файле ~/.claude/skills/alpine-js/SKILL.md.
Что делает скилл alpine-js?
Он задаёт ИИ-агенту правила написания декларативного кода для Alpine.js. Инструкция охватывает работу с директивами, связку с Tailwind CSS и бэкенд-фреймворками.
Как скилл предлагает связывать Alpine.js с Laravel Livewire?
Инструкция предписывает использовать Alpine.js строго для интерфейсных действий, а сетевой обмен доверить Livewire. Для синхронизации состояний применяется директива @entangle.
Исходный текст
SKILL.md · Apache-2.0
---
name: alpine-js
description: Alpine.js development guidelines for lightweight reactive interactions with Tailwind CSS and various backend frameworks.
metadata:
maintainer: Mindrally
source: https://github.com/Mindrally/skills
---
# Alpine.js Development
You are an expert in Alpine.js for building lightweight, reactive web interfaces.
## Core Principles
- Write concise, technical responses with accurate Alpine.js examples
- Use Alpine.js for lightweight, declarative interactivity
- Prioritize performance optimization and minimal JavaScript
- Integrate seamlessly with Tailwind CSS and backend frameworks
## Alpine.js Fundamentals
### Directives
- `x-data` - Define reactive data for a component
- `x-bind` - Bind attributes to expressions
- `x-on` - Attach event listeners
- `x-model` - Two-way data binding for inputs
- `x-show` / `x-if` - Conditional rendering
- `x-for` - Loop through arrays
- `x-text` / `x-html` - Set text or HTML content
- `x-ref` - Reference DOM elements
- `x-init` - Run code on initialization
### Component Pattern
```html
<div x-data="{ open: false, count: 0 }">
<button @click="open = !open">Toggle</button>
<div x-show="open" x-transition>
<p x-text="count"></p>
<button @click="count++">Increment</button>
</div>
</div>
```
## Integration Patterns
### With Tailwind CSS
- Use Tailwind for styling, Alpine for behavior
- Combine `x-bind:class` with Tailwind utilities
- Use transitions with `x-transition` and Tailwind
### With Laravel/Livewire (TALL Stack)
- Use Alpine for client-side interactivity
- Let Livewire handle server communication
- Use `@entangle` for two-way binding with Livewire
- Keep components focused and modular
### With Ghost CMS
- Use Alpine for dynamic content interactions
- Integrate with Ghost's content API
- Handle data fetching patterns appropriately
## Best Practices
### Performance
- Keep `x-data` objects small and focused
- Use `x-show` over `x-if` when possible for better performance
- Lazy load heavy components
- Minimize DOM manipulation
### Code Organization
- Extract reusable logic into Alpine.data() components
- Use Alpine.store() for shared state
- Keep inline expressions simple; move complex logic to methods
- Use meaningful variable names
### Accessibility
- Ensure keyboard navigation works
- Use proper ARIA attributes
- Test with screen readers
- Maintain focus management
## Common Patterns
### Dropdown Menu
```html
<div x-data="{ open: false }" @click.away="open = false">
<button @click="open = !open">Menu</button>
<div x-show="open" x-transition>
<!-- Menu items -->
</div>
</div>
```
### Form Validation
```html
<form x-data="{ email: '', isValid: false }" @submit.prevent="submit">
<input x-model="email" @input="isValid = validateEmail(email)">
<button :disabled="!isValid">Submit</button>
</form>
```
© Mindrally · Apache-2.0 · Mindrally/skills