
Якось я створив генератор коду для Event Sourcing у Laravel. Ви запускаєте одну Artisan-команду для spatie/laravel-event-sourcing і отримуєте готові aggregates, events, projectors та reactors. Це детермінований інструмент: однакові вхідні дані завжди дають однаковий результат. Нещодавно він перетнув позначку у 10 000 завантажень на Packagist.
Згодом я розробив Claude Code skill, який генерує такий самий код, але замість команди все починається з діалогу. Мене часто запитують: чи замінить цей AI-інструмент мій генератор?
Коротка відповідь — ні. І причина цікавіша, ніж саме питання.
Якщо коротко: AI не «вбив» генератор коду. Він взяв на себе фазу дизайну, залишивши детерміновану частину там, де передбачуваність досі має критичне значення.
У чому сила генератора
Головна цінність генератора — передбачуваність. Ви виконуєте composer require albertoarena/laravel-event-sourcing-generator, потім php artisan make:event-sourcing-domain Order і отримуєте ідентичні байт-у-байт файли при кожному запуску. Жодних токенів, API-ключів, залежності від мережі чи перевірок на «галюцинації» нейромережі. Він працює однаково як у CI, так і на локальному ноутбуці.
Це ідеально, коли структура домену вже зрозуміла: я знаю межі aggregate, знаю події, і мені просто потрібен стабільний бойлерплейт. Генератор не допоможе з'ясувати, чи правильні ці межі взагалі — він припускає, що найскладнішу частину роботи я вже виконав.
У чому сила skill
Мій skill — це не просто генератор у костюмі AI. Його цінність лежить «вище» за кодом і базується на двофакторному процесі:
- Етап 1: Дизайн. AI ставить влучні запитання про домен і формує ADR (Architecture Decision Record): aggregates, commands, events, projectors, reactors та інваріанти, що їх пов’язують. Код не пишеться, поки я не схвалю цей ADR.
- Етап 2: Реалізація. Після схвалення AI спочатку пише тести, а потім генерує весь домен і запускає тестову сюїту. Наприклад, для правила «неможливо скасувати замовлення після відправлення» тест перевірить викидання винятку ще до того, як з’явиться перший рядок коду в aggregate.
Найважливіше тут — саме дизайн. Питання штибу «Чи може подія cancel відбутися після ship?» — це моделювання, від якого залежить життєздатність Event Sourcing. Генератор ніколи не вестиме зі мною таких діалогів. Він не запитує, він просто виконує вже прийняте рішення.
Справжня лінія розподілу
Обидва інструменти видають схожий PHP-код, тому люди фокусуються на їхній схожості. Але генерація коду — це найменш цікава частина їхньої роботи. Ось реальна різниця:
- Я вже знаю дизайн → Генератор. Детерміновано, швидко, не потребує перевірок, не залежить від LLM.
- Я ще розробляю дизайн → Skill. Це партнер з моделювання, який залишає документацію (ADR) та створює «сітку безпеки» у вигляді тестів.
Що я обираю сам
Чесно кажучи, зараз я частіше використовую skill. Зазвичай, коли я сідаю за новий bounded context, його межі ще не визначені остаточно. П’ятихвилинний діалог про дизайн вартий того, щоб не переписувати бойлерплейт пізніше. ADR змушує мене відповісти на незручні запитання на кшталт «це має бути подія чи побічний ефект?» ще до початку кодингу.
Це не знецінює генератор. Я дістаю його, коли структура домену вже зафіксована, коли потрібно працювати в pipeline без участі LLM або коли ціна токенів та час на розмову просто не виправдані. Просто тепер такі ситуації трапляються рідше.
Де я не використовую skill
Варто бути чесним щодо обмежень. Skill призначений тільки для нових проектів (greenfield). Він проектує нові домени, але не рефакторить існуючий CRUD у Event Sourcing. Він заточений під spatie/laravel-event-sourcing v7, а не під нативну систему подій Laravel чи CQRS без Event Sourcing. Якщо у вас інша ситуація — жоден із цих інструментів вам не підійде.
Спробуйте самі
Якщо ви моделюєте новий домен і вже використовуєте Claude Code, встановити skill можна у два кроки (спочатку додати маркетплейс, потім сам плагін):
/plugin marketplace add albertoarena/claude-laravel-event-sourcing
/plugin install laravel-spatie-event-sourcing@albertoarena
Якщо дизайн уже готовий і вам потрібен лише код — використовуйте Composer:
composer require albertoarena/laravel-event-sourcing-generator
php artisan make:event-sourcing-domain Order
Детальні описи механік доступні за посиланнями: про генератор, про skill та оригінальний гайд зі створення доменів за допомогою Spatie.