- histoire@1.0.0-beta.1 + @histoire/plugin-vue@1.0.0-beta.1 (--legacy-peer-deps: Histoire требует vite ^7, у нас vite 8 ради @vitejs/plugin-vue 6 — runtime smoke OK). - app/histoire.config.ts: HstVue plugin + setupFile + Forest primary palette (Teal #0F6E56). - app/resources/js/histoire.setup.ts: defineSetupVue3 регистрирует vuetify для каждой story. - app/resources/js/components/AppShell.story.vue — первая story (smoke). - npm-scripts: story / story:build / story:preview. - .gitignore: /app/.histoire/ (статическая сборка). - cspell-words.txt: рендерятся, репо, тулчейна. - Регресс: lint:vue, type-check, format:check OK; vitest 3/3 за 2.98s; vite build 158 модулей за 334ms; story:build 1/1 за 30.25s; Pest 48/48 за 5.12s. Активно 18/28 инструментов: 9 фазы 0 + 8 фазы 1 + 6 фазы 2 (фаза 2 по тулчейну закрыта). CLAUDE.md v1.17->v1.18, Tooling v1.6->v1.7, реестр Открытых_вопросов v1.26->v1.27. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
43 KiB
Приложение Н — Tooling, скиллы и плагины Claude (v8.3)
Дата: 08.05.2026 (поздний вечер) Версия: 1.7 (фаза 2 закрыта по тулчейну: Histoire 1.0-beta.1 активен, 18/28 — фазы 0+1+2 полностью; phase 3 ждёт спринт 12) Адресат: Claude + разработчики проекта Лидерра Назначение: единый источник истины по 28 инструментам разработки, скиллам Claude Code, MCP-серверам и плагинам, используемым в проекте. Зафиксирован выбор, объяснено, что заменяет что, и в какой фазе вводится каждый инструмент.
Связано:
Pravila_raboty_Claude_v1_1.mdv1.2+ — §4.8 «Шифры приложений» (Н занят)CLAUDE.md(корень репозитория) — оперативная карта инструментов с приоритетом правилREADME_АРХИВ_v8_4.mdv8.4+ — состав архива
Что нового в v1.6 (08.05.2026 поздний вечер):
- #15 squawk v2.51.0 установлен (npm-wrapper
squawk-cli+ бинарь скопирован вbin/squawk.exe, паттерн как у gitleaks/lychee). Конфиг.squawk.tomlв корне отключает 9 правил: 5 bootstrap-неприменимых (require-timeout-settings, prefer-robust-stmts, require-concurrent-index-creation, constraint-missing-not-valid, adding-foreign-key-constraint) и 4 дизайнных (prefer-identity, prefer-text-field, prefer-bigint-over-int, prefer-bigint-over-smallint). Smoke-test наdb/schema.sql— 0 issues с конфигом. Pre-commit хук вlefthook.yml(job 7) на staged*.sql. npm-скриптnpm run lint:sql. - #16 pgFormatter v5.9 установлен (Perl-скрипт + lib/ из GitHub Releases распакованы в
bin/pgFormatter/, запуск через Cygwin Perl 5.42.2 из Git for Windows). Без pre-commit хука auto-fix — diff против db/schema.sql 3255 строк (pgFormatter переписывает UPPERCASE→lowercase для типов, плотный одностроковый стиль для колонок, перетасовывает inline-комментарии). Стиль schema.sql ручной (выровненные колонки, ASCII-разделители) — авто-fix недопустим. Доступ через npm-скриптыnpm run format:sql:check(dry-run + diff) иnpm run format:sql(пишет вdb/schema.sql.formattedдля review, не перезаписывает source). - Активных инструментов фазы 1: 13 из 17. Установлено в фазе 1: #10 Boost, #11 Pint, #12 Larastan, #13 Roave/SA, #14 IDE Helper, #15 squawk, #16 pgFormatter, #18 Pest 4. Не применимо: #17 pg_partman (Windows native стек не имеет PG-расширения, заменён ручным cron'ом). Фаза 1 по тулчейну закрыта — следующий триггер (фаза 2) — первый коммит в
resources/js/.
Что было в v1.5 (08.05.2026 поздний вечер):
- #10 Laravel Boost v2.4.6 установлен ВРУЧНУЮ (коммит
e04f53b). Wizardphp artisan boost:installсломан в обоих режимах на этой машине: интерактив падает на UTF-8 кириллице в пути при рендереlaravel/promptsmultiselect,--no-interactionпадает в баге L13ConfiguresPrompts::multiselectFallback(null → array_map crash). Manual setup:app/boost.json(3 ключа: agents/guidelines/mcp), записьlaravel-boostв корневом.mcp.json(command=php, args=[app/artisan, boost:mcp]), кастомный guidelineapp/.ai/guidelines/vuetify.md. Smoke-test JSON-RPC 2024-11-05 — 9 tools (database-query/schema/connections, application-info, last-error, read-log-entries, search-docs, browser-logs, get-absolute-url). Подробности — memoryfeedback_environment.mdп.26. - Уточнение к §3.1 п.3 «отключить guidelines» — избыточно. Boost через
laravel/rosterauto-detect видит установленные пакеты в composer.lock; то, что не установлено (Inertia, Livewire, Tailwind, Filament, Flux UI, Nova, Folio, Volt, Wayfinder, Sail, PHPUnit), не серверится. Список оставлен в §3.1 как исторический контекст того, что мы НЕ ставим (CLAUDE.md §5 п.2), но как «отключение» в boost.json не реализуется. - Уточнение к §10.2 пути — кастомные guidelines идут в
app/.ai/guidelines/*.md(или*.blade.php), а не вresources/boost/guidelines/. Подтверждено source-кодомGuidelineComposer::userGuidelineDir = '.ai/guidelines'. - #13 Roave/SecurityAdvisories установлен (коммит
0eb2f72). Метапакетroave/security-advisories:dev-latestвrequire-dev. Conflict-only — блокирует install версий с известными CVE. На текущем снапшоте — 0 advisories. - Активных инструментов фазы 1: 11 из 17 (на момент v1.5; в v1.6 → 13/17 после squawk+pgFormatter). Установлено в фазе 1: #10 Boost, #11 Pint, #12 Larastan, #13 Roave/SA, #14 IDE Helper, #18 Pest 4. Остаются: #15 squawk (Windows binary), #16 pgFormatter (Perl), #17 pg_partman (заменён ручным cron'ом — Windows native стек не имеет PG-расширения, см. project_phase1_strategy).
Что нового в v1.4 (08.05.2026 поздний вечер): Laravel 11 → Laravel 13 в §0 (стек) и §3.2 (фаза 1 backend). Произошло так: при composer create-project laravel/laravel app без ^11 Composer подтянул свежайшую — laravel/framework: ^13.7 (Laravel 13.7, релиз ~Feb 2026). Live-проверка совместимости 5 ключевых плагинов прошла без блокеров: Boost v2.4.6 (composer dry-run резолвит lock без conflict), Larastan v3.9.6 (analyse прошёл с baseline), Pest v4.7.0 (smoke-test 2/2 за 281 ms), barryvdh/laravel-ide-helper v3.7.0 (ide-helper:generate создал _ide_helper.php), laravel/pint v1.29 (pint --test passed). Заказчик 08.05 (поздний вечер) принял Laravel 13 как latest stable. Откат дороговат — rm -rf app/ && composer create-project laravel/laravel:^11 app && повторить predis/Pest/Pint/Larastan/IDE Helper. Техдолг: синхронизация narrative ТЗ + Vybor_oblaka_v8_3.md + Админка_SaaS_v8_2.md под Laravel 13 — отдельная задача для следующих сессий (пока эти документы упоминают Laravel 11 как было). Подробности в Открытые_вопросы_v8_3.md §3 и блоке v1.17.
Установлены 3 dev-инструмента из фазы 1 (Прил. Н #11/#12/#14): laravel/pint v1.29, larastan/larastan v3.9.6 (+ phpstan v2.1.54), barryvdh/laravel-ide-helper v3.7.0. phpstan.neon level 5 + phpstan-baseline.neon (3 ошибки в default scaffold зафиксированы как baseline). composer.json scripts: composer pint, composer pint:test, composer stan, composer ide-helper.
Что было в v1.3 (08.05.2026 поздний вечер): Pest 3 → Pest 4 в §3.3 п.18 (тестирование), §6 п.2 (конфликт), §10.1 п.9 (boost:install). Решение: при composer require pestphp/pest --dev --with-all-dependencies без ^3 composer подтянул Pest v4.7.0; smoke-test 2/2 на default-тестах Laravel прошёл за 281 ms — backward-compat подтверждён. Бонус Pest 4: browser testing (без Dusk), stress testing, mutation testing v2. Откат дёшев — composer require pestphp/pest:^3. Подробности в Открытые_вопросы_v8_3.md §3 и блоке «Что изменилось в v1.16» там же.
Что было в v1.2 (08.05.2026 вечер): Sail отключён из allow-list Boost (§3.1 п.2/п.3). Причина: машина — OpenStack-VPS, nested virtualization выключена провайдером, Docker Desktop/WSL2/Hyper-V запустить невозможно (HypervisorPresent = True, но guest не получает VT-x). Переход на native-стек: PostgreSQL 16 (choco install postgresql16, Windows-сервис) + Memurai Developer (choco install memurai-developer.install, Redis 7-совместимый Windows-сервис, free до 1GB). pg_partman/pg_audit/pg_anonymizer на native Windows — ручная сборка/замена; на MVP — заменить ручным cron'ом для партиций и triggers (которые уже в schema v8.5). Подробности в memory/project_phase1_strategy.md.
Что было в v1.1 (08.05.2026): закрыт CTO-12 — выбран Pest 3 (не PHPUnit). Обновлены §3.1 п.4 (boost:install), §3.4 (тестирование), §6 п.2 (конфликт Pest↔PHPUnit), §10.1 п.9 (процедура перехода). Обоснование выбора — в Открытые_вопросы_v8_3.md §3 (Pest dataset'ы для 14 статусов / 34 RLS, architecture testing для закрепления правил Claude, родной для Boost).
Что было в v1.0: первая версия 06.05.2026. Зафиксированы 28 активных инструментов в 4 фазах, перечень того, что НЕ ставим (10 пунктов), источники истины для конфигураций, процедура перехода между фазами, особенности Windows + PowerShell.
0. Сводка
| Фаза | Триггер | Активных к концу фазы | Δ к предыдущей |
|---|---|---|---|
| 0 — сейчас (документация + 8 HTML-прототипов) | сразу | 9 | +9 |
| 1 — старт Laravel | composer create-project laravel/laravel |
17 | +9 новых, −1 заменённый (PostgreSQL MCP → Laravel Boost) |
| 2 — старт frontend | первый коммит в resources/js/ (Vue 3 + Vuetify 3) |
23 | +6 |
| 3 — pre-production | ~спринт 12, перед публичным релизом | 28 | +5 |
Полный перечень — §2–§5. Карта «когда что использовать» — §7. Что НЕ ставим и почему — §9.
Ключевой принцип фазирования: не активируем фазу N+1, пока не закрыт триггер фазы N. Без composer create-project Boost не работает; без Vuetify-приложения Histoire бесполезен.
1. Принципы выбора
- Один инструмент на задачу. Если две тулзы делают одно — оставляем одну, явно указываем какую (см. §6 «Конфликты и решения»).
- Dev-only для local tooling. Boost, IDE Helper, Pint, Histoire и т. п. ставятся как
--devи не идут в production. - Pre-commit для быстрых проверок, CI для медленных. gitleaks / markdownlint / Pint — pre-commit. Larastan / Semgrep / Trivy / Pa11y — CI.
- Контекст Claude — это ресурс. Не ставим тулзы, дублирующие моё базовое поведение (Memory MCP, Sequential Thinking MCP).
- Phase-gating. Триггер каждой фазы — конкретное действие в репозитории. До триггера — не ставим.
- Дополнение, не замена правил Claude. Любой плагин уступает в приоритете
Pravila_raboty_Claude_v1_1.md— см. §7. - Бесплатное предпочтительнее платного при сопоставимом качестве. Dependabot вместо Snyk; Semgrep CE вместо CodeQL Enterprise.
2. Фаза 0 — текущая (9 инструментов)
Применяется немедленно. Покрывает работу с документацией (17 файлов в docs/ + db/) и HTML-прототипами (web/*.html, 2 из 8 готовы).
2.1. MCP-серверы (3)
| # | Инструмент | Установка | Когда использовать | Не использовать когда |
|---|---|---|---|---|
| 1 | PostgreSQL MCP (@modelcontextprotocol/server-postgres) |
claude mcp add postgres ... |
Валидация db/schema.sql запросами к локальной БД (information_schema, \d <table>, FK-проверки) |
На production-БД; после установки Boost (заменяется) |
| 2 | Playwright MCP (@playwright/mcp) |
claude mcp add playwright ... |
Открыть web/*.html, скриншот, проверка интерактива (zxcvbn в 01-login, ApexCharts в 02-dashboard) |
Для unit-тестов Vue (это Vitest в фазе 2) |
| 3 | GitHub MCP | claude mcp add github ... |
Issues по Биз-10..16, PR с авто-changelog, привязка коммитов к ID открытых вопросов | С токеном, имеющим delete_repo или admin:org |
2.2. Линтеры документации (4)
| # | Инструмент | Установка | Когда использовать | Конфликт |
|---|---|---|---|---|
| 4 | markdownlint-cli2 | npm i -D markdownlint-cli2 |
Стиль 17 .md файлов (заголовки, таблицы, списки, длина строк) |
Не использовать Prettier для .md — портит таблицы |
| 5 | cspell + словари ru/en + проектный | npm i -D cspell @cspell/dict-ru_ru @cspell/dict-en_us |
Орфография ru/en + кастомный словарь («Лидерра», «УПД», «РКН», «ГЦК», «КЦ», «Yandex», «Vuetify») | — |
| 6 | lychee | cargo install lychee или GitHub Releases |
Проверка кросс-ссылок между 17 файлами архива (правило §4.7 правил Claude) | Не использовать markdown-link-check (lychee быстрее, на Rust) |
| 7 | Stylelint + stylelint-config-standard |
npm i -D stylelint stylelint-config-standard |
Стиль CSS в <style> прототипов; в фазе 2 распространяется на Vue SFC |
— |
2.3. Безопасность (2)
| # | Инструмент | Установка | Когда использовать |
|---|---|---|---|
| 8 | gitleaks | GitHub Releases (gitleaks_<v>_windows_x64.zip) |
Pre-commit hook: поиск телефонов, email, токенов, ИНН, КЭП в diff. Правило §5.2 правил Claude |
| 9 | Pa11y | npm i -D pa11y pa11y-ci |
WCAG 2.1 AA проверка прототипов. Требование брендбука §3.4. Единственный источник истины по a11y во всём проекте |
3. Фаза 1 — старт Laravel (+9 новых, −1 заменён, итого 17 активных)
Триггер: composer create-project laravel/laravel app в подпапке проекта.
3.1. Главное — замена PostgreSQL MCP на Laravel Boost
| # | Инструмент | Установка | Что заменяет |
|---|---|---|---|
| Laravel Boost | composer require laravel/boost --dev + php artisan boost:install |
Заменяет PostgreSQL MCP (#1). Даёт 9 MCP-tools (Application Info, Database Query, Database Schema, Browser Logs, Last Error, Read Log Entries, Get Absolute URL, Search Docs, Database Connections) + guidelines + Documentation API на 17 000+ фрагментов |
Обязательные настройки при boost:install:
CLAUDE.md— НЕ перезаписывать. Сохранить уже существующий (см. §7). Слить вручную, если Boost создаст черновик: добавить boost-секции в конец, оставив §1–§7 нашего CLAUDE.md выше.- Из 25+ встроенных guidelines оставить только: Laravel Framework, Pint, Pennant, MCP. (Sail убран 08.05.2026 — на текущей машине Docker невозможен из-за отсутствия nested virtualization, см. project_phase1_strategy memory. Native стек: native PostgreSQL 16 + Memurai Redis-compatible.)
- Отключить: Inertia, Livewire, Tailwind, Filament, Flux UI, Nova, Folio, Volt, Wayfinder, Sail — у нас их нет (Sail отключён 08.05.2026 после обнаружения OpenStack-VPS без nested-virt; native стек = единственный путь).
- Pest 4 — выбран (CTO-12 переоткрыт+закрыт 08.05.2026 поздний вечер, см. Открытые_вопросы_v8_3.md §3). Отключить guideline PHPUnit, оставить только Pest. composer.json в
app/уже наpestphp/pest: ^4.7. - Создать кастомный guideline для Vuetify 3:
resources/boost/guidelines/vuetify.blade.php(см. §10.2). - Запретить production DB connection —
.env.productionне должен попадать в локальный Boost-конфиг. .mcp.json— в репозиторий (не в gitignore), чтобы у команды одинаковая конфигурация (расхождение со стандартной рекомендацией Boost'а).
3.2. Анализаторы PHP (4)
| # | Инструмент | Установка | Роль |
|---|---|---|---|
| 11 | Laravel Pint | composer require laravel/pint --dev |
Code style PSR-12. Pre-commit hook |
| 12 | Larastan (PHPStan для Laravel) | composer require larastan/larastan --dev |
Статанализ типов, level 8/9. CI-only (медленно для pre-commit) |
| 13 | Roave/SecurityAdvisories | composer require --dev roave/security-advisories:dev-latest |
Превентивная блокировка установки composer-пакетов с известными CVE |
| 14 | Laravel IDE Helper | composer require barryvdh/laravel-ide-helper --dev |
Stubs для IDE (фасады, модели, мета-инфо) |
3.3. БД-инструменты (3)
| # | Инструмент | Установка | Роль |
|---|---|---|---|
| 15 | squawk | npm i -g squawk-cli + копия ~/AppData/Roaming/npm/.../binaries/squawk → bin/squawk.exe (npm-wrapper не находит spawn-target без .exe на Windows) |
Линтер миграций PostgreSQL — предупреждает о блокирующих ALTER на партиционированных таблицах (deals, supplier_lead_costs). Конфиг .squawk.toml отключает 9 правил (5 bootstrap + 4 дизайнных). Pre-commit hook на staged *.sql |
| 16 | pgFormatter | curl -L https://github.com/darold/pgFormatter/archive/refs/tags/v5.9.tar.gz | tar xz; копия pg_format + lib/ в bin/pgFormatter/; запуск через Cygwin Perl 5.42.2 из Git for Windows |
Форматирование SQL. Только ручной режим через npm run format:sql:check / npm run format:sql — без авто-fix хука (diff vs db/schema.sql 3255 строк, ручной стиль не перезаписывается) |
| 17 | pg_partman | Расширение PostgreSQL: CREATE EXTENSION pg_partman |
Автоматическое создание помесячных партиций deals_YYYY_MM и supplier_lead_costs_YYYY_MM (вместо ручного списка из db/schema.sql) |
3.4. Тестирование (1)
| # | Инструмент | Установка | Роль |
|---|---|---|---|
| 18 | Pest 4 | composer require pestphp/pest --dev --with-all-dependencies + vendor/bin/pest --init |
Тесты PHP. Pest 3 → Pest 4 после live-проверки на стеке 08.05.2026 поздний вечер (CTO-12 переоткрыт+закрыт, см. Открытые_вопросы_v8_3.md §3). Использовать datasets для параметризации 14 статусов воронки и 34 RLS-политик; architecture testing — для закрепления правил Claude (например, запрет mocks на integration-тестах). Бонус Pest 4: browser testing (без Dusk), stress, mutation v2 |
4. Фаза 2 — старт frontend (+6 новых, итого 23 активных)
Триггер: первый коммит в resources/js/ или отдельную папку Vue-приложения.
4.1. Поведенческий слой — Superpowers (выборочно)
| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 19 | Superpowers (3 skills из 13) | /plugin install superpowers@claude-plugins-official, в конфиге оставить только нужные |
test-driven-development, systematic-debugging, subagent-driven-development |
TDD для биллинга и RLS-политик; разбор инцидентов из Прил. И; двухстадийный review больших патчей schema.sql |
Отключённые skills и почему:
brainstorming— дублирует §4.5 правил Claude («3 варианта»)writing-plans+executing-plans— дублирует §8.4 правил Claude (защита от компакции)dispatching-parallel-agents— конфликт с §2.2 («один архитектурный вопрос за раз»)using-git-worktrees— нестабильно на Windows (длинные пути, пробелы)finishing-a-development-branch— дублирует обычныйgh pr createrequesting-code-review+receiving-code-review— дублирует процесс в правилахwriting-skills— нам не нужно создавать новые skillsusing-superpowers,verification-before-completion— справочные, не критичные
4.2. Frontend-инструменты (4)
| # | Инструмент | Установка | Роль | Конфликт |
|---|---|---|---|---|
| 20 | Volar (Vue.volar) |
VSCode Marketplace | Language server для .vue (типы, intellisense, навигация) |
— |
| 21 | vue-tsc | npm i -D vue-tsc typescript |
Type-check .vue файлов |
Только в CI, не в редакторе — иначе тормозит Volar |
| 22 | ESLint + Prettier + eslint-config-prettier + eslint-plugin-vue (связка, 1 инструмент в учёте) | npm i -D eslint prettier eslint-config-prettier eslint-plugin-vue |
Линт + форматтер JS/Vue. eslint-config-prettier обязательно — отключает в ESLint всё, что делает Prettier. Для .md Prettier отключён через .prettierignore (markdownlint главный) |
Связка ставится только целиком. Без eslint-config-prettier — конфликт правил |
| 23 | Vitest + @vue/test-utils |
npm i -D vitest @vue/test-utils @vitest/ui |
Тесты компонентов. Синтаксис близок к Pest для унификации backend↔frontend | Не использовать Jest — один тест-раннер на проект |
4.3. Каталог компонентов (1)
| # | Инструмент | Установка | Роль | Альтернатива |
|---|---|---|---|---|
| 24 | Histoire 1.0-beta.1 | npm i -D --legacy-peer-deps histoire @histoire/plugin-vue |
Каталог Vue-компонентов на базе Vuetify. Передача дизайнеру (Диз-1) и frontend-команде. Vite 8 несовместимость: заявлен peerDep vite ^7, ставим через --legacy-peer-deps; runtime smoke OK (08.05.2026 поздний вечер). При выходе beta.2+ с поддержкой Vite 8 — обновить. Конфиг: app/histoire.config.ts + app/resources/js/histoire.setup.ts (Vuetify через defineSetupVue3) |
Не Storybook — он тяжелее, медленнее, ориентирован на React |
5. Фаза 3 — pre-production (+5 новых, итого 28 активных)
Триггер: ~спринт 12, перед публичным релизом MVP.
| # | Инструмент | Установка | Категория | Роль |
|---|---|---|---|---|
| 25 | Semgrep + Semgrep MCP | pip install semgrep + claude mcp add semgrep |
SAST | Скан по антипаттернам Прил. М §6.6: пароль в <input type="text">, API-ключи в <input type="text">, hardcoded URL вроде prostats.info/bitrix24/webhook.php |
| 26 | Trivy | GitHub Releases | Container scan | Скан Docker-образов перед push в Yandex Container Registry |
| 27 | GitHub Dependabot | .github/dependabot.yml |
Dependency scan | Авто-PR с фиксом CVE для composer.json и package.json |
| 28 | pg_audit (расширение PostgreSQL) | CREATE EXTENSION pgaudit |
Compliance | Аудит-логи в дополнение к auth_log, pd_processing_log, incidents_log (требование 152-ФЗ) |
| 29 | pg_anonymizer (расширение PostgreSQL) | CREATE EXTENSION anon |
Compliance | Маскирование ПДн в dev/staging-дампах. Правило §5.1 правил Claude (+7XXXXXXXXXX, ***@***) |
Нумерация 25–29 — это глобальные индексы в порядке введения. Активных в финале — 28 (см. §0): из 29 номеров минус #1 (PostgreSQL MCP) — заменён Boost'ом.
6. Конфликты и решения
5 зон, где без явного правила я выберу не тот инструмент:
| # | Конфликт | Решение |
|---|---|---|
| 1 | PostgreSQL MCP ↔ Laravel Boost (Database Query) в момент перехода фазы 0→1 | В момент boost:install сразу убрать PG MCP из .mcp.json. Не оставлять оба активными |
| 2 | Pest ↔ PHPUnit | Pest 4 (CTO-12 переоткрыт+закрыт 08.05.2026 поздний вечер). На boost:install отключить guideline PHPUnit |
| 3 | vue-tsc ↔ Volar inline check | Volar — для редактора (быстрый). vue-tsc — только в CI (полный pass) |
| 4 | ESLint stylistic ↔ Prettier | eslint-config-prettier обязателен. Без него — конфликт правил |
| 5 | Pa11y ↔ Lighthouse a11y | Lighthouse не входит в 28 (он инфраструктурный, см. §12). Если будет добавлен — отключить категорию accessibility через --only-categories=performance,best-practices |
7. Source of truth — приоритет правил
При противоречии между правилами:
docs/Pravila_raboty_Claude_v1_1.md (продуктовые правила, утверждены заказчиком)
↓
CLAUDE.md (корень — оперативная карта, авто-загружается Claude Code)
↓
.claude/settings.json (хуки, permissions — исполняется средой)
↓
memory/*.md (динамическая память между сессиями Claude)
↓
Superpowers skills и другие плагины (поведенческие подсказки, ниже всех)
Правило применения: при любом конфликте — выбирается верхний источник. Нижестоящие игнорируются в части, которая противоречит верхним. Это правило явно зафиксировано в CLAUDE.md §1.
8. Source of truth — конфиги
Где какой конфиг лежит и кто его редактирует:
| Конфиг | Где | Редактирует | В git? |
|---|---|---|---|
.markdownlint.json |
корень | разработчик | ✅ |
cspell.json + cspell-words.txt |
корень | разработчик (словарь обновляется по PR) | ✅ |
.lychee.toml |
корень | разработчик | ✅ |
.gitleaks.toml |
корень | security lead | ✅ |
.stylelintrc.json |
корень | frontend lead (фаза 2) | ✅ |
pa11y.config.json |
корень | frontend lead | ✅ |
.claude/settings.json (хуки, permissions) |
.claude/ |
Claude (по запросу через /update-config) |
✅ |
.mcp.json (MCP-серверы) |
корень | разработчик (не Boost) | ✅ — расхождение с дефолтом Boost'а |
CLAUDE.md |
корень | Claude (по запросу заказчика) | ✅ |
boost.json |
корень | разработчик | ✅ |
pint.json |
корень (фаза 1) | backend lead | ✅ |
phpstan.neon (Larastan) |
корень (фаза 1) | backend lead | ✅ |
eslint.config.js |
корень (фаза 2) | frontend lead | ✅ |
.prettierrc + .prettierignore |
корень (фаза 2) | frontend lead | ✅ |
vitest.config.ts |
корень (фаза 2) | frontend lead | ✅ |
histoire.config.ts |
корень (фаза 2) | frontend lead | ✅ |
semgrep.yml |
.github/ (фаза 3) |
security lead | ✅ |
dependabot.yml |
.github/ (фаза 3) |
DevOps | ✅ |
9. Что НЕ ставим и почему (10 пунктов)
| Инструмент | Причина отказа |
|---|---|
| Frontend Design plugin (Anthropic) | Anti-pattern «Inter» противоречит брендбуку §4.1; не знает Vuetify; нет a11y; рассчитан на лендинги, не на B2B-CRM |
| CodeQL | Дублирует Semgrep; платный для private-репо; Semgrep CE покрывает наши потребности |
Laravel Security Checker (enlightn/security-checker) |
Дублирует Dependabot + Roave |
| PHP-CS-Fixer | Перекрывается Pint'ом (Pint = надстройка над CS-Fixer) |
| Psalm | Перекрывается Larastan |
| Jest | Перекрывается Vitest (один тест-раннер) |
| Storybook (для Vue) | Histoire легче и нативнее для Vue 3 + Vite |
| Snyk (платный) | Dependabot бесплатный и достаточный |
| markdown-link-check | lychee быстрее (Rust vs Node) и надёжнее |
| Sequential Thinking MCP | Дублирует моё базовое рассуждение, жрёт токены |
| Memory MCP | Конфликтует с моей файловой памятью в memory/ |
| Tailwind MCP / shadcn-vue | У нас Vuetify (CTO-11), не Tailwind |
| Inertia / Livewire / Filament / Flux UI / Nova / Folio / Volt / Wayfinder guidelines Boost'а | Не используются в стеке проекта |
10. Процедура перехода между фазами
10.1. Фаза 0 → Фаза 1
Триггер: composer create-project laravel/laravel app (или эквивалент).
Шаги (исходный план; отметки фактического статуса в правой колонке после прохождения 08.05.2026):
| # | Шаг | Статус 08.05.2026 |
|---|---|---|
| 1 | composer require laravel/boost --dev |
✅ e04f53b (Boost v2.4.6) |
| 2 | php artisan boost:install — пройти интерактивный wizard |
⚠️ обойдено: wizard сломан на этой машине (кириллица + L13 ConfiguresPrompts bug) — см. §3.1 «Что нового в v1.5» и memory feedback_environment.md п.26. Manual setup вместо wizard'а |
| 3 | Удалить PostgreSQL MCP из .mcp.json |
✅ убран ещё в фазе 0 (_comment_postgres) |
| 4 | boost.json — отключить нерелевантные guidelines |
❌ избыточно: Boost через Roster auto-detect видит установленные пакеты — не установленных (Inertia/Livewire/Tailwind/Filament/Sail/PHPUnit) не серверит. boost.json минимален: 3 ключа (agents/guidelines/mcp) |
| 5 | Создать кастомный guideline для Vuetify 3 в app/.ai/guidelines/vuetify.md (был resources/boost/guidelines/vuetify.blade.php — путь скорректирован на §10.2 после source-проверки) |
✅ e04f53b |
| 6 | CLAUDE.md если Boost создал черновик |
❌ не применимо: при manual setup Boost ничего не пишет в CLAUDE.md (ни корневой, ни app/CLAUDE.md). Корневой остаётся источником истины |
| 7 | Установить Pint, Larastan, Roave/SecurityAdvisories, IDE Helper | ✅ Pint+Larastan+IDE Helper в 0345683; Roave/SA в 0eb2f72 |
| 8 | Установить squawk, pgFormatter | ✅ squawk v2.51.0 + pgFormatter v5.9 в коммите v1.6 (см. §0 «Что нового в v1.6»). Squawk — pre-commit хук на staged *.sql + конфиг .squawk.toml (9 правил исключены). pgFormatter — только ручной режим через npm-скрипты, авто-fix хук недопустим (стиль schema.sql ручной) |
| 8a | ❌ не применимо: Windows-native PG не имеет pg_partman; заменён ручным cron'ом — см. memory project_phase1_strategy.md |
|
| 9 | Установить Pest 4 | ✅ 30f0335 (Pest 4.7.0 + plugin-laravel 4.1.0; smoke-test 2/2 за 281 ms) |
| 10 | Обновить .claude/settings.json — добавить хуки для Pint и Larastan |
⏸ pending: после установки lefthook или эквивалента |
| 11 | Прогнать full-pass всех инструментов | ⏸ pending: после §8/§10 |
| 12 | Обновить эту версию Прил. Н | ✅ v1.0 → v1.1 (Pest 3) → v1.2 (native стек) → v1.3 (Pest 4) → v1.4 (Laravel 13) → v1.5 (Boost+SA active) |
10.2. Vuetify guideline для Boost (заготовка)
Путь к файлу:
app/.ai/guidelines/vuetify.md(или.blade.php, оба расширения поддерживаютсяGuidelineComposer). Старая формулировка «resources/boost/guidelines/vuetify.blade.php» скорректирована в v1.5 после source-проверкиLaravel\Boost\Install\GuidelineComposer::userGuidelineDir = '.ai/guidelines'. Финальная версия живёт в репозитории — заготовка ниже сохранена как историческая.
## Vuetify 3
Проект использует Vuetify 3 как UI-библиотеку (CTO-11). Tailwind CSS, shadcn-vue, Element UI, jQuery, Bootstrap — НЕ использовать.
### Палитра — из brandbook.md §3 и §8.2
- primary: `#0F6E56` (Teal 600)
- secondary: `#5DCAA5` (Teal 200)
- background: `#F1EFE8` (Slate 100)
- surface: `#FFFFFF`
Vuetify-тема — `liderraLight` и `liderraDark` — определена в `brandbook.md` §8.2.
### Шрифты
- основной: Inter (через Google Fonts с subset cyrillic)
- код: JetBrains Mono
### Компоненты
Использовать Vuetify-компоненты (`v-card`, `v-btn`, `v-data-table`, `v-form`, `v-text-field`) с дефолтным material-стилем, переопределённым через `:root` CSS-переменные из `brandbook.md` §8.1.
### A11y
Все компоненты должны проходить Pa11y по WCAG 2.1 AA (брендбук §3.4). Контраст текста на белом — минимум 4.5:1.
10.3. Фаза 1 → Фаза 2
Триггер: первый Vue-компонент.
Шаги:
- Установить Volar (VSCode), vue-tsc, ESLint + config-prettier + plugin-vue, Prettier, Vitest, Histoire.
- Установить Superpowers с конфигом
enabled_skills= только 3 (test-driven-development,systematic-debugging,subagent-driven-development). - Прогнать первый Histoire-story для тестового компонента.
- Запустить Pa11y на первой Vue-странице (выявить регрессии относительно HTML-прототипов).
- Обновить Прил. Н: v1.1 → v1.2.
10.4. Фаза 2 → Фаза 3
Триггер: ~спринт 12, объявление о подготовке к релизу.
Шаги:
- Установить Semgrep + Semgrep MCP, Trivy, Dependabot.
- Включить расширения PostgreSQL: pg_audit, pg_anonymizer.
- Прогнать первый полный SAST-пасс по проекту, зафиксировать baseline.
- Прогнать Trivy на текущем образе, зафиксировать baseline.
- Сделать первый dump БД через pg_anonymizer для staging.
- Обновить Прил. Н: v1.2 → v1.3.
11. Конфигурация под Windows + PowerShell
Особенности для текущего окружения (Windows 10, PowerShell 5.1):
11.1. Пути и кодировки
- Все скрипты в
package.json— кросс-платформенные (использоватьcross-env, неexport VAR=...). - Файлы
.md— UTF-8 БЕЗ BOM. Если PowerShellSet-Contentсоздал файл с BOM — исправить. - Длинные пути — включить
git config --global core.longpaths trueперед клонированием в глубокие папки.
11.2. Git worktrees
- Skill
using-git-worktreesSuperpowers отключён намеренно (см. §4.1). - Если ручное использование worktree — избегать пробелов в путях (
c:\projects\liderra-featureОК,c:\My Documents\...— НЕ).
11.3. Pre-commit hooks
- Husky или lefthook (предпочтительно lefthook — на Go, без Node-зависимости).
- Скрипты в hooks — bash-совместимые, запускать через
cmd /cили WSL.
11.4. Глобальные CLI-утилиты
- gitleaks, lychee, squawk, Trivy, Semgrep — скачать готовые бинарники для Windows из GitHub Releases (squawk:
npm i -g squawk-cli+ копия вbin/squawk.exeсм. §3.3). - pgFormatter — Perl-скрипт. На этой машине работает через Cygwin Perl 5.42.2 из Git for Windows (без отдельной установки ActivePerl/Strawberry/WSL). Если Git for Windows не ставился — поставить ActivePerl или Strawberry Perl.
- Pa11y, markdownlint-cli2, cspell, Histoire — npm-пакеты, работают нативно.
11.5. Yandex Cloud CLI и Terraform
Не входят в 28 инструментов (см. §12). Ставятся отдельно для DevOps-роли. На Windows — yc и terraform через скачивание .zip или winget.
12. Что вне 28 инструментов (инфраструктура)
Эти 7 пунктов критичны для проекта, но используются DevOps, не Claude. Поэтому в 28 не входят, но фиксирую для полноты:
| Инструмент | Зачем |
|---|---|
Yandex Cloud CLI (yc) |
Провижининг по Прил. К |
Terraform + yandex-cloud/yandex provider + terraform-ls |
IaC |
| Docker + docker-compose | Локальная разработка |
| GitHub Actions | CI/CD pipeline |
| Sentry self-hosted | Ю-7 (зафиксировано) |
| Grafana + Prometheus + Alertmanager | Прил. И §1 |
| Lighthouse CI | Performance-регрессия в pipeline |
Если позже решим вовлечь Claude в инфраструктурные задачи — добавится фаза 4 (или эти инструменты переедут в 28).
13. История версий
| Версия | Дата | Что нового |
|---|---|---|
| v1.0 | 06.05.2026 | Первая версия. Зафиксированы 28 активных инструментов в 4 фазах, перечень того, что НЕ ставим (10+ пунктов), источники истины для конфигураций, процедура перехода между фазами, особенности Windows + PowerShell. Утверждено заказчиком 06.05.2026 («да, A, делай. Подтверждаю»). Архитектурных изменений в основном архиве: 0 (только добавлен новый шифр Н). |
Прил. Н v1.7 от 08.05.2026 (поздний вечер) — Histoire 1.0-beta.1 добавлен, фаза 2 по тулчейну закрыта 6/6 (18/28 активных).
Прил. Н v1.0 от 06.05.2026 — старт документации по tooling.
Связано: CLAUDE.md (корень), Pravila_raboty_Claude_v1_1.md v1.2+, README_АРХИВ_v8_4.md v8.4+.