Phase D Спринта 1 «Hygiene». Закрытие аудита 2026-05-09 (b6ae8dd):
- P1-01: README.md обновлён (CLAUDE.md ссылка с 28→29 инструментов и 5→6 уровней;
Tooling v1.0→v1.10; Pravila v1.2→v1.6; PSR_v1 v1.3 добавлен; schema v8.5→v8.11
(56 базовых + 12 партиций / 97 индексов / 38 RLS / 5 функций / 13 триггеров)).
- P1-03: CLAUDE.md Histoire 21/28 → 21/43 (заменено все вхождения, включая §0 и §3.3).
- P1-06: Pravila §13.9 cross-ref на Plugin_stack_rules_v1 теперь с (v1.3).
- P1-08: Tooling §2.1 п.7 Stylelint раздел дополнен версией stylelint-config-standard ^40.0.0.
- P2-03: CLAUDE.md F-K cross-link на Plugin_stack_rules_v1.md#история-версий.
- post-A: метрики schema в CLAUDE.md синхронизированы до v8.11 (97 / 38).
Также фикс битой ссылки в spec'е Sprint 1 (lychee 1 error → 0): относительный путь
до Plugin_stack_rules_v1.md из docs/superpowers/specs/ исправлен на ../../
Bump версий:
- CLAUDE.md v1.81 → v1.82
- Pravila v1.6 → v1.7
- Tooling Прил. Н v1.10 → v1.11
Все правки CLAUDE.md/Pravila/Tooling — через claude-md-management:claude-md-improver
(CLAUDE.md §5 п.10). README.md и spec — обычные правки.
lychee: 0 errors. markdownlint: 0 errors. cspell на web/v8/* — out-of-scope.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
52 KiB
Приложение Н — Tooling, скиллы и плагины Claude (v8.3)
Дата: 09.05.2026
Версия: 1.11 (Sprint 1 «Hygiene» Phase D — закрытие audit P1-08: §2.1 п.7 Stylelint раздел дополнен версией пакета stylelint-config-standard ^40.0.0. Без структурных изменений. Через /claude-md-management:claude-md-improver.)
Предыдущая версия: 1.10 (добавлен #30 Frontend Design plugin (Anthropic) в фазе 2 как paired stack со Superpowers; запрет CLAUDE.md §5 п.5 снят 09.05.2026 по явной команде заказчика. Координация двух плагинов — через docs/Plugin_stack_rules_v1.md (10 правил, 8 конфликтов закрыты патчами). Активных инструментов: 18 → 19 из 28 → 29. См. §4.4 ниже + Pravila §13.)
Адресат: Claude + разработчики проекта Лидерра
Назначение: единый источник истины по 28 инструментам разработки, скиллам Claude Code, MCP-серверам и плагинам, используемым в проекте. Зафиксирован выбор, объяснено, что заменяет что, и в какой фазе вводится каждый инструмент.
Связано:
Pravila_raboty_Claude_v1_1.mdv1.5+ — §11 «Superpowers override», §12 «Superpowers hard rule», §13 «Frontend Design plugin — paired stack», §4.8 «Шифры приложений» (Н занят)Plugin_stack_rules_v1.mdv1.0+ — координация Superpowers + Frontend Design (10 правил)CLAUDE.md(корень репозитория) v1.78+ — оперативная карта инструментов с приоритетом правил (уровень 0 = Pravila §12, уровень 3 = Plugin_stack_rules_v1)README_АРХИВ_v8_4.mdv8.4+ — состав архива
Что нового в v1.10 (09.05.2026):
- #30 Frontend Design plugin (Anthropic) добавлен в фазе 2 (paired stack со Superpowers). Запрет CLAUDE.md §5 п.5 снят 09.05.2026 по явному решению заказчика. Координация двух плагинов вынесена в
docs/Plugin_stack_rules_v1.md(10 правил: gate, классификация, фазы UI-фичи, разделение TDD/визуал, ревью по аспекту, стек-фильтр Vue+Vuetify, gate готовности, тай-брейкеры). 8 ранее найденных конфликтов между плагинами закрыты патчами. Установка через~/.claude/settings.json:extraKnownMarketplaces+enabledPlugins.frontend-design@anthropics-claude-plugins=true. Обязательный стек-фильтр (Правило 6 Plugin_stack_rules_v1): Vue 3 + Vuetify 3, отфильтровывать React/Tailwind/shadcn/JSX. A11y технический остаётся за Pa11y (CLAUDE.md §5 п.3); Frontend Design покрывает только a11y-принципы. Активных инструментов фазы 2: 6 → 7. Всего активных: 18 → 19 из 28 → 29 номеров. - Структура §4 обновлена: добавлен §4.4 «Доменный слой UI — Frontend Design plugin». Ранее §4 (фаза 2) состоял из §4.1 Superpowers + §4.2 Frontend-инструменты + §4.3 Histoire. Теперь — §4.1 Superpowers + §4.2 Frontend-инструменты + §4.3 Histoire + §4.4 Frontend Design plugin.
Что было в 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) |
24 | +7 (включая #30 Frontend Design plugin, добавлен post-MVP в v1.10) |
| 3 — pre-production | ~спринт 12, перед публичным релизом | 29 | +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 ^40.0.0 |
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 (+7 новых, итого 24 активных)
Триггер: первый коммит в resources/js/ или отдельную папку Vue-приложения.
4.1. Поведенческий слой — Superpowers (полный, hard rule)
Обновлено 09.05.2026 (v1.9 Прил. Н): заказчик ввёл hard rule §12 правил Claude: «всегда в первую очередь пользуешься superpowers. При этом ты не можешь игнорировать и обходить это правило». §9 «Отступления» к §12 не применяется. Карта 14 skills → 14 типов задач — в Pravila §12.2.
Прежнее (08–09.05.2026): v1.7 — 3/13 skills с банами; v1.8 — снятие банов через §11 override (вариант "A. Полное снятие"). Сейчас (v1.9) — обязательное первоочерёдное использование.
| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 19 | Superpowers v5.1.0 (все 14 skills) | Декларативно через ~/.claude/settings.json: extraKnownMarketplaces.superpowers-dev ({"source":"github","repo":"obra/superpowers"}) + enabledPlugins.superpowers@superpowers-dev=true. Перезапуск Claude Code → плагин подгружается из marketplace в кэш автоматически. /plugin install в VSCode-extension недоступен |
brainstorming, dispatching-parallel-agents, executing-plans, finishing-a-development-branch, receiving-code-review, requesting-code-review, subagent-driven-development, systematic-debugging, test-driven-development, using-git-worktrees, using-superpowers, verification-before-completion, writing-plans, writing-skills |
TDD биллинга/RLS, разбор инцидентов, двухстадийный review schema.sql, planning-flow для крупных эпиков, parallel agents для независимых задач |
Снятые ранее запреты (для исторической записи):
brainstorming— раньше дублировал §4.5 правил Claude. Теперь Pravila §11.1 разрешает override §4.5 при явном вызове skill.writing-plans+executing-plans— раньше дублировали §8.4. Теперь §11.1 разрешает хранить план в формате skill.dispatching-parallel-agents— раньше конфликтовал с §2.2. Теперь §11.1 разрешает закрытие подзадач без отдельного «закрываем»; финальные закрытия открытых вопросов реестра — по-прежнему только заказчиком.using-git-worktrees— Windows-нестабильность сохраняется как факт среды (см. §11.2 правил), но запрет в правилах снят.
Что остаётся: §1 (роль), §3.6 (язык), §5 (ПДн), §7 (финал-закрытие открытых вопросов) — не override-ятся (см. Pravila §11.2).
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 |
4.4. Доменный слой UI — Frontend Design plugin (paired со Superpowers)
Введено 09.05.2026 (v1.10 Прил. Н): запрет CLAUDE.md §5 п.5 на Frontend Design plugin снят по явному решению заказчика. Координация с #19 Superpowers — через
docs/Plugin_stack_rules_v1.md(10 правил). Парный stack одного приоритетного уровня; между плагинами нет иерархии. См. Pravila §13.
| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 30 | Frontend Design plugin (Anthropic) | Декларативно через ~/.claude/settings.json: extraKnownMarketplaces.anthropics-claude-plugins ({"source":"github","repo":"anthropics/claude-plugins"} или другой источник, утверждённый Anthropic) + enabledPlugins.frontend-design@anthropics-claude-plugins=true. Перезапуск Claude Code → плагин подгружается из marketplace. /plugin install в VSCode-extension недоступен — ставится только через settings.json |
Доменное знание UI: компоненты, layout, цвет, типография, паттерны, состояния (loading/empty/error), a11y-принципы | Чисто визуальные задачи (палитра, типография, layout-эскиз, выбор паттерна, иконка, состояния) и фазы 2/5/7 UI-фичи (см. Plugin_stack_rules_v1 Правило 2) |
Обязательный стек-фильтр (Правило 6 Plugin_stack_rules_v1):
| Что брать (универсально) | Что отфильтровать (стек-зависимо) |
|---|---|
| Принципы (a11y, контраст, фокус, иерархия, spacing-шкала) | Конкретные имена компонентов чужого стека |
| Паттерны (modal-flow, form-validation UX, empty/loading/error states) | Tailwind-классы, shadcn-импорты, JSX (CLAUDE.md §5 п.2) |
| Структуры состояний и переходов | Конкретные библиотеки иконок (у нас Lucide) |
| Цветовые/типографические системы как принципы | Конкретные палитры/шрифты (у нас Forest v8 + Inter/JetBrains Mono) |
Ответ Frontend Design без выполненной адаптации = неполный ответ, возвращается в плагин на доработку.
A11y: Frontend Design покрывает только a11y-принципы (контраст, фокус-порядок, иерархия). Технический a11y (DOM-семантика, aria-роли, keyboard) остаётся за Pa11y (CLAUDE.md §5 п.3). Без подмены источника истины.
Live-отмены (Правило 0.4.B Plugin_stack_rules_v1):
- «не используй Frontend сейчас» — отключает Frontend Design на текущее действие, Superpowers остаётся.
- «не используй плагины сейчас» — отключает весь stack на текущее действие.
5. Фаза 3 — pre-production (+5 новых, итого 29 активных)
Триггер: ~спринт 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 разрешён с 09.05.2026 (см. §4.1; Pravila §11). Запрет был снят вместе с прочими. - Среда остаётся враждебной: на этой машине путь содержит кириллицу (
c:\моя\проекты\портал crm\…) — worktree-операции будут падать с неинформативной ошибкой. Skill при использовании сам должен обработать ошибку или переключиться на альтернативу. - Если ручное использование worktree — избегать пробелов и кириллицы (
c:\projects\liderra-featureОК,c:\My Documents\...илиc:\моя\…— НЕ).
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.10 | 09.05.2026 | Добавлен #30 Frontend Design plugin (Anthropic) в фазе 2 — paired stack со Superpowers. Запрет CLAUDE.md §5 п.5 снят по явной команде заказчика. Координация через новый документ docs/Plugin_stack_rules_v1.md (10 правил, 8 ранее найденных конфликтов закрыты патчами). Добавлен §4.4 «Доменный слой UI — Frontend Design plugin». Phase 2: 6 → 7, total: 28 → 29 номеров (активных 18 → 19). Установка через ~/.claude/settings.json. |
Прил. Н v1.10 от 09.05.2026 — добавлен #30 Frontend Design plugin (paired со Superpowers), 19/29 активных.
Прил. Н v1.0 от 06.05.2026 — старт документации по tooling.
Связано: CLAUDE.md (корень), Pravila_raboty_Claude_v1_1.md v1.2+, README_АРХИВ_v8_4.md v8.4+.