9ee31b71cb
Doc hygiene после установки Boost (e04f53b) и Roave/SA (0eb2f72). Прогноз → факт: что планировалось vs что реально сделано. CLAUDE.md v1.7 → v1.8: - §0: реестр инструментов → Tooling v1.5 - §6 «Текущая фаза»: 0 → 1 (15/28 активных, перечислены 6 backend-tool'ов фазы 1, добавлен smoke-test factual status, отмечены остающиеся #15/#16, отметка про #17 → ручной cron) - §7 «Laravel Boost»: переписан с прогноза на факт. Wizard сломан на кириллице → manual setup. «Отключение guidelines» помечено как избыточное (Roster auto-detect делает это сам). Путь Vuetify guideline скорректирован: app/.ai/guidelines/vuetify.md (был resources/boost/guidelines/vuetify.blade.php) Tooling v1.4 → v1.5: - Шапка + блок «Что нового в v1.5» (Boost+SA active, manual setup) - §10.1: 12 шагов перехода 0→1 → таблица «план/статус» с галочками на фактических коммитах (e04f53b,0eb2f72,30f0335,0345683) - §10.2: добавлено уточнение пути userGuidelineDir = '.ai/guidelines' после source-проверки GuidelineComposer Открытые_вопросы — без изменений (это техническая doc-hygiene, не продуктовое решение). Memory обновляется отдельно (project_state + feedback_environment п.26). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
416 lines
39 KiB
Markdown
416 lines
39 KiB
Markdown
# Приложение Н — Tooling, скиллы и плагины Claude (v8.3)
|
||
|
||
**Дата:** 08.05.2026 (поздний вечер)
|
||
**Версия:** 1.5 (Boost v2.4.6 + roave/security-advisories установлены, wizard обойдён ручным конфигом)
|
||
**Адресат:** Claude + разработчики проекта Лидерра
|
||
**Назначение:** единый источник истины по 28 инструментам разработки, скиллам Claude Code, MCP-серверам и плагинам, используемым в проекте. Зафиксирован выбор, объяснено, что заменяет что, и в какой фазе вводится каждый инструмент.
|
||
|
||
> **Связано:**
|
||
>
|
||
> - `Pravila_raboty_Claude_v1_1.md` v1.2+ — §4.8 «Шифры приложений» (Н занят)
|
||
> - `CLAUDE.md` (корень репозитория) — оперативная карта инструментов с приоритетом правил
|
||
> - `README_АРХИВ_v8_4.md` v8.4+ — состав архива
|
||
|
||
**Что нового в 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.** Установлено в фазе 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) | **23** | +6 |
|
||
| **3 — pre-production** | ~спринт 12, перед публичным релизом | **28** | +5 |
|
||
|
||
Полный перечень — §2–§5. Карта «когда что использовать» — §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` | `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` или Cargo | Линтер миграций PostgreSQL — предупреждает о блокирующих ALTER на партиционированных таблицах (`deals`, `supplier_lead_costs`) |
|
||
| 16 | **pgFormatter** | Скачать с pgformatter.darold.net | Форматирование SQL. Запускать через хук на правке `db/schema.sql` |
|
||
| 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 (+6 новых, итого 23 активных)
|
||
|
||
**Триггер:** первый коммит в `resources/js/` или отдельную папку Vue-приложения.
|
||
|
||
### 4.1. Поведенческий слой — Superpowers (выборочно)
|
||
|
||
| # | Инструмент | Установка | Состав | Когда использовать |
|
||
|---|---|---|---|---|
|
||
| 19 | **Superpowers (3 skills из 13)** | `/plugin install superpowers@claude-plugins-official`, в конфиге оставить только нужные | `test-driven-development`, `systematic-debugging`, `subagent-driven-development` | TDD для биллинга и RLS-политик; разбор инцидентов из Прил. И; двухстадийный review больших патчей `schema.sql` |
|
||
|
||
**Отключённые skills и почему:**
|
||
|
||
- `brainstorming` — дублирует §4.5 правил Claude («3 варианта»)
|
||
- `writing-plans` + `executing-plans` — дублирует §8.4 правил Claude (защита от компакции)
|
||
- `dispatching-parallel-agents` — конфликт с §2.2 («один архитектурный вопрос за раз»)
|
||
- `using-git-worktrees` — нестабильно на Windows (длинные пути, пробелы)
|
||
- `finishing-a-development-branch` — дублирует обычный `gh pr create`
|
||
- `requesting-code-review` + `receiving-code-review` — дублирует процесс в правилах
|
||
- `writing-skills` — нам не нужно создавать новые skills
|
||
- `using-superpowers`, `verification-before-completion` — справочные, не критичные
|
||
|
||
### 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** | `npm i -D histoire @histoire/plugin-vue` | Каталог Vue-компонентов на базе Vuetify. Передача дизайнеру (Диз-1) и frontend-команде | Не Storybook — он тяжелее, медленнее, ориентирован на React |
|
||
|
||
---
|
||
|
||
## 5. Фаза 3 — pre-production (+5 новых, итого 28 активных)
|
||
|
||
**Триггер:** ~спринт 12, перед публичным релизом MVP.
|
||
|
||
| # | Инструмент | Установка | Категория | Роль |
|
||
|---|---|---|---|---|
|
||
| 25 | **Semgrep + Semgrep MCP** | `pip install semgrep` + `claude mcp add semgrep` | SAST | Скан по антипаттернам Прил. М §6.6: пароль в `<input type="text">`, API-ключи в `<input type="text">`, hardcoded URL вроде `prostats.info/bitrix24/webhook.php` |
|
||
| 26 | **Trivy** | GitHub Releases | Container scan | Скан Docker-образов перед push в Yandex Container Registry |
|
||
| 27 | **GitHub Dependabot** | `.github/dependabot.yml` | Dependency scan | Авто-PR с фиксом CVE для `composer.json` и `package.json` |
|
||
| 28 | **pg_audit** (расширение PostgreSQL) | `CREATE EXTENSION pgaudit` | Compliance | Аудит-логи в дополнение к `auth_log`, `pd_processing_log`, `incidents_log` (требование 152-ФЗ) |
|
||
| 29 | **pg_anonymizer** (расширение PostgreSQL) | `CREATE EXTENSION anon` | Compliance | Маскирование ПДн в dev/staging-дампах. Правило §5.1 правил Claude (`+7XXXXXXXXXX`, `***@***`) |
|
||
|
||
> Нумерация 25–29 — это глобальные индексы в порядке введения. Активных в финале — 28 (см. §0): из 29 номеров минус #1 (PostgreSQL MCP) — заменён Boost'ом.
|
||
|
||
---
|
||
|
||
## 6. Конфликты и решения
|
||
|
||
5 зон, где без явного правила я выберу не тот инструмент:
|
||
|
||
| # | Конфликт | Решение |
|
||
|---|---|---|
|
||
| 1 | **PostgreSQL MCP ↔ Laravel Boost (Database Query)** в момент перехода фазы 0→1 | В момент `boost:install` сразу убрать PG MCP из `.mcp.json`. Не оставлять оба активными |
|
||
| 2 | **Pest ↔ PHPUnit** | **Pest 4** (CTO-12 переоткрыт+закрыт 08.05.2026 поздний вечер). На `boost:install` отключить guideline PHPUnit |
|
||
| 3 | **vue-tsc ↔ Volar inline check** | Volar — для редактора (быстрый). vue-tsc — только в CI (полный pass) |
|
||
| 4 | **ESLint stylistic ↔ Prettier** | `eslint-config-prettier` обязателен. Без него — конфликт правил |
|
||
| 5 | **Pa11y ↔ Lighthouse a11y** | Lighthouse не входит в 28 (он инфраструктурный, см. §12). Если будет добавлен — отключить категорию `accessibility` через `--only-categories=performance,best-practices` |
|
||
|
||
---
|
||
|
||
## 7. Source of truth — приоритет правил
|
||
|
||
При противоречии между правилами:
|
||
|
||
```
|
||
docs/Pravila_raboty_Claude_v1_1.md (продуктовые правила, утверждены заказчиком)
|
||
↓
|
||
CLAUDE.md (корень — оперативная карта, авто-загружается Claude Code)
|
||
↓
|
||
.claude/settings.json (хуки, permissions — исполняется средой)
|
||
↓
|
||
memory/*.md (динамическая память между сессиями Claude)
|
||
↓
|
||
Superpowers skills и другие плагины (поведенческие подсказки, ниже всех)
|
||
```
|
||
|
||
**Правило применения:** при любом конфликте — выбирается верхний источник. Нижестоящие игнорируются в части, которая противоречит верхним. Это правило явно зафиксировано в `CLAUDE.md` §1.
|
||
|
||
---
|
||
|
||
## 8. Source of truth — конфиги
|
||
|
||
Где какой конфиг лежит и кто его редактирует:
|
||
|
||
| Конфиг | Где | Редактирует | В git? |
|
||
|---|---|---|---|
|
||
| `.markdownlint.json` | корень | разработчик | ✅ |
|
||
| `cspell.json` + `cspell-words.txt` | корень | разработчик (словарь обновляется по PR) | ✅ |
|
||
| `.lychee.toml` | корень | разработчик | ✅ |
|
||
| `.gitleaks.toml` | корень | security lead | ✅ |
|
||
| `.stylelintrc.json` | корень | frontend lead (фаза 2) | ✅ |
|
||
| `pa11y.config.json` | корень | frontend lead | ✅ |
|
||
| `.claude/settings.json` (хуки, permissions) | `.claude/` | Claude (по запросу через `/update-config`) | ✅ |
|
||
| `.mcp.json` (MCP-серверы) | корень | разработчик (не Boost) | ✅ — расхождение с дефолтом Boost'а |
|
||
| `CLAUDE.md` | корень | Claude (по запросу заказчика) | ✅ |
|
||
| `boost.json` | корень | разработчик | ✅ |
|
||
| `pint.json` | корень (фаза 1) | backend lead | ✅ |
|
||
| `phpstan.neon` (Larastan) | корень (фаза 1) | backend lead | ✅ |
|
||
| `eslint.config.js` | корень (фаза 2) | frontend lead | ✅ |
|
||
| `.prettierrc` + `.prettierignore` | корень (фаза 2) | frontend lead | ✅ |
|
||
| `vitest.config.ts` | корень (фаза 2) | frontend lead | ✅ |
|
||
| `histoire.config.ts` | корень (фаза 2) | frontend lead | ✅ |
|
||
| `semgrep.yml` | `.github/` (фаза 3) | security lead | ✅ |
|
||
| `dependabot.yml` | `.github/` (фаза 3) | DevOps | ✅ |
|
||
|
||
---
|
||
|
||
## 9. Что НЕ ставим и почему (10 пунктов)
|
||
|
||
| Инструмент | Причина отказа |
|
||
|---|---|
|
||
| **Frontend Design** plugin (Anthropic) | Anti-pattern «Inter» противоречит брендбуку §4.1; не знает Vuetify; нет a11y; рассчитан на лендинги, не на B2B-CRM |
|
||
| **CodeQL** | Дублирует Semgrep; платный для private-репо; Semgrep CE покрывает наши потребности |
|
||
| **Laravel Security Checker** (`enlightn/security-checker`) | Дублирует Dependabot + Roave |
|
||
| **PHP-CS-Fixer** | Перекрывается Pint'ом (Pint = надстройка над CS-Fixer) |
|
||
| **Psalm** | Перекрывается Larastan |
|
||
| **Jest** | Перекрывается Vitest (один тест-раннер) |
|
||
| **Storybook** (для Vue) | Histoire легче и нативнее для Vue 3 + Vite |
|
||
| **Snyk** (платный) | Dependabot бесплатный и достаточный |
|
||
| **markdown-link-check** | lychee быстрее (Rust vs Node) и надёжнее |
|
||
| **Sequential Thinking MCP** | Дублирует моё базовое рассуждение, жрёт токены |
|
||
| **Memory MCP** | Конфликтует с моей файловой памятью в `memory/` |
|
||
| **Tailwind MCP / shadcn-vue** | У нас Vuetify (CTO-11), не Tailwind |
|
||
| **Inertia / Livewire / Filament / Flux UI / Nova / Folio / Volt / Wayfinder guidelines** Boost'а | Не используются в стеке проекта |
|
||
|
||
---
|
||
|
||
## 10. Процедура перехода между фазами
|
||
|
||
### 10.1. Фаза 0 → Фаза 1
|
||
|
||
**Триггер:** `composer create-project laravel/laravel app` (или эквивалент).
|
||
|
||
**Шаги (исходный план; отметки фактического статуса в правой колонке после прохождения 08.05.2026):**
|
||
|
||
| # | Шаг | Статус 08.05.2026 |
|
||
|---|---|---|
|
||
| 1 | `composer require laravel/boost --dev` | ✅ `e04f53b` (Boost v2.4.6) |
|
||
| 2 | ~~Запустить `php artisan boost:install` — пройти интерактивный wizard~~ | ⚠️ **обойдено**: wizard сломан на этой машине (кириллица + L13 ConfiguresPrompts bug) — см. §3.1 «Что нового в v1.5» и memory `feedback_environment.md` п.26. **Manual setup** вместо wizard'а |
|
||
| 3 | Удалить PostgreSQL MCP из `.mcp.json` | ✅ убран ещё в фазе 0 (`_comment_postgres`) |
|
||
| 4 | ~~В `boost.json` — отключить нерелевантные guidelines~~ | ❌ **избыточно**: Boost через Roster auto-detect видит установленные пакеты — не установленных (Inertia/Livewire/Tailwind/Filament/Sail/PHPUnit) не серверит. `boost.json` минимален: 3 ключа (agents/guidelines/mcp) |
|
||
| 5 | Создать кастомный guideline для Vuetify 3 в **`app/.ai/guidelines/vuetify.md`** (был `resources/boost/guidelines/vuetify.blade.php` — путь скорректирован на §10.2 после source-проверки) | ✅ `e04f53b` |
|
||
| 6 | ~~Слить (не перезаписать) `CLAUDE.md` если Boost создал черновик~~ | ❌ **не применимо**: при manual setup Boost ничего не пишет в `CLAUDE.md` (ни корневой, ни `app/CLAUDE.md`). Корневой остаётся источником истины |
|
||
| 7 | Установить Pint, Larastan, Roave/SecurityAdvisories, IDE Helper | ✅ Pint+Larastan+IDE Helper в `0345683`; Roave/SA в `0eb2f72` |
|
||
| 8 | Установить squawk, pgFormatter | ⏸ pending: Windows-бинарник squawk + Perl pgFormatter — отдельная задача |
|
||
| 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 с конфигом `enabled_skills` = только 3 (`test-driven-development`, `systematic-debugging`, `subagent-driven-development`).
|
||
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 отключён намеренно (см. §4.1).
|
||
- Если ручное использование worktree — избегать пробелов в путях (`c:\projects\liderra-feature` ОК, `c:\My Documents\...` — НЕ).
|
||
|
||
### 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.
|
||
- **pgFormatter** — Perl-скрипт, поставить ActivePerl или WSL.
|
||
- **Pa11y**, **markdownlint-cli2**, **cspell**, **Histoire** — npm-пакеты, работают нативно.
|
||
|
||
### 11.5. Yandex Cloud CLI и Terraform
|
||
|
||
Не входят в 28 инструментов (см. §12). Ставятся отдельно для DevOps-роли. На Windows — `yc` и `terraform` через скачивание `.zip` или `winget`.
|
||
|
||
---
|
||
|
||
## 12. Что вне 28 инструментов (инфраструктура)
|
||
|
||
Эти 7 пунктов критичны для проекта, но используются DevOps, не Claude. Поэтому в 28 не входят, но фиксирую для полноты:
|
||
|
||
| Инструмент | Зачем |
|
||
|---|---|
|
||
| Yandex Cloud CLI (`yc`) | Провижининг по Прил. К |
|
||
| Terraform + `yandex-cloud/yandex` provider + terraform-ls | IaC |
|
||
| Docker + docker-compose | Локальная разработка |
|
||
| GitHub Actions | CI/CD pipeline |
|
||
| Sentry self-hosted | Ю-7 (зафиксировано) |
|
||
| Grafana + Prometheus + Alertmanager | Прил. И §1 |
|
||
| Lighthouse CI | Performance-регрессия в pipeline |
|
||
|
||
Если позже решим вовлечь Claude в инфраструктурные задачи — добавится фаза 4 (или эти инструменты переедут в 28).
|
||
|
||
---
|
||
|
||
## 13. История версий
|
||
|
||
| Версия | Дата | Что нового |
|
||
|---|---|---|
|
||
| **v1.0** | 06.05.2026 | Первая версия. Зафиксированы 28 активных инструментов в 4 фазах, перечень того, что НЕ ставим (10+ пунктов), источники истины для конфигураций, процедура перехода между фазами, особенности Windows + PowerShell. Утверждено заказчиком 06.05.2026 («да, A, делай. Подтверждаю»). Архитектурных изменений в основном архиве: 0 (только добавлен новый шифр Н). |
|
||
|
||
---
|
||
|
||
*Прил. Н v1.0 от 06.05.2026 — старт документации по tooling.*
|
||
*Связано: `CLAUDE.md` (корень), `Pravila_raboty_Claude_v1_1.md` v1.2+, `README_АРХИВ_v8_4.md` v8.4+.*
|