Skip to content

Разработка Laravel через Claude Code — лучшие практики

Дополняет ../mcp.md (справочник MCP) и ../../LIMITS-OPTIMIZATION.md (экономия лимитов). Здесь — как эффективно вести Laravel-разработку через Claude Code (CC).

Laravel Boost — официальный MCP для AI-агентов

Laravel позиционируется как «clean stack for Artisans and agents». Boost — first-party MCP-сервер, дающий агенту структурный доступ к приложению.

bash
docker exec {app-container} composer require laravel/boost --dev
docker exec {app-container} php artisan boost:install

Ставит MCP-сервер + кураторские AI-guidelines (видны в referendum/CLAUDE.md как <laravel-boost-guidelines>).

Инструмент BoostЗаменяетЭкономия
application-infophp artisan aboutверсии, пакеты компактно
database-schemapsql \dструктура таблиц/индексов
database-querypsql -cSELECT + EXPLAIN, JSON-вывод
last-errortail storage/logsпоследняя ошибка структурно
read-log-entriescat/grep logфильтрованные записи
search-docsWebFetch laravel.comверсионная дока Laravel/Filament/Livewire
get-absolute-urlкорректные URL для тестов
browser-logsPlaywright вручнуюJS-console из Telescope/Pail

Иерархия выбора MCP (дёшево → дорого)

  1. laravel-boost (~1% лимита) — первый выбор для Laravel-задач
  2. postgres/mysql MCP (~6%) — SQL напрямую, минуя Docker, JSON-вывод
  3. docker MCP (~20%) — artisan/composer/npm/test — fallback
  4. playwright (~19%) — визуально; но claude-in-chrome (~2%) предпочтительнее
Ошибка Laravel    → laravel-boost__last-error
Схема БД          → laravel-boost__database-schema
SQL-запрос        → postgres/mysql MCP
Документация      → laravel-boost__search-docs / context7
artisan/composer  → docker__docker_exec (цепочкой: cmd1 && cmd2)
Визуальная проверка → claude-in-chrome (не playwright)
Поиск по коду     → Grep/Glob (бесплатно)

Bash docker exec — только TTY/interactive. Хуки проекта блокируют неоптимальные вызовы.

Иерархия CLAUDE.md (наследование)

CC автоматически подгружает цепочку снизу вверх:

~/.claude/CLAUDE.md          глобальные правила разработчика
  → E:\Clients\CLAUDE.md      сервер, Docker, Caddy, порты
    → laravel/CLAUDE.md        Laravel-стандарт + specs/* (15 @-импортов)
      → {project}/CLAUDE.md    специфика проекта (override)
  • Корневые правила и общие specs/* уже в контексте проекта — не дублировать.
  • @import (specs/x.md) резолвится относительно своего файла → из проекта указывает на {project}/specs/, НЕ на корневые. Общие specs приходят через наследуемый laravel/CLAUDE.md.
  • Каждый проект → блок «Наследование правил» + навигатор по docs/.
  • См. детали в памяти CC: docs-inheritance-structure.

Что писать в CLAUDE.md проекта

  • Имена контейнеров (app/db/redis), Laravel root путь.
  • Override-правила (что отличается от laravel/CLAUDE.md).
  • Навигатор: таблица «область → файл доки».
  • НЕ копировать общие правила — они наследуются.

Субагенты (Task tool)

Делегировать субагентуДелать самому (в главной сессии)
code review по чеклистуархитектурные решения
генерация тестовsecurity review
рефакторинг по правилуанализ ТЗ
grep-поиски по большой кодбазезадачи где субагент дал неуверенный результат
документация, бойлерплейтфинальные решения
  • Всегда model:sonnet для субагентов (дешевле Opus, лимит Max X5).
  • Не более 4 параллельно (лимит). При остатке <20% — не более 2.
  • Конкретные промпты — точная задача завершается быстрее.
  • Не запускать субагент на правку одного файла / простой grep (overhead).

TDD-цикл через Claude Code

  1. Написать падающий тест (Pest/PHPUnit) — docker exec {c} php artisan test --filter=X
  2. Убедиться, что падает (FAIL) — реально запустить, не предполагать
  3. Минимальная реализация
  4. Запустить — PASS
  5. Рефакторинг при зелёных тестах
  6. Pint + larastan + полный прогон → коммит (по явной просьбе)

verification-before-completion: не заявлять «готово/работает», пока команда верификации не показала результат. Evidence before assertions.

Экономия контекста (длинные сессии)

  • /compact после серии MCP-вызовов и после отладки.
  • /clear при смене задачи/проекта.
  • .claudeignore исключает vendor/, node_modules/, storage/logs/, .playwright-mcp/, *.png — экономия 5-30k токенов.
  • Selective reading: читать строки offset+limit, не файл целиком на 2000 строк.
  • Scratchpad для задач 30+ мин: прогресс в scratchpad.md, после /clear — «прочитай и продолжи».
  • docker_container_logs всегда с tail: 20.

Модели CC под задачу

ЗадачаМодель
Рутина: CRUD, CSS, деплой, переименованияSonnet (дефолт)
Архитектура, security review, сложная бизнес-логикаOpus
Массовое переименование, форматированиеHaiku (быстро, отдельный лимит)

Память CC (memory MCP / файловая)

  • Начало сессии: проверить активные задачи и контекст проекта.
  • Сохранять: решения с неочевидной мотивацией, конфиги (URL/пути/контейнеры), договорённости.
  • НЕ сохранять: то что в коде/git, временный контекст сессии, общеизвестные паттерны.

Хуки проекта (автоматизация)

ХукМоментДействие
docker-mcp-guardPreToolUse Bashблокирует bash docker → MCP
laravel-mcp-guardPreToolUse Bashавтоопределение контейнера
mcp-cost-optimizerPreToolUse dockerперенаправляет docker→boost/postgres
playwright-cost-optimizerPreToolUse playwright→ claude-in-chrome (10x дешевле)
prompt-classifierUserPromptSubmitподсказывает нужный MCP по типу задачи

Anti-patterns (работа через CC)

ПаттернПроблемаРешение
docker exec + tail logдорого (~20%)laravel-boost__last-error (~1%)
psql -c через dockerдорогоpostgres MCP / boost database-query
Дублировать общие правила в каждом CLAUDE.mdраздувание, рассинхроннаследование + override
Субагент на правку 1 файлаoverheadсделать напрямую
Opus для CRUD/CSSрасход лимитаSonnet/Haiku
Одна сессия часами без /compactрастущий контекст = дороже/compact каждые 15-20 мин
«покажи весь файл» на 2000 строктысячи токеновoffset+limit нужный метод
Заявить «работает» без запуска тесталожное завершениеverification-before-completion

Внутренняя база знаний студии