Files
brain/project-files/docs/Tooling.template.md
T
Дмитрий ed9bade863 feat: extract brain artifacts from Liderra + ~/.claude/
project-files/:
- CLAUDE.md.template (266 lines)
- docs/Pravila_raboty_Claude.template.md (720 lines)
- docs/Plugin_stack_rules.template.md (916 lines)
- docs/Tooling.template.md (613 lines)
- docs/CHANGELOG_claude_md.template.md
- docs/visualizations/hooks-skills-plugins-map.html (3122 lines)
- .mcp.json.template (universal: playwright/github/semgrep; laravel-boost dropped)

user-level-files/:
- hooks/ (10 Python files: skill-marker, skill-check, economy-* x8)
- settings-fragment.json (enabledPlugins + permissions + hooks only)
- marketplaces.json (3 sources)
- plugins-manifest.json (4 plugins pinned with gitCommitSha)
- mcp-user.template.json (magic with <<MAGIC_API_KEY>> placeholder)

Gitleaks scan: 0 findings.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 00:46:51 +03:00

614 lines
88 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Приложение Н — Tooling, скиллы и плагины Claude (v8.3)
**Дата:** 10.05.2026 (поздний вечер)
**Версия:** 1.15 (закрытие 4 находок третьего аудита правил использования плагинов и скилов в части, касающейся Tooling: **P1-03/04/05 — sync cross-refs шапки** на актуальные версии связанных документов после bump'ов CLAUDE.md v1.85 → v1.86 и PSR_v1 v1.6 → v1.7 («Pravila v1.9+»→«v1.10+», «PSR_v1 v1.5+»→«v1.7+», «CLAUDE.md v1.84+»→«v1.86+»; «+»-нотация сохранена как forward-compat); **§11.5/§12 — формулировка «28 инструментов» → «33 формализованных позиции»** (исторически фраза «28» оставалась в DevOps-разделе с эпохи v1.0, но смысловое назначение фразы — «реестр Лидерры», который теперь имеет 33 формализованных позиции; §13 история версий и changelog'и сохранены без правки — это снимки эпох и часть истории). Координация — PSR_v1 v1.6 → v1.7 + CLAUDE.md v1.85 → v1.86. Pravila v1.10 — без правок. Через `/claude-md-management:claude-md-improver`.)
**Предыдущая версия:** 1.14 (закрытие 3 находок второго аудита: §10.3 шаг 2 sync с §4.1, §13 +v1.13 +v1.14 entries, §7 priority chain +Tooling explicit slot 2b).
**Адресат:** Claude + разработчики проекта Лидерра
**Назначение:** единый источник истины по 33 формализованным позициям тулчейна (29 «активных» номеров фаз + 3 off-phase инструмента-резерв в категориях UI-пул и инфраструктура — UPM, 21st, claude-md-management; +1 заменённый PG MCP исторически), скиллам Claude Code, MCP-серверам и плагинам, используемым в проекте. Зафиксирован выбор, объяснено, что заменяет что, и в какой фазе вводится каждый инструмент.
> **Связано:**
>
> - `Pravila_raboty_Claude_v1_1.md` v1.10+ — §11 «Superpowers override», §12 «Superpowers hard rule», §12.3 SoT для exclusions, §13 «paired stack + расширенный пул UI-инструментов» + claude-md-management как off-pool, §13.6 hard-rule tier-таблица, §13.9 hard-link на R10 PSR_v1, §13.10 hard-link на R14 PSR_v1, §4.8 «Шифры приложений» (Н занят)
> - `Plugin_stack_rules_v1.md` v1.7+ — координация paired-stack ядра (Superpowers + Frontend Design) + расширенного пула (UPM + 21st Magic MCP) + инфраструктурного плагина (claude-md-management) + R15 motion-системы (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка)
> - `CLAUDE.md` (корень репозитория) v1.86+ — оперативная карта инструментов с приоритетом правил (уровень 0 = Pravila §12, уровень 3 = Plugin_stack_rules_v1); §3.3 +#31 UPM +#32 21st +#33 claude-md-management; §5 п.5 свёрнут со ссылкой на PSR_v1 R14; §5 п.11 cross-ref на Pravila §12.3 SoT; §5 п.12 motion-runtime denylist; §6 счётчик 33 (3 off-phase tools)
> - `README_АРХИВ_v8_4.md` v8.4+ — состав архива
**Что нового в v1.13 (10.05.2026):**
- **§7 «Source of truth» обновлён с 5-уровневой на 7-уровневую цепочку.** Добавлен `Plugin_stack_rules_v1.md` (PSR_v1) уровнем 3 — координирующий слой между paired-stack ядром (Superpowers + Frontend Design) и расширенным UI-пулом (UPM + 21st). Также явно вынесен Pravila §12 (Superpowers hard rule) уровнем 0 — выше всех остальных параграфов Pravila. Sync с CLAUDE.md §1. Закрывает audit находку «Tooling §7 не упоминает PSR_v1 в иерархии» (1 из 14 находок).
- **§4.7 (новый) — #33 claude-md-management plugin** формализован как off-phase инфраструктурный инструмент. Был фактически включён в `~/.claude/settings.json` (`enabledPlugins.claude-md-management@claude-plugins-official=true`) с момента появления требования CLAUDE.md §5 п.10 «правки CLAUDE.md только через плагин» — но до v1.13 без формализации в реестре. Теперь имеет номер #33 (по аналогии с UPM #31 и 21st #32 в v1.12), при этом в **отдельной категории** (инфраструктурная, не UI) — поэтому не попадает под Pravila §13 расширенного UI-пула и не проходит R6.0/R6.1 фильтр / R14 pipeline. Закрывает audit находку «5-й включённый плагин без номера в реестре».
- **§6 «Конфликты и решения» расширен с 5 до 10 строк.** Добавлены 5 новых конфликтов из PSR_v1 v1.4: (6) UPM ↔ FD на одной фазе, (7) 21st ↔ существующий Vuetify-компонент, (8) 21st ↔ брендовый App*-компонент, (9) framer-motion ↔ motion-v, (10) UPM ↔ 21st на одной фазе. Закрывает audit находку «Tooling §6 застрял на v1.0».
- **§4.6 — settings.json → ~/.claude.json:** уточнено, что API-ключ 21st хранится именно в `~/.claude.json`, **не** в `~/.claude/settings.json` (отдельный файл без секретов). При случайном попадании в репо ротация — через 21st.dev dashboard. Закрывает audit находку «текстовая неточность в комментарии безопасности».
- **§0 сводка обновлена:** добавлена строка «off-phase tools» с 3 инструментами (UPM #31, 21st #32, claude-md-management #33). Итого формализованных позиций: **33** (19/29 активных по фазам + 3 off-phase + 1 заменённый PG MCP исторически).
- **Связано:** Pravila v1.8 → v1.9 (§12.3 SoT, §13.2 +claude-md-management как off-pool, §13.6 hard-rule tier, §0 scope-метка); PSR_v1 v1.4 → v1.5 (R10.1 на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер, R0.1 scope); CLAUDE.md v1.83 → v1.84 (§1 scope, §3.3 +#33, §5 п.5 свёрнут, §5 п.11 cross-ref, §6 счётчик 33).
**Что было в v1.12 (10.05.2026):**
- **#31 UI UX Pro Max (skill, `nextlevelbuilder/ui-ux-pro-max-skill`) формализован как «инструмент-резерв вне фаз».** Был фактически включён в `~/.claude/settings.json` (`enabledPlugins.ui-ux-pro-max@ui-ux-pro-max-skill=true`) до v1.12 без формализации. Теперь зафиксирован: роль = резерв-библиотека (50+ стилей, 161 палитра, 99 UX-гайдлайнов, 25 типов графиков, 10 стеков); активация — только через PSR_v1 v1.4 R14.3 pipeline (фаза 2 R2 как fallback к FD ИЛИ фаза 1 R2 как «третий вариант» в R12 архитектурном). Никогда не решатель (R10.2 PSR_v1). Не закрывает задачу (R7). Обязательный стек-фильтр R6.0 PSR_v1 (срезать React/Next/Tailwind/shadcn материалы) + hard-override Forest R6.1. См. §4.5 ниже.
- **#32 21st.dev Magic MCP (`magic` MCP-сервер) формализован как «инструмент-резерв вне фаз».** Был фактически подключён в `~/.claude.json` (с API-ключом, npm-пакет `@21st-dev/magic@latest`) до v1.12 без формализации. Tools: `mcp__magic__21st_magic_component_builder`, `_inspiration`, `_refiner`, `logo_search`. Роль = генератор стартовых шаблонов для UI-компонентов, отсутствующих в Vuetify и `resources/js/components/`. По умолчанию выдаёт **React + Tailwind + shadcn** — обязательный полный pipeline R14.4 PSR_v1: pre-check R0.6 (брендовый App*? Vuetify-эквивалент? существующий компонент? — все три «нет» обязательно) → R6.0 фильтр (JSX→Vue SFC, Tailwind→utility-CSS, shadcn→Vuetify) → R6.1 hard-override (палитра/шрифты/иконки → Forest, Lucide) → FD адаптация → возврат в фазу 5 R2 stack-flow. Никогда не решатель. Не закрывает задачу. Pa11y обязателен на deployable (R7). См. §4.6 ниже.
- **Структура §4 обновлена:** добавлены §4.5 «Резерв-библиотека UI — UI UX Pro Max» и §4.6 «Генератор шаблонов — 21st.dev Magic MCP». Оба не привязаны к фазе по тулчейну (post-MVP инструменты-резерв).
- **§9 «Что НЕ ставим» дополнен разделом «Motion runtime библиотеки» (R15 PSR_v1 v1.4):** framer-motion (R15.1 hard-запрет, React-only), motion-v (R15.2 условно по 4 триггерам), gsap, anime.js, react-spring (R15.1-аналог, React-only), lottie-web, popmotion, @motionone/dom — все под R0.6 пункт 11 hard-стоп. Default motion stack: Vue native `<Transition>` + Vuetify transitions + CSS @keyframes + View Transitions API.
- **Сводка §0:** 28 «активных» номеров фаз → 29 номеров фаз (как было в v1.10/v1.11) + 2 формализованных «вне фаз» в v1.12 (UPM + 21st Magic MCP) = **31 формализованных позиций тулчейна** (но активных «по фазе» считаются только 19 из 29 на текущий момент; UPM + 21st — *off-phase tools*).
- **Связано:** Pravila v1.7 → v1.8 (§13 расширен, §13.10 hard-link на R14); CLAUDE.md v1.82 → v1.83 (§3.3 + новые строки, §5 п.5 расширен, §5 п.12 motion-runtime новый); PSR_v1 v1.3 → v1.4 (R6/R6.1/R10/R11/R0.6/R13/R14/R15).
**Что нового в v1.10 (09.05.2026):**
- **#30 Frontend Design plugin (Anthropic) добавлен в фазе 2 (paired stack со Superpowers).** Запрет CLAUDE.md §5 п.5 снят 09.05.2026 по явному решению заказчика. Координация двух плагинов вынесена в `docs/Plugin_stack_rules_v1.md` (10 правил: gate, классификация, фазы UI-фичи, разделение TDD/визуал, ревью по аспекту, стек-фильтр Vue+Vuetify, gate готовности, тай-брейкеры). 8 ранее найденных конфликтов между плагинами закрыты патчами. Установка через `~/.claude/settings.json`: `extraKnownMarketplaces` + `enabledPlugins.frontend-design@anthropics-claude-plugins=true`. Обязательный стек-фильтр (Правило 6 Plugin_stack_rules_v1): Vue 3 + Vuetify 3, отфильтровывать React/Tailwind/shadcn/JSX. A11y технический остаётся за Pa11y (CLAUDE.md §5 п.3); Frontend Design покрывает только a11y-принципы. Активных инструментов фазы 2: 6 → 7. Всего активных: 18 → 19 из 28 → 29 номеров.
- **Структура §4 обновлена:** добавлен §4.4 «Доменный слой UI — Frontend Design plugin». Ранее §4 (фаза 2) состоял из §4.1 Superpowers + §4.2 Frontend-инструменты + §4.3 Histoire. Теперь — §4.1 Superpowers + §4.2 Frontend-инструменты + §4.3 Histoire + §4.4 Frontend Design plugin.
**Что было в v1.6 (08.05.2026 поздний вечер):**
- **#15 squawk v2.51.0 установлен** (npm-wrapper `squawk-cli` + бинарь скопирован в `bin/squawk.exe`, паттерн как у gitleaks/lychee). Конфиг `.squawk.toml` в корне отключает 9 правил: 5 bootstrap-неприменимых (require-timeout-settings, prefer-robust-stmts, require-concurrent-index-creation, constraint-missing-not-valid, adding-foreign-key-constraint) и 4 дизайнных (prefer-identity, prefer-text-field, prefer-bigint-over-int, prefer-bigint-over-smallint). Smoke-test на `db/schema.sql` — 0 issues с конфигом. Pre-commit хук в `lefthook.yml` (job 7) на staged `*.sql`. npm-скрипт `npm run lint:sql`.
- **#16 pgFormatter v5.9 установлен** (Perl-скрипт + lib/ из GitHub Releases распакованы в `bin/pgFormatter/`, запуск через Cygwin Perl 5.42.2 из Git for Windows). **Без pre-commit хука auto-fix** — diff против db/schema.sql 3255 строк (pgFormatter переписывает UPPERCASE→lowercase для типов, плотный одностроковый стиль для колонок, перетасовывает inline-комментарии). Стиль schema.sql ручной (выровненные колонки, ASCII-разделители) — авто-fix недопустим. Доступ через npm-скрипты `npm run format:sql:check` (dry-run + diff) и `npm run format:sql` (пишет в `db/schema.sql.formatted` для review, не перезаписывает source).
- **Активных инструментов фазы 1: 13 из 17.** Установлено в фазе 1: #10 Boost, #11 Pint, #12 Larastan, #13 Roave/SA, #14 IDE Helper, #15 squawk, #16 pgFormatter, #18 Pest 4. **Не применимо**: #17 pg_partman (Windows native стек не имеет PG-расширения, заменён ручным cron'ом). Фаза 1 по тулчейну **закрыта** — следующий триггер (фаза 2) — первый коммит в `resources/js/`.
**Что было в v1.5 (08.05.2026 поздний вечер):**
- **#10 Laravel Boost v2.4.6 установлен ВРУЧНУЮ** (коммит `e04f53b`). Wizard `php artisan boost:install` сломан в обоих режимах на этой машине: интерактив падает на UTF-8 кириллице в пути при рендере `laravel/prompts` multiselect, `--no-interaction` падает в баге L13 `ConfiguresPrompts::multiselectFallback` (null → array_map crash). Manual setup: `app/boost.json` (3 ключа: agents/guidelines/mcp), запись `laravel-boost` в корневом `.mcp.json` (command=php, args=[app/artisan, boost:mcp]), кастомный guideline `app/.ai/guidelines/vuetify.md`. Smoke-test JSON-RPC 2024-11-05 — 9 tools (database-query/schema/connections, application-info, last-error, read-log-entries, search-docs, browser-logs, get-absolute-url). Подробности — memory `feedback_environment.md` п.26.
- **Уточнение к §3.1 п.3 «отключить guidelines»** — избыточно. Boost через `laravel/roster` auto-detect видит установленные пакеты в composer.lock; то, что не установлено (Inertia, Livewire, Tailwind, Filament, Flux UI, Nova, Folio, Volt, Wayfinder, Sail, PHPUnit), не серверится. Список оставлен в §3.1 как **исторический контекст** того, что мы НЕ ставим (CLAUDE.md §5 п.2), но как «отключение» в boost.json не реализуется.
- **Уточнение к §10.2 пути** — кастомные guidelines идут в `app/.ai/guidelines/*.md` (или `*.blade.php`), а не в `resources/boost/guidelines/`. Подтверждено source-кодом `GuidelineComposer::userGuidelineDir = '.ai/guidelines'`.
- **#13 Roave/SecurityAdvisories установлен** (коммит `0eb2f72`). Метапакет `roave/security-advisories:dev-latest` в `require-dev`. Conflict-only — блокирует install версий с известными CVE. На текущем снапшоте — 0 advisories.
- **Активных инструментов фазы 1: 11 из 17** (на момент v1.5; в v1.6 → 13/17 после squawk+pgFormatter). Установлено в фазе 1: #10 Boost, #11 Pint, #12 Larastan, #13 Roave/SA, #14 IDE Helper, #18 Pest 4. Остаются: #15 squawk (Windows binary), #16 pgFormatter (Perl), #17 pg_partman (заменён ручным cron'ом — Windows native стек не имеет PG-расширения, см. project_phase1_strategy).
**Что нового в v1.4 (08.05.2026 поздний вечер):** **Laravel 11 → Laravel 13** в §0 (стек) и §3.2 (фаза 1 backend). Произошло так: при `composer create-project laravel/laravel app` без `^11` Composer подтянул свежайшую — `laravel/framework: ^13.7` (Laravel 13.7, релиз ~Feb 2026). Live-проверка совместимости 5 ключевых плагинов прошла без блокеров: Boost v2.4.6 (composer dry-run резолвит lock без conflict), Larastan v3.9.6 (analyse прошёл с baseline), Pest v4.7.0 (smoke-test 2/2 за 281 ms), barryvdh/laravel-ide-helper v3.7.0 (`ide-helper:generate` создал `_ide_helper.php`), laravel/pint v1.29 (`pint --test` passed). Заказчик 08.05 (поздний вечер) принял Laravel 13 как latest stable. Откат дороговат — `rm -rf app/ && composer create-project laravel/laravel:^11 app && повторить predis/Pest/Pint/Larastan/IDE Helper`. Техдолг: синхронизация narrative ТЗ + `Vybor_oblaka_v8_3.md` + `Админка_SaaS_v8_2.md` под Laravel 13 — отдельная задача для следующих сессий (пока эти документы упоминают Laravel 11 как было). Подробности в [Открытые_вопросы_v8_3.md §3 и блоке v1.17](Открытые_вопросы_v8_3.md).
Установлены 3 dev-инструмента из фазы 1 (Прил. Н #11/#12/#14): laravel/pint v1.29, larastan/larastan v3.9.6 (+ phpstan v2.1.54), barryvdh/laravel-ide-helper v3.7.0. phpstan.neon level 5 + phpstan-baseline.neon (3 ошибки в default scaffold зафиксированы как baseline). composer.json scripts: `composer pint`, `composer pint:test`, `composer stan`, `composer ide-helper`.
**Что было в v1.3 (08.05.2026 поздний вечер):** **Pest 3 → Pest 4** в §3.3 п.18 (тестирование), §6 п.2 (конфликт), §10.1 п.9 (boost:install). Решение: при `composer require pestphp/pest --dev --with-all-dependencies` без `^3` composer подтянул Pest v4.7.0; smoke-test 2/2 на default-тестах Laravel прошёл за 281 ms — backward-compat подтверждён. Бонус Pest 4: browser testing (без Dusk), stress testing, mutation testing v2. Откат дёшев — `composer require pestphp/pest:^3`. Подробности в [Открытые_вопросы_v8_3.md §3](Открытые_вопросы_v8_3.md#3-cto--архитектору) и блоке «Что изменилось в v1.16» там же.
**Что было в v1.2 (08.05.2026 вечер):** **Sail отключён** из allow-list Boost (§3.1 п.2/п.3). Причина: машина — OpenStack-VPS, nested virtualization выключена провайдером, Docker Desktop/WSL2/Hyper-V запустить невозможно (`HypervisorPresent = True`, но guest не получает VT-x). Переход на native-стек: **PostgreSQL 16** (`choco install postgresql16`, Windows-сервис) + **Memurai Developer** (`choco install memurai-developer.install`, Redis 7-совместимый Windows-сервис, free до 1GB). pg_partman/pg_audit/pg_anonymizer на native Windows — ручная сборка/замена; на MVP — заменить ручным cron'ом для партиций и triggers (которые уже в schema v8.5). Подробности в `memory/project_phase1_strategy.md`.
**Что было в v1.1 (08.05.2026):** закрыт CTO-12 — выбран **Pest 3** (не PHPUnit). Обновлены §3.1 п.4 (boost:install), §3.4 (тестирование), §6 п.2 (конфликт Pest↔PHPUnit), §10.1 п.9 (процедура перехода). Обоснование выбора — в [Открытые_вопросы_v8_3.md §3](Открытые_вопросы_v8_3.md#3-cto--архитектору) (Pest dataset'ы для 14 статусов / 34 RLS, architecture testing для закрепления правил Claude, родной для Boost).
**Что было в v1.0:** первая версия 06.05.2026. Зафиксированы 28 активных инструментов в 4 фазах, перечень того, что НЕ ставим (10 пунктов), источники истины для конфигураций, процедура перехода между фазами, особенности Windows + PowerShell.
---
## 0. Сводка
| Фаза | Триггер | Активных к концу фазы | Δ к предыдущей |
|---|---|---|---|
| **0 — сейчас** (документация + 8 HTML-прототипов) | сразу | **9** | +9 |
| **1 — старт Laravel** | `composer create-project laravel/laravel` | **17** | +9 новых, −1 заменённый (PostgreSQL MCP → Laravel Boost) |
| **2 — старт frontend** | первый коммит в `resources/js/` (Vue 3 + Vuetify 3) | **24** | +7 (включая #30 Frontend Design plugin, добавлен post-MVP в v1.10) |
| **3 — pre-production** | ~спринт 12, перед публичным релизом | **29** | +5 |
| **off-phase tools** | по факту включения в `~/.claude/settings.json` / `~/.claude.json` | **+3** | #31 UPM (UI-резерв), #32 21st Magic MCP (UI-генератор), #33 claude-md-management (инфраструктура CLAUDE.md edits) |
**Итого формализованных позиций:** 33 (29 активных по фазам + 3 off-phase + 1 заменённый PG MCP исторически). Полный перечень — §2–§5 (по фазам) + §4.5/§4.6/§4.7 (off-phase). Карта «когда что использовать» — §7. Что НЕ ставим и почему — §9.
**Ключевой принцип фазирования:** не активируем фазу N+1, пока не закрыт триггер фазы N. Без `composer create-project` Boost не работает; без Vuetify-приложения Histoire бесполезен.
---
## 1. Принципы выбора
1. **Один инструмент на задачу.** Если две тулзы делают одно — оставляем одну, явно указываем какую (см. §6 «Конфликты и решения»).
2. **Dev-only для local tooling.** Boost, IDE Helper, Pint, Histoire и т. п. ставятся как `--dev` и не идут в production.
3. **Pre-commit для быстрых проверок, CI для медленных.** gitleaks / markdownlint / Pint — pre-commit. Larastan / Semgrep / Trivy / Pa11y — CI.
4. **Контекст Claude — это ресурс.** Не ставим тулзы, дублирующие моё базовое поведение (Memory MCP, Sequential Thinking MCP).
5. **Phase-gating.** Триггер каждой фазы — конкретное действие в репозитории. До триггера — не ставим.
6. **Дополнение, не замена правил Claude.** Любой плагин уступает в приоритете `Pravila_raboty_Claude_v1_1.md` — см. §7.
7. **Бесплатное предпочтительнее платного при сопоставимом качестве.** Dependabot вместо Snyk; Semgrep CE вместо CodeQL Enterprise.
---
## 2. Фаза 0 — текущая (9 инструментов)
Применяется немедленно. Покрывает работу с документацией (17 файлов в `docs/` + `db/`) и HTML-прототипами (`web/*.html`, 2 из 8 готовы).
### 2.1. MCP-серверы (3)
| # | Инструмент | Установка | Когда использовать | Не использовать когда |
|---|---|---|---|---|
| 1 | **PostgreSQL MCP** (`@modelcontextprotocol/server-postgres`) | `claude mcp add postgres ...` | Валидация `db/schema.sql` запросами к локальной БД (`information_schema`, `\d <table>`, FK-проверки) | На production-БД; после установки Boost (заменяется) |
| 2 | **Playwright MCP** (`@playwright/mcp`) | `claude mcp add playwright ...` | Открыть `web/*.html`, скриншот, проверка интерактива (zxcvbn в 01-login, ApexCharts в 02-dashboard) | Для unit-тестов Vue (это Vitest в фазе 2) |
| 3 | **GitHub MCP** | `claude mcp add github ...` | Issues по Биз-10..16, PR с авто-changelog, привязка коммитов к ID открытых вопросов | С токеном, имеющим `delete_repo` или `admin:org` |
### 2.2. Линтеры документации (4)
| # | Инструмент | Установка | Когда использовать | Конфликт |
|---|---|---|---|---|
| 4 | **markdownlint-cli2** | `npm i -D markdownlint-cli2` | Стиль 17 `.md` файлов (заголовки, таблицы, списки, длина строк) | Не использовать Prettier для `.md` — портит таблицы |
| 5 | **cspell** + словари ru/en + проектный | `npm i -D cspell @cspell/dict-ru_ru @cspell/dict-en_us` | Орфография ru/en + кастомный словарь («Лидерра», «УПД», «РКН», «ГЦК», «КЦ», «Yandex», «Vuetify») | — |
| 6 | **lychee** | `cargo install lychee` или GitHub Releases | Проверка кросс-ссылок между 17 файлами архива (правило §4.7 правил Claude) | Не использовать `markdown-link-check` (lychee быстрее, на Rust) |
| 7 | **Stylelint** + `stylelint-config-standard` `^40.0.0` | `npm i -D stylelint stylelint-config-standard` | Стиль CSS в `<style>` прототипов; в фазе 2 распространяется на Vue SFC | — |
### 2.3. Безопасность (2)
| # | Инструмент | Установка | Когда использовать |
|---|---|---|---|
| 8 | **gitleaks** | GitHub Releases (`gitleaks_<v>_windows_x64.zip`) | Pre-commit hook: поиск телефонов, email, токенов, ИНН, КЭП в diff. Правило §5.2 правил Claude |
| 9 | **Pa11y** | `npm i -D pa11y pa11y-ci` | WCAG 2.1 AA проверка прототипов. Требование брендбука §3.4. Единственный источник истины по a11y во всём проекте |
---
## 3. Фаза 1 — старт Laravel (+9 новых, −1 заменён, итого 17 активных)
**Триггер:** `composer create-project laravel/laravel app` в подпапке проекта.
### 3.1. Главное — замена PostgreSQL MCP на Laravel Boost
| # | Инструмент | Установка | Что заменяет |
|---|---|---|---|
| ~~1~~ → 10 | **Laravel Boost** | `composer require laravel/boost --dev` + `php artisan boost:install` | Заменяет PostgreSQL MCP (#1). Даёт 9 MCP-tools (Application Info, Database Query, Database Schema, Browser Logs, Last Error, Read Log Entries, Get Absolute URL, Search Docs, Database Connections) + guidelines + Documentation API на 17 000+ фрагментов |
**Обязательные настройки при `boost:install`:**
1. `CLAUDE.md` — НЕ перезаписывать. Сохранить уже существующий (см. §7). Слить вручную, если Boost создаст черновик: добавить boost-секции в конец, оставив §1–§7 нашего CLAUDE.md выше.
2. Из 25+ встроенных guidelines оставить только: **Laravel Framework**, **Pint**, **Pennant**, **MCP**. (**Sail убран 08.05.2026 — на текущей машине Docker невозможен из-за отсутствия nested virtualization, см. project_phase1_strategy memory.** Native стек: native PostgreSQL 16 + Memurai Redis-compatible.)
3. Отключить: **Inertia**, **Livewire**, **Tailwind**, **Filament**, **Flux UI**, **Nova**, **Folio**, **Volt**, **Wayfinder**, **Sail** — у нас их нет (Sail отключён 08.05.2026 после обнаружения OpenStack-VPS без nested-virt; native стек = единственный путь).
4. **Pest 4** — выбран (CTO-12 переоткрыт+закрыт 08.05.2026 поздний вечер, см. [Открытые_вопросы_v8_3.md §3](Открытые_вопросы_v8_3.md#3-cto--архитектору)). Отключить guideline PHPUnit, оставить только Pest. composer.json в `app/` уже на `pestphp/pest: ^4.7`.
5. Создать кастомный guideline для **Vuetify 3**: `resources/boost/guidelines/vuetify.blade.php` (см. §10.2).
6. **Запретить production DB connection**`.env.production` не должен попадать в локальный Boost-конфиг.
7. `.mcp.json`**в репозиторий** (не в gitignore), чтобы у команды одинаковая конфигурация (расхождение со стандартной рекомендацией Boost'а).
### 3.2. Анализаторы PHP (4)
| # | Инструмент | Установка | Роль |
|---|---|---|---|
| 11 | **Laravel Pint** | `composer require laravel/pint --dev` | Code style PSR-12. Pre-commit hook |
| 12 | **Larastan** (PHPStan для Laravel) | `composer require larastan/larastan --dev` | Статанализ типов, level 8/9. CI-only (медленно для pre-commit) |
| 13 | **Roave/SecurityAdvisories** | `composer require --dev roave/security-advisories:dev-latest` | Превентивная блокировка установки composer-пакетов с известными CVE |
| 14 | **Laravel IDE Helper** | `composer require barryvdh/laravel-ide-helper --dev` | Stubs для IDE (фасады, модели, мета-инфо) |
### 3.3. БД-инструменты (3)
| # | Инструмент | Установка | Роль |
|---|---|---|---|
| 15 | **squawk** | `npm i -g squawk-cli` + копия `~/AppData/Roaming/npm/.../binaries/squawk``bin/squawk.exe` (npm-wrapper не находит spawn-target без `.exe` на Windows) | Линтер миграций PostgreSQL — предупреждает о блокирующих ALTER на партиционированных таблицах (`deals`, `supplier_lead_costs`). Конфиг `.squawk.toml` отключает 9 правил (5 bootstrap + 4 дизайнных). Pre-commit hook на staged `*.sql` |
| 16 | **pgFormatter** | `curl -L https://github.com/darold/pgFormatter/archive/refs/tags/v5.9.tar.gz \| tar xz`; копия `pg_format` + `lib/` в `bin/pgFormatter/`; запуск через Cygwin Perl 5.42.2 из Git for Windows | Форматирование SQL. **Только ручной режим** через `npm run format:sql:check` / `npm run format:sql` — без авто-fix хука (diff vs db/schema.sql 3255 строк, ручной стиль не перезаписывается) |
| 17 | **pg_partman** | Расширение PostgreSQL: `CREATE EXTENSION pg_partman` | Автоматическое создание помесячных партиций `deals_YYYY_MM` и `supplier_lead_costs_YYYY_MM` (вместо ручного списка из `db/schema.sql`) |
### 3.4. Тестирование (1)
| # | Инструмент | Установка | Роль |
|---|---|---|---|
| 18 | **Pest 4** | `composer require pestphp/pest --dev --with-all-dependencies` + `vendor/bin/pest --init` | Тесты PHP. Pest 3 → Pest 4 после live-проверки на стеке 08.05.2026 поздний вечер (CTO-12 переоткрыт+закрыт, см. [Открытые_вопросы_v8_3.md §3](Открытые_вопросы_v8_3.md#3-cto--архитектору)). Использовать datasets для параметризации 14 статусов воронки и 34 RLS-политик; architecture testing — для закрепления правил Claude (например, запрет mocks на integration-тестах). Бонус Pest 4: browser testing (без Dusk), stress, mutation v2 |
---
## 4. Фаза 2 — старт frontend (+7 новых, итого 24 активных)
**Триггер:** первый коммит в `resources/js/` или отдельную папку Vue-приложения.
### 4.1. Поведенческий слой — Superpowers (полный, hard rule)
> **Обновлено 09.05.2026 (v1.9 Прил. Н):** заказчик ввёл **hard rule §12** правил Claude: «всегда в первую очередь пользуешься superpowers. При этом ты не можешь игнорировать и обходить это правило». §9 «Отступления» к §12 не применяется. Карта 14 skills → 14 типов задач — в Pravila §12.2.
>
> **Прежнее (0809.05.2026):** v1.7 — 3/13 skills с запретами; v1.8 — снятие запретов через §11 override (вариант "A. Полное снятие"). Сейчас (v1.9) — обязательное первоочерёдное использование.
| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 19 | **Superpowers v5.1.0 (все 14 skills)** | Декларативно через `~/.claude/settings.json`: `extraKnownMarketplaces.superpowers-dev` (`{"source":"github","repo":"obra/superpowers"}`) + `enabledPlugins.superpowers@superpowers-dev=true`. Перезапуск Claude Code → плагин подгружается из marketplace в кэш автоматически. `/plugin install` в VSCode-extension недоступен | `brainstorming`, `dispatching-parallel-agents`, `executing-plans`, `finishing-a-development-branch`, `receiving-code-review`, `requesting-code-review`, `subagent-driven-development`, `systematic-debugging`, `test-driven-development`, `using-git-worktrees`, `using-superpowers`, `verification-before-completion`, `writing-plans`, `writing-skills` | TDD биллинга/RLS, разбор инцидентов, двухстадийный review schema.sql, planning-flow для крупных эпиков, parallel agents для независимых задач |
**Снятые ранее запреты (для исторической записи):**
- `brainstorming` — раньше дублировал §4.5 правил Claude. Теперь Pravila §11.1 разрешает override §4.5 при явном вызове skill.
- `writing-plans` + `executing-plans` — раньше дублировали §8.4. Теперь §11.1 разрешает хранить план в формате skill.
- `dispatching-parallel-agents` — раньше конфликтовал с §2.2. Теперь §11.1 разрешает закрытие подзадач без отдельного «закрываем»; **финальные** закрытия открытых вопросов реестра — по-прежнему только заказчиком.
- `using-git-worktrees` — Windows-нестабильность сохраняется как факт среды (см. §11.2 правил), но запрет в правилах снят.
**Что остаётся:** §1 (роль), §3.6 (язык), §5 (ПДн), §7 (финал-закрытие открытых вопросов) — не override-ятся (см. Pravila §11.2).
### 4.2. Frontend-инструменты (4)
| # | Инструмент | Установка | Роль | Конфликт |
|---|---|---|---|---|
| 20 | **Volar** (`Vue.volar`) | VSCode Marketplace | Language server для `.vue` (типы, intellisense, навигация) | — |
| 21 | **vue-tsc** | `npm i -D vue-tsc typescript` | Type-check `.vue` файлов | **Только в CI**, не в редакторе — иначе тормозит Volar |
| 22 | **ESLint + Prettier + eslint-config-prettier + eslint-plugin-vue** (связка, 1 инструмент в учёте) | `npm i -D eslint prettier eslint-config-prettier eslint-plugin-vue` | Линт + форматтер JS/Vue. `eslint-config-prettier` обязательно — отключает в ESLint всё, что делает Prettier. Для `.md` Prettier отключён через `.prettierignore` (markdownlint главный) | Связка ставится только целиком. Без `eslint-config-prettier` — конфликт правил |
| 23 | **Vitest** + `@vue/test-utils` | `npm i -D vitest @vue/test-utils @vitest/ui` | Тесты компонентов. Синтаксис близок к Pest для унификации backend↔frontend | Не использовать Jest — один тест-раннер на проект |
### 4.3. Каталог компонентов (1)
| # | Инструмент | Установка | Роль | Альтернатива |
|---|---|---|---|---|
| 24 | **Histoire 1.0-beta.1** | `npm i -D --legacy-peer-deps histoire @histoire/plugin-vue` | Каталог Vue-компонентов на базе Vuetify. Передача дизайнеру (Диз-1) и frontend-команде. **Vite 8 несовместимость:** заявлен peerDep `vite ^7`, ставим через `--legacy-peer-deps`; runtime smoke OK (08.05.2026 поздний вечер). При выходе beta.2+ с поддержкой Vite 8 — обновить. Конфиг: `app/histoire.config.ts` + `app/resources/js/histoire.setup.ts` (Vuetify через `defineSetupVue3`) | Не Storybook — он тяжелее, медленнее, ориентирован на React |
### 4.4. Доменный слой UI — Frontend Design plugin (paired со Superpowers)
> **Введено 09.05.2026 (v1.10 Прил. Н):** запрет CLAUDE.md §5 п.5 на Frontend Design plugin снят по явному решению заказчика. Координация с #19 Superpowers — через `docs/Plugin_stack_rules_v1.md` (**v1.6, 16 правил R0R15**; cross-ref bumped в Tooling v1.14, раньше «10 правил» с эпохи v1.0). Парный stack одного приоритетного уровня; между плагинами нет иерархии. См. Pravila §13.
| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 30 | **Frontend Design plugin (Anthropic)** | Декларативно через `~/.claude/settings.json`: `extraKnownMarketplaces.anthropics-claude-plugins` (`{"source":"github","repo":"anthropics/claude-plugins"}` или другой источник, утверждённый Anthropic) + `enabledPlugins.frontend-design@anthropics-claude-plugins=true`. Перезапуск Claude Code → плагин подгружается из marketplace. `/plugin install` в VSCode-extension недоступен — ставится только через settings.json | Доменное знание UI: компоненты, layout, цвет, типография, паттерны, состояния (loading/empty/error), a11y-принципы | Чисто визуальные задачи (палитра, типография, layout-эскиз, выбор паттерна, иконка, состояния) и фазы 2/5/7 UI-фичи (см. Plugin_stack_rules_v1 Правило 2) |
**Обязательный стек-фильтр (Правило 6 Plugin_stack_rules_v1):**
| Что брать (универсально) | Что отфильтровать (стек-зависимо) |
|---|---|
| Принципы (a11y, контраст, фокус, иерархия, spacing-шкала) | Конкретные имена компонентов чужого стека |
| Паттерны (modal-flow, form-validation UX, empty/loading/error states) | Tailwind-классы, shadcn-импорты, JSX (CLAUDE.md §5 п.2) |
| Структуры состояний и переходов | Конкретные библиотеки иконок (у нас Lucide) |
| Цветовые/типографические системы как принципы | Конкретные палитры/шрифты (у нас Forest v8 + Inter/JetBrains Mono) |
Ответ Frontend Design без выполненной адаптации = **неполный ответ**, возвращается в плагин на доработку.
**A11y:** Frontend Design покрывает только **a11y-принципы** (контраст, фокус-порядок, иерархия). **Технический a11y** (DOM-семантика, aria-роли, keyboard) остаётся за Pa11y (CLAUDE.md §5 п.3). Без подмены источника истины.
**Live-отмены (Правило 0.4.B Plugin_stack_rules_v1):**
- «не используй Frontend сейчас» — отключает Frontend Design на текущее действие, Superpowers остаётся.
- «не используй плагины сейчас» — отключает весь stack на текущее действие.
### 4.5. Резерв-библиотека UI — UI UX Pro Max plugin (off-phase tool)
> **Введено 10.05.2026 (v1.12 Прил. Н):** формализован как «инструмент-резерв вне фаз». Был фактически включён через `~/.claude/settings.json` ещё с момента активации (до v1.12 — без правил). Координация — **PSR_v1 v1.6+ R10/R11/R14.3** (cross-ref bumped в Tooling v1.14).
| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 31 | **ui-ux-pro-max** (skill, marketplace `nextlevelbuilder/ui-ux-pro-max-skill`) | `~/.claude/settings.json`: `extraKnownMarketplaces.ui-ux-pro-max-skill` (`{"source":"github","repo":"nextlevelbuilder/ui-ux-pro-max-skill"}`) + `enabledPlugins.ui-ux-pro-max@ui-ux-pro-max-skill=true`. Перезапуск Claude Code → плагин подгружается из marketplace в кэш | Резерв-библиотека: 50+ aesthetic-стилей, 161 палитра, 99 UX-гайдлайнов, 25 типов графиков, 161 product type, 57 шрифтовых пар, 10 стеков (React, Next.js, Vue, Svelte, SwiftUI, React Native, Flutter, Tailwind, shadcn/ui, HTML/CSS) | (1) Frontend Design выдал «не покрывает» / нужна узкоспецифика (chart-стек, экзотические шрифтовые пары, региональные UX-паттерны); (2) **R12 архитектурное решение** — UPM как источник «третьего варианта» в A/B/C по Pravila §4.5 (R11.5 PSR_v1) |
**Обязательные правила использования (PSR_v1 v1.6+):**
| Правило | Где | Что значит |
|---|---|---|
| **R10.2** «UPM read-only для решений» | R10.1 PSR_v1 | UPM выдаёт **материал** (палитра/паттерн/гайдлайн), решение принимает FD/Superpowers |
| **R10.1** «не параллельно» | R10.1 PSR_v1 | UPM активируется **последовательно**, не одновременно с FD |
| **R6.0** стек-фильтр | R6 PSR_v1 | срезать React/Next/Tailwind/shadcn материалы; оставить Vue + HTML/CSS-уровневые принципы |
| **R6.1** hard-override Forest | R6.1 PSR_v1 | UPM-палитра/шрифты/aesthetic игнорируются; Brandbook v2 Forest приоритетнее |
| **R11.3** запрет инверсии иерархии | R11 PSR_v1 | UPM-палитра НЕ заменяет Brandbook, даже если «выглядит лучше» |
| **R7** не закрывает задачу | R7 PSR_v1 | UPM никогда не закрыватель (нет в списке gate'ов) |
| **R11.5** активация в R12 | R11.5 PSR_v1 | На фазе 1 R2 для архитектурных решений как источник «третьего варианта» |
| **R14.3** место в pipeline | R14.3 PSR_v1 | Подзадача внутри R14 pipeline'а, не самостоятельный flow |
**Live-отмена (R0.4.B PSR_v1):** `/ui-ux-pro-max` — прямой вызов на одно действие (R6.0 фильтр и R6.1 override остаются обязательными).
### 4.6. Генератор шаблонов — 21st.dev Magic MCP (off-phase tool)
> **Введено 10.05.2026 (v1.12 Прил. Н):** формализован как «инструмент-резерв вне фаз». Был фактически подключён через `~/.claude.json` (с API-ключом, npm-пакет `@21st-dev/magic@latest`) ещё с момента активации (до v1.12 — без правил). Координация — **PSR_v1 v1.6+ R10/R14.4** (cross-ref bumped в Tooling v1.14).
| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 32 | **21st.dev Magic MCP** (`magic` сервер) | `~/.claude.json``mcpServers.magic.command="cmd"` + `args=["/c", "npx", "@21st-dev/magic@latest", "API_KEY=<ключ>"]` (npm wrapper). Tools: `mcp__magic__21st_magic_component_builder`, `_inspiration`, `_refiner`, `logo_search` | Генератор стартовых шаблонов для UI-компонентов (LLM-based, по умолчанию **React + Tailwind + shadcn**) | (1) задача = UI-фича по R1 PSR_v1; (2) нужный паттерн **отсутствует** в Vuetify-наборе и `resources/js/components/`; (3) задача **не попадает** в R0.6 hard-стоп (не брендовый App*, не изменение токенов, не cross-cutting); (4) FD на фазе 2 R2 принял решение «нужен кастомный компонент» |
**Обязательный pipeline R14.4 PSR_v1:**
```
1. Pre-check R0.6 пункты 9–10 (ОБЯЗАТЕЛЬНО):
- Брендовый App*-компонент? → hard-стоп, R12 архитектурное (3 варианта §4.5)
- Vuetify-эквивалент существует? → hard-стоп, использовать Vuetify
- Существующий компонент в resources/js/components/? → hard-стоп, использовать его
- Если на все три «нет» → продолжить
2. Вызов mcp__magic__21st_magic_component_builder с описанием паттерна
3. Сгенерированный черновик (по умолчанию React + Tailwind + shadcn) → R6.0 фильтр:
- JSX → Vue SFC template
- Tailwind classes → Vuetify utility / inline CSS
- shadcn components → Vuetify-эквивалент
- React imports/hooks → Vue Composition API
4. → R6.1 hard-override:
- Палитра → Forest (Teal/Ivory/теало-нуар)
- Шрифты → Inter / JetBrains Mono
- Иконки → Lucide
5. → FD адаптирует под фазу 5 R2
6. → возврат в фазу 5 stack-flow
7. Pa11y проход (R7) на deployable артефакт ОБЯЗАТЕЛЕН перед commit
```
**Сгенерированный JSX-черновик НЕ коммитится в `resources/js/` напрямую** — только после полного pipeline'а.
**Запрет дублирования (R14.5):** одна задача = один генератор. UPM и 21st **не запускаются на одной фазе**.
**Live-отмена (R0.4.B PSR_v1):** «вызови magic» / «через 21st» / «дай шаблон через magic» — прямой вызов на одно действие (pre-check R0.6 + R6.0 + R6.1 + FD-адаптация остаются обязательными).
**Безопасность:** API-ключ в `~/.claude.json` в открытом виде. Файл **глобальный, не в репо** (gitleaks ловит при попытке коммита). При случайном попадании именно `~/.claude.json` (где хранится API-ключ; не путать с `~/.claude/settings.json` — отдельный файл без секретов) в репо — немедленно ротировать ключ через 21st.dev dashboard.
### 4.7. Инфраструктурный слой — claude-md-management plugin (off-phase tool)
> **Введено 10.05.2026 (v1.13 Прил. Н):** формализован как «инструмент-резерв вне фаз, инфраструктурная категория». Был фактически включён через `~/.claude/settings.json` (`enabledPlugins.claude-md-management@claude-plugins-official=true`) с момента появления CLAUDE.md §5 п.10 (требование «правки CLAUDE.md только через плагин») — до v1.13 без формализации в реестре. Категория **инфраструктурная**, отличная от UI-пула (UPM/21st) — поэтому отдельная нумерация и не попадает под Pravila §13 (расширенный UI-пул).
| # | Инструмент | Установка | Состав | Когда использовать |
|---|---|---|---|---|
| 33 | **claude-md-management** (skills, marketplace `anthropics/claude-plugins-official`) | `~/.claude/settings.json`: `extraKnownMarketplaces.claude-plugins-official` (`{"source":"github","repo":"anthropics/claude-plugins-official"}`) + `enabledPlugins.claude-md-management@claude-plugins-official=true` | Два skill: `claude-md-improver` (audit + targeted updates CLAUDE.md по `references/quality-criteria.md`), `revise-claude-md` (capture session learnings в CLAUDE.md) | **Обязательно** при любом изменении CLAUDE.md (CLAUDE.md §5 п.10). Прямые `Edit`/`Write` по корневому CLAUDE.md без вызова skill — нарушение §5 п.10 |
**Обязательные правила использования (PSR_v1 v1.6+):**
| Правило | Где | Что значит |
|---|---|---|
| **R10.1** инфраструктурный, не UI | R10.1 PSR_v1 | claude-md-management в **отдельной категории** от UPM/21st; не попадает в R14 pipeline UI-генераторов |
| **R10.2** «инструмент, не решатель» | R10.1 PSR_v1 | Skill выполняет правки **по делегированию** из stack-flow или по явной `/команде` пользователя; не подменяет stack-gate |
| **R0.4.A** не требует gate | R0.4.A PSR_v1 | Тривиальные синки (опечатки, версии, кросс-ссылки) — без stack-gate, но через claude-md-improver (CLAUDE.md §5 п.10) |
| **CLAUDE.md §5 п.10** SoT для интерфейса | CLAUDE.md | Единственный канал правок CLAUDE.md; внутри flow продолжают действовать §4 правил Claude (синхронизация Pravila + Tooling) |
**Live-отмена (R0.4.B PSR_v1):** `/claude-md-management:claude-md-improver` или `/claude-md-management:revise-claude-md` — прямой вызов на одно действие.
**Аналогичные категории (built-in skills Claude Code, не плагины через marketplace):** `review`, `security-review`, `init`, `simplify`, `update-config`, `keybindings-help`, `fewer-permission-prompts`, `loop`, `schedule`, `claude-api`. Активируются по явному `/имя` от пользователя; не входят в `enabledPlugins`. См. PSR_v1 R10.1 блок 2 для полного реестра.
---
## 5. Фаза 3 — pre-production (+5 новых, итого 29 активных)
**Триггер:** ~спринт 12, перед публичным релизом MVP.
| # | Инструмент | Установка | Категория | Роль |
|---|---|---|---|---|
| 25 | **Semgrep + Semgrep MCP** | `pip install semgrep` + `claude mcp add semgrep` | SAST | Скан по антипаттернам Прил. М §6.6: пароль в `<input type="text">`, API-ключи в `<input type="text">`, hardcoded URL вроде `prostats.info/bitrix24/webhook.php` |
| 26 | **Trivy** | GitHub Releases | Container scan | Скан Docker-образов перед push в Yandex Container Registry |
| 27 | **GitHub Dependabot** | `.github/dependabot.yml` | Dependency scan | Авто-PR с фиксом CVE для `composer.json` и `package.json` |
| 28 | **pg_audit** (расширение PostgreSQL) | `CREATE EXTENSION pgaudit` | Compliance | Аудит-логи в дополнение к `auth_log`, `pd_processing_log`, `incidents_log` (требование 152-ФЗ) |
| 29 | **pg_anonymizer** (расширение PostgreSQL) | `CREATE EXTENSION anon` | Compliance | Маскирование ПДн в dev/staging-дампах. Правило §5.1 правил Claude (`+7XXXXXXXXXX`, `***@***`) |
> Нумерация 25–29 — это глобальные индексы в порядке введения. Активных в финале — 28 (см. §0): из 29 номеров минус #1 (PostgreSQL MCP) — заменён Boost'ом.
---
## 6. Конфликты и решения
10 зон, где без явного правила я выберу не тот инструмент (5 классических из v1.0 + 5 новых из v1.4 PSR_v1, формализованных в Прил. Н v1.13):
| # | Конфликт | Решение |
|---|---|---|
| 1 | **PostgreSQL MCP ↔ Laravel Boost (Database Query)** в момент перехода фазы 0→1 | В момент `boost:install` сразу убрать PG MCP из `.mcp.json`. Не оставлять оба активными |
| 2 | **Pest ↔ PHPUnit** | **Pest 4** (CTO-12 переоткрыт+закрыт 08.05.2026 поздний вечер). На `boost:install` отключить guideline PHPUnit |
| 3 | **vue-tsc ↔ Volar inline check** | Volar — для редактора (быстрый). vue-tsc — только в CI (полный pass) |
| 4 | **ESLint stylistic ↔ Prettier** | `eslint-config-prettier` обязателен. Без него — конфликт правил |
| 5 | **Pa11y ↔ Lighthouse a11y** | Lighthouse не входит в 28 (он инфраструктурный, см. §12). Если будет добавлен — отключить категорию `accessibility` через `--only-categories=performance,best-practices` |
| 6 | **UPM (#31) ↔ Frontend Design (#30) на одной фазе UI-фичи** | PSR_v1 R10.1 + R14.5: **не параллельно**. UPM активируется **последовательно** как fallback (R14.3 «FD выдал не покрывает») или как «третий вариант» в R12 архитектурном (R11.5). Решатель — всегда FD; UPM — материал |
| 7 | **21st Magic MCP (#32) ↔ существующий Vuetify-компонент** | PSR_v1 R0.6 пункт 10: **hard-стоп даже в Auto mode**. Для `v-data-table`/`v-text-field`/`v-dialog`/`v-select`/`v-card`/`v-btn` и др. — использовать Vuetify, 21st не вызывается. Дублирование инструментов на одну задачу = нарушение CLAUDE.md §5 п.6 |
| 8 | **21st Magic MCP (#32) ↔ брендовый компонент App\*** | PSR_v1 R0.6 пункт 9: **hard-стоп**. Для `AppButton`/`AppCard`/`AppDataTable`/`AppDialog` и любых App*-семейств — R12 архитектурное (3 варианта по Pravila §4.5), 21st не вызывается. Брендовая оболочка проектируется руками с FD-принципами |
| 9 | **framer-motion ↔ motion-v** (Vue порт) | PSR_v1 R15.1 + R15.2: framer-motion — **hard-запрет навсегда** (React-only архитектурно, не работает в Vue). motion-v — условно по 4 триггерам (а)+(б)+(в)+(г). По умолчанию ни то, ни другое — стойка R15.3 (Vue native + Vuetify + CSS + View Transitions API) |
| 10 | **UPM (#31) ↔ 21st Magic MCP (#32) на одной фазе** | PSR_v1 R14.5: **не на одной фазе**. UPM работает на фазах 1/2 R2 (brainstorming + visual design); 21st — на фазе 5 R2 (визуальная сборка). Если кажется, что нужны оба — задача декомпозируется на под-задачи |
---
## 7. Source of truth — приоритет правил
При противоречии между правилами (синхронизировано с CLAUDE.md §1, 7-уровневая файловая иерархия; добавлен PSR_v1 уровнем 3 в v1.13):
```
0. docs/Pravila_raboty_Claude_v1_1.md §12 (Superpowers hard rule — выше всех)
1. docs/Pravila_raboty_Claude_v1_1.md (остальные параграфы — продуктовые правила, утверждены заказчиком)
2. CLAUDE.md (корень — оперативная карта, авто-загружается Claude Code)
3. docs/Plugin_stack_rules_v1.md (PSR_v1 — координация paired-stack ядра + расширенного UI-пула + motion-системы)
4. .claude/settings.json (хуки, permissions — исполняется средой)
5. memory/*.md (динамическая память между сессиями Claude)
6. Прочие плагины и встроенные skills Claude Code (поведенческие подсказки, ниже всех)
```
**Правило применения:** при любом конфликте — выбирается верхний источник. Нижестоящие игнорируются в части, которая противоречит верхним. Это правило явно зафиксировано в `CLAUDE.md` §1. **Scope:** общая файловая/слоевая иерархия. Внутрипараграфный приоритет внутри Pravila — см. Pravila §0; scope головенства stack'а — см. PSR_v1 R0.1.
> **Tooling Прил. Н в priority chain (v1.14+):** этот файл (детальный реестр 33 инструментов) сидит **уровнем 2b** alongside CLAUDE.md (общая оперативная карта) — оба operational maps. При прямом конфликте между ними побеждает **CLAUDE.md** как корневая карта Claude Code. Раньше (до v1.14) Tooling формально не был в priority chain ни одного из 4 файлов, хотя PSR_v1 R0.1 говорил «stack ниже Файлы CLAUDE.md / Pravila / Tooling» — формальная дыра при конфликте «Tooling vs PSR_v1». Закрыто в v1.14 (audit P2-01).
>
> Полная цепочка с Tooling: 0 (Pravila §12) → 1 (Pravila) → 2a (CLAUDE.md) + 2b (этот файл, alongside) → 3 (PSR_v1) → 4 (settings.json) → 5 (memory) → 6 (прочие плагины).
---
## 8. Source of truth — конфиги
Где какой конфиг лежит и кто его редактирует:
| Конфиг | Где | Редактирует | В git? |
|---|---|---|---|
| `.markdownlint.json` | корень | разработчик | ✅ |
| `cspell.json` + `cspell-words.txt` | корень | разработчик (словарь обновляется по PR) | ✅ |
| `.lychee.toml` | корень | разработчик | ✅ |
| `.gitleaks.toml` | корень | security lead | ✅ |
| `.stylelintrc.json` | корень | frontend lead (фаза 2) | ✅ |
| `pa11y.config.json` | корень | frontend lead | ✅ |
| `.claude/settings.json` (хуки, permissions) | `.claude/` | Claude (по запросу через `/update-config`) | ✅ |
| `.mcp.json` (MCP-серверы) | корень | разработчик (не Boost) | ✅ — расхождение с дефолтом Boost'а |
| `CLAUDE.md` | корень | Claude (по запросу заказчика) | ✅ |
| `boost.json` | корень | разработчик | ✅ |
| `pint.json` | корень (фаза 1) | backend lead | ✅ |
| `phpstan.neon` (Larastan) | корень (фаза 1) | backend lead | ✅ |
| `eslint.config.js` | корень (фаза 2) | frontend lead | ✅ |
| `.prettierrc` + `.prettierignore` | корень (фаза 2) | frontend lead | ✅ |
| `vitest.config.ts` | корень (фаза 2) | frontend lead | ✅ |
| `histoire.config.ts` | корень (фаза 2) | frontend lead | ✅ |
| `semgrep.yml` | `.github/` (фаза 3) | security lead | ✅ |
| `dependabot.yml` | `.github/` (фаза 3) | DevOps | ✅ |
---
## 9. Что НЕ ставим и почему (10 пунктов + motion-runtime раздел v1.12)
### 9.1. Изначальный список
| Инструмент | Причина отказа |
|---|---|
| ~~**Frontend Design** plugin (Anthropic)~~ | **СНЯТО 09.05.2026** (v1.10): запрет CLAUDE.md §5 п.5 снят, плагин включён как paired stack со Superpowers; координация — `docs/Plugin_stack_rules_v1.md`. Anti-pattern «Inter» нейтрализован hard-override R6.1 PSR_v1 |
| **CodeQL** | Дублирует Semgrep; платный для private-репо; Semgrep CE покрывает наши потребности |
| **Laravel Security Checker** (`enlightn/security-checker`) | Дублирует Dependabot + Roave |
| **PHP-CS-Fixer** | Перекрывается Pint'ом (Pint = надстройка над CS-Fixer) |
| **Psalm** | Перекрывается Larastan |
| **Jest** | Перекрывается Vitest (один тест-раннер) |
| **Storybook** (для Vue) | Histoire легче и нативнее для Vue 3 + Vite |
| **Snyk** (платный) | Dependabot бесплатный и достаточный |
| **markdown-link-check** | lychee быстрее (Rust vs Node) и надёжнее |
| **Sequential Thinking MCP** | Дублирует моё базовое рассуждение, жрёт токены |
| **Memory MCP** | Конфликтует с моей файловой памятью в `memory/` |
| **Tailwind MCP / shadcn-vue** | У нас Vuetify (CTO-11), не Tailwind |
| **Inertia / Livewire / Filament / Flux UI / Nova / Folio / Volt / Wayfinder guidelines** Boost'а | Не используются в стеке проекта |
### 9.2. Motion runtime библиотеки (введено в v1.12, R15 PSR_v1 v1.4)
Двухуровневое решение по runtime-зависимостям анимаций. Default motion stack — **Vue native `<Transition>` + Vuetify transitions + CSS @keyframes + View Transitions API** (R11.6 уровни 36 PSR_v1). Большинство задач закрываются на уровнях 1–2.
| Библиотека | Статус | Причина / условие |
|---|---|---|
| **framer-motion** (npm `framer-motion`) | **❌ HARD-ЗАПРЕТ навсегда** (R15.1) | React-only архитектурно: использует React fiber-tree + hooks + JSX. В Vue 3 + Vuetify стеке физически не работает — мёртвый код в `node_modules`. Не отменяется ни Auto mode, ни live-командой R0.4.B. Единственный путь снятия — смена базового frontend-стека (само по себе R0.6 hard-стоп) |
| **react-spring** (npm `@react-spring/*`) | **❌ HARD-ЗАПРЕТ навсегда** (R15.1-аналог) | React-only по той же причине |
| **motion-v** (npm `motion-v`, Vue порт от автора framer-motion) | **⚠ УСЛОВНО разрешено** (R15.2) | Технически совместим со стеком, но активация требует одновременного выполнения 4 условий: (а) письменный кейс из ТЗ v8.5 / Открытые_вопросы; (б) категория оправданности — gesture-driven с физикой / shared-layout transitions / spring-physics на интерактивных контролах; (в) Brandbook v2 (или последующий) явно допускает motion-rich направление; (г) полный R12 архитектурный flow — brainstorming + 3 варианта (motion-v vs CSS @keyframes vs View Transitions API) + явное согласование. Без 4 условий — **R0.6 пункт 11 hard-стоп**. Bundle ~30 KB gzipped |
| **gsap** (`gsap` npm) | **⚠ УСЛОВНО разрешено** (R15.7 R15.2-аналог) | Imperative timeline-driven; нишево для marketing/agency UI. Для нашего B2B-CRM избыточно. Если когда-либо — через те же 4 условия R15.2 |
| **anime.js** | **⚠ УСЛОВНО разрешено** (R15.7) | Аналогично gsap, но ещё нишевее |
| **lottie-web** (`lottie-web`) | **⚠ УСЛОВНО разрешено** (R15.7) | Только для Lottie/After Effects-ассетов. У нас таких ассетов в Brandbook v2 нет; если появятся — через те же 4 условия |
| **popmotion**, **@motionone/dom** | **⚠ УСЛОВНО разрешено** (R15.7) | Низкоуровневые движки. Default стойка покрывает |
| **Auto-Animate** (`@formkit/auto-animate`) | ⚠ Возможный кандидат | Один компонент, FLIP под капотом, ~3 KB. Если потребуется list/grid reorder — отдельный R15-flow |
**Default motion stack (без runtime-зависимостей):**
| Слой | Что покрывает | Размер |
|---|---|---|
| Vue 3 native `<Transition>` / `<TransitionGroup>` | enter/leave hooks, FLIP через TransitionGroup, JS-callbacks | 0 KB (нативно) |
| Vuetify 3 transitions (`v-fade`, `v-slide-y`, `v-slide-x`, `v-scale`, `v-expand`, `v-dialog-transition`) | Material-design анимации; уже в `vuetify@3.12` | 0 KB сверху |
| CSS `@keyframes` + `transition` + `prefers-reduced-motion` | Произвольные анимации, GPU-acceleration через `transform`/`opacity`, поддержка a11y | 0 KB |
| View Transitions API (Chrome 111+, Safari 18+) | Cross-document / cross-route переходы, FLIP под капотом нативно | 0 KB (браузер) |
---
## 10. Процедура перехода между фазами
### 10.1. Фаза 0 → Фаза 1
**Триггер:** `composer create-project laravel/laravel app` (или эквивалент).
**Шаги (исходный план; отметки фактического статуса в правой колонке после прохождения 08.05.2026):**
| # | Шаг | Статус 08.05.2026 |
|---|---|---|
| 1 | `composer require laravel/boost --dev` | ✅ `e04f53b` (Boost v2.4.6) |
| 2 | ~~Запустить `php artisan boost:install` — пройти интерактивный wizard~~ | ⚠️ **обойдено**: wizard сломан на этой машине (кириллица + L13 ConfiguresPrompts bug) — см. §3.1 «Что нового в v1.5» и memory `feedback_environment.md` п.26. **Manual setup** вместо wizard'а |
| 3 | Удалить PostgreSQL MCP из `.mcp.json` | ✅ убран ещё в фазе 0 (`_comment_postgres`) |
| 4 | ~~В `boost.json` — отключить нерелевантные guidelines~~ | ❌ **избыточно**: Boost через Roster auto-detect видит установленные пакеты — не установленных (Inertia/Livewire/Tailwind/Filament/Sail/PHPUnit) не серверит. `boost.json` минимален: 3 ключа (agents/guidelines/mcp) |
| 5 | Создать кастомный guideline для Vuetify 3 в **`app/.ai/guidelines/vuetify.md`** (был `resources/boost/guidelines/vuetify.blade.php` — путь скорректирован на §10.2 после source-проверки) | ✅ `e04f53b` |
| 6 | ~~Слить (не перезаписать) `CLAUDE.md` если Boost создал черновик~~ | ❌ **не применимо**: при manual setup Boost ничего не пишет в `CLAUDE.md` (ни корневой, ни `app/CLAUDE.md`). Корневой остаётся источником истины |
| 7 | Установить Pint, Larastan, Roave/SecurityAdvisories, IDE Helper | ✅ Pint+Larastan+IDE Helper в `0345683`; Roave/SA в `0eb2f72` |
| 8 | Установить squawk, pgFormatter | ✅ squawk v2.51.0 + pgFormatter v5.9 в коммите v1.6 (см. §0 «Что нового в v1.6»). Squawk — pre-commit хук на staged `*.sql` + конфиг `.squawk.toml` (9 правил исключены). pgFormatter — только ручной режим через npm-скрипты, авто-fix хук недопустим (стиль schema.sql ручной) |
| 8a | ~~Установить pg_partman~~ | ❌ **не применимо**: Windows-native PG не имеет pg_partman; заменён ручным cron'ом — см. memory `project_phase1_strategy.md` |
| 9 | Установить **Pest 4** | ✅ `30f0335` (Pest 4.7.0 + plugin-laravel 4.1.0; smoke-test 2/2 за 281 ms) |
| 10 | Обновить `.claude/settings.json` — добавить хуки для Pint и Larastan | ⏸ pending: после установки `lefthook` или эквивалента |
| 11 | Прогнать full-pass всех инструментов | ⏸ pending: после §8/§10 |
| 12 | Обновить эту версию Прил. Н | ✅ v1.0 → v1.1 (Pest 3) → v1.2 (native стек) → v1.3 (Pest 4) → v1.4 (Laravel 13) → **v1.5 (Boost+SA active)** |
### 10.2. Vuetify guideline для Boost (заготовка)
> **Путь к файлу:** `app/.ai/guidelines/vuetify.md` (или `.blade.php`, оба расширения поддерживаются `GuidelineComposer`). Старая формулировка «`resources/boost/guidelines/vuetify.blade.php`» скорректирована в v1.5 после source-проверки `Laravel\Boost\Install\GuidelineComposer::userGuidelineDir = '.ai/guidelines'`. Финальная версия живёт в репозитории — заготовка ниже сохранена как историческая.
```blade
## Vuetify 3
Проект использует Vuetify 3 как UI-библиотеку (CTO-11). Tailwind CSS, shadcn-vue, Element UI, jQuery, Bootstrap — НЕ использовать.
### Палитра — из brandbook.md §3 и §8.2
- primary: `#0F6E56` (Teal 600)
- secondary: `#5DCAA5` (Teal 200)
- background: `#F1EFE8` (Slate 100)
- surface: `#FFFFFF`
Vuetify-тема — `liderraLight` и `liderraDark` — определена в `brandbook.md` §8.2.
### Шрифты
- основной: Inter (через Google Fonts с subset cyrillic)
- код: JetBrains Mono
### Компоненты
Использовать Vuetify-компоненты (`v-card`, `v-btn`, `v-data-table`, `v-form`, `v-text-field`) с дефолтным material-стилем, переопределённым через `:root` CSS-переменные из `brandbook.md` §8.1.
### A11y
Все компоненты должны проходить Pa11y по WCAG 2.1 AA (брендбук §3.4). Контраст текста на белом — минимум 4.5:1.
```
### 10.3. Фаза 1 → Фаза 2
**Триггер:** первый Vue-компонент.
**Шаги:**
1. Установить Volar (VSCode), vue-tsc, ESLint + config-prettier + plugin-vue, Prettier, Vitest, Histoire.
2. Установить Superpowers v5.1.0 — **все 14 skills** (Pravila §12 v1.4+ hard rule «Superpowers first»; Pravila §11 «полное снятие запретов» с v1.8). Установка декларативно через `~/.claude/settings.json`: `extraKnownMarketplaces.superpowers-dev` + `enabledPlugins.superpowers@superpowers-dev=true`. **Без `enabled_skills` ограничителей.** ⚠️ **Историческая контрадикция (закрыта v1.14):** до v1.14 этот шаг гласил «enabled_skills = только 3 (test-driven-development, systematic-debugging, subagent-driven-development)» — устаревшая политика v1.7 (3/13 skills с запретами). v1.8 сняла все запреты через §11 override (вариант «A. Полное снятие»); v1.9 ввела §12 hard rule (skill инвокируется первым). См. §4.1 этого же файла для полной хронологии.
3. Прогнать первый Histoire-story для тестового компонента.
4. Запустить Pa11y на первой Vue-странице (выявить регрессии относительно HTML-прототипов).
5. Обновить Прил. Н: v1.1 → v1.2.
### 10.4. Фаза 2 → Фаза 3
**Триггер:** ~спринт 12, объявление о подготовке к релизу.
**Шаги:**
1. Установить Semgrep + Semgrep MCP, Trivy, Dependabot.
2. Включить расширения PostgreSQL: pg_audit, pg_anonymizer.
3. Прогнать первый полный SAST-пасс по проекту, зафиксировать baseline.
4. Прогнать Trivy на текущем образе, зафиксировать baseline.
5. Сделать первый dump БД через pg_anonymizer для staging.
6. Обновить Прил. Н: v1.2 → v1.3.
---
## 11. Конфигурация под Windows + PowerShell
Особенности для текущего окружения (Windows 10, PowerShell 5.1):
### 11.1. Пути и кодировки
- Все скрипты в `package.json` — кросс-платформенные (использовать `cross-env`, не `export VAR=...`).
- Файлы `.md` — UTF-8 БЕЗ BOM. Если PowerShell `Set-Content` создал файл с BOM — исправить.
- Длинные пути — включить `git config --global core.longpaths true` перед клонированием в глубокие папки.
### 11.2. Git worktrees
- Skill `using-git-worktrees` Superpowers **разрешён** с 09.05.2026 (см. §4.1; Pravila §11). Запрет был снят вместе с прочими.
- Среда остаётся враждебной: **на этой машине путь содержит кириллицу** (`c:\моя\проекты\портал crm\…`) — worktree-операции будут падать с неинформативной ошибкой. Skill при использовании сам должен обработать ошибку или переключиться на альтернативу.
- Если ручное использование worktree — избегать пробелов и кириллицы (`c:\projects\liderra-feature` ОК, `c:\My Documents\...` или `c:\моя\…` — НЕ).
### 11.3. Pre-commit hooks
- Husky или lefthook (предпочтительно lefthook — на Go, без Node-зависимости).
- Скрипты в hooks — bash-совместимые, запускать через `cmd /c` или WSL.
### 11.4. Глобальные CLI-утилиты
- **gitleaks**, **lychee**, **squawk**, **Trivy**, **Semgrep** — скачать готовые бинарники для Windows из GitHub Releases (squawk: `npm i -g squawk-cli` + копия в `bin/squawk.exe` см. §3.3).
- **pgFormatter** — Perl-скрипт. На этой машине работает через **Cygwin Perl 5.42.2** из Git for Windows (без отдельной установки ActivePerl/Strawberry/WSL). Если Git for Windows не ставился — поставить ActivePerl или Strawberry Perl.
- **Pa11y**, **markdownlint-cli2**, **cspell**, **Histoire** — npm-пакеты, работают нативно.
### 11.5. Yandex Cloud CLI и Terraform
Не входят в 33 формализованные позиции тулчейна (см. §12). Ставятся отдельно для DevOps-роли. На Windows — `yc` и `terraform` через скачивание `.zip` или `winget`.
---
## 12. Что вне 33 формализованных позиций (инфраструктура)
Эти 7 пунктов критичны для проекта, но используются DevOps, не Claude. Поэтому в основной реестр не входят, но фиксирую для полноты:
| Инструмент | Зачем |
|---|---|
| Yandex Cloud CLI (`yc`) | Провижининг по Прил. К |
| Terraform + `yandex-cloud/yandex` provider + terraform-ls | IaC |
| Docker + docker-compose | Локальная разработка |
| GitHub Actions | CI/CD pipeline |
| Sentry self-hosted | Ю-7 (зафиксировано) |
| Grafana + Prometheus + Alertmanager | Прил. И §1 |
| Lighthouse CI | Performance-регрессия в pipeline |
Если позже решим вовлечь Claude в инфраструктурные задачи — добавится фаза 4 (или эти инструменты переедут в основной реестр).
---
## 13. История версий
| Версия | Дата | Что нового |
|---|---|---|
| **v1.0** | 06.05.2026 | Первая версия. Зафиксированы 28 активных инструментов в 4 фазах, перечень того, что НЕ ставим (10+ пунктов), источники истины для конфигураций, процедура перехода между фазами, особенности Windows + PowerShell. Утверждено заказчиком 06.05.2026 («да, A, делай. Подтверждаю»). Архитектурных изменений в основном архиве: 0 (только добавлен новый шифр Н). |
| **v1.10** | 09.05.2026 | Добавлен **#30 Frontend Design plugin (Anthropic)** в фазе 2 — paired stack со Superpowers. Запрет CLAUDE.md §5 п.5 снят по явной команде заказчика. Координация через новый документ `docs/Plugin_stack_rules_v1.md` (10 правил, 8 ранее найденных конфликтов закрыты патчами). Добавлен §4.4 «Доменный слой UI — Frontend Design plugin». Phase 2: 6 → 7, total: 28 → 29 номеров (активных 18 → 19). Установка через `~/.claude/settings.json`. |
| **v1.12** | 10.05.2026 | **Формализация двух фактически включённых внешних UI-инструментов как «инструменты-резерв вне фаз»:** **#31 UI UX Pro Max** (skill, marketplace `nextlevelbuilder/ui-ux-pro-max-skill`) — резерв-библиотека (50+ стилей, 161 палитра, 99 UX-гайдлайнов, 25 типов графиков); активация через PSR_v1 v1.4 R14.3 pipeline (фаза 2 R2 fallback к FD ИЛИ фаза 1 R2 «третий вариант» в R12). **#32 21st.dev Magic MCP** (`magic` MCP-сервер) — генератор стартовых шаблонов; активация через PSR_v1 v1.4 R14.4 pipeline (pre-check R0.6 + R6.0 фильтр + R6.1 hard-override + FD адаптация). Оба не привязаны к фазе по тулчейну (post-MVP инструменты-резерв). Добавлены §4.5 + §4.6. **§9 «Что НЕ ставим» дополнен разделом «Motion runtime библиотеки»:** framer-motion + react-spring (R15.1 hard-запрет, React-only); motion-v + gsap + anime.js + lottie-web + popmotion (R15.2/R15.7 условно по 4 триггерам, R0.6 пункт 11 hard-стоп). Default motion stack: Vue native + Vuetify + CSS + View Transitions API. Total формализованных: 29 → **31 позиций** (активных по фазам — 19/29; +2 off-phase). Связано: PSR_v1 v1.3 → v1.4; Pravila v1.7 → v1.8 (§13.10 hard-link на R14); CLAUDE.md v1.82 → v1.83. |
| **v1.13** | 10.05.2026 | **Закрытие 4 структурных находок аудита нормативной документации:** **§7 «Source of truth»** обновлён с 5-уровневой на 7-уровневую цепочку — добавлен `Plugin_stack_rules_v1.md` (PSR_v1) уровнем 3 (координирующий слой между paired-stack ядром и расширенным UI-пулом); явно вынесен Pravila §12 (Superpowers hard rule) уровнем 0; sync с CLAUDE.md §1. **§4.7 (новый) — #33 claude-md-management plugin** формализован как off-phase инфраструктурный инструмент (был фактически включён в `~/.claude/settings.json` с момента CLAUDE.md §5 п.10, но без формализации); отдельная категория **инфраструктурная**, не UI — поэтому не попадает под Pravila §13 (расширенный UI-пул) и не проходит R6.0/R6.1/R14 pipeline. **§6 «Конфликты и решения»** расширен с 5 до 10 строк — добавлены 5 новых конфликтов из PSR_v1 v1.4: UPM↔FD, 21st↔Vuetify-эквивалент, 21st↔брендовый App*, framer-motion↔motion-v, UPM↔21st. **§4.6 — settings.json → ~/.claude.json:** уточнено, что API-ключ 21st хранится в `~/.claude.json`, **не** в `~/.claude/settings.json`. **§0 — счётчик 31 → 33** (3 off-phase: UPM #31, 21st #32, claude-md-management #33). Total формализованных: 33 (29 активных по фазам + 3 off-phase + 1 заменённый PG MCP исторически). Связано: Pravila v1.8 → v1.9, PSR_v1 v1.4 → v1.5, CLAUDE.md v1.83 → v1.84. |
| **v1.14** | 10.05.2026 (вечер) | **Закрытие 3 находок второго аудита правил использования плагинов и скилов** (P0-01, P0-04, P2-01 в Tooling — из 15 общих находок). **P0-01: §10.3 шаг 2 sync с §4.1** — раньше шаг гласил «Установить Superpowers с конфигом enabled_skills = только 3» (политика v1.7), но §4.1 того же файла говорит «v1.8 снятие запретов через §11 override (полное снятие); v1.9 hard rule §12 первоочерёдное использование» — внутри-документная контрадикция. v1.14: §10.3 шаг 2 переписан на 14 skills с пометкой об устаревшей версии. **P0-04: §13 +v1.13 +v1.14 entries** — раньше история обрывалась на v1.12, хотя шапка описывала v1.13. v1.14: таблица синхронизирована (добавлены v1.13 + v1.14 строки). **P2-01: §7 priority chain +Tooling explicit slot** — раньше Tooling Прил. Н формально не было в priority chain ни одного из 4 файлов, хотя PSR_v1 R0.1 говорил «stack ниже Tooling»; формальная дыра при конфликте «Tooling vs PSR_v1». v1.14: добавлен note про Tooling уровнем 2b alongside CLAUDE.md (оба operational maps; при прямом конфликте — приоритет CLAUDE.md). Total формализованных: **33** (без изменений; правки касаются формулировок и priority chain). Связано: Pravila v1.9 → v1.10, PSR_v1 v1.5 → v1.6, CLAUDE.md v1.84 → v1.85. Через `/claude-md-management:claude-md-improver`. |
| **v1.15** | 10.05.2026 (поздний вечер) | **Закрытие 4 находок третьего аудита правил использования плагинов и скилов** (P1-03/04/05 + §11.5/§12 «28→33» в Tooling — из 13 общих находок). **P1-03/04/05: sync cross-refs шапки** на актуальные версии связанных документов после bump'ов CLAUDE.md v1.85 → v1.86 и PSR_v1 v1.6 → v1.7: «Pravila v1.9+» → «v1.10+», «PSR_v1 v1.5+» → «v1.7+», «CLAUDE.md v1.84+» → «v1.86+». «+»-нотация сохранена (forward-compat). **§11.5/§12 — формулировка «28 инструментов» → «33 формализованные позиции»:** в DevOps-разделе текст застрял с эпохи v1.0, когда счётчик был 28; смысловое назначение фразы — «реестр Лидерры», который теперь имеет 33 формализованных позиции. История версий ниже и changelog'и в шапках v1.0/v1.10/v1.12 — это снимки эпох и не правятся. Total формализованных: **33** (без изменений; правки касаются формулировок и cross-refs). Связано: PSR_v1 v1.6 → v1.7, CLAUDE.md v1.85 → v1.86. Pravila v1.10 — без правок. Через `/claude-md-management:claude-md-improver`. |
---
*Прил. Н v1.15 от 10.05.2026 (поздний вечер) — закрытие 4 находок третьего аудита (P1-03/04/05 sync cross-refs, §11.5/§12 «28→33»). 33 позиций (без изменений).*
*Прил. Н v1.14 от 10.05.2026 (вечер) — закрытие 3 находок второго аудита (P0-01 §10.3 sync, P0-04 §13 +v1.13 +v1.14 entries, P2-01 §7 +Tooling explicit slot). 33 позиций (без изменений).*
*Прил. Н v1.13 от 10.05.2026 — закрытие 4 структурных находок аудита нормативной документации (§7 +PSR_v1 уровнем 3, §4.7 новый — #33 claude-md-management, §6 +5 конфликтов v1.4, §4.6 settings → .claude.json). 33 позиций (19/29 активны по фазам + 3 off-phase + 1 заменённый PG MCP).*
*Прил. Н v1.12 от 10.05.2026 — формализованы #31 UPM + #32 21st Magic MCP как off-phase tools; §9 расширен motion-runtime denylist'ом. 31 позиций (19/29 активны по фазам + 2 off-phase).*
*Прил. Н v1.10 от 09.05.2026 — добавлен #30 Frontend Design plugin (paired со Superpowers), 19/29 активных.*
*Прил. Н v1.0 от 06.05.2026 — старт документации по tooling.*
*Связано: `CLAUDE.md` (корень), `Pravila_raboty_Claude_v1_1.md` v1.8+, `README_АРХИВ_v8_4.md` v8.4+.*