hyva-alpine-component — скилл для Claude Code
Помогает писать компоненты Alpine.js для тем Hyvä в Magento 2 так, чтобы они работали при строгой политике Content Security Policy.
npx skills add hyva-themes/hyva-ai-tools --skill hyva-alpine-component -a claude-codeЧто делает hyva-alpine-component
Скилл подсказывает агенту, как строить интерактив в шаблонах Hyvä без директивы unsafe-eval. Сборка Alpine CSP без неё обходится, а на страницах с оплатой она нужна для соответствия PCI-DSS 4.0 — с 1 апреля 2025 года это требование. Поэтому весь код стоит сразу писать в CSP-совместимом стиле.
Внутри разобраны рабочие приёмы. Вместо x-show="!open" объявляют метод, вместо @click="open = false" вызывают @click="close", аргументы передают через data-* и читают из this.$el.dataset. x-model в Alpine CSP не поддерживается: поле ввода связывают через :value и @input. Итерация по диапазону тоже недоступна. Отдельно описан каркас компонента: именованная глобальная функция-конструктор, регистрация через Alpine.data() по событию alpine:init с {once: true}, а после каждого блока <script> — вызов $hyvaCsp->registerInlineScript().
Значения из PHP в JavaScript прогоняют через $escaper->escapeJs(), а для data-атрибутов берут escapeHtmlAttr(). Числа из полей ввода разбирает hyva.safeParseNumber(), композиция объектов идёт через spread с .call(this). Без вызова registerInlineScript() инлайн-скрипт не зарегистрируется и политика его отклонит.
Какие задачи решает
- Написать Alpine-компонент для шаблона Hyvä, который пройдёт проверку CSP
- Переписать существующий
x-dataпод Alpine CSP безunsafe-eval - Заменить
x-modelна связку:valueи@input - Зарегистрировать конструктор компонента через
Alpine.data()и не задвоить регистрацию - Передать аргумент в метод через data-атрибут с корректным экранированием
Примеры запросов агенту
- Сделай Alpine-компонент для корзины в Hyvä: открой/закрой панель и счётчик количества без
unsafe-eval - Перепиши этот шаблон
checkout.phtmlтак, чтобы он работал с Alpine CSP - Добавь в компонент
x-model-подобную связку для поля промокода через:valueи@input
Как установить hyva-alpine-component
1Через Skills CLI (Vercel)
npx skills add hyva-themes/hyva-ai-tools --skill hyva-alpine-component -a claude-code2Вручную: положить файлы
~/.claude/skills/hyva-alpine-component/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/hyva-alpine-component/
1Через Skills CLI (Vercel)
npx skills add hyva-themes/hyva-ai-tools --skill hyva-alpine-component -a codex2Вручную: положить файлы
.agents/skills/hyva-alpine-component/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add hyva-themes/hyva-ai-tools --skill hyva-alpine-component -a cursor2Вручную: положить файлы
.cursor/skills/hyva-alpine-component/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install hyva-themes/hyva-ai-tools hyva-alpine-component2Вручную: положить файлы
.github/skills/hyva-alpine-component/SKILL.md1Через Skills CLI (Vercel)
npx skills add hyva-themes/hyva-ai-tools --skill hyva-alpine-component -a gemini-cli2Командой платформы
gemini skills install https://github.com/hyva-themes/hyva-ai-tools --path skills/hyva-alpine-componentВручную: положить файлы
.devin/skills/hyva-alpine-component/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add hyva-themes/hyva-ai-tools --skill hyva-alpine-component -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о hyva-alpine-component
Как установить hyva-alpine-component в Claude Code?
Выполните npx skills add hyva-themes/hyva-ai-tools --skill hyva-alpine-component -a claude-code. Файл скилла окажется по пути ~/.claude/skills/hyva-alpine-component/SKILL.md.
Что делает hyva-alpine-component?
Даёт агенту правила написания Alpine.js-компонентов для тем Hyvä, которые работают в сборке Alpine CSP без unsafe-eval. Внутри — паттерны для методов, мутаций состояния, передачи аргументов и регистрации конструктора.
Почему в нём нет x-model?
В Alpine CSP x-model не поддерживается. Скилл предлагает вместо него ручную связку через :value и @input, а для чисел — hyva.safeParseNumber().