614 lines
88 KiB
Markdown
614 lines
88 KiB
Markdown
|
|
# Приложение Н — Tooling, скиллы и плагины Claude (v8.3)
|
|||
|
|
|
|||
|
|
**Дата:** 10.05.2026 (поздний вечер)
|
|||
|
|
**Версия:** 1.15 (закрытие 4 находок третьего аудита правил использования плагинов и скилов в части, касающейся Tooling: **P1-03/04/05 — sync cross-refs шапки** на актуальные версии связанных документов после bump'ов CLAUDE.md v1.85 → v1.86 и PSR_v1 v1.6 → v1.7 («Pravila v1.9+»→«v1.10+», «PSR_v1 v1.5+»→«v1.7+», «CLAUDE.md v1.84+»→«v1.86+»; «+»-нотация сохранена как forward-compat); **§11.5/§12 — формулировка «28 инструментов» → «33 формализованных позиции»** (исторически фраза «28» оставалась в DevOps-разделе с эпохи v1.0, но смысловое назначение фразы — «реестр Лидерры», который теперь имеет 33 формализованных позиции; §13 история версий и changelog'и сохранены без правки — это снимки эпох и часть истории). Координация — PSR_v1 v1.6 → v1.7 + CLAUDE.md v1.85 → v1.86. Pravila v1.10 — без правок. Через `/claude-md-management:claude-md-improver`.)
|
|||
|
|
**Предыдущая версия:** 1.14 (закрытие 3 находок второго аудита: §10.3 шаг 2 sync с §4.1, §13 +v1.13 +v1.14 entries, §7 priority chain +Tooling explicit slot 2b).
|
|||
|
|
**Адресат:** Claude + разработчики проекта Лидерра
|
|||
|
|
**Назначение:** единый источник истины по 33 формализованным позициям тулчейна (29 «активных» номеров фаз + 3 off-phase инструмента-резерв в категориях UI-пул и инфраструктура — UPM, 21st, claude-md-management; +1 заменённый PG MCP исторически), скиллам Claude Code, MCP-серверам и плагинам, используемым в проекте. Зафиксирован выбор, объяснено, что заменяет что, и в какой фазе вводится каждый инструмент.
|
|||
|
|
|
|||
|
|
> **Связано:**
|
|||
|
|
>
|
|||
|
|
> - `Pravila_raboty_Claude_v1_1.md` v1.10+ — §11 «Superpowers override», §12 «Superpowers hard rule», §12.3 SoT для exclusions, §13 «paired stack + расширенный пул UI-инструментов» + claude-md-management как off-pool, §13.6 hard-rule tier-таблица, §13.9 hard-link на R10 PSR_v1, §13.10 hard-link на R14 PSR_v1, §4.8 «Шифры приложений» (Н занят)
|
|||
|
|
> - `Plugin_stack_rules_v1.md` v1.7+ — координация paired-stack ядра (Superpowers + Frontend Design) + расширенного пула (UPM + 21st Magic MCP) + инфраструктурного плагина (claude-md-management) + R15 motion-системы (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка)
|
|||
|
|
> - `CLAUDE.md` (корень репозитория) v1.86+ — оперативная карта инструментов с приоритетом правил (уровень 0 = Pravila §12, уровень 3 = Plugin_stack_rules_v1); §3.3 +#31 UPM +#32 21st +#33 claude-md-management; §5 п.5 свёрнут со ссылкой на PSR_v1 R14; §5 п.11 cross-ref на Pravila §12.3 SoT; §5 п.12 motion-runtime denylist; §6 счётчик 33 (3 off-phase tools)
|
|||
|
|
> - `README_АРХИВ_v8_4.md` v8.4+ — состав архива
|
|||
|
|
|
|||
|
|
**Что нового в v1.13 (10.05.2026):**
|
|||
|
|
|
|||
|
|
- **§7 «Source of truth» обновлён с 5-уровневой на 7-уровневую цепочку.** Добавлен `Plugin_stack_rules_v1.md` (PSR_v1) уровнем 3 — координирующий слой между paired-stack ядром (Superpowers + Frontend Design) и расширенным UI-пулом (UPM + 21st). Также явно вынесен Pravila §12 (Superpowers hard rule) уровнем 0 — выше всех остальных параграфов Pravila. Sync с CLAUDE.md §1. Закрывает audit находку «Tooling §7 не упоминает PSR_v1 в иерархии» (1 из 14 находок).
|
|||
|
|
- **§4.7 (новый) — #33 claude-md-management plugin** формализован как off-phase инфраструктурный инструмент. Был фактически включён в `~/.claude/settings.json` (`enabledPlugins.claude-md-management@claude-plugins-official=true`) с момента появления требования CLAUDE.md §5 п.10 «правки CLAUDE.md только через плагин» — но до v1.13 без формализации в реестре. Теперь имеет номер #33 (по аналогии с UPM #31 и 21st #32 в v1.12), при этом в **отдельной категории** (инфраструктурная, не UI) — поэтому не попадает под Pravila §13 расширенного UI-пула и не проходит R6.0/R6.1 фильтр / R14 pipeline. Закрывает audit находку «5-й включённый плагин без номера в реестре».
|
|||
|
|
- **§6 «Конфликты и решения» расширен с 5 до 10 строк.** Добавлены 5 новых конфликтов из PSR_v1 v1.4: (6) UPM ↔ FD на одной фазе, (7) 21st ↔ существующий Vuetify-компонент, (8) 21st ↔ брендовый App*-компонент, (9) framer-motion ↔ motion-v, (10) UPM ↔ 21st на одной фазе. Закрывает audit находку «Tooling §6 застрял на v1.0».
|
|||
|
|
- **§4.6 — settings.json → ~/.claude.json:** уточнено, что API-ключ 21st хранится именно в `~/.claude.json`, **не** в `~/.claude/settings.json` (отдельный файл без секретов). При случайном попадании в репо ротация — через 21st.dev dashboard. Закрывает audit находку «текстовая неточность в комментарии безопасности».
|
|||
|
|
- **§0 сводка обновлена:** добавлена строка «off-phase tools» с 3 инструментами (UPM #31, 21st #32, claude-md-management #33). Итого формализованных позиций: **33** (19/29 активных по фазам + 3 off-phase + 1 заменённый PG MCP исторически).
|
|||
|
|
- **Связано:** Pravila v1.8 → v1.9 (§12.3 SoT, §13.2 +claude-md-management как off-pool, §13.6 hard-rule tier, §0 scope-метка); PSR_v1 v1.4 → v1.5 (R10.1 на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер, R0.1 scope); CLAUDE.md v1.83 → v1.84 (§1 scope, §3.3 +#33, §5 п.5 свёрнут, §5 п.11 cross-ref, §6 счётчик 33).
|
|||
|
|
|
|||
|
|
**Что было в v1.12 (10.05.2026):**
|
|||
|
|
|
|||
|
|
- **#31 UI UX Pro Max (skill, `nextlevelbuilder/ui-ux-pro-max-skill`) формализован как «инструмент-резерв вне фаз».** Был фактически включён в `~/.claude/settings.json` (`enabledPlugins.ui-ux-pro-max@ui-ux-pro-max-skill=true`) до v1.12 без формализации. Теперь зафиксирован: роль = резерв-библиотека (50+ стилей, 161 палитра, 99 UX-гайдлайнов, 25 типов графиков, 10 стеков); активация — только через PSR_v1 v1.4 R14.3 pipeline (фаза 2 R2 как fallback к FD ИЛИ фаза 1 R2 как «третий вариант» в R12 архитектурном). Никогда не решатель (R10.2 PSR_v1). Не закрывает задачу (R7). Обязательный стек-фильтр R6.0 PSR_v1 (срезать React/Next/Tailwind/shadcn материалы) + hard-override Forest R6.1. См. §4.5 ниже.
|
|||
|
|
- **#32 21st.dev Magic MCP (`magic` MCP-сервер) формализован как «инструмент-резерв вне фаз».** Был фактически подключён в `~/.claude.json` (с API-ключом, npm-пакет `@21st-dev/magic@latest`) до v1.12 без формализации. Tools: `mcp__magic__21st_magic_component_builder`, `_inspiration`, `_refiner`, `logo_search`. Роль = генератор стартовых шаблонов для UI-компонентов, отсутствующих в Vuetify и `resources/js/components/`. По умолчанию выдаёт **React + Tailwind + shadcn** — обязательный полный pipeline R14.4 PSR_v1: pre-check R0.6 (брендовый App*? Vuetify-эквивалент? существующий компонент? — все три «нет» обязательно) → R6.0 фильтр (JSX→Vue SFC, Tailwind→utility-CSS, shadcn→Vuetify) → R6.1 hard-override (палитра/шрифты/иконки → Forest, Lucide) → FD адаптация → возврат в фазу 5 R2 stack-flow. Никогда не решатель. Не закрывает задачу. Pa11y обязателен на deployable (R7). См. §4.6 ниже.
|
|||
|
|
- **Структура §4 обновлена:** добавлены §4.5 «Резерв-библиотека UI — UI UX Pro Max» и §4.6 «Генератор шаблонов — 21st.dev Magic MCP». Оба не привязаны к фазе по тулчейну (post-MVP инструменты-резерв).
|
|||
|
|
- **§9 «Что НЕ ставим» дополнен разделом «Motion runtime библиотеки» (R15 PSR_v1 v1.4):** framer-motion (R15.1 hard-запрет, React-only), motion-v (R15.2 условно по 4 триггерам), gsap, anime.js, react-spring (R15.1-аналог, React-only), lottie-web, popmotion, @motionone/dom — все под R0.6 пункт 11 hard-стоп. Default motion stack: Vue native `<Transition>` + Vuetify transitions + CSS @keyframes + View Transitions API.
|
|||
|
|
- **Сводка §0:** 28 «активных» номеров фаз → 29 номеров фаз (как было в v1.10/v1.11) + 2 формализованных «вне фаз» в v1.12 (UPM + 21st Magic MCP) = **31 формализованных позиций тулчейна** (но активных «по фазе» считаются только 19 из 29 на текущий момент; UPM + 21st — *off-phase tools*).
|
|||
|
|
- **Связано:** Pravila v1.7 → v1.8 (§13 расширен, §13.10 hard-link на R14); CLAUDE.md v1.82 → v1.83 (§3.3 + новые строки, §5 п.5 расширен, §5 п.12 motion-runtime новый); PSR_v1 v1.3 → v1.4 (R6/R6.1/R10/R11/R0.6/R13/R14/R15).
|
|||
|
|
|
|||
|
|
**Что нового в 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`). 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](Открытые_вопросы_v8_3.md).
|
|||
|
|
|
|||
|
|
Установлены 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](Открытые_вопросы_v8_3.md#3-cto--архитектору) и блоке «Что изменилось в 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](Открытые_вопросы_v8_3.md#3-cto--архитектору) (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 |
|
|||
|
|
| **off-phase tools** | по факту включения в `~/.claude/settings.json` / `~/.claude.json` | **+3** | #31 UPM (UI-резерв), #32 21st Magic MCP (UI-генератор), #33 claude-md-management (инфраструктура CLAUDE.md edits) |
|
|||
|
|
|
|||
|
|
**Итого формализованных позиций:** 33 (29 активных по фазам + 3 off-phase + 1 заменённый PG MCP исторически). Полный перечень — §2–§5 (по фазам) + §4.5/§4.6/§4.7 (off-phase). Карта «когда что использовать» — §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` `^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
|
|||
|
|
|
|||
|
|
| # | Инструмент | Установка | Что заменяет |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| ~~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](Открытые_вопросы_v8_3.md#3-cto--архитектору)). Отключить 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/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](Открытые_вопросы_v8_3.md#3-cto--архитектору)). Использовать 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` (**v1.6, 16 правил R0–R15**; cross-ref bumped в Tooling v1.14, раньше «10 правил» с эпохи v1.0). Парный 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 на текущее действие.
|
|||
|
|
|
|||
|
|
### 4.5. Резерв-библиотека UI — UI UX Pro Max plugin (off-phase tool)
|
|||
|
|
|
|||
|
|
> **Введено 10.05.2026 (v1.12 Прил. Н):** формализован как «инструмент-резерв вне фаз». Был фактически включён через `~/.claude/settings.json` ещё с момента активации (до v1.12 — без правил). Координация — **PSR_v1 v1.6+ R10/R11/R14.3** (cross-ref bumped в Tooling v1.14).
|
|||
|
|
|
|||
|
|
| # | Инструмент | Установка | Состав | Когда использовать |
|
|||
|
|
|---|---|---|---|---|
|
|||
|
|
| 31 | **ui-ux-pro-max** (skill, marketplace `nextlevelbuilder/ui-ux-pro-max-skill`) | `~/.claude/settings.json`: `extraKnownMarketplaces.ui-ux-pro-max-skill` (`{"source":"github","repo":"nextlevelbuilder/ui-ux-pro-max-skill"}`) + `enabledPlugins.ui-ux-pro-max@ui-ux-pro-max-skill=true`. Перезапуск Claude Code → плагин подгружается из marketplace в кэш | Резерв-библиотека: 50+ aesthetic-стилей, 161 палитра, 99 UX-гайдлайнов, 25 типов графиков, 161 product type, 57 шрифтовых пар, 10 стеков (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui, HTML/CSS) | (1) Frontend Design выдал «не покрывает» / нужна узкоспецифика (chart-стек, экзотические шрифтовые пары, региональные UX-паттерны); (2) **R12 архитектурное решение** — UPM как источник «третьего варианта» в A/B/C по Pravila §4.5 (R11.5 PSR_v1) |
|
|||
|
|
|
|||
|
|
**Обязательные правила использования (PSR_v1 v1.6+):**
|
|||
|
|
|
|||
|
|
| Правило | Где | Что значит |
|
|||
|
|
|---|---|---|
|
|||
|
|
| **R10.2** «UPM read-only для решений» | R10.1 PSR_v1 | UPM выдаёт **материал** (палитра/паттерн/гайдлайн), решение принимает FD/Superpowers |
|
|||
|
|
| **R10.1** «не параллельно» | R10.1 PSR_v1 | UPM активируется **последовательно**, не одновременно с FD |
|
|||
|
|
| **R6.0** стек-фильтр | R6 PSR_v1 | срезать React/Next/Tailwind/shadcn материалы; оставить Vue + HTML/CSS-уровневые принципы |
|
|||
|
|
| **R6.1** hard-override Forest | R6.1 PSR_v1 | UPM-палитра/шрифты/aesthetic игнорируются; Brandbook v2 Forest приоритетнее |
|
|||
|
|
| **R11.3** запрет инверсии иерархии | R11 PSR_v1 | UPM-палитра НЕ заменяет Brandbook, даже если «выглядит лучше» |
|
|||
|
|
| **R7** не закрывает задачу | R7 PSR_v1 | UPM никогда не закрыватель (нет в списке gate'ов) |
|
|||
|
|
| **R11.5** активация в R12 | R11.5 PSR_v1 | На фазе 1 R2 для архитектурных решений как источник «третьего варианта» |
|
|||
|
|
| **R14.3** место в pipeline | R14.3 PSR_v1 | Подзадача внутри R14 pipeline'а, не самостоятельный flow |
|
|||
|
|
|
|||
|
|
**Live-отмена (R0.4.B PSR_v1):** `/ui-ux-pro-max` — прямой вызов на одно действие (R6.0 фильтр и R6.1 override остаются обязательными).
|
|||
|
|
|
|||
|
|
### 4.6. Генератор шаблонов — 21st.dev Magic MCP (off-phase tool)
|
|||
|
|
|
|||
|
|
> **Введено 10.05.2026 (v1.12 Прил. Н):** формализован как «инструмент-резерв вне фаз». Был фактически подключён через `~/.claude.json` (с API-ключом, npm-пакет `@21st-dev/magic@latest`) ещё с момента активации (до v1.12 — без правил). Координация — **PSR_v1 v1.6+ R10/R14.4** (cross-ref bumped в Tooling v1.14).
|
|||
|
|
|
|||
|
|
| # | Инструмент | Установка | Состав | Когда использовать |
|
|||
|
|
|---|---|---|---|---|
|
|||
|
|
| 32 | **21st.dev Magic MCP** (`magic` сервер) | `~/.claude.json` → `mcpServers.magic.command="cmd"` + `args=["/c", "npx", "@21st-dev/magic@latest", "API_KEY=<ключ>"]` (npm wrapper). Tools: `mcp__magic__21st_magic_component_builder`, `_inspiration`, `_refiner`, `logo_search` | Генератор стартовых шаблонов для UI-компонентов (LLM-based, по умолчанию **React + Tailwind + shadcn**) | (1) задача = UI-фича по R1 PSR_v1; (2) нужный паттерн **отсутствует** в Vuetify-наборе и `resources/js/components/`; (3) задача **не попадает** в R0.6 hard-стоп (не брендовый App*, не изменение токенов, не cross-cutting); (4) FD на фазе 2 R2 принял решение «нужен кастомный компонент» |
|
|||
|
|
|
|||
|
|
**Обязательный pipeline R14.4 PSR_v1:**
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
1. Pre-check R0.6 пункты 9–10 (ОБЯЗАТЕЛЬНО):
|
|||
|
|
- Брендовый App*-компонент? → hard-стоп, R12 архитектурное (3 варианта §4.5)
|
|||
|
|
- Vuetify-эквивалент существует? → hard-стоп, использовать Vuetify
|
|||
|
|
- Существующий компонент в resources/js/components/? → hard-стоп, использовать его
|
|||
|
|
- Если на все три «нет» → продолжить
|
|||
|
|
2. Вызов mcp__magic__21st_magic_component_builder с описанием паттерна
|
|||
|
|
3. Сгенерированный черновик (по умолчанию React + Tailwind + shadcn) → R6.0 фильтр:
|
|||
|
|
- JSX → Vue SFC template
|
|||
|
|
- Tailwind classes → Vuetify utility / inline CSS
|
|||
|
|
- shadcn components → Vuetify-эквивалент
|
|||
|
|
- React imports/hooks → Vue Composition API
|
|||
|
|
4. → R6.1 hard-override:
|
|||
|
|
- Палитра → Forest (Teal/Ivory/теало-нуар)
|
|||
|
|
- Шрифты → Inter / JetBrains Mono
|
|||
|
|
- Иконки → Lucide
|
|||
|
|
5. → FD адаптирует под фазу 5 R2
|
|||
|
|
6. → возврат в фазу 5 stack-flow
|
|||
|
|
7. Pa11y проход (R7) на deployable артефакт ОБЯЗАТЕЛЕН перед commit
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Сгенерированный JSX-черновик НЕ коммитится в `resources/js/` напрямую** — только после полного pipeline'а.
|
|||
|
|
|
|||
|
|
**Запрет дублирования (R14.5):** одна задача = один генератор. UPM и 21st **не запускаются на одной фазе**.
|
|||
|
|
|
|||
|
|
**Live-отмена (R0.4.B PSR_v1):** «вызови magic» / «через 21st» / «дай шаблон через magic» — прямой вызов на одно действие (pre-check R0.6 + R6.0 + R6.1 + FD-адаптация остаются обязательными).
|
|||
|
|
|
|||
|
|
**Безопасность:** API-ключ в `~/.claude.json` в открытом виде. Файл **глобальный, не в репо** (gitleaks ловит при попытке коммита). При случайном попадании именно `~/.claude.json` (где хранится API-ключ; не путать с `~/.claude/settings.json` — отдельный файл без секретов) в репо — немедленно ротировать ключ через 21st.dev dashboard.
|
|||
|
|
|
|||
|
|
### 4.7. Инфраструктурный слой — claude-md-management plugin (off-phase tool)
|
|||
|
|
|
|||
|
|
> **Введено 10.05.2026 (v1.13 Прил. Н):** формализован как «инструмент-резерв вне фаз, инфраструктурная категория». Был фактически включён через `~/.claude/settings.json` (`enabledPlugins.claude-md-management@claude-plugins-official=true`) с момента появления CLAUDE.md §5 п.10 (требование «правки CLAUDE.md только через плагин») — до v1.13 без формализации в реестре. Категория **инфраструктурная**, отличная от UI-пула (UPM/21st) — поэтому отдельная нумерация и не попадает под Pravila §13 (расширенный UI-пул).
|
|||
|
|
|
|||
|
|
| # | Инструмент | Установка | Состав | Когда использовать |
|
|||
|
|
|---|---|---|---|---|
|
|||
|
|
| 33 | **claude-md-management** (skills, marketplace `anthropics/claude-plugins-official`) | `~/.claude/settings.json`: `extraKnownMarketplaces.claude-plugins-official` (`{"source":"github","repo":"anthropics/claude-plugins-official"}`) + `enabledPlugins.claude-md-management@claude-plugins-official=true` | Два skill: `claude-md-improver` (audit + targeted updates CLAUDE.md по `references/quality-criteria.md`), `revise-claude-md` (capture session learnings в CLAUDE.md) | **Обязательно** при любом изменении CLAUDE.md (CLAUDE.md §5 п.10). Прямые `Edit`/`Write` по корневому CLAUDE.md без вызова skill — нарушение §5 п.10 |
|
|||
|
|
|
|||
|
|
**Обязательные правила использования (PSR_v1 v1.6+):**
|
|||
|
|
|
|||
|
|
| Правило | Где | Что значит |
|
|||
|
|
|---|---|---|
|
|||
|
|
| **R10.1** инфраструктурный, не UI | R10.1 PSR_v1 | claude-md-management в **отдельной категории** от UPM/21st; не попадает в R14 pipeline UI-генераторов |
|
|||
|
|
| **R10.2** «инструмент, не решатель» | R10.1 PSR_v1 | Skill выполняет правки **по делегированию** из stack-flow или по явной `/команде` пользователя; не подменяет stack-gate |
|
|||
|
|
| **R0.4.A** не требует gate | R0.4.A PSR_v1 | Тривиальные синки (опечатки, версии, кросс-ссылки) — без stack-gate, но через claude-md-improver (CLAUDE.md §5 п.10) |
|
|||
|
|
| **CLAUDE.md §5 п.10** SoT для интерфейса | CLAUDE.md | Единственный канал правок CLAUDE.md; внутри flow продолжают действовать §4 правил Claude (синхронизация Pravila + Tooling) |
|
|||
|
|
|
|||
|
|
**Live-отмена (R0.4.B PSR_v1):** `/claude-md-management:claude-md-improver` или `/claude-md-management:revise-claude-md` — прямой вызов на одно действие.
|
|||
|
|
|
|||
|
|
**Аналогичные категории (built-in skills Claude Code, не плагины через marketplace):** `review`, `security-review`, `init`, `simplify`, `update-config`, `keybindings-help`, `fewer-permission-prompts`, `loop`, `schedule`, `claude-api`. Активируются по явному `/имя` от пользователя; не входят в `enabledPlugins`. См. PSR_v1 R10.1 блок 2 для полного реестра.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 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. Конфликты и решения
|
|||
|
|
|
|||
|
|
10 зон, где без явного правила я выберу не тот инструмент (5 классических из v1.0 + 5 новых из v1.4 PSR_v1, формализованных в Прил. Н v1.13):
|
|||
|
|
|
|||
|
|
| # | Конфликт | Решение |
|
|||
|
|
|---|---|---|
|
|||
|
|
| 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` |
|
|||
|
|
| 6 | **UPM (#31) ↔ Frontend Design (#30) на одной фазе UI-фичи** | PSR_v1 R10.1 + R14.5: **не параллельно**. UPM активируется **последовательно** как fallback (R14.3 «FD выдал не покрывает») или как «третий вариант» в R12 архитектурном (R11.5). Решатель — всегда FD; UPM — материал |
|
|||
|
|
| 7 | **21st Magic MCP (#32) ↔ существующий Vuetify-компонент** | PSR_v1 R0.6 пункт 10: **hard-стоп даже в Auto mode**. Для `v-data-table`/`v-text-field`/`v-dialog`/`v-select`/`v-card`/`v-btn` и др. — использовать Vuetify, 21st не вызывается. Дублирование инструментов на одну задачу = нарушение CLAUDE.md §5 п.6 |
|
|||
|
|
| 8 | **21st Magic MCP (#32) ↔ брендовый компонент App\*** | PSR_v1 R0.6 пункт 9: **hard-стоп**. Для `AppButton`/`AppCard`/`AppDataTable`/`AppDialog` и любых App*-семейств — R12 архитектурное (3 варианта по Pravila §4.5), 21st не вызывается. Брендовая оболочка проектируется руками с FD-принципами |
|
|||
|
|
| 9 | **framer-motion ↔ motion-v** (Vue порт) | PSR_v1 R15.1 + R15.2: framer-motion — **hard-запрет навсегда** (React-only архитектурно, не работает в Vue). motion-v — условно по 4 триггерам (а)+(б)+(в)+(г). По умолчанию ни то, ни другое — стойка R15.3 (Vue native + Vuetify + CSS + View Transitions API) |
|
|||
|
|
| 10 | **UPM (#31) ↔ 21st Magic MCP (#32) на одной фазе** | PSR_v1 R14.5: **не на одной фазе**. UPM работает на фазах 1/2 R2 (brainstorming + visual design); 21st — на фазе 5 R2 (визуальная сборка). Если кажется, что нужны оба — задача декомпозируется на под-задачи |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. Source of truth — приоритет правил
|
|||
|
|
|
|||
|
|
При противоречии между правилами (синхронизировано с CLAUDE.md §1, 7-уровневая файловая иерархия; добавлен PSR_v1 уровнем 3 в v1.13):
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
0. docs/Pravila_raboty_Claude_v1_1.md §12 (Superpowers hard rule — выше всех)
|
|||
|
|
↓
|
|||
|
|
1. docs/Pravila_raboty_Claude_v1_1.md (остальные параграфы — продуктовые правила, утверждены заказчиком)
|
|||
|
|
↓
|
|||
|
|
2. CLAUDE.md (корень — оперативная карта, авто-загружается Claude Code)
|
|||
|
|
↓
|
|||
|
|
3. docs/Plugin_stack_rules_v1.md (PSR_v1 — координация paired-stack ядра + расширенного UI-пула + motion-системы)
|
|||
|
|
↓
|
|||
|
|
4. .claude/settings.json (хуки, permissions — исполняется средой)
|
|||
|
|
↓
|
|||
|
|
5. memory/*.md (динамическая память между сессиями Claude)
|
|||
|
|
↓
|
|||
|
|
6. Прочие плагины и встроенные skills Claude Code (поведенческие подсказки, ниже всех)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Правило применения:** при любом конфликте — выбирается верхний источник. Нижестоящие игнорируются в части, которая противоречит верхним. Это правило явно зафиксировано в `CLAUDE.md` §1. **Scope:** общая файловая/слоевая иерархия. Внутрипараграфный приоритет внутри Pravila — см. Pravila §0; scope головенства stack'а — см. PSR_v1 R0.1.
|
|||
|
|
|
|||
|
|
> **Tooling Прил. Н в priority chain (v1.14+):** этот файл (детальный реестр 33 инструментов) сидит **уровнем 2b** alongside CLAUDE.md (общая оперативная карта) — оба operational maps. При прямом конфликте между ними побеждает **CLAUDE.md** как корневая карта Claude Code. Раньше (до v1.14) Tooling формально не был в priority chain ни одного из 4 файлов, хотя PSR_v1 R0.1 говорил «stack ниже Файлы CLAUDE.md / Pravila / Tooling» — формальная дыра при конфликте «Tooling vs PSR_v1». Закрыто в v1.14 (audit P2-01).
|
|||
|
|
>
|
|||
|
|
> Полная цепочка с Tooling: 0 (Pravila §12) → 1 (Pravila) → 2a (CLAUDE.md) + 2b (этот файл, alongside) → 3 (PSR_v1) → 4 (settings.json) → 5 (memory) → 6 (прочие плагины).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 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 пунктов + motion-runtime раздел v1.12)
|
|||
|
|
|
|||
|
|
### 9.1. Изначальный список
|
|||
|
|
|
|||
|
|
| Инструмент | Причина отказа |
|
|||
|
|
|---|---|
|
|||
|
|
| ~~**Frontend Design** plugin (Anthropic)~~ | **СНЯТО 09.05.2026** (v1.10): запрет CLAUDE.md §5 п.5 снят, плагин включён как paired stack со Superpowers; координация — `docs/Plugin_stack_rules_v1.md`. Anti-pattern «Inter» нейтрализован hard-override R6.1 PSR_v1 |
|
|||
|
|
| **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'а | Не используются в стеке проекта |
|
|||
|
|
|
|||
|
|
### 9.2. Motion runtime библиотеки (введено в v1.12, R15 PSR_v1 v1.4)
|
|||
|
|
|
|||
|
|
Двухуровневое решение по runtime-зависимостям анимаций. Default motion stack — **Vue native `<Transition>` + Vuetify transitions + CSS @keyframes + View Transitions API** (R11.6 уровни 3–6 PSR_v1). Большинство задач закрываются на уровнях 1–2.
|
|||
|
|
|
|||
|
|
| Библиотека | Статус | Причина / условие |
|
|||
|
|
|---|---|---|
|
|||
|
|
| **framer-motion** (npm `framer-motion`) | **❌ HARD-ЗАПРЕТ навсегда** (R15.1) | React-only архитектурно: использует React fiber-tree + hooks + JSX. В Vue 3 + Vuetify стеке физически не работает — мёртвый код в `node_modules`. Не отменяется ни Auto mode, ни live-командой R0.4.B. Единственный путь снятия — смена базового frontend-стека (само по себе R0.6 hard-стоп) |
|
|||
|
|
| **react-spring** (npm `@react-spring/*`) | **❌ HARD-ЗАПРЕТ навсегда** (R15.1-аналог) | React-only по той же причине |
|
|||
|
|
| **motion-v** (npm `motion-v`, Vue порт от автора framer-motion) | **⚠ УСЛОВНО разрешено** (R15.2) | Технически совместим со стеком, но активация требует одновременного выполнения 4 условий: (а) письменный кейс из ТЗ v8.5 / Открытые_вопросы; (б) категория оправданности — gesture-driven с физикой / shared-layout transitions / spring-physics на интерактивных контролах; (в) Brandbook v2 (или последующий) явно допускает motion-rich направление; (г) полный R12 архитектурный flow — brainstorming + 3 варианта (motion-v vs CSS @keyframes vs View Transitions API) + явное согласование. Без 4 условий — **R0.6 пункт 11 hard-стоп**. Bundle ~30 KB gzipped |
|
|||
|
|
| **gsap** (`gsap` npm) | **⚠ УСЛОВНО разрешено** (R15.7 R15.2-аналог) | Imperative timeline-driven; нишево для marketing/agency UI. Для нашего B2B-CRM избыточно. Если когда-либо — через те же 4 условия R15.2 |
|
|||
|
|
| **anime.js** | **⚠ УСЛОВНО разрешено** (R15.7) | Аналогично gsap, но ещё нишевее |
|
|||
|
|
| **lottie-web** (`lottie-web`) | **⚠ УСЛОВНО разрешено** (R15.7) | Только для Lottie/After Effects-ассетов. У нас таких ассетов в Brandbook v2 нет; если появятся — через те же 4 условия |
|
|||
|
|
| **popmotion**, **@motionone/dom** | **⚠ УСЛОВНО разрешено** (R15.7) | Низкоуровневые движки. Default стойка покрывает |
|
|||
|
|
| **Auto-Animate** (`@formkit/auto-animate`) | ⚠ Возможный кандидат | Один компонент, FLIP под капотом, ~3 KB. Если потребуется list/grid reorder — отдельный R15-flow |
|
|||
|
|
|
|||
|
|
**Default motion stack (без runtime-зависимостей):**
|
|||
|
|
|
|||
|
|
| Слой | Что покрывает | Размер |
|
|||
|
|
|---|---|---|
|
|||
|
|
| Vue 3 native `<Transition>` / `<TransitionGroup>` | enter/leave hooks, FLIP через TransitionGroup, JS-callbacks | 0 KB (нативно) |
|
|||
|
|
| Vuetify 3 transitions (`v-fade`, `v-slide-y`, `v-slide-x`, `v-scale`, `v-expand`, `v-dialog-transition`) | Material-design анимации; уже в `vuetify@3.12` | 0 KB сверху |
|
|||
|
|
| CSS `@keyframes` + `transition` + `prefers-reduced-motion` | Произвольные анимации, GPU-acceleration через `transform`/`opacity`, поддержка a11y | 0 KB |
|
|||
|
|
| View Transitions API (Chrome 111+, Safari 18+) | Cross-document / cross-route переходы, FLIP под капотом нативно | 0 KB (браузер) |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 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'`. Финальная версия живёт в репозитории — заготовка ниже сохранена как историческая.
|
|||
|
|
|
|||
|
|
```blade
|
|||
|
|
## 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 v5.1.0 — **все 14 skills** (Pravila §12 v1.4+ hard rule «Superpowers first»; Pravila §11 «полное снятие запретов» с v1.8). Установка декларативно через `~/.claude/settings.json`: `extraKnownMarketplaces.superpowers-dev` + `enabledPlugins.superpowers@superpowers-dev=true`. **Без `enabled_skills` ограничителей.** ⚠️ **Историческая контрадикция (закрыта v1.14):** до v1.14 этот шаг гласил «enabled_skills = только 3 (test-driven-development, systematic-debugging, subagent-driven-development)» — устаревшая политика v1.7 (3/13 skills с запретами). v1.8 сняла все запреты через §11 override (вариант «A. Полное снятие»); v1.9 ввела §12 hard rule (skill инвокируется первым). См. §4.1 этого же файла для полной хронологии.
|
|||
|
|
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 **разрешён** с 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
|
|||
|
|
|
|||
|
|
Не входят в 33 формализованные позиции тулчейна (см. §12). Ставятся отдельно для DevOps-роли. На Windows — `yc` и `terraform` через скачивание `.zip` или `winget`.
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 12. Что вне 33 формализованных позиций (инфраструктура)
|
|||
|
|
|
|||
|
|
Эти 7 пунктов критичны для проекта, но используются DevOps, не Claude. Поэтому в основной реестр не входят, но фиксирую для полноты:
|
|||
|
|
|
|||
|
|
| Инструмент | Зачем |
|
|||
|
|
|---|---|
|
|||
|
|
| 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 (или эти инструменты переедут в основной реестр).
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 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.12** | 10.05.2026 | **Формализация двух фактически включённых внешних UI-инструментов как «инструменты-резерв вне фаз»:** **#31 UI UX Pro Max** (skill, marketplace `nextlevelbuilder/ui-ux-pro-max-skill`) — резерв-библиотека (50+ стилей, 161 палитра, 99 UX-гайдлайнов, 25 типов графиков); активация через PSR_v1 v1.4 R14.3 pipeline (фаза 2 R2 fallback к FD ИЛИ фаза 1 R2 «третий вариант» в R12). **#32 21st.dev Magic MCP** (`magic` MCP-сервер) — генератор стартовых шаблонов; активация через PSR_v1 v1.4 R14.4 pipeline (pre-check R0.6 + R6.0 фильтр + R6.1 hard-override + FD адаптация). Оба не привязаны к фазе по тулчейну (post-MVP инструменты-резерв). Добавлены §4.5 + §4.6. **§9 «Что НЕ ставим» дополнен разделом «Motion runtime библиотеки»:** framer-motion + react-spring (R15.1 hard-запрет, React-only); motion-v + gsap + anime.js + lottie-web + popmotion (R15.2/R15.7 условно по 4 триггерам, R0.6 пункт 11 hard-стоп). Default motion stack: Vue native + Vuetify + CSS + View Transitions API. Total формализованных: 29 → **31 позиций** (активных по фазам — 19/29; +2 off-phase). Связано: PSR_v1 v1.3 → v1.4; Pravila v1.7 → v1.8 (§13.10 hard-link на R14); CLAUDE.md v1.82 → v1.83. |
|
|||
|
|
| **v1.13** | 10.05.2026 | **Закрытие 4 структурных находок аудита нормативной документации:** **§7 «Source of truth»** обновлён с 5-уровневой на 7-уровневую цепочку — добавлен `Plugin_stack_rules_v1.md` (PSR_v1) уровнем 3 (координирующий слой между paired-stack ядром и расширенным UI-пулом); явно вынесен Pravila §12 (Superpowers hard rule) уровнем 0; sync с CLAUDE.md §1. **§4.7 (новый) — #33 claude-md-management plugin** формализован как off-phase инфраструктурный инструмент (был фактически включён в `~/.claude/settings.json` с момента CLAUDE.md §5 п.10, но без формализации); отдельная категория **инфраструктурная**, не UI — поэтому не попадает под Pravila §13 (расширенный UI-пул) и не проходит R6.0/R6.1/R14 pipeline. **§6 «Конфликты и решения»** расширен с 5 до 10 строк — добавлены 5 новых конфликтов из PSR_v1 v1.4: UPM↔FD, 21st↔Vuetify-эквивалент, 21st↔брендовый App*, framer-motion↔motion-v, UPM↔21st. **§4.6 — settings.json → ~/.claude.json:** уточнено, что API-ключ 21st хранится в `~/.claude.json`, **не** в `~/.claude/settings.json`. **§0 — счётчик 31 → 33** (3 off-phase: UPM #31, 21st #32, claude-md-management #33). Total формализованных: 33 (29 активных по фазам + 3 off-phase + 1 заменённый PG MCP исторически). Связано: Pravila v1.8 → v1.9, PSR_v1 v1.4 → v1.5, CLAUDE.md v1.83 → v1.84. |
|
|||
|
|
| **v1.14** | 10.05.2026 (вечер) | **Закрытие 3 находок второго аудита правил использования плагинов и скилов** (P0-01, P0-04, P2-01 в Tooling — из 15 общих находок). **P0-01: §10.3 шаг 2 sync с §4.1** — раньше шаг гласил «Установить Superpowers с конфигом enabled_skills = только 3» (политика v1.7), но §4.1 того же файла говорит «v1.8 снятие запретов через §11 override (полное снятие); v1.9 hard rule §12 первоочерёдное использование» — внутри-документная контрадикция. v1.14: §10.3 шаг 2 переписан на 14 skills с пометкой об устаревшей версии. **P0-04: §13 +v1.13 +v1.14 entries** — раньше история обрывалась на v1.12, хотя шапка описывала v1.13. v1.14: таблица синхронизирована (добавлены v1.13 + v1.14 строки). **P2-01: §7 priority chain +Tooling explicit slot** — раньше Tooling Прил. Н формально не было в priority chain ни одного из 4 файлов, хотя PSR_v1 R0.1 говорил «stack ниже Tooling»; формальная дыра при конфликте «Tooling vs PSR_v1». v1.14: добавлен note про Tooling уровнем 2b alongside CLAUDE.md (оба operational maps; при прямом конфликте — приоритет CLAUDE.md). Total формализованных: **33** (без изменений; правки касаются формулировок и priority chain). Связано: Pravila v1.9 → v1.10, PSR_v1 v1.5 → v1.6, CLAUDE.md v1.84 → v1.85. Через `/claude-md-management:claude-md-improver`. |
|
|||
|
|
| **v1.15** | 10.05.2026 (поздний вечер) | **Закрытие 4 находок третьего аудита правил использования плагинов и скилов** (P1-03/04/05 + §11.5/§12 «28→33» в Tooling — из 13 общих находок). **P1-03/04/05: sync cross-refs шапки** на актуальные версии связанных документов после bump'ов CLAUDE.md v1.85 → v1.86 и PSR_v1 v1.6 → v1.7: «Pravila v1.9+» → «v1.10+», «PSR_v1 v1.5+» → «v1.7+», «CLAUDE.md v1.84+» → «v1.86+». «+»-нотация сохранена (forward-compat). **§11.5/§12 — формулировка «28 инструментов» → «33 формализованные позиции»:** в DevOps-разделе текст застрял с эпохи v1.0, когда счётчик был 28; смысловое назначение фразы — «реестр Лидерры», который теперь имеет 33 формализованных позиции. История версий ниже и changelog'и в шапках v1.0/v1.10/v1.12 — это снимки эпох и не правятся. Total формализованных: **33** (без изменений; правки касаются формулировок и cross-refs). Связано: PSR_v1 v1.6 → v1.7, CLAUDE.md v1.85 → v1.86. Pravila v1.10 — без правок. Через `/claude-md-management:claude-md-improver`. |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
*Прил. Н v1.15 от 10.05.2026 (поздний вечер) — закрытие 4 находок третьего аудита (P1-03/04/05 sync cross-refs, §11.5/§12 «28→33»). 33 позиций (без изменений).*
|
|||
|
|
|
|||
|
|
*Прил. Н v1.14 от 10.05.2026 (вечер) — закрытие 3 находок второго аудита (P0-01 §10.3 sync, P0-04 §13 +v1.13 +v1.14 entries, P2-01 §7 +Tooling explicit slot). 33 позиций (без изменений).*
|
|||
|
|
|
|||
|
|
*Прил. Н v1.13 от 10.05.2026 — закрытие 4 структурных находок аудита нормативной документации (§7 +PSR_v1 уровнем 3, §4.7 новый — #33 claude-md-management, §6 +5 конфликтов v1.4, §4.6 settings → .claude.json). 33 позиций (19/29 активны по фазам + 3 off-phase + 1 заменённый PG MCP).*
|
|||
|
|
|
|||
|
|
*Прил. Н v1.12 от 10.05.2026 — формализованы #31 UPM + #32 21st Magic MCP как off-phase tools; §9 расширен motion-runtime denylist'ом. 31 позиций (19/29 активны по фазам + 2 off-phase).*
|
|||
|
|
|
|||
|
|
*Прил. Н 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.8+, `README_АРХИВ_v8_4.md` v8.4+.*
|