Files
portal/docs/Tooling_v8_3.md
T
Дмитрий c3e45343ac phase2(histoire): #24 Histoire 1.0-beta.1 — каталог компонентов, фаза 2 закрыта 6/6
- 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>
2026-05-08 16:29:42 +03:00

43 KiB
Raw Blame History

Приложение Н — 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.md v1.2+ — §4.8 «Шифры приложений» (Н занят)
  • CLAUDE.md (корень репозитория) — оперативная карта инструментов с приоритетом правил
  • README_АРХИВ_v8_4.md v8.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). Wizard php artisan boost:install сломан в обоих режимах на этой машине: интерактив падает на UTF-8 кириллице в пути при рендере laravel/prompts multiselect, --no-interaction падает в баге L13 ConfiguresPrompts::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]), кастомный guideline app/.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). Подробности — memory feedback_environment.md п.26.
  • Уточнение к §3.1 п.3 «отключить guidelines» — избыточно. Boost через laravel/roster auto-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. Принципы выбора

  1. Один инструмент на задачу. Если две тулзы делают одно — оставляем одну, явно указываем какую (см. §6 «Конфликты и решения»).
  2. Dev-only для local tooling. Boost, IDE Helper, Pint, Histoire и т. п. ставятся как --dev и не идут в production.
  3. Pre-commit для быстрых проверок, CI для медленных. gitleaks / markdownlint / Pint — pre-commit. Larastan / Semgrep / Trivy / Pa11y — CI.
  4. Контекст Claude — это ресурс. Не ставим тулзы, дублирующие моё базовое поведение (Memory MCP, Sequential Thinking MCP).
  5. Phase-gating. Триггер каждой фазы — конкретное действие в репозитории. До триггера — не ставим.
  6. Дополнение, не замена правил Claude. Любой плагин уступает в приоритете Pravila_raboty_Claude_v1_1.md — см. §7.
  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

# Инструмент Установка Что заменяет
1 → 10 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:

  1. CLAUDE.md — НЕ перезаписывать. Сохранить уже существующий (см. §7). Слить вручную, если Boost создаст черновик: добавить boost-секции в конец, оставив §1–§7 нашего CLAUDE.md выше.
  2. Из 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.)
  3. Отключить: Inertia, Livewire, Tailwind, Filament, Flux UI, Nova, Folio, Volt, Wayfinder, Sail — у нас их нет (Sail отключён 08.05.2026 после обнаружения OpenStack-VPS без nested-virt; native стек = единственный путь).
  4. Pest 4 — выбран (CTO-12 переоткрыт+закрыт 08.05.2026 поздний вечер, см. Открытые_вопросы_v8_3.md §3). Отключить guideline PHPUnit, оставить только Pest. composer.json в app/ уже на pestphp/pest: ^4.7.
  5. Создать кастомный guideline для Vuetify 3: resources/boost/guidelines/vuetify.blade.php (см. §10.2).
  6. Запретить production DB connection.env.production не должен попадать в локальный Boost-конфиг.
  7. .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/squawkbin/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 create
  • requesting-code-review + receiving-code-review — дублирует процесс в правилах
  • writing-skills — нам не нужно создавать новые skills
  • using-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 Установить pg_partman не применимо: 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-компонент.

Шаги:

  1. Установить Volar (VSCode), vue-tsc, ESLint + config-prettier + plugin-vue, Prettier, Vitest, Histoire.
  2. Установить Superpowers с конфигом enabled_skills = только 3 (test-driven-development, systematic-debugging, subagent-driven-development).
  3. Прогнать первый Histoire-story для тестового компонента.
  4. Запустить Pa11y на первой Vue-странице (выявить регрессии относительно HTML-прототипов).
  5. Обновить Прил. Н: v1.1 → v1.2.

10.4. Фаза 2 → Фаза 3

Триггер: ~спринт 12, объявление о подготовке к релизу.

Шаги:

  1. Установить Semgrep + Semgrep MCP, Trivy, Dependabot.
  2. Включить расширения PostgreSQL: pg_audit, pg_anonymizer.
  3. Прогнать первый полный SAST-пасс по проекту, зафиксировать baseline.
  4. Прогнать Trivy на текущем образе, зафиксировать baseline.
  5. Сделать первый dump БД через pg_anonymizer для staging.
  6. Обновить Прил. Н: v1.2 → v1.3.

11. Конфигурация под Windows + PowerShell

Особенности для текущего окружения (Windows 10, PowerShell 5.1):

11.1. Пути и кодировки

  • Все скрипты в package.json — кросс-платформенные (использовать cross-env, не export VAR=...).
  • Файлы .md — UTF-8 БЕЗ BOM. Если PowerShell Set-Content создал файл с BOM — исправить.
  • Длинные пути — включить git config --global core.longpaths true перед клонированием в глубокие папки.

11.2. Git worktrees

  • Skill using-git-worktrees Superpowers отключён намеренно (см. §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+.