# Приложение Н — Tooling, скиллы и плагины Claude (v8.3)

**Дата:** 13.05.2026 (day +1)
**Версия:** 1.17 (формализация retrospective двух off-phase MCP debug-инструментов установленных на feat/claude-automation `6f7e7d7` + `bd4ec48` после merge PR #3 в main `cc5f63b`: §0 счётчик off-phase 3 → 5, итого 33 → 35; §4.8 новый — #34 Sentry MCP; §4.9 новый — #35 Redis MCP. Категория debug-runtime, отдельная от UI-пула. Связано: PSR_v1 v2.0 → v2.1, CLAUDE.md v1.91 → v1.92, Pravila v1.12 → v1.13.)
**Предыдущая версия:** 1.16 (12.05.2026 — снятие R15 motion-runtime denylist'а из §9.2 синхронно с PSR_v1 v1.7 → v2.0 + CLAUDE.md v1.87 → v1.88 + Pravila v1.10 → v1.11. Через `/claude-md-management:claude-md-improver` + ручные Edit.)
**Адресат:** 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.11+ — §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` v2.0+ — координация paired-stack ядра (Superpowers + Frontend Design) + расширенного пула (UPM + 21st Magic MCP) + инфраструктурного плагина (claude-md-management) (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка; R15 motion удалён в v2.0)
> - `CLAUDE.md` (корень репозитория) v1.88+ — оперативная карта инструментов с приоритетом правил (уровень 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 снят в v1.88); §6 счётчик 33 (3 off-phase tools)
> - `README_АРХИВ_v8_4.md` v8.4+ — состав архива

**Что нового в v1.16 (12.05.2026):**

- **§9.2 «Motion runtime библиотеки» переформулирован из regulatory denylist в technical guidance.** R15 PSR_v1 снят целиком (v1.7 → v2.0); motion-v / gsap / anime.js / lottie-web / popmotion / @motionone/dom — безусловно разрешены к установке. framer-motion / react-spring остаются как **technical block** — это peerDep на React, не правило проекта. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — guidance, не hard-rule.
- **Cross-refs шапки sync:** PSR_v1 v1.7+ → v2.0+; CLAUDE.md v1.86+ → v1.88+; Pravila v1.10+ → v1.11+.
- **§6 строка «framer-motion ↔ motion-v»** оставлена как historical record v1.4 audited construction (snapshot эпохи, не удаляется при rollback'е).
- **Связано:** PSR_v1 v1.7 → v2.0 (R15 удалено), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв, §2 motion stack → guidance), Pravila v1.10 → v1.11.

Через `/claude-md-management:claude-md-improver` + manual Edit.

**Что нового в 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` / `.mcp.json` | **+5** | #31 UPM (UI-резерв), #32 21st Magic MCP (UI-генератор), #33 claude-md-management (инфраструктура CLAUDE.md edits), #34 Sentry MCP (debug self-hosted Sentry в Yandex Cloud), #35 Redis MCP (debug Memurai/Redis runtime) |

**Итого формализованных позиций:** 35 (29 активных по фазам + 5 off-phase + 1 заменённый PG MCP исторически). Полный перечень — §2–§5 (по фазам) + §4.5/§4.6/§4.7/§4.8/§4.9 (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 для полного реестра.

### 4.8. Debug-инструмент Sentry — Sentry MCP (off-phase tool)

> **Введено 13.05.2026 day +1 (v1.17 Прил. Н):** формализован как «инструмент-резерв вне фаз, debug-категория». Установлен на feat/claude-automation `6f7e7d7` в `.mcp.json`, merged в main через PR #3 (`cc5f63b`); формализован retrospectively в v1.17. Категория **debug-runtime**, отличная от UI-пула (UPM/21st) и инфраструктурного (claude-md-management) — поэтому отдельная нумерация. Pending Sentry instance deployment в Yandex Cloud (зависит от Б-1 ООО registration P0).

| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 34 | **Sentry MCP** (`@sentry/mcp-server@0.33.0+`, official, repo `getsentry/sentry-mcp`, bin `sentry-mcp`) | `.mcp.json`: `mcpServers.sentry.command="npx" args=["-y", "@sentry/mcp-server"] env={SENTRY_URL, SENTRY_AUTH_TOKEN}`. Env vars — через PowerShell User scope (`[Environment]::SetEnvironmentVariable("SENTRY_URL", ..., "User")`). Credentials НЕ commit'ятся (gitleaks gate). | MCP tools: `mcp__sentry__get_issue`, `_list_events`, `_search_errors` (+ другие per @sentry/mcp-server@0.33.0 spec) | (1) production runtime error в self-hosted Sentry → прямой запрос issue details из Claude session; (2) post-incident debug (CLAUDE.md §2: Sentry self-hosted в Yandex Cloud); (3) READ-ONLY usage — scope auth token `org:read`, `project:read`, `event:read` only |

**Обязательные правила использования:**

| Правило | Где | Что значит |
|---|---|---|
| **R10.1** debug-runtime, не UI и не инфраструктура | R10.1 PSR_v1 (v2.1+) | Sentry MCP в **отдельной категории** от UPM/21st и от claude-md-management; не попадает в R14 pipeline UI-генераторов и не модифицирует CLAUDE.md |
| **CLAUDE.md §5 п.4** не commit'ить ПДн/токены | CLAUDE.md | `SENTRY_AUTH_TOKEN` — секрет, НИКОГДА не в репозиторий. Только через PowerShell User scope env или `.env.local` (gitignored) |
| **R7** не закрывает задачу | R7 PSR_v1 | Sentry MCP — источник информации, не gate (не deployable artifact) |
| **Pre-MVP блокер** | — | Sentry instance в Yandex Cloud зависит от Б-1 ООО registration. До deployment — MCP startup fail gracefully (env пустые), tools не enumerable; это OK |

**Live-отмена (R0.4.B PSR_v1):** «не используй sentry-mcp сейчас» — отключает на текущее действие. По умолчанию активен после reload session с непустыми env vars.

**Безопасность:** Token `SENTRY_AUTH_TOKEN` — bearer secret. PowerShell User scope = encrypted per-user (Windows DPAPI). Не shared между пользователями. При утечке — немедленно revoke через Sentry web UI (`Settings → Account → API → Auth Tokens`).

### 4.9. Debug-инструмент Redis — Redis MCP (off-phase tool)

> **Введено 13.05.2026 day +1 (v1.17 Прил. Н):** формализован как «инструмент-резерв вне фаз, debug-категория». Установлен на feat/claude-automation `bd4ec48` в `.mcp.json`, merged в main через PR #3 (`cc5f63b`); формализован retrospectively в v1.17. Package `@modelcontextprotocol/server-redis@2025.4.25` **deprecated** по статусу npm («Package no longer supported»), но Anthropic source, рабочий. Post-MVP migration на community alternative (e.g., `@easy-mcps/redis-mcp-server@1.0.8` или `@wenit/redis-mcp-server@1.0.3`) когда подтвердим trust.

| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 35 | **Redis MCP** (`@modelcontextprotocol/server-redis@2025.4.25`, deprecated Anthropic source) | `.mcp.json`: `mcpServers.redis.command="npx" args=["-y", "@modelcontextprotocol/server-redis", "redis://localhost:6379"]`. Memurai (Windows Redis 7-совместимый service) running на `localhost:6379` — verified Task 4 (`memurai-cli ping → PONG`). | MCP tools: Redis operations (KEYS, GET, LRANGE, etc.) | (1) debug очередей (`route:supplier:*`); (2) debug кэша (`supplier:session` per quirk 72); (3) debug Pest --parallel race conditions; (4) READ-ONLY usage — НЕ для prod (нет prod пока). Если в будущем prod Redis с auth — отдельный entry `redis-prod` с url через env var |

**Обязательные правила использования:**

| Правило | Где | Что значит |
|---|---|---|
| **R10.1** debug-runtime, не UI и не инфраструктура | R10.1 PSR_v1 (v2.1+) | Redis MCP в той же категории что #34 sentry-mcp |
| **READ-ONLY usage** | соглашение проекта | Никаких `DEL`, `FLUSHDB`, `SET`, `LPUSH` от Claude в runtime debug. Только read-операции. Manual Redis mutations — через `memurai-cli` напрямую заказчиком |
| **Package deprecation** | npm | На startup `npx` emits deprecation warning в stderr. Это **cosmetic**, не functional. При выходе supported alternative (community OR official replacement) — migrate в Tooling v1.18+ |
| **R7** не закрывает задачу | R7 PSR_v1 | Redis MCP — источник информации, не gate |

**Live-отмена (R0.4.B PSR_v1):** «не используй redis-mcp сейчас» — отключает на текущее действие.

**Безопасность:** Локальный Memurai на 6379 **без auth** — это dev-only setup. Если в будущем будут prod Redis с auth — entry `redis-prod` с url через env var `${REDIS_PROD_URL}`, credentials через PowerShell User scope (как Sentry). Сейчас prod нет (зависит от Б-1).

---

## 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.16 — technical guidance, не regulatory)

С v1.16 / PSR_v1 v2.0 motion-runtime библиотеки **разрешены к установке без обоснования** (R15 PSR_v1 снят 12.05.2026). Default motion stack — **Vue native `<Transition>` + Vuetify transitions + CSS @keyframes + View Transitions API** — остаётся рекомендацией (CLAUDE.md §2), но не hard-rule. Эта таблица — **technical guidance** о свойствах библиотек, не regulatory denylist.

| Библиотека | Статус | Технические свойства |
|---|---|---|
| **framer-motion** (npm `framer-motion`) | **❌ Technical block (не regulatory)** | React-only архитектурно: peerDeps `react>=18` + `react-dom>=18`. Использует React fiber-tree + hooks + JSX. В Vue 3 + Vuetify стеке физически не работает — runtime crash при `import { motion } from 'framer-motion'` в `.vue` файлах. `npm install` пройдёт с peer-dep warn, но любой import упадёт. Не regulatory rule — свойство библиотеки. |
| **react-spring** (npm `@react-spring/*`) | **❌ Technical block** | React-only по той же причине (peerDep react). |
| **motion-v** (npm `motion-v`) | ✅ Разрешено | Vue 3 порт API framer-motion от того же maintainer'а Motion. ~30 KB gzipped. ~95% API-совместимость с framer-motion (motion.div, animate, variants, layout, drag, gestures). |
| **gsap** (`gsap` npm) | ✅ Разрешено | Imperative timeline-driven. Подходит для marketing/agency UI, сложных choreographed sequences. |
| **anime.js** | ✅ Разрешено | Лёгкая alternative gsap, ~17 KB. |
| **lottie-web** (`lottie-web`) | ✅ Разрешено | Для Lottie/After Effects-ассетов. |
| **popmotion**, **@motionone/dom** | ✅ Разрешено | Низкоуровневые движки. |
| **Auto-Animate** (`@formkit/auto-animate`) | ✅ Разрешено | Один компонент, FLIP под капотом, ~3 KB. |

**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.16** | 12.05.2026 | **Закрытие 1 правки четвёртого аудита — снятие R15 motion-runtime denylist'а из §9.2** синхронно с PSR_v1 v1.7 → v2.0 + CLAUDE.md v1.87 → v1.88 + Pravila v1.10 → v1.11. **§9.2 «Motion runtime библиотеки» переформулирован из regulatory denylist в technical guidance.** R15 PSR_v1 снят целиком (v1.7 → v2.0); motion-v / gsap / anime.js / lottie-web / popmotion / @motionone/dom — безусловно разрешены к установке. framer-motion / react-spring остаются как **technical block** — peerDep на React, не правило проекта. Cross-refs шапки sync: PSR_v1 v1.7+ → v2.0+; CLAUDE.md v1.86+ → v1.88+; Pravila v1.10+ → v1.11+. §6 строка «framer-motion ↔ motion-v» оставлена как historical record v1.4 audited construction. Total формализованных: **33** (без изменений). Через `/claude-md-management:claude-md-improver` + manual Edit. Заказчик: «сними все запреты на использование framer motion». |
| **v1.17** | 13.05.2026 (day +1) | **Формализация retrospective двух off-phase MCP debug-инструментов** установленных на feat/claude-automation (commits `6f7e7d7` sentry, `bd4ec48` redis), merged в main через PR #3 (`cc5f63b`): **§0 счётчик off-phase 3 → 5; итого формализованных позиций 33 → 35**. **§4.8 (новый)** — #34 Sentry MCP (`@sentry/mcp-server@0.33.0+`, official, pending Sentry instance deployment Б-1). **§4.9 (новый)** — #35 Redis MCP (`@modelcontextprotocol/server-redis@2025.4.25`, deprecated Anthropic source, рабочий с Memurai localhost:6379; migration plan на community alternative post-MVP). Категория **debug-runtime**, отдельная от UI-пула (UPM/21st) и инфраструктурного (claude-md-management) — не попадает в R14 pipeline и не trigger'ит R6.0/R6.1 фильтры. Связано: PSR_v1 v2.0 → v2.1 (R10.1 +sentry+redis); CLAUDE.md v1.91 → v1.92 (§3.3 #34/#35; §0 cross-refs); Pravila v1.12 → v1.13 (§13.2 +Off-phase MCP debug-runtime подсекция). Через manual Edit для Tooling/PSR_v1/Pravila + `/claude-md-management:claude-md-improver` для CLAUDE.md. |

---

*Прил. Н v1.17 от 13.05.2026 (day +1) — формализация retrospective off-phase MCP #34 Sentry + #35 Redis (debug-runtime category). 35 позиций (29 активных по фазам + 5 off-phase + 1 заменённый PG MCP исторически).*

*Прил. Н v1.16 от 12.05.2026 — снятие R15 motion-runtime denylist'а из §9.2 синхронно с PSR_v1 v1.7 → v2.0. 33 позиций (без изменений).*

*Прил. Н 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+.*
