Через `/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 находку «текстовая неточность в комментарии безопасности».
- **#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 инструменты-резерв).
- **#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. Сводка
| Фаза | Триггер | Активных к концу фазы | Δ к предыдущей |
**Итого формализованных позиций:** 87 (29 активных по фазам + 57 off-phase + 1 заменённый PG MCP исторически) + 20 ruflo orchestration plugins = **107 total**. Полный перечень — §2–§5 (по фазам) + §4.5/§4.6/§4.7/§4.8/§4.9/§4.11/§4.12/§4.13/§4.14/§4.15/§4.16/§4.17/§4.18/§4.19/§4.20/§4.21/§4.22/§4.23/§4.24/§4.25/§4.26/§4.27/§4.28/§4.29/§4.30/§4.31/§4.32/§4.33/§4.34/§4.35/§4.36/§4.37/§4.38/§4.39/§4.40/§4.41/§4.42/§4.43/§4.44/§4.45/§4.46/§4.47/§4.48/§4.49/§4.50/§4.51/§4.52/§4.53/§4.54/§4.55/§4.56/§4.57/§4.58/§4.59/§4.60/§4.61/§4.62 (off-phase) + §4.10 (ruflo orchestration). Карта «когда что использовать» — §7. Что НЕ ставим и почему — §9.
**КАНОН СЧЁТЧИКОВ.** Числовые счётчики формализованных позиций и off-phase подкатегорий тулчейна каноничны здесь — в Прил. Н §0. CLAUDE.md, Pravila §13.2 и PSR_v1 R10.1 ссылаются сюда формулировкой «реестр и счётчики — Tooling Прил. Н §0» и не дублируют числа. Введено SYSTEM-аудитом 18.05.2026 (finding 3) для устранения класса «арифметический дрейф счётчиков» (ловился аудитами v1.85/v1.86).
### §0.1 Row template (v2.17+ — per ADR-011)
Every row §4.X (а также вынесенные блоки §2.4 для phase-0, §3.5 для phase-1 и т.д. — где узлы зафиксированы таблицами, а не отдельными подсекциями) MUST include 9 obligatory attributes in a structured block at the top of the section:
| Attribute | Type | Required | Description |
|---|---|---|---|
| `id` | `#NN` | yes | Unique number (matches Прил. Н TOC) |
**Ключевой принцип фазирования:** не активируем фазу 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` — портит таблицы |
| 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 во всём проекте |
### 2.4. Атрибуты узлов фазы 0 (per ADR-011)
Структурированные блоки 9-атрибутного шаблона §0.1 для phase-0 узлов #1–#9. Шаблон введён ADR-011 (Task A3 sub-batch 1, 19.05.2026). Существующие таблицы §2.1/§2.2/§2.3 сохраняются как human-readable дескрипция; блоки ниже — machine-friendly реестр атрибутов.
#### #1 PostgreSQL MCP
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
|---|---|---|---|---|---|---|---|---|
| #1 | PostgreSQL MCP | mcp | 0 | — | «SQL validation, schema check, dev DB introspection» | none (заменён #10 Laravel Boost в фазе 1 — см. §3.1) | true | 2026-05-19 |
Прим.: dormant=true — узел исторически замещён #10 Boost при переходе в фазу 1; артефакт реестра сохраняется как historic slot (CLAUDE.md §3.1 row #1).
#### #2 Playwright MCP
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
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'а).
| 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 |
### 3.5. Атрибуты узлов фазы 1 (per ADR-011)
Структурированный реестр 9-атрибутов для phase-1 нодов #10–#18 (по ADR-011, см. §0.1). #17 pg_partman помечен `dormant: true` — на native Windows-PG расширение недоступно, заменён ручным cron'ом (Artisan-команда `partitions:create-months`, см. CLAUDE.md §6).
#### #10 Laravel Boost
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
> **Обновлено 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)
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
| 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)
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
| # | Инструмент | Установка | Роль | Альтернатива |
|---|---|---|---|---|
| 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 |
> **Введено 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) |
> **Введено 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 |
> **Введено 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 принял решение «нужен кастомный компонент» |
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.
> **Введено 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 для полного реестра.
> **Введено 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`).
> **Введено 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.
**Категории off-phase tools (v2.0):** к трём существующим подкатегориям — **UI-пул** (#31 UPM + #32 21st Magic MCP), **infrastructure** (#33 claude-md-management), **debug-runtime** (#34 Sentry MCP + #35 Redis MCP) — в v2.0 добавлена четвёртая: **orchestration** — ruflo (advisory/automation-подсистема, см. §4.10). Эта подкатегория не нумеруется в #-реестре (ruflo — внешний оркестратор с 20 собственными plugins, не один инструмент в фазовой раскладке).
| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 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 |
**Безопасность:** Локальный 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).
**Роль:** инструмент **#36**, раздел A6 карты «Архитектура систем». ADR хранятся в `docs/adr/` (формат Nygard, 7 секций); решения с блоком `## Enforcement` проверяются `adr-judge` на staged-дифе.
**Категория:** off-phase, **architecture-tooling** — пятая off-phase подкатегория (отдельная от UI-пула UPM/21st, infrastructure claude-md-management, debug-runtime Sentry/Redis, orchestration ruflo). Не UI → **не** проходит R6.0/R6.1/R14 PSR_v1. Регулируется PSR_v1 R10.1 Блок 1.
**Интеграция (17.05.2026, ветка `feat/a6-architecture-tooling`):**`init`/`install-hooks`**не запускаются** — git-хук adr-kit конфликтовал бы с lefthook (конфликт-аудит AK1); `adr-judge` вендорен в `tools/adr-judge.py` и врезан как **lefthook pre-commit job 9** (`python -X utf8`, **без `--llm`** → declarative regex, 0 вызовов Claude API, 0 стоимости — AK6). `init` пишет в `CLAUDE.md` → не запускается (AK2 — §5 п.10); awareness-stub = строка реестра CLAUDE.md §3.3 #36.
**Trail of Bits Skills** (Claude Code marketplace `trailofbits/skills`, имя marketplace `trailofbits`, **CC-BY-SA-4.0**, репутабельный AppSec-вендор). Marketplace из 38 плагинов; в `enabledPlugins` включён курированный субсет **8 плагинов** под раздел D3 «Аудит и управление рисками»: `differential-review`, `audit-context-building`, `supply-chain-risk-auditor`, `insecure-defaults`, `sharp-edges`, `static-analysis`, `variant-analysis`, `agentic-actions-auditor`. Все 8 — skill/agent-плагины, **0 Claude Code lifecycle-хуков** (статически верифицировано по репо — ни у одного нет `hooks/`-папки).
**Роль:** инструмент **#39**, раздел D3 карты «Аудит и управление рисками» — глубокие on-demand аудит-кампании (security-аудит diff, supply-chain риск зависимостей, поиск вариантов уязвимостей по кодбазе).
**Категория:** off-phase, **audit-security** — шестая off-phase подкатегория (отдельная от UI-пула UPM/21st, infrastructure claude-md-management, debug-runtime Sentry/Redis, orchestration ruflo, architecture-tooling adr-kit/mermaid/architecture-patterns). Не UI → **не** проходит R6.0/R6.1/R14 PSR_v1. Регулируется PSR_v1 R10.1 Блок 1.
**Конфликт-аудит интеграции:** TB1 — `static-analysis` пересекается с Semgrep MCP (#25): граница — Semgrep MCP = inline SAST в рутине/CI, ToB = глубокие аудит-кампании on-demand. TB4 — CC-BY-SA-4.0 ShareAlike: остаётся marketplace-плагином (кэш вне репо, не вендорен) → ShareAlike-обязательство не триггерится. `fp-check` исключён из субсета — единственный из 9 рассмотренных с `hooks/`-папкой (lifecycle-хук); цепочка хуков проекта держится минимальной. План `docs/superpowers/plans/2026-05-17-d3-audit-risk-tooling-integration.md`.
**Security Guidance** (Claude Code plugin, marketplace `anthropics/claude-plugins-official`, plugin `security-guidance@claude-plugins-official`, Anthropic Verified). Один PreToolUse `Write|Edit|MultiEdit`-хук — **блокирующий** (не warn-only): при **первом** за сессию срабатывании уязвимого паттерна в данном файле печатает предупреждение в stderr и завершается `sys.exit(2)` → **блокирует правку**. Пара «файл+правило» пишется в session state-файл `~/.claude/security_warnings_state_<id>.json` — повторная попытка той же правки проходит; это **одноразовый speed-bump**, не безусловный блок. 9 правил: 8 контентных (command/shell injection `child_process.exec`/`os.system`, `eval(`, `new Function`, XSS через `innerHTML`/`document.write`/`dangerouslySetInnerHTML`, `pickle`-десериализация) + 1 path-правило на `.github/workflows/*.yml`. Отключается env `ENABLE_SECURITY_REMINDER=0`.
**Роль:** инструмент **#40**, раздел D3 — real-time inline-напоминание об уязвимостях во время редактирования (дополняет on-demand аудит ToB/Semgrep).
**Категория:** off-phase, audit-security. Регулируется PSR_v1 R10.1 Блок 1.
**Конфликт-аудит интеграции:** SG1 — добавляет 5-й PreToolUse-хук поверх 4 существующих (skill-marker / skill-check / economy-state-guard в `~/.claude/settings.json` + CLAUDE.md-warn в проектном `.claude/settings.json`); хук **блокирующий** (`sys.exit(2)`), но одноразовый per «файл+правило» за сессию — economy/ruflo-цепочка не нарушается (PreToolUse-хуки независимы, SG блокирует только на свой уязвимый паттерн), +~34 мс/правку latency. **SG2 (Windows-починка, 17.05.2026):** bundled `hooks.json` жёстко зовёт интерпретатор `python3`, которого в PATH этой машины нет (есть `python` 3.14.4) → без починки хук не спаунился, SG был инертен. Решено: `python3.exe` (копия `python.exe`) добавлен в каталог установки Python в PATH — кэш плагина не трогается, починка переживает обновления плагина. Verified end-to-end 17.05.2026 (manual smoke → `sys.exit 2` + in-session Write-блокировка). `/security-review` (Anthropic built-in, customized в `.claude/commands/security-review.md` с проектным FP-фильтром — RLS/ПДн/economy-хуки) — D3 #2, не отдельный нумерованный слот (built-in, не installed tool).
**CCPM** (`automazeio/ccpm`, MIT) — standalone-скил, **вендорен** в `.claude/skills/ccpm/` (`SKILL.md` + `references/` с гайдами + 14 bash-скриптов). **0 Claude Code lifecycle-хуков** (статически верифицировано — нет `hooks/`-папки). Источник: GitHub `automazeio/ccpm`; вендоринг изолирует от upstream-потерь (bus-factor — community-проект — CC1).
**Роль:** инструмент **#41**, раздел C9 карты «Управление проектами». PRD→эпик→GitHub-issue→код с полной трассируемостью через `/pm` flow. PRD/epic хранятся в `.claude/prds/` + `.claude/epics/`. GitHub-issue-backed модель (конфликт-аудит CP3, зафиксировано в ADR-004). Раздел C9 опирается также на reuse: GitHub MCP (Tooling #3) с`projects` toolset для GitHub Projects v2, Superpowers `writing-plans` (execution plan-files), `q-item-add` (управление реестром вопросов).
**Категория:** off-phase, **project-management** — седьмая off-phase подкатегория (отдельная от UI-пула UPM/21st, infrastructure claude-md-management, debug-runtime Sentry/Redis, orchestration ruflo, architecture-tooling adr-kit/mermaid/architecture-patterns, audit-security Trail of Bits Skills/Security Guidance). Не UI → **не** проходит R6.0/R6.1/R14 PSR_v1. Регулируется PSR_v1 R10.1 Блок 1.
**Конфликт-аудит интеграции:** CP2 — граница с Superpowers `writing-plans`: CCPM = PRD/epic/issue трассируемость; `writing-plans` = execution plan-files (разные артефакты, не дублируют). CP3 — GitHub-issue-backed модель зафиксирована в ADR-004 (docs/adr/ADR-004). CP5 — PRD/epic store `.claude/prds/`/`.claude/epics/` исключён из markdownlint/cspell нормального flow (вендорные артефакты, как `.claude/skills/`). Plan `docs/superpowers/plans/2026-05-17-c9-project-management-tooling-integration.md`.
**product-management** (Claude Code plugin, marketplace `anthropics/knowledge-work-plugins`, plugin `product-management@knowledge-work-plugins`, **Anthropic Verified**). Команды: `/write-spec` (PRD), `/roadmap-update`, `/stakeholder-update`, `/synthesize-research`, `/competitive-brief`, `/metrics-review`. **0 Claude Code lifecycle-хуков** (только команды, не хуки).
**Роль:** инструмент **#42**, раздел C9 — product-strategy церемонии (problem→spec, roadmap, stakeholder updates, research synthesis, competitive analysis, metrics review). Установлен в user-scope (`claude plugin install product-management@knowledge-work-plugins`).
**Категория:** off-phase, project-management. Регулируется PSR_v1 R10.1 Блок 1.
**Конфликт-аудит интеграции:** PG3 — граница с CCPM `/write-spec` vs CCPM PRD: product-management PRD = product-strategy-уровень (problem→spec, roadmap-aligned); CCPM PRD = engineering epic→issue→code трассируемость. Разный altitude — не дублируют. Plan `docs/superpowers/plans/2026-05-17-c9-project-management-tooling-integration.md`.
**Статус: DEFERRED** — у проекта нет Figma-аккаунта (FM2-спайк 17.05.2026: дизайн-источник Лидерры — статический handoff Платона, не Figma-файл; Диз-1 закрыт handoff'ом). Не установлен. Регистрируется как deferred-pending (прецедент — Sentry MCP #34 «pending Б-1»); активируется при появлении Figma-аккаунта + файла.
**Роль:** инструмент **#44**, раздел A4 карты «Дизайн (UI/UX, графика, бренд)». Закрывает пробел «бренд-токены / живой дизайн-источник». **Extract-only** (ADR-006 решение 1): code-generation Figma MCP НЕ используется — Frontend Design #30 остаётся единственным UI-решателем (PSR_v1 R10.2).
**Категория:** off-phase, design-tooling — первый из трёх инструментов восьмой off-phase подкатегории. Не UI-решатель → **не** проходит R6.0/R6.1/R14 PSR_v1. Регулируется PSR_v1 R10.1 Блок 3 (MCP-сервер). При активации — entry в `.mcp.json` (HTTP-транспорт; OAuth, без репо-секрета — FM3).
**Конфликт-аудит интеграции:** FM1 — code-gen Figma MCP дублировал бы FD #30 → extract-only role (ADR-006). FM2 — нет Figma-файла → DEFERRED. FM4 — Figma MCP по умолчанию генерит React/Tailwind → R6.0-фильтр при потреблении любого материала. План `docs/superpowers/plans/2026-05-17-a4-design-tooling-integration.md`.
**Роль:** инструмент **#45**, раздел A4. Закрывает пробел «графика/иконки». SVG-вывод **framework-neutral** по умолчанию — НЕ запрашивать `jsx`/Tailwind-формат (R6.0). Установлен в `.mcp.json` 17.05.2026.
**Категория:** off-phase, design-tooling. Не UI-решатель → **не** проходит R6.0/R6.1/R14. Регулируется PSR_v1 R10.1 Блок 3 (MCP-сервер).
**Конфликт-аудит интеграции:** UI1 — иконки = asset-примитив (материал); FD #30 решает какую/куда, MCP только отдаёт SVG (R10.2) — пересечения нет. UI2 (ADR-006) — Universal Icons = UI-иконки; 21st `logo_search`#32 = бренд-логотипы — разные задачи, оба сохранены. UI3 (ADR-006 Decision 4, поправка 17.05.2026) — Lucide-иконки: канонический путь — `lucide-vue-next` + Vuetify `IconSet` (CTO-19); raw-SVG `get_icon` — только для не-Lucide коллекций (Heroicons/Tabler/Phosphor), SVG оборачивается в Vue-компонент, не инлайнится в обход icon-system. CC1 — single-maintainer репозиторий; MIT, легко заменяем (`iconify-mcp-server` — drop-in). План `docs/superpowers/plans/2026-05-17-a4-design-tooling-integration.md`.
### 4.21. Design plugin — дизайн-критика и UX (off-phase, design-tooling)
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
|---|---|---|---|---|---|---|---|---|
| #46 | Design plugin | plugin | off-phase | design-tooling | «дизайн-критика, UX-копирайт, research synthesis» | pre-code; Pa11y остаётся a11y SoT | false | 2026-05-19 |
**Design plugin** (`design@knowledge-work-plugins`, marketplace `anthropics/knowledge-work-plugins`, **Anthropic Verified**). Возможности: Design Critique (ревью макетов на usability + consistency design-system), Design System Management, Accessibility Audit (WCAG 2.1 AA — дизайн-уровень), UX Writing (микрокопирайт), Research Synthesis, Dev Handoff (спеки «exploration → pixel-perfect», pre-code).
**Категория:** off-phase, design-tooling. Review-инструмент (код не генерирует) → R6.0 не нужен, вне R14. Регулируется PSR_v1 R10.1 Блок 1 (marketplace-плагин).
**Конфликт-аудит интеграции:** DP1 (ADR-006 решение 2) — a11y-аудит Design plugin = дизайн-уровень, pre-code; Pa11y остаётся техническим a11y SoT (CLAUDE.md §5 п.3). DP2 (ADR-006 решение 3) — Design Critique = фаза 1 R2 (pre-code), не фаза-8 ревью; не подменяет `superpowers:requesting-code-review`. DP4 — наличие lifecycle-хуков проверяется при установке плагина. План `docs/superpowers/plans/2026-05-17-a4-design-tooling-integration.md`.
### 4.22. openapi-mcp-server — introspection OpenAPI/REST API (off-phase, integration-tooling)
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
**Назначение:** тест-сюита для LLM-промптов/агентов — ассерты (`equals`/`contains`/`llm-rubric`/cost/latency), регрессия, model comparison, red-teaming. Seed-пример — `docs/ml/promptfoo-example/`.
**Роль:** инструмент **#48**, раздел A11 (подкатегория LLM-интеграция). Закрывает пробел «тестирование LLM-промптов при разработке AI-фич».
**Конфликт-аудит (ML1):** promptfoo делает **платные** Anthropic API-вызовы → запуск только вручную / в CI (`npm run eval:llm`), **никогда** в lefthook-job / git-хук. API-ключ `ANTHROPIC_API_KEY` через env (PowerShell User scope), не коммитится. **ML2:** red-team promptfoo тестирует промпты — не дублирует D3 ToB/Semgrep (SAST кода). **Footprint-note:** promptfoo тяжёлый (~1090 транзитивных пакетов, нативный `better-sqlite3` — prebuilt-бинарник; 7 high-severity npm-audit в dev-дереве — dev-only, в app не поставляется).
**Координация:** PSR_v1 R10.1 Блок 1 note (v3.10). Не UI → вне R6.0/R6.1/R14.
**Статус установки:** verified — `promptfoo validate` на seed-конфиге → «Configuration is valid» (без платного вызова).
### 4.24. Data Scientist skill — классический ML-воркфлоу (off-phase, ml-ai-tooling)
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
**Источник:** вендоренный сторонний скил в `.claude/skills/data-scientist/SKILL.md` (`sickn33/antigravity-awesome-skills`; код MIT, контент **CC BY 4.0** — атрибуция в footer SKILL.md). Не через marketplace, не в `enabledPlugins` — паттерн mermaid-skill/CCPM.
**Категория:** off-phase, ml-ai-tooling. Раздел A11 карты.
**Пакет:**`datalayer/jupyter-mcp-server` — stdio MCP. **DEFERRED — НЕ установлен.**
**Категория:** off-phase, ml-ai-tooling. Раздел A11 карты.
**Назначение:** исполняемые Jupyter-ноутбуки (классический ML: реальное обучение моделей — вставка/прогон ячеек, чтение вывода, графики).
**Роль:** инструмент **#50**, раздел A11. **DEFERRED** (как Figma MCP #44): требует Python ML-окружения (pandas/scikit-learn/Jupyter), которого на native-Windows машине нет (политика минимального рантайма — без Docker), и нет конкретной модели для обучения. Зарегистрирован как pending-слот; устанавливается отдельной severable-задачей при появлении модели (см. «Deferred Task» в плане A11). При установке — entry в `.mcp.json`, узел `jupyter_mcp` на карте.
**Координация:** PSR_v1 R10.1 Блок 3 (MCP-серверы). Не UI → вне R6/R14.
**Источник:** self-authored standalone project-скил в `.claude/skills/process-modeling/` (`SKILL.md` + `references/bpmn.md`). Не вендоренный сторонний — свой; **линтуется** как остальные project-скилы (НЕ в `cspell.json``ignorePaths` / `.markdownlintignore` — конфликт-аудит LINT1).
**Категория:** off-phase, business-process. Раздел C10 карты.
**Назначение:** проектирование to-be модели процесса — BPMN 2.0 (пулы/дорожки/гейтвеи/события), карты процессов, customer-journey / value-stream, RACI-матрицы, state-машины.
**Роль:** инструмент **#52**, раздел C10 (срез «моделирование»). Рендер диаграмм делегирует скилу `mermaid`#37 (конфликт-аудит BPMN1 — mermaid рендер-SoT; process-modeling даёт нотацию/методологию, сам не рисует).
**Координация:** PSR_v1 R10.1 Блок 1 note (self-authored project-скил). Не UI → вне R6.0/R6.1/R14.
### 4.28. process-analysis — анализ бизнес-процессов (off-phase, business-process)
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
|---|---|---|---|---|---|---|---|---|
| #53 | process-analysis | skill | off-phase | business-process | «анализ as-is процесса (discovery из кода)» | self-authored project skill; ADR-009 граница с#55 | false | 2026-05-19 |
**Источник:** self-authored standalone project-скил в `.claude/skills/process-analysis/` (`SKILL.md` + `references/discovery.md`). Свой, не вендоренный; **линтуется** (LINT1).
**Категория:** off-phase, business-process. Раздел C10 карты.
**Назначение:** вскрытие as-is процесса — process discovery (реконструкция фактического процесса из кода Laravel: routes/jobs/`audit_*` таблицы), поиск узких мест, трассировка требование→процесс, метрики/KPI процесса.
**Роль:** инструмент **#53**, раздел C10 (срез «анализ и оптимизация»). Парный скил к process-modeling (тот проектирует to-be — этот вскрывает as-is).
**Пакет:**`czlonkowski/n8n-mcp` (MIT) — stdio MCP, workflow-automation сервер платформы n8n. **DEFERRED — НЕ установлен.**
**Категория:** off-phase, business-process. Раздел C10 карты.
**Назначение:** построение/запуск автоматизированных workflow платформы n8n.
**Роль:** инструмент **#54**, раздел C10 (срез «автоматизация»). **DEFERRED** (как Figma MCP #44, Jupyter MCP #50): стек Лидерры не содержит n8n — движок процессов = очередь Laravel (Redis) + события/джобы; принятие n8n как инфраструктуры — отдельное архитектурное решение (свой ADR), не выбор инструмента (конфликт-аудит N8N1). Зарегистрирован как pending-слот; `.mcp.json` не трогается в core-scope; устанавливается отдельной severable-задачей при принятии n8n (см. «Deferred Task» в плане C10).
**Координация:** PSR_v1 R10.1 Блок 3 (MCP-серверы). Не UI → вне R6/R14.
**Источник:** self-authored standalone project-скил в `.claude/skills/discovery-interview/` (`SKILL.md` + `references/jtbd-questions.md` + `evals/evals.json`). Свой, не вендоренный; **линтуется** (cspell+markdownlint, не в ignorePaths — как process-modeling/process-analysis, LINT1).
**Назначение:** структурированное интервью-discovery до проектирования. Режим FEATURE — JTBD-интервью заказчика, вскрывает проблему до решения, отдаёт discovery-brief в `brainstorming`. Режим SYSTEM — интервью-ориентация по мета-слою проекта (карта / CLAUDE.md / MEMORY / Открытые_вопросы / Tooling / git log).
**Роль:** инструмент **#55**. Собственная off-phase подкатегория discovery-tooling — не привязан к фазам тулчейна. Триггер-eval 20/20 (`.claude/skills/discovery-interview/evals/evals.json`).
**Конфликт-аудит (ADR-009, DI1–DI6):** разрез по слою-источнику с `process-analysis`#53 — тот вскрывает бизнес-процесс из app-кода, discovery-interview интервьюирует человека (FEATURE) и синтезирует мета-слой (SYSTEM). Хэндофф FEATURE → `brainstorming`. Проектный скил → Pravila §13.2, **не** §12.2 (карта Superpowers-скилов).
**Координация:** PSR_v1 R10.1 Блок 1 note (self-authored project-скил, как process-modeling/process-analysis). Не UI → вне R6.0/R6.1/R14.
**Источник:** Claude Code plugin, marketplace `anthropics/claude-plugins-official`, plugin `skill-creator@claude-plugins-official` (Anthropic Verified). Включён в `~/.claude/settings.json``enabledPlugins`.
**Назначение:** создание новых скилов с нуля, модификация и оптимизация существующих, измерение performance скила (eval / benchmark / variance-анализ), оптимизация `description` под точность триггеринга.
**Роль:** инструмент **#56**. Создание **standalone** проектных скилов (`.claude/skills/<name>/`).
**Конфликт-аудит:** SC1 — граница с plugin-dev:skill-development (#57): skill-creator для standalone проектных скилов, plugin-dev:skill-development — для скилов внутри разрабатываемого marketplace-плагина. SC2 — вендоренные (`mermaid`/`ccpm`/`data-scientist`) и self-authored (`audit-portal`/`regression`/`process-modeling`/`process-analysis`/`discovery-interview`) скилы модифицируются прямым Edit, не через skill-creator (он может предложить переписать как новый — потеря провенанса). SC3 — Anthropic Verified, провенанс чист.
**Координация:** PSR_v1 R10.1 Блок 1. Не UI → вне R6.0/R6.1/R14. ADR-010.
**Источник:** Claude Code plugin, marketplace `anthropics/claude-plugins-official`, plugin `plugin-dev@claude-plugins-official` (Anthropic Verified). Включён в `enabledPlugins`.
**Роль:** инструмент **#57**. Конструктор marketplace-плагинов целиком (структура / агенты / скилы / команды / хуки).
**Конфликт-аудит:** PD1 — для создания собственного marketplace-плагина; не для модификации вендоренного/self-authored (SC2). PD2 — `plugin-dev:skill-development` ↔ skill-creator #56: standalone скил → skill-creator, скил внутри плагина → plugin-dev. PD3 — `plugin-dev:hook-development` может сгенерировать хук — применяется правило HK1 (pre-check на коллизию), как для hookify #58.
**Координация:** PSR_v1 R10.1 Блок 1. Не UI → вне R6.0/R6.1/R14. ADR-010.
**Источник:** Claude Code plugin, marketplace `anthropics/claude-plugins-official`, plugin `claude-code-setup@claude-plugins-official` (Anthropic Verified). Включён в `enabledPlugins`. Skill `claude-automation-recommender`.
**Конфликт-аудит:** CCS1 — рекомендации фильтруются через R0 stack-gate + R10.1 (R0.6 hard-стопы — брендовое UI, ru-стек, уже формализованное); ничего не устанавливается без явного согласования с заказчиком.
**Координация:** PSR_v1 R10.1 Блок 1. Не UI → вне R6.0/R6.1/R14. ADR-010.
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
|---|---|---|---|---|---|---|---|---|
| #60 | context7 | mcp | off-phase | dev-support | «актуальная документация библиотек/SDK» | первый выбор для доков библиотеки | false | 2026-05-19 |
**Источник:** Claude Code plugin, marketplace `anthropics/claude-plugins-official`, plugin `context7@claude-plugins-official` (Anthropic Verified). Включён в `enabledPlugins`. MCP-tools `mcp__plugin_context7_context7__query-docs` / `resolve-library-id`.
**Категория:** off-phase, **dev-support**.
**Назначение:** актуальная документация библиотек / фреймворков / SDK / CLI — отдаёт upstream-доки, обходит cutoff training data (Laravel / Vue / Vuetify / Pest / React / Tailwind / Prisma и др.).
**Роль:** инструмент **#60**.
**Конфликт-аудит:** CTX1 — первый выбор для документации **известной библиотеки**; WebFetch — fallback на конкретный URL (README / внешний документ); WebSearch — поиск без знания URL/библиотеки. CTX2 — не trigger при поиске без библиотеки (события, статьи) — это WebSearch.
**Координация:** PSR_v1 R10.1 Блок 1. Не UI → вне R6.0/R6.1/R14. ADR-010.
### 4.36. finance plugin — финансы и бухгалтерия (off-phase, finance-tooling)
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
**Категория:** off-phase, **finance-tooling** — 15-я off-phase подкатегория. Домашний раздел карты — **C7** «Финансы — бухгалтерия и налоги» (primary), cross-ref **C6** «биллинг/тарификация».
**Назначение:** учёт и финансовая отчётность — сверка счетов, анализ отклонений, US-GAAP-отчёты (P&L/BS/CF), управление закрытием периода, проводки.
**Роль:** инструмент **#61**. Применимость к РФ-контексту: ✅ `reconciliation`/`variance-analysis` (C6); ⚠️ `financial-statements`/`close-management`/`journal-entry`/`journal-entry-prep` (US-GAAP — частично, у нас РСБУ); ❌ `sox-testing`/`audit-support` (not-applicable — нет SOX у частной РФ-компании). MCP-серверы (snowflake/databricks/bigquery) — **DEFERRED**, не стек проекта.
**Источник:** self-authored standalone project-скил в `.claude/skills/billing-audit/` (`SKILL.md` + `references/invariants.md` + `evals/evals.json`). Свой, не вендоренный; **линтуется** (cspell+markdownlint, не в ignorePaths — как process-*/discovery-interview, LINT1).
**Категория:** off-phase, **finance-tooling**. Раздел карты **C6** «Финансы — биллинг и тарификация».
**Источник:** self-authored standalone project-скил в `.claude/skills/ru-tax-accounting/` (`SKILL.md` + `references/ru-tax-context.md` + `evals/evals.json`). Свой, не вендоренный; **линтуется** (LINT1).
**Категория:** off-phase, **finance-tooling**. Раздел карты **C7** «Финансы — бухгалтерия и налоги».
**Назначение:** перевод billing-выручки (выход C6) в российский учётно-налоговый контекст — налоговые режимы (НДС/УСН), налогооблагаемое событие, маппинг выручка→база, выгрузки для бухгалтера. Закрывает РФ-gap US-GAAP-плагина finance #61.
**Роль:** инструмент **#63**. Не налоговая консультация; бухгалтерия компании ведётся вне dev-репо (1С/аутсорс). Реальный платёжный провайдер — DEFERRED (Б-1).
**Конфликт-аудит (ADR-013):** BT1 vs Pint #11 (трансформация vs форматирование); BT2 vs Larastan #12 (чинит vs находит — комплементарны); BT3 vs deptrac #43 (трансформация vs граф слоёв). Чистый PHP, 0 LLM.
**Координация:** PSR_v1 R10.1 Блок 1. Не UI → вне R6.0/R6.1/R14. ADR-013.
### 4.40. PHP Insights — метрики качества кода (off-phase, backend-tooling)
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
**Категория:** off-phase, **backend-tooling**. Раздел карты **A1**.
**Назначение:** коррелированный сквозной трейс работающего портала — request ↔ outgoing ↔ job ↔ query ↔ mail ↔ cache ↔ scheduled, в своём PostgreSQL.
**Роль:** инструмент **#67**. **DEFERRED-блокер:** native-Windows нет `pcntl`/`posix` (агент не запускается); OSS-версия без MCP (MCP только managed); hosted = риск 152-ФЗ. Активация — при Linux/боевом сервере (Б-1); доступ Claude через managed MCP (если приемлемо по 152-ФЗ) или Boost `database-query` по таблицам телеметрии (READ-ONLY).
**Конфликт-аудит (ADR-013):** BT7 ≠ Sentry #34 (коррелированный трейс vs ошибки/трейсбэки); BT8 ≠ Pail/Boost (сквозной трейс vs tail/снапшот).
**Координация:** PSR_v1 R10.1 Блок 3 (при активации — MCP). Не UI → вне R6.0/R6.1/R14. ADR-013.
**Категория:** off-phase, **infosec-tooling** — 17-я off-phase подкатегория. Раздел карты **A8** «Информационная безопасность».
**Назначение:** глубокая динамическая («боевая») проверка работающего портала — spider + active scan: обход аутентификации, инъекции (SQLi), XSS, проблемы сессий/CSRF на живых endpoint'ах.
**Роль:** инструмент **#68**. Постура — on-demand, READ-only сканер, цель по умолчанию **локальная копия** (127.0.0.1), бой — только по явной команде (IS8). **Установлен** (portable JRE 17 + ZAP 2.17.0 + MCP-аддон); MCP-аддон alpha (`mcp-alpha-0.0.1`) — API может меняться. Для MCP-режима нужен запущенный ZAP-daemon (см. `docs/security/zap-setup.md`).
**Конфликт-аудит (ADR-014):** IS1 ≠ Semgrep #25 (динамика — бьёт работающий портал vs статика — читает код); IS2 ≠ Nuclei #69 (глубина — логика приложения vs широта — известные дыры; комплементарны).
**Координация:** PSR_v1 R10.1 Блок 3 (MCP, при установке). Не UI → вне R6.0/R6.1/R14. ADR-014.
### 4.44. Nuclei — широкое сканирование известных уязвимостей (off-phase, infosec-tooling)
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
**Источник:**`projectdiscovery/nuclei` v3.8.0 (MIT, провенанс ProjectDiscovery — IS9-вет), Go-бинарь `bin/nuclei.exe` (gitignored, машинно-локальный) + 13 060 шаблонов. **CLI-инструмент, НЕ MCP-сервер** (nuclei не говорит на MCP; обёртка = доп. attack surface). Доку — `docs/security/nuclei-setup.md`.
**Категория:** off-phase, **infosec-tooling**. Раздел карты **A8**.
**Назначение:** широкая быстрая проверка по YAML-шаблонам — известные CVE, дефолтные креды, открытые двери, утечки конфигов, слабый TLS, fingerprint стека.
**Роль:** инструмент **#69**. **УСТАНОВЛЕН + verified** (smoke 1057 запросов к живому порталу, скан завершён, 0 matched на теге tech). Квирки native-Windows: цель **127.0.0.1** (не `localhost` — резолвер), `-rate-limit 20 -c 5` для однопоточного dev-сервера. Вызывается по требованию скилом #73; цель по умолчанию локальная (IS8).
**Конфликт-аудит (ADR-014):** IS2 ≠ ZAP #68 (широта vs глубина — комплементарны). CLI не MCP → `.mcp.json`-блок и l1-watcher alias не нужны (как gitleaks #8 / squawk #15 / Trivy #26).
**Координация:** PSR_v1 R10.1 Блок 1 (CLI-инструмент). Не UI → вне R6.0/R6.1/R14. ADR-014.
**Категория:** off-phase, **infosec-tooling**. Раздел карты **A8**.
**Назначение:** STRIDE под наш портал (не generic) — карта точек входа (login/2FA/recovery, supplier webhooks, deals API, админка, impersonation, CSV-импорт; заземлён в `app/routes/`), что меняется при выходе в интернет (контур своих → произвольный внешний актор), приоритизация защиты. Результат — `docs/security/threat-model-<date>.md`.
**Роль:** инструмент **#72**. Активен.
**Конфликт-аудит (ADR-014):** IS6 ≠ Trail of Bits `audit-context-building`#39 (наш портал + STRIDE + going-public vs generic deep code-audit).
**Координация:** PSR_v1 R10.1 Блок 1. Не UI → вне R6.0/R6.1/R14. ADR-014.
**Категория:** off-phase, **marketing-tooling** — 18-я off-phase подкатегория (после UI-пул, инфраструктура, debug-runtime, architecture-tooling, audit-security, project-management, design-tooling, integration-tooling, ml-ai-tooling, business-process, discovery-tooling, authoring-tooling, dev-support, finance-tooling, backend-tooling, infosec-tooling, discovery-tooling). Раздел карты **C1** «Маркетинг и лидогенерация».
**Роль:** инструмент **#74**. **Первичный решатель** маркетинговых задач C1 — инвокируется первым при любой задаче контента, кампании, SEO, email, конкурент-брифа. Остальные узлы C1 — специализация или материал поверх него.
**Конфликт-аудит (ADR-015):** MKT1 — C1 vs C2 «Продажи»: `sales`/`small-business` плагины Anthropic не берём (C2-пересечения); MKT2 — `performance-report` (#74) vs `metrics-review` (#42): маркетинг = CAC/конверсия/источники каналов, PM = MRR/retention/adoption — разные объекты; MKT3 — `seo-audit` (#74) vs SEO-скилы #75:#74 — решатель (воркфлоу), #75 — материал (фреймворки); MKT4 — визуал → A4, не C1; MKT5 — email-copy vs отправка (Unisender #83 DEFERRED).
**Координация:** PSR_v1 R10.1 Блок 1 (plugin). Не UI → вне R6.0/R6.1/R14. ADR-015.
**Источник:**`coreyhaines31/marketingskills` (MIT, Copyright 2025 Corey Haines; 30k★, 4.9k форков, v2.1.0 последний коммит 21.05.2026). 40 скилов: CRO, копирайтинг, SEO, ai-seo, programmatic-seo, ad-creative, cold-email, lead-magnets, pricing, marketing-psychology. Чистый markdown — исполняемого кода в `skills/` нет. IS9-вет PASS-with-conditions (`docs/security/marketing-vet.md` C1-1): вендорить только `skills/` + `LICENSE`; validate-bash-скрипты в проект не включать; `ATTRIBUTION.md` обязателен. **Вендоренный** в `.claude/skills/marketingskills/` (иммунитет к потере апстрима — модель data-scientist #49 / mermaid #37 / ccpm #41).
**Категория:** off-phase, **marketing-tooling**. Раздел карты **C1**.
**Роль:** инструмент **#75**. **Материал/резерв-библиотека** (модель UPM #31: «резерв-библиотека, не решатель»). Решатель — marketing plugin #74. Не выдаёт готовый ответ самостоятельно — используется как источник фреймворков при углублённой работе с #74. **MKT10** — исключить из lefthook markdownlint+cspell (как MK1 mermaid / CC1 ccpm).
**Источник:** self-authored standalone project-скил `.claude/skills/marketing-ru/` (`SKILL.md` + `references/rf-channels.md` + `evals/evals.json`). Модель billing-audit #62 / threat-model #72 / pdn-152fz-audit #71. **Линтуется** (не в ignorePaths, в отличие от вендоренного #75). Eval триггеров аналогично discovery-interview (20/20 цель).
**Категория:** off-phase, **marketing-tooling**. Раздел карты **C1**.
**Роль:** инструмент **#77**. Закрывает РФ-специфику маркетинга, которой нет ни у одного Anthropic-плагина: playbook каналов РФ (Яндекс.Директ/Метрика/VK/Telegram), конверсия реального лендинга Лидерры (заземлён в `лендинг/TZ_landing_v1_0.md`), маркетинг в рамках 152-ФЗ — согласия на рассылки, cross-ref pdn-152fz-audit #71 (MKT9).
**Конфликт-аудит (ADR-015):** MKT9 — согласия на маркетинговые рассылки + cross-ref #71 (ПДн-152ФЗ аудит); MKT1 — only C1 demand-gen, не продажи C2.
**Координация:** PSR_v1 R10.1 Блок 1 (self-authored project-скил). Не UI → вне R6.0/R6.1/R14. ADR-015.
**Источник:**`chigwell/telegram-mcp` (Apache-2.0; IS9-вет `docs/security/marketing-vet.md` C1-4 PASS-with-conditions). MTProto user-account через Telethon. 259 коммитов, ~1.1k★, активный зрелый проект (chigwell primary + l1v0n1 contributor). Хост — только Telegram-серверы через Telethon. Защита path-traversal + sanitize_user_content. Верифицированный код (`main.py` + `runtime.py`).
**Категория:** off-phase, **marketing-tooling**. Раздел карты **C1**.
**Роль:** инструмент **#80**. Постинг в Telegram-каналы Лидерры (маркетинговые анонсы, контент). IS9-условия C1-4: `TELEGRAM_SESSION_STRING` — только в `.env` на сервере (не в git/логах); **выделенный аккаунт** (не основной бизнес-аккаунт); режим READ-тяжёлый (отправка только через явное действие оператора); ротация SESSION_STRING при компрометации.
**Конфликт-аудит (ADR-015):** MTProto user-account vs bot-token — операционный риск (не проблема кода); митигируется выделенным аккаунтом и .env-изоляцией.
**Координация:** PSR_v1 R10.1 Блок 3 (MCP). Не UI → вне R6.0/R6.1/R14. ADR-015.
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
|---|---|---|---|---|---|---|---|---|
| #81 | Postiz | mcp | off-phase | marketing-tooling | «планирование и публикация в 30+ соцсетей включая VK и Telegram, контент-календарь» | ADR-015 (MKT7 AGPL self-host без дистрибуции; покрывает VK-постинг вместо отброшенного VK standalone MCP) | false | 2026-05-22 |
**Источник:**`gitroomhq/postiz-app` (~30k★, активный; AGPL-3.0, Copyright Nevo David 2025) + MCP-клиент `antoniolg/postiz-mcp`. IS9-вет `docs/security/marketing-vet.md` C1-5 PASS-with-conditions. **AGPL-3.0** — приемлема для паттерна «внутренний self-host без дистрибуции» (FSF-трактовка §13: private internal use не триггерит обязательство публиковать исходники; мы не распространяем — запускаем у себя). Лицензия `antoniolg/postiz-mcp` не верифицирована → проверить перед активацией MCP-клиента.
**Категория:** off-phase, **marketing-tooling**. Раздел карты **C1**.
**Роль:** инструмент **#81**. Self-hosted планировщик публикаций в 30+ площадок (VK, Telegram, LinkedIn и др.). **Покрывает VK-постинг** (закрывает отказ от VK standalone MCP — `ssm82/full-vk-mcp` 0★ с правом тратить бюджет). AGPL-условия: использовать as-is без модификаций кода; сохранить copyright notice на сервере; не распространять сборки. Boot self-host — отдельный шаг (откладывается до явной потребности); узел зарегистрирован сейчас.
**Источник:**`dataforseo/mcp-server-typescript` (~204★, официальный DataForSEO). SERP/ключи/бэклинки, включая данные по Яндекс РФ-выдаче. **DEFERRED** — требует платного аккаунта DataForSEO. Активация после Б-1 (регистрация ООО + оплата). Единственный отложенный SEO-данных слот (Ahrefs OSS deprecated; Semrush — платный западный).
**Категория:** off-phase, **marketing-tooling**. Раздел карты **C1**.
**Конфликт-аудит (ADR-015):** SEO-данные #82 vs Wordstat #79 (локальная частотность) — комплементарны; #82 даёт SERP + бэклинки + более широкую аналитику.
**Координация:** PSR_v1 R10.1 Блок 3 (MCP, DEFERRED). Не UI → вне R6.0/R6.1/R14. ADR-015.
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
|---|---|---|---|---|---|---|---|---|
| #83 | Unisender Go MCP | mcp | off-phase | marketing-tooling | «массовые email-рассылки через Unisender Go API» | ADR-015 (DEFERRED — нет готового upstream MCP; своя обёртка по потребности) | true | 2026-05-22 |
**Источник:** нет готового качественного MCP-сервера для Unisender Go (только платный Composio-коннектор + клиентские библиотеки без MCP-интерфейса). **DEFERRED** — по потребности написать тонкий MCP-wrapper над API Unisender Go (наш текущий email-сервис для транзакционных писем). Граница MKT5: `email-sequence` (#74) = черновики контента кампаний; **отправка** = этот wrapper #83.
**Категория:** off-phase, **marketing-tooling**. Раздел карты **C1**.
**Роль:** инструмент **#83**. **DEFERRED** (pending-слот — нет upstream-сервера). Unisender Go уже используется в продуктовом коде (транзакционные письма); маркетинговые рассылки через тот же API — логичное расширение. Активация: по потребности массовых маркетинговых рассылок. IS9-вет на wrapper — при создании.
**Конфликт-аудит (ADR-015):** MKT5 — транзакционный email портала (продуктовый код) vs маркетинговые рассылки (этот wrapper) — разные потоки, разные compliance-обязательства (152-ФЗ согласия — cross-ref #77 marketing-ru + #71 pdn-152fz-audit).
**Координация:** PSR_v1 R10.1 Блок 3 (MCP, DEFERRED). Не UI → вне R6.0/R6.1/R14. ADR-015.
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
|---|---|---|---|---|---|---|---|---|
| #86 | graphifyy | cli | off-phase | knowledge-graph-tooling | «knowledge graph», «как устроен наш модуль X», «где наша функция Y вызывается», «cross-layer concept query», «структурные связи между спеком и кодом» | ADR-017 (граница ↔ context7 #60 / Boost #10 / openapi-mcp #47 / Sentry MCP #34 / adr-kit #36 / mermaid #37) | false | 2026-05-27 |
**Источник:** npm-пакет `graphifyy` v0.8.20+, бинарь `graphify.exe`. Установка через `uv tool install graphifyy` (Python-based CLI, runs as binary). User-level skill `~/.claude/skills/graphify/SKILL.md` (через `graphify install --platform claude`). Backend семантической экстракции: GEMINI_API_KEY / GOOGLE_API_KEY (если есть) ИЛИ fallback на Claude Code subagent dispatch (используется в Лидерре — нет Gemini-ключа). **НЕ читает** ANTHROPIC_API_KEY, OPENAI_API_KEY, Ollama API.
**Категория:** off-phase, **knowledge-graph-tooling** (19-я подкатегория, после marketing-tooling #74–#83).
**Роль:** инструмент **#86**. Knowledge graph всего портала Лидерры (docs+config+code) для cross-layer навигации. Spike `spike/graphify-2026-05-27` отработал три фазы (docs/ → .claude/ → app/) с воспроизводимой методологией «subfolder + `graphify merge-graphs`». Ultimate combined граф: 6305 узлов / 6753 рёбер / 1009 communities (93% EXTRACTED / 7% INFERRED). Артефакты `graphify-out/{graph.json,GRAPH_REPORT.md,graph.html,cache/}` в CWD откуда запущен — **`graphify-out*/` обязательно в `.gitignore`**.
**Активация:** explicit `/graphify <команда>` (query / path / explain / update / build), не проактивно. Strict gate: если уже существует `graphify-out/graph.json` и вопрос natural-language — fast-path сразу к `graphify query`, не пересборка.
**Стратегия обновлений:**
- **Manual `/graphify --update`** — единственный безопасный режим. AST-only для code-изменений (бесплатно, deterministic), LLM-semantic для doc/MD-изменений (через subagent dispatch, дорого).
- **Auto-update post-commit hook отложен** (см. ADR-017 §«Стратегия обновлений»). Spike-попытка 27.05 разнесла граф 6305 → 41586 узлов (38 МБ bloat) — `graphify update .` от широкого scope подхватил `tools/` + root-level .mjs за пределами трёх фаз. Откат через re-merge phase-бэкапов восстановил canonical. Перед auto-wire-in: спроектировать узкий scope + exclude pattern (vendor/, tools/, node_modules/), узкий manifest, smoke-test.
**Координация:** PSR_v1 R10.1 (CLI off-phase, не UI → вне R6.0/R6.1/R14); R15.6 +knowledge-graph-tooling в список off-phase подкатегорий. ADR-017.
**Ollama compliance:** Ollama установлен в проекте для 152-ФЗ-чувствительных задач (локальный LLM без отправки в Anthropic), но graphify Ollama НЕ использует — два независимых инструмента.
**Роль:** инструмент **#88**. MCP-сервер `exa-mcp-server` (exa-labs, READ-ONLY): `web_search_exa` (находит концептуально близкое, что keyword-поиск пропускает) + `web_fetch_exa` (страница по URL). Слой «обнаружение источников по смыслу» в research chain L17. Ключ `EXA_API_KEY` только в env (платный API).
**Категория:** off-phase, research-tooling — 20-я off-phase подкатегория (внешние MCP веб-разведки). Не UI → вне R6.0/R6.1/R14 PSR_v1. PSR_v1 R10.1 Блок 3. Gate read_only (commit `bfc1f575`).
| 29 | **pg_anonymizer** (расширение PostgreSQL) ✅ прод 22.05.2026 | `CREATE EXTENSION anon` | Compliance | Маскирование ПДн в dev/staging-дампах. Правило §5.1 правил Claude (`+7XXXXXXXXXX`, `***@***`) |
> Нумерация 25–29 — это глобальные индексы в порядке введения. Активных в финале — 28 (см. §0): из 29 номеров минус #1 (PostgreSQL MCP) — заменён Boost'ом.
### 5.1. Атрибуты узлов фазы 3 (per ADR-011)
Структурированный реестр 9-атрибутов для phase-3 nodes #25–#29 (per ADR-011, см. §0.1). Phase-3 tools — pre-production (триггер фазы ~спринт 12 per CLAUDE.md §6); registry-known but not yet runtime-installed. `dormant=false` (field semantics: installed-but-disabled, not «not-yet-installed»).
#### #25 Semgrep + Semgrep MCP
**Атрибуты:**
| id | name | kind | phase | subcategory | triggers | boundaries | dormant | last-touched |
**Статус:** ✅ установлен на боевом `liderra.ru` 22.05.2026 (anon 3.0.13, Rust/pgrx — собран из исходников; нет готового пакета). Загрузка по требованию (`LOAD 'anon'`), НЕ db-wide preload — портал не замедляется. Установка/использование — [`docs/security/pgaudit-anonymizer-setup.md`](security/pgaudit-anonymizer-setup.md).
---
## 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`. Не оставлять оба активными |
| 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 — выше всех)
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).
| **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. |
| 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 |
> **Путь к файлу:** `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. ✅ выполнено на боевом `liderra.ru` 22.05.2026 (см. `docs/security/pgaudit-anonymizer-setup.md`).
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
Не входят в 35 формализованных позиций тулчейна (см. §12). Ставятся отдельно для DevOps-роли. На Windows — `yc` и `terraform` через скачивание `.zip` или `winget`.
---
## 12. Что вне реестра формализованных позиций (инфраструктура)
Эти 7 пунктов критичны для проекта, но используются DevOps, не Claude. Поэтому в основной реестр не входят, но фиксирую для полноты:
| Инструмент | Зачем |
|---|---|
| Yandex Cloud CLI (`yc`) | Провижининг по Прил. К |
| 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. |
| **v2.0** | 15.05.2026 | **Ruflo big-bang:** §0 +ruflo orchestration layer row (35 → 55: 35 формализованных позиций + 20 ruflo plugins); новая §4.10 «Orchestration layer (ruflo)». Major bump reflects architectural inversion — ruflo встаёт entry-point'ом уровня −1 над 8-уровневой иерархией Лидерры (см. CLAUDE.md §1 priority chain). ruflo v3.7.0-alpha.38+ + 20 plugins (`@claude-flow/*`, IPFS-registry — полный CID в §4.10), ~210 MCP tools, 60+ agents (Queen-led: Raft/Byzantine/Gossip), HNSW vector memory, SONA routing. Категория **orchestration** — четвёртая off-phase подкатегория (отдельная от UI-пула, infrastructure, debug-runtime). §4.9 +note «Категории off-phase tools (v2.0)». Runtime state 2026-05-15: scaffold installed + MCP server в `.mcp.json` (7-й MCP); daemon/swarm/memory НЕ активны — opt-in MCP tool, не enforcing overlord. Связано: spec/plan 2026-05-15 (commits `e55572e`/`18c4463`), Pravila v1.14 (`9c3057b`), PSR_v1 v3.0 (`d30cbeb`), CLAUDE.md v2.0 (`5df88a1`). v1.17 наследие — §4.8 Sentry MCP + §4.9 Redis MCP. |
*Прил. Н v2.26 от 18.06.2026 — Pravila v1.45 +§18 дисциплины работы агента (A/D1/D2): cross-ref обновлён Pravila v1.44+→v1.45+; счётчики инструментов не изменились (87 формализованных / 107 total); поведенческие правила без новых узлов. Связано: PSR_v1 v3.25, CLAUDE.md v2.47.*
*Прил. Н v2.7 от 17.05.2026 — A6-расширение deptrac: формализован #43 deptrac (Composer dev-dep `deptrac/deptrac` v4.6.1, BSD-3) — архитектурный fitness-гейт, lefthook job 10, §4.18 новый. 43 формализованных позиции (29 по фазам + 13 off-phase + 1 PG MCP) + 20 ruflo = 63 total. Связано: PSR_v1 v3.7, Pravila v1.21, CLAUDE.md v2.7.*
*Прил. Н v2.6 от 17.05.2026 — C9 project-management: формализованы #41 CCPM + #42 product-management (§4.16/§4.17), новая 7-я off-phase подкатегория. 42 формализованных позиции (29 по фазам + 12 off-phase + 1 PG MCP) + 20 ruflo = 62 total. Связано: PSR_v1 v3.6, Pravila v1.20, CLAUDE.md v2.6.*
*Прил. Н v2.5 от 17.05.2026 — фактическая правка #40 Security Guidance: блокирующий PreToolUse-хук (`sys.exit(2)`, не warn-only) + SG2 Windows-починка python3-резолва. Связано: PSR_v1 v3.5, Pravila v1.19, CLAUDE.md v2.5.*
*Прил. Н v2.4 от 17.05.2026 — D3 audit-security: формализованы #39 Trail of Bits Skills + #40 Security Guidance (§4.14/§4.15), новая 6-я off-phase подкатегория. 40 формализованных позиций (29 по фазам + 10 off-phase + 1 PG MCP) + 20 ruflo = 60 total. Связано: PSR_v1 v3.4, Pravila v1.18, CLAUDE.md v2.4.*
*Прил. Н v2.3 от 17.05.2026 — A6 architecture-tooling: формализованы #36 adr-kit + #37 mermaid-skill + #38 architecture-patterns (§4.11–4.13), новая пятая off-phase подкатегория. 38 формализованных позиций (29 по фазам + 8 off-phase + 1 PG MCP) + 20 ruflo = 58 total. Связано: PSR_v1 v3.3, Pravila v1.17, CLAUDE.md v2.3.*
*Прил. Н v2.2 от 16.05.2026 — §4.10 реколлаж: ruflo переописан из «entry-point иерархии» в «advisory/automation-подсистему» (декларация приведена к рантайму). Связано: Pravila v1.16, PSR_v1 v3.2, CLAUDE.md v2.2.*