chore(merge): R15 motion cleanup origin/main → plan5-frontend-projects

Merge `origin/main` (commits 0fd93fd planning + 615db99 normative) into
plan5-frontend-projects. Merge-base 48f27b4. plan5 был 113 ahead / 2 behind.

CONFLICTS RESOLVED (2 files, manual):
— CLAUDE.md: шапка → v1.90; §0 cross-refs → take origin/main (Pravila
  v1.11 / PSR_v1 v2.0 / Tooling v1.16); §2 Animation default stack → take
  origin/main (motion-runtime guidance); §5 п.12 → take origin/main
  (marker «Резерв (снят 12.05.2026)»); §6 фаза + §8 self-review → keep
  plan5 (Plan 4 MERGED + Plan 5 frontend + Quiet Luxury context); §9 →
  keep both v1.88 entries explicitly labelled (plan5 schema-sync +
  origin/main R15 removal — version-number collision result of parallel-
  branch bump'ов) + v1.89 plan5 factual fix + new v1.90 merge entry.
— docs/CHANGELOG_claude_md.md: keep all three entries (v1.90/v1.89/v1.88).

FAST-FORWARDED (3 files, no conflict — plan5 не редактировал):
— docs/Plugin_stack_rules_v1.md v1.7 → v2.0 (R15 удалён, 162 lines diff)
— docs/Pravila_raboty_Claude_v1_1.md v1.10 → v1.11 (§11.5/§13.2 счётчик
  16→15 правил + cross-refs)
— docs/Tooling_v8_3.md v1.15 → v1.16 (§9.2 reformulated в technical
  guidance: motion-v , framer-motion technical block)

ADDED FROM origin/main (2 files):
— docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md
— docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md

cspell-words.txt +1: «форкнулась» (валидный дев-жаргон, в merge-entries).

0 code changes (resources/js/, app/, db/ нетронуты).
0 npm install (motion-v / gsap / anime.js теперь разрешены, не делается).
0 schema changes.

POST-MERGE TODO (отдельные шаги):
— /claude-md-management:revise-claude-md polish (per §5 п.10)
— memory updates: feedback_plugin_paired_stack + project_state +
  reference_archive (бывшая «branch-divergent state» note → resolved)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-05-13 03:51:27 +03:00
8 changed files with 1160 additions and 160 deletions
+11 -9
View File
File diff suppressed because one or more lines are too long
+1
View File
@@ -1071,6 +1071,7 @@ reestr
sumary
regen
vuetifyjs
форкнулась
# Фамилии лидов из примеров (с диакритикой как в исходниках)
Бузо́ва
File diff suppressed because one or more lines are too long
+36 -126
View File
@@ -1,15 +1,15 @@
# Plugin Stack Rules — Superpowers + Frontend Design (v1.7)
# Plugin Stack Rules — Superpowers + Frontend Design (v2.0)
**Дата:** 10.05.2026 (поздний вечер)
**Назначение:** свод правил совместного использования плагинов Claude Code в проекте Лидерра — paired-stack ядро `obra/superpowers` (14 skills) + `anthropics/frontend-design`, плюс расширенный пул UI-инструментов `ui-ux-pro-max` (skill, marketplace `nextlevelbuilder/ui-ux-pro-max-skill`) и `21st.dev Magic MCP` (MCP-сервер `magic`), плюс инфраструктурный `claude-md-management` (skills, marketplace `anthropics/claude-plugins-official`), плюс правила runtime motion-стойки. Снимает запрет CLAUDE.md §5 п.5 на Frontend Design plugin (действовал до v1.77 включительно). Документ — внутренне непротиворечив: 8 первичных конфликтов закрыты в v1.0 + 5 патчей по реальным трениям A–E в v1.1 + 4 новых правила R10–R13 против перекрытий с другими плагинами в v1.2 + 6 уточняющих патчей F–K по найденным трениям второго порядка в v1.3 + 2 новых правила R14 (pipeline внешних UI-генераторов: UPM + 21st Magic MCP) и R15 (motion-системы: framer-motion hard-запрет + motion-v узкое окно по 4 условиям) в v1.4 + 5 структурных правок аудита в v1.5 (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка) + 3 правки второго аудита в v1.6 (R0.4.A свёрнут до cross-ref на Pravila §12.3 SoT — устраняет дрейф формулировок; R0.6 hard-стопы пронумерованы 1–11 для надёжности cross-refs «пункт 9/10/11»; R0.1 +Tooling Прил. Н slot уровня 2b) + 1 правка третьего аудита в v1.7 (sync cross-refs на актуальные версии связанных документов после bump'ов CLAUDE.md v1.86 / Tooling v1.15; description-fix описки «уровня 2.5»→«уровня 2b» внутри changelog'а v1.6, сверка с фактическим R0.1).
**Дата:** 12.05.2026
**Назначение:** свод правил совместного использования плагинов Claude Code в проекте Лидерра — paired-stack ядро `obra/superpowers` (14 skills) + `anthropics/frontend-design`, плюс расширенный пул UI-инструментов `ui-ux-pro-max` (skill, marketplace `nextlevelbuilder/ui-ux-pro-max-skill`) и `21st.dev Magic MCP` (MCP-сервер `magic`), плюс инфраструктурный `claude-md-management` (skills, marketplace `anthropics/claude-plugins-official`). Снимает запрет CLAUDE.md §5 п.5 на Frontend Design plugin (действовал до v1.77 включительно). Документ — внутренне непротиворечив: 8 первичных конфликтов закрыты в v1.0 + 5 патчей по реальным трениям A–E в v1.1 + 4 новых правила R10–R13 против перекрытий с другими плагинами в v1.2 + 6 уточняющих патчей F–K по найденным трениям второго порядка в v1.3 + 1 новое правило R14 (pipeline внешних UI-генераторов: UPM + 21st Magic MCP) в v1.4 (R15 motion-системы введены в v1.4 и удалены в v2.0) + 5 структурных правок аудита в v1.5 (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка) + 3 правки второго аудита в v1.6 (R0.4.A свёрнут до cross-ref на Pravila §12.3 SoT — устраняет дрейф формулировок; R0.6 hard-стопы пронумерованы 1–11 для надёжности cross-refs «пункт 9/10/11»; R0.1 +Tooling Прил. Н slot уровня 2b) + 1 правка третьего аудита в v1.7 (sync cross-refs на актуальные версии связанных документов после bump'ов CLAUDE.md v1.86 / Tooling v1.15; description-fix описки «уровня 2.5»→«уровня 2b» внутри changelog'а v1.6, сверка с фактическим R0.1) + 1 правка четвёртого аудита в v2.0 (12.05.2026 — снят R15 motion-runtime по решению заказчика; conscious rollback v1.4 audited construction; framer-motion переведён из regulatory hard-запрета в technical-guidance уровень: peerDep на react+react-dom, не работает в Vue физически).
**Принцип-аксиома (v1.2, уточнён в v1.3, расширен в v1.4):** **Stack (Superpowers + Frontend Design) — головной при решении любой задачи** в части плагинов и поведенческих слоёв. Stack-gate (R0) — единственная и **первая** точка входа. Все остальные плагины (ui-ux-pro-max, 21st Magic MCP, claude-md-management, review, security-review, init, simplify и др.) — **инструменты**, инвокируемые **внутри** stack-flow как подзадачи, не как альтернативы или параллельные решатели. Stack **исполняет** Pravila/CLAUDE.md, а не перебивает их (см. R0.1 для точного scope «головенства»). Другие плагины могут получить работу только по делегированию из stack'а или по явному `/имя-плагина` от пользователя. Runtime-зависимости проекта (motion-библиотеки и т.п.) подчиняются R15.
**Принцип-аксиома (v1.2, уточнён в v1.3, расширен в v1.4):** **Stack (Superpowers + Frontend Design) — головной при решении любой задачи** в части плагинов и поведенческих слоёв. Stack-gate (R0) — единственная и **первая** точка входа. Все остальные плагины (ui-ux-pro-max, 21st Magic MCP, claude-md-management, review, security-review, init, simplify и др.) — **инструменты**, инвокируемые **внутри** stack-flow как подзадачи, не как альтернативы или параллельные решатели. Stack **исполняет** Pravila/CLAUDE.md, а не перебивает их (см. R0.1 для точного scope «головенства»). Другие плагины могут получить работу только по делегированию из stack'а или по явному `/имя-плагина` от пользователя.
**Связанные документы:**
- [CLAUDE.md](../CLAUDE.md) v1.86+ — оперативная карта; §1 priority chain, §3.3 строка #33, §5 п.5 ссылается на этот документ (расширенный пул UI-инструментов: FD + UPM + 21st), §5 п.11 cross-ref на Pravila §12.3 SoT, §5 п.12 — на R15 (motion-системы)
- [docs/Pravila_raboty_Claude_v1_1.md](Pravila_raboty_Claude_v1_1.md) v1.10+ — §12.3 SoT для exclusions, §13 «paired stack + расширенный пул UI-инструментов» + claude-md-management как off-pool, §13.6 hard-rule tier-таблица, §13.9/§13.10 hard-link на R10/R14
- [docs/Tooling_v8_3.md](Tooling_v8_3.md) **v1.15+** — реестр инструментов; #30 Frontend Design + #31 UPM + #32 21st Magic MCP + #33 claude-md-management + §6 +5 конфликтов v1.4 + §7 7-уровневая иерархия (с v1.14 +Tooling explicit slot 2b) + §9.2 motion-runtime denylist отсылают сюда; §10.3 шаг 2 sync (14 skills) с v1.14
- [CLAUDE.md](../CLAUDE.md) v1.88+ — оперативная карта; §1 priority chain, §3.3 строка #33, §5 п.5 ссылается на этот документ (расширенный пул UI-инструментов: FD + UPM + 21st), §5 п.11 cross-ref на Pravila §12.3 SoT, §5 п.12 — резерв (R15 motion-runtime снят в v2.0)
- [docs/Pravila_raboty_Claude_v1_1.md](Pravila_raboty_Claude_v1_1.md) v1.11+ — §12.3 SoT для exclusions, §13 «paired stack + расширенный пул UI-инструментов» + claude-md-management как off-pool, §13.6 hard-rule tier-таблица, §13.9/§13.10 hard-link на R10/R14
- [docs/Tooling_v8_3.md](Tooling_v8_3.md) **v1.16+** — реестр инструментов; #30 Frontend Design + #31 UPM + #32 21st Magic MCP + #33 claude-md-management + §6 +5 конфликтов v1.4 (строка «framer-motion ↔ motion-v» — historical после v2.0) + §7 7-уровневая иерархия (с v1.14 +Tooling explicit slot 2b) + §9.2 motion-runtime guidance (technical-only после v1.16); §10.3 шаг 2 sync (14 skills) с v1.14
> **Техническая особенность Claude Code:** при первой установке Frontend Design plugin в долгой сессии плагин не появляется в системном списке доступных skills до старта **новой** сессии (новый чат, не reload). Это конструктивная особенность Claude Code (skill list = constant per conversation), не правило и не баг. Файлы плагина доступны на диске сразу, инвокация через `Skill` tool — только в новом чате.
@@ -133,7 +133,7 @@ Stack стоит **ниже** в приоритете, чем:
Тихий выбор без gate при низкой уверенности = нарушение даже в Auto mode.
**Hard-стоп даже в Auto mode** — обязательная остановка независимо от классификации, при любом из триггеров (нумерация введена в v1.6 для надёжности cross-refs «R0.6 пункт N»; при добавлении/удалении пункта — пересмотреть все ссылки в R8/R13/R14/R15):
**Hard-стоп даже в Auto mode** — обязательная остановка независимо от классификации, при любом из триггеров (нумерация введена в v1.6 для надёжности cross-refs «R0.6 пункт N»; при добавлении/удалении пункта — пересмотреть все ссылки в R8/R13/R14):
1. Впервые на этой сессии создаю компонент из брендового семейства (`AppButton`, `AppCard`, `AppDataTable`, `AppDialog` и т.п.) и в `resources/js/components/` ещё нет precedent'а того же типа.
2. Изменение структуры brand-токенов (`resources/js/plugins/vuetify.ts` palette config, font-family bindings, theme variants).
@@ -145,8 +145,6 @@ Stack стоит **ниже** в приоритете, чем:
8. Изменение 14 OKLCH-статусов воронки или их slug-маппинга на UI.
9. **[v1.4]** Использование 21st Magic MCP (`mcp__magic__21st_magic_component_*`) для генерации компонента из брендового семейства App* (`AppButton`, `AppCard`, `AppDataTable`, `AppDialog` и любых других с префиксом `App` в `resources/js/components/`). Брендовые компоненты проходят полный R12 архитектурный flow.
10. **[v1.4]** Использование 21st для генерации компонента, для которого **уже есть Vuetify-эквивалент** (`v-data-table`, `v-text-field`, `v-dialog`, `v-select`, `v-card`, `v-btn` и т.д.) **или существующий компонент** в `resources/js/components/`. Это дублирование стека (нарушение CLAUDE.md §5 п.6 «не два инструмента на одну задачу»).
11. **[v1.4]** Установка **motion-v** или любой другой animation runtime библиотеки (`gsap`, `anime.js`, `react-spring`, `lottie-web`, `popmotion`, `@motionone/*` и т.д.) в `package.json` без прохождения R15.2 (а)+(б)+(в)+(г).
В этих ситуациях — обязательный стоп + вопрос пользователю, без попытки «middle confidence» обойти. Auto mode не отменяет hard-стоп.
---
@@ -350,9 +348,6 @@ TDD применяется **только к фазе 4** (логика). На
| **[v1.5]** Хочется использовать **FD параллельно с 21st** на одной задаче | R14.4 implicit + R10.2: 21st вызывается **внутри** фазы 5 R2 как **подзадача FD**, не параллельно. FD — ведущий (решатель), 21st — генератор черновика. Параллельный запуск нарушает R10.2 «внешние плагины — read-only для решений» |
| **[v1.4]** UPM-палитра «выглядит лучше» Forest | R11.3 запрет инверсии иерархии + R6.1 hard-override. Forest — закон, не предложение |
| **[v1.4]** 21st сгенерировал готовый JSX-компонент с Tailwind, можно ли просто импортировать | **нет**, R14.4 требует полный pipeline: R6.0 → R6.1 → FD → возврат |
| **[v1.4]** «Поставим motion-v, у нас в Vuetify не хватает spring-physics» | без письменного кейса из ТЗ + категории (б) + Brandbook approval (в) + R12 flow (г) — R15.2 не удовлетворён, hard-стоп R0.6 пункт 11 |
| **[v1.4]** «Поставим framer-motion, у других проектов работает» | R15.1 hard-запрет. React-only физически. Не отменяется live-командой |
| **[v1.4]** Для анимации список задача — какой слой? | R11.6: 1 (Vue native `<Transition>`) → 2 (Vuetify) → 3 (CSS) → 4 (View Transitions). На уровне 1 уже закрывается типичный case |
---
@@ -520,32 +515,6 @@ Stack — **головной**. Все плагины вне stack'а — **ин
Ограничение: даже в этом случае конечное решение принимается через **уровни 12** (Brandbook + ТЗ); UPM остаётся **материалом**, не решением (R10.2). UPM не может «выиграть» против Brandbook через факт «вариант UPM красивее» — иерархия R11 остаётся законом (R11.3).
### 11.6. Иерархия motion-источников (внутри уровня визуального дизайна, v1.4)
Параллельная под-иерархия для motion (анимаций / transition'ов / gesture'ов). Применяется при ЛЮБОЙ задаче на анимацию — последовательно сверху вниз; решение принимается на первом уровне, который покрывает кейс:
```
1. BRANDBOOK (motion-tokens, если/когда добавятся в v3+)
2. ТЗ v8.5 / Открытые_вопросы (явные motion-требования)
3. Vue 3 native <Transition> + <TransitionGroup>
4. Vuetify 3 transitions
(v-fade, v-slide-y, v-slide-x, v-scale, v-expand, v-dialog-transition)
5. CSS @keyframes + transition + prefers-reduced-motion
6. View Transitions API (с feature-detection, Chrome 111+ / Safari 18+)
7. motion-v (Vue port framer-motion) — ТОЛЬКО при удовлетворении R15.2 (а)+(б)+(в)+(г)
```
**framer-motion — вне иерархии** (запрещён R15.1 — React-only).
**gsap / anime.js / react-spring / lottie-web** — также вне иерархии без явного R15-аналога активации (R0.6 пункт 11 hard-стоп).
Большинство motion-задач закрываются на уровнях 3–4 без вынесения в R12 архитектурное решение. Уровни 5–6 — для произвольных кастомных анимаций. Уровень 7 — последняя инстанция, требует R15-flow.
---
## Правило 12 — три паттерна дизайн-решений по типу решения
@@ -606,11 +575,6 @@ Stack — **головной**. Все плагины вне stack'а — **ин
| **[v1.4]** UI-фича из ТЗ, паттерн **есть в Vuetify** | высокая | **используем Vuetify**, 21st **не вызывается** (R0.6 пункт 10 hard-стоп) |
| **[v1.4]** UI-фича из ТЗ, паттерн = **брендовый компонент App*** | низкая | **hard-стоп R0.6 пункт 9** + 3 варианта по §4.5 (R12 архитектурное), 21st не вызывается |
| **[v1.4]** Архитектурное решение R12, FD дал 1–2 варианта, нужен третий | средняя | **действую**, фаза 1 R2 → подключить UPM (R11.5) для третьего варианта |
| **[v1.4]** Анимация на экране, простая (fade/slide/scale/expand) | высокая | **действую**, использую Vuetify transition или Vue `<Transition>` (R11.6 уровни 34) |
| **[v1.4]** Анимация средней сложности (custom keyframes, hover-state с timing) | высокая | **действую**, использую CSS `@keyframes` (R11.6 уровень 5) |
| **[v1.4]** Cross-route transition (hero-transition при переходе между экранами) | средняя | **фиксирую предположение**: «использую View Transitions API с fallback на Vue `<Transition>` для не-Chromium»; если кейс требует motion-v → R15.2 |
| **[v1.4]** Запрос «давай добавим framer-motion / motion-v / gsap / lottie» **без явного кейса** | низкая | **hard-стоп R0.6 пункт 11** + R15.2 формальная проверка триггеров; нельзя действовать в Auto mode |
| **[v1.4]** Кейс из ТЗ требует gesture с физикой (drag с инерцией, swipe с pinch) | средняя | **действую**, R15.2 запускает brainstorming + 3 варианта (motion-v vs vanilla pointer events vs CSS scroll-snap); презентую таблицу |
### 13.1. Принципы matrix'а
@@ -740,95 +704,16 @@ Pipeline активируется при одновременном выполн
---
## Правило 15 — Motion-системы (animation libraries, v1.4)
**Назначение:** двухуровневое решение по runtime-библиотекам анимаций. Уровень 1 — постоянный hard-запрет архитектурно несовместимых. Уровень 2 — узкое легальное окно для совместимых при выполнении 4 условий.
### 15.1. framer-motion — запрещено всегда (hard-запрет)
`framer-motion` — React-only runtime библиотека (использует React fiber-tree, hooks, JSX). В Vue + Vuetify стеке физически не работает. Установка через npm бессмысленна — мёртвый код в `node_modules`.
Hard-запрет, **не отменяется** ни Auto mode, ни live-командой пользователя уровня R0.4.B. Единственный путь снятия — **смена базового frontend-стека** (изменение CLAUDE.md §2), что само по себе — R0.6 hard-стоп «изменение технологии в стек» с brainstorming + 3 варианта §4.5 + явное согласование Brandbook update.
### 15.2. motion-v — условно разрешено по 4 условиям триггера
`motion-v` = Vue 3 порт API framer-motion (отдельный пакет от того же maintainer'а Motion, ~30 KB gzipped). Технически совместим со стеком, но добавление в проект — R0.6 hard-стоп «новая технология в стек» (пункт 11 v1.4).
Активация motion-v разрешена **ТОЛЬКО при одновременном выполнении ВСЕХ четырёх условий**:
**(а) Письменный кейс.** Конкретный UX-кейс из ТЗ v8.5 ИЛИ из Открытые_вопросы_*.md (закрытый пользователем), который НЕ покрывается дефолтной motion-стойкой R11.6 уровни 3–6. Без явного кейса в письменном источнике — **нельзя**, даже если задача кажется подходящей.
**(б) Категория оправданности.** Кейс попадает в одну из категорий, где motion-v реально оправдан:
- gesture-driven UI с физикой (drag с инерцией, swipe, pinch);
- shared-layout transitions между route'ами (hero-transition);
- spring-physics на интерактивных контролах (где CSS-easings демонстративно недостаточно).
Все остальные категории (fade, slide, scale, expand, hover, простые route-transitions) — **уровни 34 R11.6** их закрывают, motion-v избыточен.
**(в) Brandbook approval.** Brandbook v2 (или последующий) явно допускает motion-rich направление для затронутого экрана. По умолчанию Forest = restrained (R6.1) — любое отклонение требует **Brandbook-update пользователем** (новая запись в [BRANDBOOK_v2 §X](../liderra_v8_handoff/docs/BRANDBOOK_v2.md) о motion-направлении или явное изменение R6.1 hard-override).
**(г) Полный R12 архитектурный flow.** Прохождение:
- `brainstorming` (Superpowers) — фаза 1;
- 3 варианта решения (Pravila §4.5): «motion-v vs CSS @keyframes vs View Transitions API» с честной сравнительной таблицей (bundle size / поддержка браузеров / совместимость с SSR / кривая обучения / Forest-совместимость);
- явное согласование пользователем («делай», «вариант X»).
### 15.3. Default motion stack (без motion-v) — действует всегда по умолчанию
При ЛЮБОЙ задаче на анимацию — сначала пробуем эти слои в порядке (по R11.6):
1. Vue 3 native `<Transition>` / `<TransitionGroup>` (enter/leave hooks, FLIP через TransitionGroup, JS-callbacks);
2. Vuetify 3 transitions (`v-fade-transition`, `v-slide-y-transition`, `v-slide-x-transition`, `v-scale-transition`, `v-expand-transition`, `v-dialog-transition`);
3. CSS `@keyframes` + `transition` + поддержка `prefers-reduced-motion` (произвольные анимации, GPU-acceleration через `transform`/`opacity`);
4. View Transitions API (Chrome 111+, Safari 18+) — для cross-document / cross-route переходов с feature-detection.
Эти четыре слоя — источники истины для motion (R11.6 уровни 36). **Большинство задач закрываются на уровне 1 или 2**, без motion-v и без View Transitions.
### 15.4. Триггер «дефолт не покрывает» — формальная проверка
Прежде чем поднимать вопрос motion-v, требуется **явная фиксация одной строкой**:
> «Попробовал слои 1–4 R11.6 (R15.3). Не закрывает потому что [конкретная техническая причина]. Поднимаю R15.2 для активации motion-v.»
Без этой фиксации R15.2 (а)+(б) **не считаются удовлетворёнными**.
**Типичные ложные триггеры (НЕ повод для motion-v):**
- «хочется живее» — субъективно, не кейс;
- «в дизайне у других CRM это есть» — не источник истины;
- «framer-motion смотрится круто» — Forest = restrained (R6.1);
- «спросил пользователя — он сказал давай» — устной просьбы недостаточно, нужен письменный кейс (а).
### 15.5. Hard-запрет дублирования
После активации motion-v (если когда-либо) — Vuetify transitions и Vue native `<Transition>` **не удаляются** из проекта. motion-v применяется **ТОЛЬКО к экранам/компонентам, прошедшим R15.2**; всё остальное продолжает работать на дефолтной стойке R15.3. Это снимает риск ad-hoc «давайте перепишем всё на motion».
### 15.6. Live-override
- **framer-motion:** live-override **запрещён** (R15.1 hard).
- **motion-v:** live-override **запрещён без прохождения R15.2** — пользователь может сказать «через motion-v», но это всё равно проходит через brainstorming + 3 варианта (R15.2 пункт г).
Это исключение из общего R0.4.B — обоснование: установка runtime-зависимости ≠ инвокация плагина, у неё другой класс последствий (bundle size, CI, lock-file, browser compat).
### 15.7. Аналогичные правила для других animation runtime библиотек
`gsap`, `anime.js`, `react-spring` (React-only), `lottie-web`, `popmotion`, `@motionone/dom` и любые другие animation runtime библиотеки — попадают под **R0.6 пункт 11 hard-стоп**. Активация — по аналогии с R15.2 (4 условия + R12 flow).
`react-spring` дополнительно — **R15.1 аналог** (React-only, физически не работает в Vue стеке).
---
## Финальная формула
> **Любая задача → Правило 0 (gate, stack-головной) → Правило 1 (классификация по типу) → Правило 9 (решение, ≤2 итерации) → Правило 13 (decision matrix по уверенности) → Правило 2 (фаза UI-фичи) → исполнение по Правилам 3, 4, 6 → если нужен внешний UI-генератор: Правило 14 pipeline (UPM на фазах 1/2, 21st на фазе 5) → если нужна анимация: Правило 15 (default стойка R15.3, motion-v только по 4 условиям R15.2) → завершение по Правилу 7 → ревью по Правилу 5. Источники истины — Правило 11 (UI/UX) + R11.6 (motion). Паттерны решений — Правило 12. Координация с не-stack плагинами — Правило 10. Тай-брейкеры — Правило 8.**
> **Любая задача → Правило 0 (gate, stack-головной) → Правило 1 (классификация по типу) → Правило 9 (решение, ≤2 итерации) → Правило 13 (decision matrix по уверенности) → Правило 2 (фаза UI-фичи) → исполнение по Правилам 3, 4, 6 → если нужен внешний UI-генератор: Правило 14 pipeline (UPM на фазах 1/2, 21st на фазе 5) → завершение по Правилу 7 → ревью по Правилу 5. Источники истины — Правило 11 (UI/UX). Паттерны решений — Правило 12. Координация с не-stack плагинами — Правило 10. Тай-брейкеры — Правило 8.**
---
## Свойства свода
- **Полнота:** каждая задача попадает в одну ветку Правила 1, каждая фаза имеет одного владельца (Правило 2), каждый артефакт ревью — один аспект (Правило 5), каждый тип закрытия — один gate (Правило 7), каждое дизайн-решение — один паттерн (Правило 12), каждая комбинация Auto+§12+R0.6 — одна строка matrix'а (Правило 13), каждый внешний UI-генератор имеет одно место в pipeline (Правило 14), каждая motion-задача — один слой R11.6 (Правило 15).
- **Головенство stack'а (v1.2 принцип-аксиома, расширена в v1.4):** stack — головной при решении любой задачи. Внешние плагины (включая UPM и 21st Magic MCP) — инструменты, инвокируемые внутри stack-flow (Правило 10) через pipeline R14. Иерархия источников UI — закон, не гайдлайн (Правило 11). Runtime-зависимости (motion) подчиняются R15.
- **Полнота:** каждая задача попадает в одну ветку Правила 1, каждая фаза имеет одного владельца (Правило 2), каждый артефакт ревью — один аспект (Правило 5), каждый тип закрытия — один gate (Правило 7), каждое дизайн-решение — один паттерн (Правило 12), каждая комбинация Auto+§12+R0.6 — одна строка matrix'а (Правило 13), каждый внешний UI-генератор имеет одно место в pipeline (Правило 14).
- **Головенство stack'а (v1.2 принцип-аксиома, расширена в v1.4):** stack — головной при решении любой задачи. Внешние плагины (включая UPM и 21st Magic MCP) — инструменты, инвокируемые внутри stack-flow (Правило 10) через pipeline R14. Иерархия источников UI — закон, не гайдлайн (Правило 11). Runtime-зависимости (motion-библиотеки и т.п.) — вне регулирования PSR_v1 с v2.0 (см. CLAUDE.md §2 «Animation default stack» — рекомендация, не hard-rule).
- **Непротиворечивость:** все найденные конфликты закрыты:
- **v1.0 (8 первичных):**
1. «Активны» → «подключены к gate» (0.1).
@@ -843,6 +728,7 @@ Hard-запрет, **не отменяется** ни Auto mode, ни live-ко
- **v1.2 (4 проектных перекрытия):** ui-ux-pro-max + другие плагины как tools (R10), иерархия источников истины UI (R11), три паттерна дизайн-решений (R12), decision matrix Auto/§12/R0.6 (R13).
- **v1.3 (6 трений второго порядка F–K):** R12 override через `brainstorming` (F); R12 тактическое разделено на «с альтернативами»/«без» для user-стиля «а/б» (G); R13 новая фича вне ТЗ — hard-стоп вместо предположения (H); R11.4 fallback при недоступности уровней источников (I); R10.4 смягчение + hard-link в Pravila §13.9 (J); R0.1 уточнение scope «головенства» через таблицу priority chain (K).
- **v1.4 (формализация UPM + 21st Magic MCP + motion-системы):** R6 расширен на FD/UPM/21st (универсальная таблица 6.0); R6.1 hard-override Forest расширен на все три плагина; R10.1 +1 строка для 21st + ослабление UPM до v1.4 двух-триггера (FD молчит ИЛИ R12 третий вариант); R11.5 активация UPM в R12; R11.6 параллельная иерархия motion-источников (7 уровней); R0.6 +3 hard-стопа (брендовый App* через 21st, Vuetify-эквивалент через 21st, motion-v без R15.2); R13 +9 строк matrix'а; R14 новое правило (pipeline UPM + 21st с R14.3/R14.4 + R14.7 hard-link на §13 Pravila); R15 новое правило (R15.1 framer-motion hard-запрет, R15.2 motion-v 4 условия (а)+(б)+(в)+(г), R15.3 default стойка, R15.4 формальная проверка триггера, R15.5 hard-запрет дублирования, R15.6 live-override запрет, R15.7 расширение на gsap/anime/lottie); R8 +7 тай-брейкеров; финальная формула расширена.
- **v2.0 (снятие R15):** R15 motion-системы (R15.1–R15.7) удалены полностью; R0.6 п.11 удалён; R8 motion тай-брейкеры удалены; R11.6 motion иерархия удалена; R13 motion-сценарии удалены. Default motion stack перенесён в CLAUDE.md §2 как guidance, не hard-rule. framer-motion — technical block (peerDep react+react-dom), не regulatory rule. Conscious rollback v1.4 audited construction по решению заказчика 12.05.2026; через `/superpowers:brainstorming` → 3 варианта → выбор B (полная отмена R15) → `superpowers:writing-plans``/claude-md-management:claude-md-improver`.
- **Действенность:** решение — за 3 вопроса (Правило 9) + matrix Правила 13; если не сработало — явный fallback на пользователя (0.6).
- **Симметрия:** оба плагина stack'а имеют равные права на закрытие задач в своём домене (7), на ревью в своём аспекте (5), на отмену через live-команду (0.4.B). **Асимметрия** введена только между stack'ом и не-stack плагинами: stack головной, остальные — инструменты (R10/R14). Внутри пула «инструменты» — UPM и 21st имеют разные роли (UPM = библиотека принципов; 21st = генератор кода) и разные точки активации в pipeline (R14.3 фазы 1/2 vs R14.4 фаза 5).
@@ -850,6 +736,30 @@ Hard-запрет, **не отменяется** ни Auto mode, ни live-ко
## История версий
- **v2.0 от 12.05.2026** — major bump: removal of R15 motion-runtime restrictions per user decision. Conscious rollback of v1.4 audited construction (10.05.2026, R15 двухуровневая motion + R0.6 п.11 + R8 motion-tie-breakers + R11.6 motion-иерархия + R13 motion-сценарии).
**Удалено:**
- Правило 15 целиком (R15.1 framer-motion hard-запрет / R15.2 motion-v 4 условия / R15.3 default стойка / R15.4 формальная проверка / R15.5 hard-запрет дублирования / R15.6 live-override / R15.7 расширение на gsap/anime/lottie/popmotion).
- R0.6 пункт 11 (animation runtime hard-стоп).
- R8 три тай-брейкера motion (motion-v, framer-motion, motion-слой R11.6).
- R11.6 параллельная иерархия 7 motion-источников.
- R13 пять строк motion-сценариев decision matrix.
- Финальная формула — фраза «если нужна анимация: Правило 15...» + «+ R11.6 (motion)».
- Свойства свода — фраза «каждая motion-задача — один слой R11.6 (Правило 15)» + «Runtime-зависимости (motion) подчиняются R15».
**Изменено:**
- Шапка count: «16 правил R0–R15» → «15 правил R0–R14».
- Cross-refs шапки: CLAUDE.md v1.86+ → v1.88+; Pravila v1.10+ → v1.11+; Tooling v1.15+ → v1.16+.
- L4 narrative: R15 description свёрнуто до «(R15 motion-системы введены в v1.4 и удалены в v2.0)»; добавлена v2.0 клауза.
- L6 принцип-аксиома: удалена последняя фраза «Runtime-зависимости проекта... подчиняются R15».
- L10 cross-ref CLAUDE.md §5 п.12: «на R15» → «резерв (R15 motion-runtime снят в v2.0)».
**НЕ затронуто:** R0–R14 целиком (стек-фильтр R6.0/R6.1, paired-stack R10, иерархия источников R11.1R11.5, decision matrix R12/R13, UI-pipeline R14 — все в силе). Pravila §12 hard rule Superpowers инвокации — без изменений. CLAUDE.md §5 п.10 правки через claude-md-management — без изменений.
**Rationale:** заказчик 12.05.2026 запросил снять hard-запреты на motion-runtime библиотеки (включая framer-motion). Через sanity-check brainstorming согласовано: framer-motion как React-only остаётся **technical block** (peerDep `react+react-dom`, runtime crash в Vue), но не regulatory rule. Остальные motion-runtime (motion-v, gsap, anime.js, lottie-web, popmotion, @motionone/dom) — безусловно разрешены. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — переводится в CLAUDE.md §2 как guidance, не hard-rule.
Связанные обновления: CLAUDE.md v1.87 → v1.88, Pravila v1.10 → v1.11, Tooling v1.15 → v1.16, CHANGELOG_claude_md.md + MEMORY sync. Через `/claude-md-management:claude-md-improver` (для CLAUDE.md) + ручные Edit (для PSR_v1, Tooling, Pravila).
- **v1.7 от 10.05.2026 (поздний вечер)** — закрытие 5 находок третьего аудита правил использования плагинов и скилов («Все 13 находок (P0+P1+P2)»). Сам PSR_v1 — sync-уровень + одна description-правка:
- **Шапка cross-refs приведена к актуальным версиям связанных документов** после bump'ов CLAUDE.md v1.85 → v1.86 и Tooling v1.14 → v1.15: «CLAUDE.md v1.84+» → «v1.86+», «Pravila v1.9+» → «v1.10+», «Tooling v1.14+» → «v1.15+». «+»-нотация сохранена (forward-compat). Закрывает audit P1-01/02 (PSR_v1).
- **Описка в шапке v1.6 changelog'а исправлена:** «slot уровня 2.5» → «slot уровня 2b». Фактическое R0.1 (line 33 этого файла) всегда содержало «уровень 2b»; шапка v1.6 описывала ту же правку, но с опечаткой «2.5», создавая иллюзию ещё одного уровня. Закрывает третий-audit P2-01.
+17 -6
View File
@@ -1,10 +1,20 @@
# Правила работы Claude в проекте «Лидерра»
**Версия:** v1.10 (утверждена заказчиком 10.05.2026 вечер)
**Дата:** 10.05.2026
**Версия:** v1.11 (утверждена заказчиком 12.05.2026)
**Дата:** 12.05.2026
**Назначение:** настройки проекта (Project instructions) — Claude читает этот файл в каждом чате и следует правилам ниже.
**Статус документа:** ✅ утверждён. Содержимое скопировано в поле "Project instructions" Claude.ai. Файл хранится в архиве как служебный документ.
**Что изменилось в v1.11 относительно v1.10:**
- **§11.5 счётчик правил PSR_v1:** «v1.6, 16 правил R0R15» → «v2.0, 15 правил R0R14». R15 motion-системы удалены в PSR_v1 v2.0 (12.05.2026, conscious rollback v1.4 audited construction; framer-motion переведён из regulatory hard-запрета в technical-only guidance).
- **§13.2 счётчик:** «v1.6 (16 правил R0R15)» → «v2.0 (15 правил R0R14)».
- **§13.9 cross-ref на PSR_v1:** «(v1.6)» → «(v2.0)».
- **§13.10 cross-ref на PSR_v1:** «(v1.6)» → «(v2.0)». **§13.10 НЕ удалено** — оно про hard-link на R14 (UPM/21st pipeline), не на R15. Содержание §13.10 сохраняется без изменений; меняется только версия cross-ref'а.
- **§13.6 tier-таблица** — без изменений (R10/R14 hard-links остаются актуальны; снятие R15 их не задевает).
- **Связано:** PSR_v1 v1.7 → v2.0 (R15 удалено целиком), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв-маркер), Tooling v1.15 → v1.16 (§9.2 reformulated в technical guidance).
- Без других содержательных изменений в §§1–12 + §§13.113.8.
**Что изменилось в v1.10 относительно v1.9:**
- **§0 расширен:** добавлен note про **§11 override-приоритет** над §2.2/§4.5/§8.4. Раньше §11 формально стоял ниже §9 в цепочке (§12 → §1 → ... → §9 → §11 → §13), но в теле §11 чётко написано «при явном вызове skill'а — приоритет над §2.2/§4.5/§8.4». Цепочка не объясняла локальное исключение. Теперь явно зафиксировано. Закрывает audit P2-03 («§11 ниже §9 vs §11 override §2.2/§4.5/§8.4»).
@@ -492,6 +502,7 @@ P0 = блокер старта спринта или регуляторного
| **v1.8** | **10.05.2026** | **Утверждена заказчиком 10.05.2026** («двух уровневый» — выбор подхода для R15 motion-системы; финальное согласование PSR_v1 v1.4). §13 расширен: paired-stack ядро (Superpowers + Frontend Design) дополнено расширенным пулом UI-инструментов — `ui-ux-pro-max` skill (резерв-библиотека, R10/R11.5) и `21st.dev Magic MCP` (генератор шаблонов, R14.4). Координация — через PSR_v1 v1.4 (R14 pipeline UI-генераторов + R15 motion-системы). §13.9 cross-ref bumped (v1.3 → v1.4). §13.10 (новый) — hard-link на R14: использование UPM или 21st вне pipeline'а = нарушение §13 (вторая hard-link строка после §13.9). Архитектурных изменений в §§1–12 + §§13.113.8: 0. |
| **v1.9** | **10.05.2026** | **Утверждена заказчиком 10.05.2026** («исправь все ошибки только обязательно руководствуйся тем что ты должен сохранить максимальную эффективность и всеобъемливоющие использование всех плагинов и скилов»). Закрытие 14 находок аудита нормативной документации: §12.3 объявлен SoT для exclusions §12 (раньше дублировался в CLAUDE.md §5 п.11 и PSR_v1 R0.4.A); §13.2 +абзац про инфраструктурные плагины (claude-md-management + built-in skills вне UI-пула); §13.6 +hard-rule tier-таблица (explicit / transitive / standard); §0 +scope-метка цепочки. Связанные обновления — PSR_v1 v1.4 → v1.5 (R10.1 разбит на 3 блока + R0.4.A SoT + R10.4/R14.7 tier-метки + R8 +тай-брейкер FD↔21st + R0.1 scope), Tooling Прил. Н v1.12 → v1.13 (§7 +PSR_v1, §4.7 +#33, §6 +5 конфликтов, §4.6 settings → .claude.json), CLAUDE.md v1.83 → v1.84 (§1 scope, §3.3 +#33, §5 п.5 свёрнут, §5 п.11 cross-ref на §12.3 SoT, §6 счётчик 33). Архитектурных изменений в §§1–11: 0. |
| **v1.10** | **10.05.2026 (вечер)** | **Утверждена заказчиком 10.05.2026 вечер** («Все 15 находок (P0+P1+P2)» в ответ на quality report по второму аудиту правил использования плагинов и скилов). Закрытие 4 находок в Pravila (P0-03 + P1-04/06/07 + P2-03): **§0** +note про §11 локальное override-исключение над §2.2/§4.5/§8.4 (раньше §11 формально стоял ниже §9 в цепочке, но фактически override §2.2/§4.5/§8.4 при skill-инвокации; цепочка не объясняла локальное исключение); **§11.5** «10 правил» → «v1.6, 16 правил R0R15» (раньше count устарел с v1.0/v1.1 эпохи); **§13.2** «v1.4 (15 правил)» → «v1.6 (16 правил)»; **§13.9** PSR_v1 (v1.4) → (v1.6); **§13.10** PSR_v1 (v1.4) → (v1.6). Связанные обновления — CLAUDE.md v1.84 → v1.85 (§6 арифметика «33» исправлена +1 historic PG MCP; §3.3 #31/#32 + §5 п.12 stale v1.4→v1.6 + v1.12→v1.14; §1 +Tooling Прил. Н explicit-слот уровня 2b), PSR_v1 v1.5 → v1.6 (R0.4.A свёрнут до cross-ref на §12.3 SoT; R0.6 пронумерован 111; R0.1 +Tooling slot), Tooling v1.13 → v1.14 (§10.3 шаг 2 «3 skills»→«14»; §13 +v1.13 +v1.14; §7 +Tooling explicit slot). Через `/claude-md-management:claude-md-improver`. Архитектурных изменений в §§1–13 (кроме §0/§11.5/§13.2/§13.9/§13.10): 0. |
| **v1.11** | **12.05.2026** | **Утверждена заказчиком 12.05.2026** («сними все запреты на использование framer motion» → через `superpowers:brainstorming` → 3 варианта → выбран B полная отмена R15). Sync-уровень после PSR_v1 v1.7 → v2.0 (R15 motion-системы удалены целиком): **§11.5** «v1.6, 16 правил R0R15» → «v2.0, 15 правил R0R14»; **§13.2** «v1.6 (16 правил R0R15)» → «v2.0 (15 правил R0R14)»; **§13.9** PSR_v1 (v1.6) → (v2.0); **§13.10** PSR_v1 (v1.6) → (v2.0), **содержание §13.10 сохранено** — оно про hard-link на R14 (UPM/21st pipeline), не на R15. Связанные обновления — PSR_v1 v1.7 → v2.0 (R15 целиком + R0.6 п.11 + R8 motion + R11.6 + R13 motion сценарии удалены; framer-motion переведён из regulatory hard-запрета в technical block — это peerDep react+react-dom, не работает в Vue физически), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв-маркер; §2 Animation default stack → guidance, не hard-rule), Tooling v1.15 → v1.16 (§9.2 reformulated в technical guidance). Conscious rollback v1.4 audited construction (10.05.2026, R15 двухуровневая motion-конструкция). Через `superpowers:brainstorming``superpowers:writing-plans``superpowers:executing-plans` + `/claude-md-management:claude-md-improver` + ручные Edit. Архитектурных изменений в §§1–13 (кроме §11.5/§13.2/§13.9/§13.10 sync): 0. |
---
@@ -524,7 +535,7 @@ P0 = блокер старта спринта или регуляторного
### 11.5. Координация с Frontend Design plugin
С v1.5 (09.05.2026) Superpowers — часть paired stack'а с `anthropics/frontend-design` (см. §13). Координация двух плагинов — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v1.6, **16 правил R0R15**). На UI-фичах оба плагина работают по фазам Правила 2 Plugin_stack_rules_v1; на чисто процессных задачах Frontend Design не активируется.
С v1.5 (09.05.2026) Superpowers — часть paired stack'а с `anthropics/frontend-design` (см. §13). Координация двух плагинов — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v2.0, **15 правил R0R14**). На UI-фичах оба плагина работают по фазам Правила 2 Plugin_stack_rules_v1; на чисто процессных задачах Frontend Design не активируется.
---
@@ -607,7 +618,7 @@ P0 = блокер старта спринта или регуляторного
### 13.2. Парность со Superpowers + расширенный пул UI-инструментов (v1.8)
Frontend Design и `obra/superpowers` (v5.1.0, 14 skills) — **парный stack одного приоритетного уровня**. Оба плагина подключены к gate stack'а одновременно, между ними нет иерархии. Координация — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) **v1.6 (16 правил R0R15)**.
Frontend Design и `obra/superpowers` (v5.1.0, 14 skills) — **парный stack одного приоритетного уровня**. Оба плагина подключены к gate stack'а одновременно, между ними нет иерархии. Координация — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) **v2.0 (15 правил R0R14)**.
**Расширенный пул UI-инструментов (v1.8)** добавляет к paired-stack ядру два внешних плагина в роли **инструментов** (R10.1 PSR_v1, не решателей):
@@ -672,7 +683,7 @@ Frontend Design покрывает **a11y-принципы** (контраст,
### 13.9. Hard-link на R10 PSR_v1 — байпас stack-gate
**Нарушение Правила 10 [Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v1.6)** (введено в PSR v1.2; формализовано через hard-link в Pravila v1.6, версия ссылки уточнена в Pravila v1.7, обновлена в Pravila v1.8/v1.10):
**Нарушение Правила 10 [Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v2.0)** (введено в PSR v1.2; формализовано через hard-link в Pravila v1.6, версия ссылки уточнена в Pravila v1.7, обновлена в Pravila v1.8/v1.10/v1.11):
Прямой `Skill` tool на не-stack плагин (ui-ux-pro-max, claude-md-management, review, security-review, init, simplify и т.д.) **до прохождения R0 stack-gate**, без явной live-команды `/имя-плагина` от пользователя (R0.4.B PSR_v1) и вне технических исключений R0.4.A PSR_v1 (read-only исследование, тривиальные синки, справочные ответы) = **нарушение §13 этого документа**.
@@ -686,7 +697,7 @@ Frontend Design покрывает **a11y-принципы** (контраст,
### 13.10. Hard-link на R14 PSR_v1 — байпас pipeline'а внешних UI-генераторов (v1.8)
**Нарушение Правила 14 [Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v1.6)** (введено в PSR v1.4 одновременно с формализацией UPM + 21st Magic MCP в `~/.claude/settings.json` и `~/.claude.json`; версия cross-ref'а обновлена до v1.6 в Pravila v1.10).
**Нарушение Правила 14 [Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) (v2.0)** (введено в PSR v1.4 одновременно с формализацией UPM + 21st Magic MCP в `~/.claude/settings.json` и `~/.claude.json`; версия cross-ref'а обновлена до v1.6 в Pravila v1.10, до v2.0 в Pravila v1.11).
Использование `ui-ux-pro-max` или `21st.dev Magic MCP` (`mcp__magic__21st_magic_component_*`, `mcp__magic__logo_search`) **вне pipeline'а R14** = нарушение §13 этого документа.
+26 -17
View File
@@ -1,18 +1,27 @@
# Приложение Н — 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).
**Дата:** 12.05.2026
**Версия:** 1.16 (закрытие 1 правки четвёртого аудита — снятие R15 motion-runtime denylist'а из §9.2 синхронно с PSR_v1 v1.7 → v2.0 + CLAUDE.md v1.87 → v1.88 + Pravila v1.10 → v1.11. Заказчик 12.05.2026: «сними все запреты на использование framer motion». Через `/claude-md-management:claude-md-improver` + ручные Edit.)
**Предыдущая версия:** 1.15 (закрытие 4 находок третьего аудита: sync cross-refs шапки после bump'ов CLAUDE.md v1.85 → v1.86 и PSR_v1 v1.6 → v1.7, формулировка «28 инструментов» → «33 формализованных позиции»).
**Адресат:** 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)
> - `Pravila_raboty_Claude_v1_1.md` v1.11+ — §11 «Superpowers override», §12 «Superpowers hard rule», §12.3 SoT для exclusions, §13 «paired stack + расширенный пул UI-инструментов» + claude-md-management как off-pool, §13.6 hard-rule tier-таблица, §13.9 hard-link на R10 PSR_v1, §13.10 hard-link на R14 PSR_v1, §4.8 «Шифры приложений» (Н занят)
> - `Plugin_stack_rules_v1.md` v2.0+ — координация paired-stack ядра (Superpowers + Frontend Design) + расширенного пула (UPM + 21st Magic MCP) + инфраструктурного плагина (claude-md-management) (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка; R15 motion удалён в v2.0)
> - `CLAUDE.md` (корень репозитория) v1.88+ — оперативная карта инструментов с приоритетом правил (уровень 0 = Pravila §12, уровень 3 = Plugin_stack_rules_v1); §3.3 +#31 UPM +#32 21st +#33 claude-md-management; §5 п.5 свёрнут со ссылкой на PSR_v1 R14; §5 п.11 cross-ref на Pravila §12.3 SoT; §5 п.12 — резерв (motion-runtime denylist снят в v1.88); §6 счётчик 33 (3 off-phase tools)
> - `README_АРХИВ_v8_4.md` v8.4+ — состав архива
**Что нового в v1.16 (12.05.2026):**
- **§9.2 «Motion runtime библиотеки» переформулирован из regulatory denylist в technical guidance.** R15 PSR_v1 снят целиком (v1.7 → v2.0); motion-v / gsap / anime.js / lottie-web / popmotion / @motionone/dom — безусловно разрешены к установке. framer-motion / react-spring остаются как **technical block** — это peerDep на React, не правило проекта. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — guidance, не hard-rule.
- **Cross-refs шапки sync:** PSR_v1 v1.7+ → v2.0+; CLAUDE.md v1.86+ → v1.88+; Pravila v1.10+ → v1.11+.
- **§6 строка «framer-motion ↔ motion-v»** оставлена как historical record v1.4 audited construction (snapshot эпохи, не удаляется при rollback'е).
- **Связано:** PSR_v1 v1.7 → v2.0 (R15 удалено), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв, §2 motion stack → guidance), Pravila v1.10 → v1.11.
Через `/claude-md-management:claude-md-improver` + manual Edit.
**Что нового в v1.13 (10.05.2026):**
- **§7 «Source of truth» обновлён с 5-уровневой на 7-уровневую цепочку.** Добавлен `Plugin_stack_rules_v1.md` (PSR_v1) уровнем 3 — координирующий слой между paired-stack ядром (Superpowers + Frontend Design) и расширенным UI-пулом (UPM + 21st). Также явно вынесен Pravila §12 (Superpowers hard rule) уровнем 0 — выше всех остальных параграфов Pravila. Sync с CLAUDE.md §1. Закрывает audit находку «Tooling §7 не упоминает PSR_v1 в иерархии» (1 из 14 находок).
@@ -426,20 +435,20 @@
| **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)
### 9.2. Motion runtime библиотеки (с v1.16 — technical guidance, не regulatory)
Двухуровневое решение по runtime-зависимостям анимаций. Default motion stack — **Vue native `<Transition>` + Vuetify transitions + CSS @keyframes + View Transitions API** (R11.6 уровни 36 PSR_v1). Большинство задач закрываются на уровнях 1–2.
С v1.16 / PSR_v1 v2.0 motion-runtime библиотеки **разрешены к установке без обоснования** (R15 PSR_v1 снят 12.05.2026). Default motion stack — **Vue native `<Transition>` + Vuetify transitions + CSS @keyframes + View Transitions API** — остаётся рекомендацией (CLAUDE.md §2), но не hard-rule. Эта таблица — **technical guidance** о свойствах библиотек, не regulatory denylist.
| Библиотека | Статус | Причина / условие |
| Библиотека | Статус | Технические свойства |
|---|---|---|
| **framer-motion** (npm `framer-motion`) | **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 |
| **framer-motion** (npm `framer-motion`) | **Technical block (не regulatory)** | React-only архитектурно: peerDeps `react>=18` + `react-dom>=18`. Использует React fiber-tree + hooks + JSX. В Vue 3 + Vuetify стеке физически не работает — runtime crash при `import { motion } from 'framer-motion'` в `.vue` файлах. `npm install` пройдёт с peer-dep warn, но любой import упадёт. Не regulatory rule — свойство библиотеки. |
| **react-spring** (npm `@react-spring/*`) | **Technical block** | React-only по той же причине (peerDep react). |
| **motion-v** (npm `motion-v`) | ✅ Разрешено | Vue 3 порт API framer-motion от того же maintainer'а Motion. ~30 KB gzipped. ~95% API-совместимость с framer-motion (motion.div, animate, variants, layout, drag, gestures). |
| **gsap** (`gsap` npm) | ✅ Разрешено | Imperative timeline-driven. Подходит для marketing/agency UI, сложных choreographed sequences. |
| **anime.js** | ✅ Разрешено | Лёгкая alternative gsap, ~17 KB. |
| **lottie-web** (`lottie-web`) | ✅ Разрешено | Для Lottie/After Effects-ассетов. |
| **popmotion**, **@motionone/dom** | ✅ Разрешено | Низкоуровневые движки. |
| **Auto-Animate** (`@formkit/auto-animate`) | ✅ Разрешено | Один компонент, FLIP под капотом, ~3 KB. |
**Default motion stack (без runtime-зависимостей):**
@@ -0,0 +1,902 @@
# Remove R15 motion-runtime restrictions — Implementation Plan
> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
**Goal:** Remove R15 motion-runtime restrictions from project rule base across 4 normative documents (PSR_v1 v1.7 → v2.0, CLAUDE.md v1.87 → v1.88, Tooling v1.15 → v1.16, Pravila v1.10 → v1.11), so that `motion-v`, `gsap`, `anime.js`, `lottie-web`, `popmotion`, `@motionone/*` become unconditionally permitted. `framer-motion` remains a **technical block** (React-only, peerDep `react+react-dom` — physically does not run in Vue), no longer a regulatory rule.
**Architecture:** Atomic edit of 4 `.md` files + CHANGELOG + memory sync, executed via `/claude-md-management:claude-md-improver` for CLAUDE.md (mandated by CLAUDE.md §5 п.10) and direct Edit for the other three normative docs. Done on isolated branch `rules/remove-r15` off `origin/main` (`48f27b4`). One atomic commit gates lefthook (gitleaks + lychee + markdownlint). PR follows. No code (`resources/js/`, `app/`, `db/`) touched — Pest/Vitest/Histoire not run, no migrations.
**Tech Stack:** Markdown only (`.md`). Tooling: git, lefthook, lychee, gitleaks, markdownlint-cli2, `gh` (GitHub CLI), `/claude-md-management:claude-md-improver` skill, semantic grep (Grep tool).
**Spec:** [docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md](../specs/2026-05-12-remove-r15-motion-restrictions-design.md)
---
## File Structure
Files modified by this plan (all `.md`):
| Path | Purpose | Size of change |
|---|---|---|
| `docs/Plugin_stack_rules_v1.md` | PSR_v1 v1.7 → v2.0: R15 section removal + R0.6 п.11 + R8 motion tie-breakers + R11.6 + R13 motion rows + header + changelog | Major (~90 lines deleted, header reformulated, v2.0 changelog entry added) |
| `CLAUDE.md` (repository root) | v1.87 → v1.88: §5 п.12 → marker, §2 Animation default stack reformulated, header + §9 history entry | Medium |
| `docs/Tooling_v8_3.md` | Прил. Н v1.15 → v1.16: §9.2 reformulated, header cross-refs sync, changelog entry | Medium |
| `docs/Pravila_raboty_Claude_v1_1.md` | v1.10 → v1.11: §13.10 deleted, §11.5 + §13.2 + §13.9 + §13.6 cross-ref version bumps | Medium |
| `docs/CHANGELOG_claude_md.md` | New v1.88 entry at top | Small (new entry) |
| `MEMORY.md` (user memory dir) | Index hook for plugin paired stack — version bump | Small (1 line) |
| `memory/feedback_plugin_paired_stack.md` | Version refs v1.7 → v2.0, R15 → historical | Small (3-5 lines) |
| `docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md` | Already written, only needs commit | No edit |
| `docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md` | This plan file | Created in T1 |
Files NOT touched: `app/`, `resources/`, `db/`, `tests/`, `package.json`, `composer.json`, `lefthook.yml`, `.mcp.json`, settings.
---
## Task 1: Setup branch and commit design doc + plan
**Files:**
- Already exists: `docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md`
- Created in T1: `docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md` (this file)
- [ ] **Step 1: Verify origin/main HEAD matches plan's base assumption**
Run: `git fetch origin main && git log -1 --format=%H origin/main`
Expected: `48f27b4...` (or newer — note the SHA actually returned for the PR body later)
- [ ] **Step 2: Create branch from `origin/main`**
Run: `git checkout -b rules/remove-r15 origin/main`
Expected: `Switched to a new branch 'rules/remove-r15'`
- [ ] **Step 3: Stage and commit design doc + plan separately from rule edits**
Both files are currently untracked (`git status` lists them). Stage them explicitly:
Run:
```bash
git add docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md \
docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md
git commit -m "$(cat <<'EOF'
docs(spec+plan): R15 motion-runtime removal — design + impl plan
Brainstormed via superpowers:brainstorming. User decision 12.05.2026:
remove R15 PSR_v1 section entirely (variant B). Conscious rollback of
audited construction from v1.83 (10.05.2026).
Spec: docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md
Plan: docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
```
- [ ] **Step 4: Verify lefthook passed on design+plan commit**
If lefthook blocked (lychee broken link / markdownlint error / gitleaks leak) — fix the file content and re-commit as a NEW commit (do NOT --amend; CLAUDE.md §5 п.11 forbids amend on hook failure). Investigate and fix root cause.
Expected: clean commit, no hook failures (these are markdown-only files with no secrets and no external links beyond existing docs).
- [ ] **Step 5: Verify branch state**
Run: `git status && git log --oneline -3`
Expected:
- Branch clean
- HEAD commit message: `docs(spec+plan): R15 motion-runtime removal...`
- Parent = `48f27b4` (or whatever origin/main was at fetch time)
---
## Task 2: PSR_v1 v1.7 → v2.0 — remove R15 + R0.6 п.11 + R8 motion + R11.6 + R13 motion + finale + properties + header + changelog
**Files:**
- Modify: `docs/Plugin_stack_rules_v1.md` (lines 1, 3, 4, 6, 10, 136, 148, 353-355, 523-547, 609-613, 743-820, 824, 830-831, 845, header changelog block)
This is the largest task. **Read the file in chunks first** (the file is 916 lines, too large for a single Read), then apply edits in sequence.
- [ ] **Step 1: Re-Read line range 155 (header + R0.1)**
Read: `docs/Plugin_stack_rules_v1.md` lines 155.
Confirm content matches what plan expects:
- L1: `# Plugin Stack Rules — Superpowers + Frontend Design (v1.7)`
- L4 contains `+ R15 (motion-системы` narrative
- L6 contains `Runtime-зависимости проекта (motion-библиотеки и т.п.) подчиняются R15.`
- L10 contains `§5 п.12 — на R15 (motion-системы)`
- [ ] **Step 2: Edit header line 1 → v2.0**
Use Edit tool. Replace:
```
# Plugin Stack Rules — Superpowers + Frontend Design (v1.7)
```
With:
```
# Plugin Stack Rules — Superpowers + Frontend Design (v2.0)
```
- [ ] **Step 3: Edit date line 3 → 12.05.2026**
Replace:
```
**Дата:** 10.05.2026 (поздний вечер)
```
With:
```
**Дата:** 12.05.2026
```
- [ ] **Step 4: Edit line 4 (narrative shapка) — strip R15 ссылки**
Read line 4 fully first (it's long; Grep `^\*\*Назначение` to spot it). Replace the existing line 4 with a rewritten version where:
- The phrase `+ правила runtime motion-стойки` is **removed** (no motion stack as part of normative base any more)
- The phrase `+ 2 новых правила R14 (pipeline внешних UI-генераторов: UPM + 21st Magic MCP) и R15 (motion-системы: framer-motion hard-запрет + motion-v узкое окно по 4 условиям) в v1.4` → keep the R14 part but truncate the R15 part. Replace `R14 (pipeline внешних UI-генераторов: UPM + 21st Magic MCP) и R15 (motion-системы: framer-motion hard-запрет + motion-v узкое окно по 4 условиям) в v1.4` with `R14 (pipeline внешних UI-генераторов: UPM + 21st Magic MCP) в v1.4 (R15 motion-системы введены в v1.4 и удалены в v2.0)`.
- Append at end of line a new v2.0 entry: `+ 1 правка четвёртого аудита в v2.0 (12.05.2026 — снят R15 motion-runtime по решению заказчика; conscious rollback v1.4 audited construction; framer-motion переведён из regulatory hard-запрета в technical-guidance уровень: peerDep на react+react-dom, не работает в Vue физически)`
(Exact wording is verbose; the engineer should preserve existing v1.0v1.7 narrative and only patch the R15-specific clauses + add v2.0 clause at end of line 4.)
- [ ] **Step 5: Edit line 6 — strip motion-runtime sentence**
Replace:
```
Stack никогда не уступает первенство **уровням 46** — даже когда задача предметно ближе к чужому плагину, stack первой делает классификацию и потом **делегирует** инструменту, не отдаёт ему gate. Runtime-зависимости проекта (motion-библиотеки и т.п.) подчиняются R15.
```
Wait — Re-Read line 6 first (Grep `Runtime-зависимости проекта`). The phrase is in line 6 (the principle-axiom paragraph). Replace just the last sentence:
- old: `Runtime-зависимости проекта (motion-библиотеки и т.п.) подчиняются R15.`
- new: `` (empty — remove the sentence entirely; runtime motion deps no longer governed by PSR_v1)
- [ ] **Step 6: Edit line 10 — strip §5 п.12 R15 ref**
Replace:
```
- [CLAUDE.md](../CLAUDE.md) v1.86+ — оперативная карта; §1 priority chain, §3.3 строка #33, §5 п.5 ссылается на этот документ (расширенный пул UI-инструментов: FD + UPM + 21st), §5 п.11 cross-ref на Pravila §12.3 SoT, §5 п.12 — на R15 (motion-системы)
```
With:
```
- [CLAUDE.md](../CLAUDE.md) v1.88+ — оперативная карта; §1 priority chain, §3.3 строка #33, §5 п.5 ссылается на этот документ (расширенный пул UI-инструментов: FD + UPM + 21st), §5 п.11 cross-ref на Pravila §12.3 SoT, §5 п.12 — резерв (R15 motion-runtime снят в v2.0)
```
- [ ] **Step 7: Edit line 12 — bump Tooling cross-ref to v1.16+ and strip R15 from §9.2 description**
Replace:
```
- [docs/Tooling_v8_3.md](Tooling_v8_3.md) **v1.15+** — реестр инструментов; #30 Frontend Design + #31 UPM + #32 21st Magic MCP + #33 claude-md-management + §6 +5 конфликтов v1.4 + §7 7-уровневая иерархия (с v1.14 +Tooling explicit slot 2b) + §9.2 motion-runtime denylist отсылают сюда; §10.3 шаг 2 sync (14 skills) с v1.14
```
With:
```
- [docs/Tooling_v8_3.md](Tooling_v8_3.md) **v1.16+** — реестр инструментов; #30 Frontend Design + #31 UPM + #32 21st Magic MCP + #33 claude-md-management + §6 +5 конфликтов v1.4 (строка «framer-motion ↔ motion-v» — historical после v2.0) + §7 7-уровневая иерархия (с v1.14 +Tooling explicit slot 2b) + §9.2 motion-runtime guidance (technical-only после v1.16); §10.3 шаг 2 sync (14 skills) с v1.14
```
Also bump Pravila cross-ref one line above (line 11): replace `v1.10+` with `v1.11+` and `§13.10 hard-link на R14 PSR_v1` with `§13.10 удалён в v1.11 (был hard-link на R15, снят с R15)`.
(Engineer: Re-Read line 11 first to confirm exact wording before patching.)
- [ ] **Step 8: Edit line 136 — strip R15 from cross-ref note**
Replace:
```
**Hard-стоп даже в Auto mode** — обязательная остановка независимо от классификации, при любом из триггеров (нумерация введена в v1.6 для надёжности cross-refs «R0.6 пункт N»; при добавлении/удалении пункта — пересмотреть все ссылки в R8/R13/R14/R15):
```
With:
```
**Hard-стоп даже в Auto mode** — обязательная остановка независимо от классификации, при любом из триггеров (нумерация введена в v1.6 для надёжности cross-refs «R0.6 пункт N»; при добавлении/удалении пункта — пересмотреть все ссылки в R8/R13/R14):
```
- [ ] **Step 9: Delete R0.6 п.11 — line 148**
Delete the entire line:
```
11. **[v1.4]** Установка **motion-v** или любой другой animation runtime библиотеки (`gsap`, `anime.js`, `react-spring`, `lottie-web`, `popmotion`, `@motionone/*` и т.д.) в `package.json` без прохождения R15.2 (а)+(б)+(в)+(г).
```
After deletion: list ends at item 10. Verify items 110 remain intact.
- [ ] **Step 10: Delete R8 motion tie-breaker rows (lines 353-355)**
Re-Read line range 340360 to confirm. Delete the three lines:
```
| **[v1.4]** «Поставим motion-v, у нас в Vuetify не хватает spring-physics» | без письменного кейса из ТЗ + категории (б) + Brandbook approval (в) + R12 flow (г) — R15.2 не удовлетворён, hard-стоп R0.6 пункт 11 |
| **[v1.4]** «Поставим framer-motion, у других проектов работает» | R15.1 hard-запрет. React-only физически. Не отменяется live-командой |
| **[v1.4]** Для анимации список задача — какой слой? | R11.6: 1 (Vue native `<Transition>`) → 2 (Vuetify) → 3 (CSS) → 4 (View Transitions). На уровне 1 уже закрывается типичный case |
```
(Engineer: there are also lines 353/354 with framer-motion / motion-v from earlier grep — Re-Read full range 340360 to confirm exact line numbers before deletion.)
- [ ] **Step 11: Delete R11.6 (lines ~523547) — Иерархия motion-источников**
Re-Read line range 515555 to confirm section boundaries.
Delete the entire R11.6 sub-section, starting at:
```
### 11.6. Иерархия motion-источников (внутри уровня визуального дизайна, v1.4)
```
through the last bullet/sentence of R11.6 (likely ending at line 547 or where R12 begins, e.g., `## Правило 12` or `---`).
Be careful NOT to delete:
- R11.5 (ends just before R11.6)
- R12 (starts after R11.6)
- [ ] **Step 12: Delete R13 motion-сценарии rows (lines ~609613)**
Re-Read line range 600620 to confirm. Delete five rows:
```
| **[v1.4]** Анимация на экране, простая (fade/slide/scale/expand) | высокая | **действую**, использую Vuetify transition или Vue `<Transition>` (R11.6 уровни 34) |
| **[v1.4]** Анимация средней сложности (custom keyframes, hover-state с timing) | высокая | **действую**, использую CSS `@keyframes` (R11.6 уровень 5) |
| **[v1.4]** Cross-route transition (hero-transition при переходе между экранами) | средняя | **фиксирую предположение**: «использую View Transitions API с fallback на Vue `<Transition>` для не-Chromium»; если кейс требует motion-v → R15.2 |
| **[v1.4]** Запрос «давай добавим framer-motion / motion-v / gsap / lottie» **без явного кейса** | низкая | **hard-стоп R0.6 пункт 11** + R15.2 формальная проверка триггеров; нельзя действовать в Auto mode |
| **[v1.4]** Кейс из ТЗ требует gesture с физикой (drag с инерцией, swipe с pinch) | средняя | **действую**, R15.2 запускает brainstorming + 3 варианта (motion-v vs vanilla pointer events vs CSS scroll-snap); презентую таблицу |
```
- [ ] **Step 13: Delete entire Правило 15 (lines ~743820)**
Re-Read line range 740822 to confirm boundaries.
Delete everything starting from:
```
## Правило 15 — Motion-системы (animation libraries, v1.4)
```
through (and including) the closing `---` separator just before `## Финальная формула` (`## Финальная формула` should NOT be deleted; the `---` immediately before it is the boundary; engineer judges visually).
Confirmation: after deletion, line `## Правило 14` (or its sub-sections) should be immediately followed by `---` then `## Финальная формула`.
- [ ] **Step 14: Edit «Финальная формула» (line ~824) — strip R14 trailing R15 ref**
Re-Read line range 822826.
Replace:
```
> **Любая задача → Правило 0 (gate, stack-головной) → Правило 1 (классификация по типу) → Правило 9 (решение, ≤2 итерации) → Правило 13 (decision matrix по уверенности) → Правило 2 (фаза UI-фичи) → исполнение по Правилам 3, 4, 6 → если нужен внешний UI-генератор: Правило 14 pipeline (UPM на фазах 1/2, 21st на фазе 5) → если нужна анимация: Правило 15 (default стойка R15.3, motion-v только по 4 условиям R15.2) → завершение по Правилу 7 → ревью по Правилу 5. Источники истины — Правило 11 (UI/UX) + R11.6 (motion). Паттерны решений — Правило 12. Координация с не-stack плагинами — Правило 10. Тай-брейкеры — Правило 8.**
```
With:
```
> **Любая задача → Правило 0 (gate, stack-головной) → Правило 1 (классификация по типу) → Правило 9 (решение, ≤2 итерации) → Правило 13 (decision matrix по уверенности) → Правило 2 (фаза UI-фичи) → исполнение по Правилам 3, 4, 6 → если нужен внешний UI-генератор: Правило 14 pipeline (UPM на фазах 1/2, 21st на фазе 5) → завершение по Правилу 7 → ревью по Правилу 5. Источники истины — Правило 11 (UI/UX). Паттерны решений — Правило 12. Координация с не-stack плагинами — Правило 10. Тай-брейкеры — Правило 8.**
```
(Removed: «если нужна анимация: Правило 15 (default стойка R15.3, motion-v только по 4 условиям R15.2)»; «+ R11.6 (motion)».)
- [ ] **Step 15: Edit «Свойства свода» (lines ~830831) — strip R15/motion refs**
Re-Read line range 828832.
Replace:
```
- **Полнота:** каждая задача попадает в одну ветку Правила 1, каждая фаза имеет одного владельца (Правило 2), каждый артефакт ревью — один аспект (Правило 5), каждый тип закрытия — один gate (Правило 7), каждое дизайн-решение — один паттерн (Правило 12), каждая комбинация Auto+§12+R0.6 — одна строка matrix'а (Правило 13), каждый внешний UI-генератор имеет одно место в pipeline (Правило 14), каждая motion-задача — один слой R11.6 (Правило 15).
- **Головенство stack'а (v1.2 принцип-аксиома, расширена в v1.4):** stack — головной при решении любой задачи. Внешние плагины (включая UPM и 21st Magic MCP) — инструменты, инвокируемые внутри stack-flow (Правило 10) через pipeline R14. Иерархия источников UI — закон, не гайдлайн (Правило 11). Runtime-зависимости (motion) подчиняются R15.
```
With:
```
- **Полнота:** каждая задача попадает в одну ветку Правила 1, каждая фаза имеет одного владельца (Правило 2), каждый артефакт ревью — один аспект (Правило 5), каждый тип закрытия — один gate (Правило 7), каждое дизайн-решение — один паттерн (Правило 12), каждая комбинация Auto+§12+R0.6 — одна строка matrix'а (Правило 13), каждый внешний UI-генератор имеет одно место в pipeline (Правило 14).
- **Головенство stack'а (v1.2 принцип-аксиома, расширена в v1.4):** stack — головной при решении любой задачи. Внешние плагины (включая UPM и 21st Magic MCP) — инструменты, инвокируемые внутри stack-flow (Правило 10) через pipeline R14. Иерархия источников UI — закон, не гайдлайн (Правило 11). Runtime-зависимости (motion-библиотеки и т.п.) — вне регулирования PSR_v1 с v2.0 (см. CLAUDE.md §2 «Animation default stack» — рекомендация, не hard-rule).
```
- [ ] **Step 16: Strip R15 from v1.4 changelog entry properties (line ~845)**
Re-Read line range 843848. The v1.4 entry inside `Непротиворечивость` properties block lists `R15 новое правило (R15.1 framer-motion hard-запрет, R15.2 motion-v 4 условия...)`. **Do NOT delete this changelog entry** — it's historical record of v1.4 work. Just append a marker note at end:
After existing line 845 (the v1.4 line), add a new bullet line:
```
- **v2.0 (снятие R15):** R15 motion-системы (R15.1–R15.7) удалены полностью; R0.6 п.11 удалён; R8 motion тай-брейкеры удалены; R11.6 motion иерархия удалена; R13 motion-сценарии удалены. Default motion stack перенесён в CLAUDE.md §2 как guidance, не hard-rule. framer-motion — technical block (peerDep react+react-dom), не regulatory rule. Conscious rollback v1.4 audited construction по решению заказчика 12.05.2026; через `/superpowers:brainstorming` → 3 варианта → выбор B (полная отмена R15) → `superpowers:writing-plans``/claude-md-management:claude-md-improver`.
```
- [ ] **Step 17: Add v2.0 entry to «История версий» (line ~853)**
Re-Read line range 850855.
Above existing line `- **v1.7 от 10.05.2026 (поздний вечер)**`, insert new entry:
```
- **v2.0 от 12.05.2026** — major bump: removal of R15 motion-runtime restrictions per user decision. Conscious rollback of v1.4 audited construction (10.05.2026, R15 двухуровневая motion + R0.6 п.11 + R8 motion-tie-breakers + R11.6 motion-иерархия + R13 motion-сценарии).
**Удалено:**
- Правило 15 целиком (R15.1 framer-motion hard-запрет / R15.2 motion-v 4 условия / R15.3 default стойка / R15.4 формальная проверка / R15.5 hard-запрет дублирования / R15.6 live-override / R15.7 расширение на gsap/anime/lottie/popmotion).
- R0.6 пункт 11 (animation runtime hard-стоп).
- R8 три тай-брейкера motion (motion-v, framer-motion, motion-слой R11.6).
- R11.6 параллельная иерархия 7 motion-источников.
- R13 пять строк motion-сценариев decision matrix.
- Финальная формула — фраза «если нужна анимация: Правило 15...» + «+ R11.6 (motion)».
- Свойства свода — фраза «каждая motion-задача — один слой R11.6 (Правило 15)» + «Runtime-зависимости (motion) подчиняются R15».
**Изменено:**
- Шапка count: «16 правил R0–R15» → «15 правил R0–R14».
- Cross-refs шапки: CLAUDE.md v1.86+ → v1.88+; Pravila v1.10+ → v1.11+; Tooling v1.15+ → v1.16+.
- L4 narrative: R15 description свёрнуто до «(R15 motion-системы введены в v1.4 и удалены в v2.0)»; добавлена v2.0 клауза.
- L6 принцип-аксиома: удалена последняя фраза «Runtime-зависимости проекта... подчиняются R15».
- L10 cross-ref CLAUDE.md §5 п.12: «на R15» → «резерв (R15 motion-runtime снят в v2.0)».
**НЕ затронуто:** R0–R14 целиком (стек-фильтр R6.0/R6.1, paired-stack R10, иерархия источников R11.1R11.5, decision matrix R12/R13, UI-pipeline R14 — все в силе). Pravila §12 hard rule Superpowers инвокации — без изменений. CLAUDE.md §5 п.10 правки через claude-md-management — без изменений.
**Rationale:** заказчик 12.05.2026 запросил снять hard-запреты на motion-runtime библиотеки (включая framer-motion). Через sanity-check brainstorming согласовано: framer-motion как React-only остаётся **technical block** (peerDep `react+react-dom`, runtime crash в Vue), но не regulatory rule. Остальные motion-runtime (motion-v, gsap, anime.js, lottie-web, popmotion, @motionone/dom) — безусловно разрешены. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — переводится в CLAUDE.md §2 как guidance, не hard-rule.
Связанные обновления: CLAUDE.md v1.87 → v1.88, Pravila v1.10 → v1.11, Tooling v1.15 → v1.16, CHANGELOG_claude_md.md + MEMORY sync. Через `/claude-md-management:claude-md-improver` (для CLAUDE.md) + ручные Edit (для PSR_v1, Tooling, Pravila).
```
- [ ] **Step 18: Final pass — verify file integrity**
Run: `wc -l docs/Plugin_stack_rules_v1.md`
Expected: ~830 lines (down from 916; ~85 lines deleted: R15 section ~80 lines, R0.6 п.11 1 line, R8 3 lines, R13 5 lines minus added v2.0 changelog ~30 lines net).
Run: `Grep -n "R15" docs/Plugin_stack_rules_v1.md`
Expected: only historical references in:
- Line 4 (narrative shapка mentioning «R15 motion-системы введены в v1.4 и удалены в v2.0»)
- v1.4 changelog entry (`R15 (новое правило)...`)
- v2.0 changelog entry (new, this PR)
- v1.7 changelog entry note about cross-refs «R8/R13/R14»
- R0.6 cross-ref note (line ~136 — now reads «R8/R13/R14» — should be 0 «R15» hits here)
If unexpected R15 hits remain — find and re-evaluate (either historical context that should stay, or live reference that needs deletion).
---
## Task 3: Tooling Прил. Н v1.15 → v1.16 — §9.2 reformulate + header sync + changelog
**Files:**
- Modify: `docs/Tooling_v8_3.md` (header lines 113, §9.2 lines 429442, changelog §13 / history section)
- [ ] **Step 1: Re-Read line range 135 (header + cross-refs + recent changelog)**
Read: `docs/Tooling_v8_3.md` lines 135.
- [ ] **Step 2: Edit header — version bump and cross-refs**
Replace `**Версия:** 1.15` line content with:
```
**Версия:** 1.16 (закрытие 1 правки четвёртого аудита — снятие R15 motion-runtime denylist'а из §9.2 синхронно с PSR_v1 v1.7 → v2.0 + CLAUDE.md v1.87 → v1.88 + Pravila v1.10 → v1.11. Заказчик 12.05.2026: «сними все запреты на использование framer motion». Через `/claude-md-management:claude-md-improver`.)
```
Replace `**Предыдущая версия:** 1.14...``**Предыдущая версия:** 1.15`.
In cross-ref block (lines 1013):
- `Pravila_raboty_Claude_v1_1.md v1.10+``v1.11+`
- `Plugin_stack_rules_v1.md v1.7+``v2.0+`. Drop the `R15 motion-системы` clause from description. Reword to: `координация paired-stack ядра + расширенного пула + claude-md-management (R10.1 разбит на 3 блока, R0.4.A SoT cross-ref, R10.4/R14.7 tier-метки, R8 +тай-брейкер FD↔21st, R0.1 scope-метка; R15 motion удалён в v2.0)`.
- `CLAUDE.md v1.86+``v1.88+`. Drop the `§5 п.12 motion-runtime denylist` clause. Reword to end at: `§6 счётчик 33 (3 off-phase tools); §5 п.12 — резерв (motion-runtime denylist снят в v1.88)`.
- [ ] **Step 3: §9.2 — Re-Read line range 425455**
Read: `docs/Tooling_v8_3.md` lines 425455 to confirm exact §9.2 boundaries.
- [ ] **Step 4: §9.2 — reformulate denylist as technical guidance**
Replace existing §9.2 section (lines 429451) with:
```markdown
### 9.2. Motion runtime библиотеки (с v1.16 — technical guidance, не regulatory)
С v1.16 / PSR_v1 v2.0 motion-runtime библиотеки **разрешены к установке без обоснования** (R15 PSR_v1 снят 12.05.2026). Default motion stack — **Vue native `<Transition>` + Vuetify transitions + CSS @keyframes + View Transitions API** — остаётся рекомендацией (CLAUDE.md §2), но не hard-rule. Эта таблица — **technical guidance** о свойствах библиотек, не regulatory denylist.
| Библиотека | Статус | Технические свойства |
|---|---|---|
| **framer-motion** (npm `framer-motion`) | **❌ Technical block (не regulatory)** | React-only архитектурно: peerDeps `react>=18` + `react-dom>=18`. Использует React fiber-tree + hooks + JSX. В Vue 3 + Vuetify стеке физически не работает — runtime crash при `import { motion } from 'framer-motion'` в `.vue` файлах. `npm install` пройдёт с peer-dep warn, но любой import упадёт. Не regulatory rule — свойство библиотеки. |
| **react-spring** (npm `@react-spring/*`) | **❌ Technical block** | React-only по той же причине (peerDep react). |
| **motion-v** (npm `motion-v`) | ✅ Разрешено | Vue 3 порт API framer-motion от того же maintainer'а Motion. ~30 KB gzipped. ~95% API-совместимость с framer-motion (motion.div, animate, variants, layout, drag, gestures). |
| **gsap** (`gsap` npm) | ✅ Разрешено | Imperative timeline-driven. Подходит для marketing/agency UI, сложных choreographed sequences. |
| **anime.js** | ✅ Разрешено | Лёгкая alternative gsap, ~17 KB. |
| **lottie-web** (`lottie-web`) | ✅ Разрешено | Для Lottie/After Effects-ассетов. |
| **popmotion**, **@motionone/dom** | ✅ Разрешено | Низкоуровневые движки. |
| **Auto-Animate** (`@formkit/auto-animate`) | ✅ Разрешено | Один компонент, FLIP под капотом, ~3 KB. |
**Default motion stack (рекомендация, не обязанность):**
| Слой | Что покрывает | Размер |
|---|---|---|
| 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 (браузер) |
Большинство анимационных задач закрываются дефолтным стеком — это рекомендация для bundle size, а не запрет на motion-runtime библиотеки.
```
- [ ] **Step 5: Add v1.16 entry to history block at top of file**
Add new block (after existing **«Что нового в v1.13 (10.05.2026)»** block — i.e., before line containing «Что было в v1.12»):
```markdown
**Что нового в v1.16 (12.05.2026):**
- **§9.2 «Motion runtime библиотеки» переформулирован из regulatory denylist в technical guidance.** R15 PSR_v1 снят целиком (v1.7 → v2.0); motion-v / gsap / anime.js / lottie-web / popmotion / @motionone/dom — безусловно разрешены к установке. framer-motion / react-spring остаются как **technical block** — это peerDep на React, не правило проекта. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — guidance, не hard-rule.
- **Cross-refs шапки sync:** PSR_v1 v1.7+ → v2.0+; CLAUDE.md v1.86+ → v1.88+; Pravila v1.10+ → v1.11+.
- **§6 строка «framer-motion ↔ motion-v»** оставлена как historical record v1.4 audited construction (snapshot эпохи, не удаляется при rollback'е).
- **Связано:** PSR_v1 v1.7 → v2.0 (R15 удалено), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв, §2 motion stack → guidance), Pravila v1.10 → v1.11 (§13.10 удалено).
Через `/claude-md-management:claude-md-improver` + manual Edit.
```
- [ ] **Step 6: Verify file integrity**
Run: `Grep -n "R15" docs/Tooling_v8_3.md`
Expected: only historical references (in v1.12 / v1.13 changelog entries, where R15 is recorded as historical introduction).
Run: `Grep -n "❌ HARD-ЗАПРЕТ" docs/Tooling_v8_3.md`
Expected: 0 matches (the `HARD-ЗАПРЕТ навсегда` labels removed for motion libs).
Run: `Grep -n "❌ Technical block" docs/Tooling_v8_3.md`
Expected: 2 matches (framer-motion + react-spring rows).
---
## Task 4: Pravila v1.10 → v1.11 — delete §13.10 + bump §11.5 / §13.2 / §13.9 / §13.6 cross-refs + header
**Files:**
- Modify: `docs/Pravila_raboty_Claude_v1_1.md` (lines ~11, 14, 97, 527, 610, 625, 651657, 685706)
- [ ] **Step 1: Re-Read line range 125 (header changelog block)**
Read: `docs/Pravila_raboty_Claude_v1_1.md` lines 130.
Confirm: line 11 likely contains `**§11.5 — версия PSR_v1...»v1.6, 16 правил R0R15»...»`. Re-Read for exact wording.
- [ ] **Step 2: Add v1.11 changelog entry at top of header changelog**
Insert above existing v1.10 entry (likely lines 515) a new block:
```markdown
**Что нового в v1.11 (12.05.2026):**
- **§13.10 удалено целиком** — transitive hard-link на R14 PSR_v1 был связан с R15 motion-системами через цепочку R14 → R10.4 → §13.9 → §13.10 → §13. С удалением R15 в PSR_v1 v2.0 (12.05.2026) §13.10 структурно остаётся но **не имеет более цели**: его hard-link был на R14 PSR_v1 в части использования UPM/21st вне pipeline'а, не на R15 motion. **Уточнение:** §13.10 (введён в v1.8) **сохраняется** как hard-link на R14 (UPM/21st pipeline), но cross-refs на «R15» внутри §13.10 удалены. Альтернатива — оставить §13.10 целиком, что устранит риск breaking change существующих ссылок других документов.
- **§11.5 счётчик правил PSR_v1:** «v1.6, 16 правил R0R15» → «v2.0, 15 правил R0R14».
- **§13.2 счётчик:** «v1.6 (16 правил R0R15)» → «v2.0 (15 правил R0R14)».
- **§13.9 cross-ref на PSR_v1:** «(v1.6)» → «(v2.0)».
- **§13.10 cross-ref на PSR_v1:** «(v1.6)» → «(v2.0)»; внутреннее упоминание R15 удалено (если есть).
- **§13.6 tier-таблица:** строка «Transitive hard-rule» — без изменений (R10/R14 hard-links остаются актуальны; снятие R15 их не задевает).
- **Связано:** PSR_v1 v1.7 → v2.0 (R15 удалено целиком), CLAUDE.md v1.87 → v1.88 (§5 п.12 → резерв), Tooling v1.15 → v1.16 (§9.2 reformulated).
Через `/claude-md-management:claude-md-improver` + manual Edit.
```
**Note on §13.10:** based on Re-Read of lines 687706 (already done in plan exploration), §13.10 is hard-link on R14 PSR_v1 — about UPM / 21st Magic MCP pipeline violations. **NOT about R15.** Spec section 2.4 said «§13.10 — transitive hard-link на R15». This is a misreading: spec's design assumed §13.10 was R15-linked, but actually it's R14-linked.
**Decision (engineer):** Do NOT delete §13.10. It governs UPM/21st pipeline R14, which is unaffected by R15 removal. Only bump cross-ref versions «(v1.6)» → «(v2.0)» inside §13.10 body.
Update spec text in v1.11 changelog entry to reflect this correction: «§13.10 НЕ удалено (был hard-link на R14, не на R15 — spec section 2.4 содержал misreading). Cross-refs внутри §13.10 «PSR_v1 v1.6» → «v2.0»».
- [ ] **Step 3: §11.5 — bump count**
Re-Read line range 525530 (line 527 area).
Find phrase `(v1.6, **16 правил R0R15**)`. Replace with `(v2.0, **15 правил R0R14**)`.
- [ ] **Step 4: §13.2 — bump count and PSR_v1 version**
Re-Read line range 608612 (line 610 area).
Replace:
```
Координация — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) **v1.6 (16 правил R0R15)**.
```
With:
```
Координация — через [docs/Plugin_stack_rules_v1.md](Plugin_stack_rules_v1.md) **v2.0 (15 правил R0R14)**.
```
- [ ] **Step 5: §13.9 + §13.10 — bump cross-ref version**
Re-Read line range 670710.
In §13.9 (line ~675): replace `(v1.6)` with `(v2.0)`.
In §13.10 (line ~689): replace `(v1.6)` with `(v2.0)`.
If any internal R15 reference exists in §13.9 / §13.10 body — remove. (Per Re-Read of 670706 already done: no R15 refs inside these sections; the only «R15» mentions in Pravila are inside header changelog entries — which are historical and stay.)
- [ ] **Step 6: Verify file integrity**
Run: `Grep -n "R15" docs/Pravila_raboty_Claude_v1_1.md`
Expected: only historical references (in header changelog entries v1.6, v1.7, v1.8 mentioning historical R15 introduction).
Run: `Grep -n "16 правил" docs/Pravila_raboty_Claude_v1_1.md`
Expected: 0 matches in §§ bodies (only possibly in changelog narrative entries — historical OK).
Run: `Grep -n "15 правил R0" docs/Pravila_raboty_Claude_v1_1.md`
Expected: ≥2 matches (§11.5 and §13.2 bodies updated).
---
## Task 5: CLAUDE.md v1.87 → v1.88 via `/claude-md-management:claude-md-improver`
**Files:**
- Modify (through skill): `CLAUDE.md` (header, §2 «Animation default stack» строка, §5 п.12, §9 «История версий»)
CLAUDE.md §5 п.10 is a hard-rule: direct Edit/Write on CLAUDE.md is forbidden. Must use `/claude-md-management:claude-md-improver` skill.
- [ ] **Step 1: Invoke claude-md-improver skill with task description**
Use the `Skill` tool with:
- skill: `claude-md-management:claude-md-improver`
- args: paste the task description below
Task description for skill:
```
Target file: CLAUDE.md (repository root)
Spec: docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md
Apply these 4 targeted updates atomically:
1. Header (top of file, version line) — bump CLAUDE.md v1.87 → v1.88 with changelog entry summarizing R15 motion-runtime removal (12.05.2026). Connection: PSR_v1 v1.7 → v2.0, Tooling v1.15 → v1.16, Pravila v1.10 → v1.11. Conscious rollback of v1.83 audited construction. Reason: user decision 12.05.2026; framer-motion remains technical block (React-only peerDep), other motion-runtime libs (motion-v/gsap/anime/lottie/popmotion/@motionone/dom) unconditionally permitted.
2. §2 "Стек проекта" — find row containing "Animation default stack" (currently states: "motion-v / framer-motion / gsap / anime.js / lottie-web — **не установлены** и условно разрешены только по R15.2 (4 триггера)..."). Replace the motion-runtime regulatory phrasing with: "Default motion stack (рекомендация, не hard-rule): Vue native `<Transition>` / `<TransitionGroup>` + Vuetify transitions (`v-fade`, `v-slide-y`, `v-scale`, `v-expand`, `v-dialog-transition`) + CSS `@keyframes` + `prefers-reduced-motion` + View Transitions API (Chrome 111+ / Safari 18+). Motion-runtime библиотеки (motion-v, gsap, anime.js, lottie-web, popmotion, @motionone/dom) разрешены к установке без обоснования. `framer-motion` — technical block (React-only peerDep, не работает в Vue физически)."
3. §5 п.12 — currently full paragraph about motion runtime hard-запрет referencing R15.1 / R15.2 / R0.6 п.11 / framer-motion / motion-v + denylist. REPLACE entire paragraph with single-line marker preserving numbering:
"12. **Резерв.** Был «не устанавливать motion runtime библиотеки без прохождения R15.2». Снят 12.05.2026 (CLAUDE.md v1.88 + PSR_v1 v2.0). Подробности — docs/CHANGELOG_claude_md.md."
4. §9 "История версий" — add v1.88 entry at top of list (or appropriate location preserving descending date order):
"v1.88 от 12.05.2026 — снятие R15 motion-runtime restrictions per user decision. Conscious rollback v1.83 audited construction (10.05.2026). §5 п.12 → маркер 'Резерв (снят 12.05.2026)'; §2 'Animation default stack' переписана с regulatory denylist на guidance recommendation; cross-refs §0 на PSR_v1 v2.0+ / Pravila v1.11+ / Tooling v1.16+. framer-motion — technical block (peerDep react+react-dom), не regulatory rule. Связано: PSR_v1 v1.7 → v2.0, Tooling v1.15 → v1.16, Pravila v1.10 → v1.11, CHANGELOG_claude_md.md entry + MEMORY sync. Через /claude-md-management:claude-md-improver + manual Edit для PSR_v1/Tooling/Pravila."
Do not touch §5 п.10 (claude-md-management hard-rule — still in force) or §5 п.11 (Superpowers hard rule — still in force). Do not renumber items §5 п.1–§5 п.11.
Do not commit yet — atomic commit happens later in T9 after all 5 files are ready.
```
- [ ] **Step 2: Verify CLAUDE.md was updated**
Run: `Grep -n "v1.88" CLAUDE.md` — expect ≥1 match.
Run: `Grep -n "Резерв" CLAUDE.md` — expect ≥1 match in §5 п.12 area.
Run: `Grep -n "Default motion stack (рекомендация" CLAUDE.md` — expect ≥1 match in §2 area.
Run: `Grep -n "motion runtime библиотеки" CLAUDE.md` — verify regulatory phrasing removed.
- [ ] **Step 3: Fallback if skill couldn't apply all 4 updates**
If `/claude-md-management:claude-md-improver` reports any update couldn't be applied (e.g., regex didn't match) — re-invoke the skill with corrected wording. Do NOT use direct Edit tool on CLAUDE.md (violation of §5 п.10). If skill repeatedly fails — stop and ask user.
---
## Task 6: CHANGELOG_claude_md.md — add v1.88 entry
**Files:**
- Modify: `docs/CHANGELOG_claude_md.md` (insert new entry at top, before existing v1.83 entry).
- [ ] **Step 1: Re-Read line range 110**
Read: `docs/CHANGELOG_claude_md.md` lines 110. Confirm entries are in descending chronological order, latest on top.
- [ ] **Step 2: Insert v1.88 entry above v1.83 entry (line 8)**
Use Edit tool. Insert new italic-block before the line starting `*CLAUDE.md v1.83 от 10.05.2026.`:
```
*CLAUDE.md v1.88 от 12.05.2026. Изменения v1.88: **Снятие R15 motion-runtime restrictions** по решению заказчика 12.05.2026 ("сними все запреты на использование framer motion"). Через `superpowers:brainstorming` → 3 варианта (A узкая правка R15.2 / B полная отмена R15 / C one-strike trigger) → выбран B (вопреки рекомендации A: "доверяю team's choice motion-runtime без regulatory guardrail"). **Conscious rollback** v1.83 audited construction (10.05.2026: R15 двухуровневая motion-конструкция была введена через brainstorming → 3 варианта → "двухуровневый" подтверждение заказчика; v2.0 — это namesake rollback). **5 файлов изменены (atomic commit):** PSR_v1 v1.7 → v2.0 (удалено R15 целиком: R15.1 framer-motion hard-запрет + R15.2 motion-v 4 условия + R15.3 default стойка + R15.4 проверка триггера + R15.5 hard-запрет дублирования + R15.6 live-override + R15.7 расширение на gsap/anime/lottie; удалено R0.6 п.11 animation runtime hard-стоп; удалены R8 три тай-брейкера motion; удалена R11.6 иерархия motion-источников; удалены R13 пять строк motion-сценариев; финальная формула и свойства свода переформулированы; шапка v1.7 → v2.0 major bump). Pravila v1.10 → v1.11 (§11.5/§13.2 счётчик «16 правил R0–R15» → «15 правил R0R14»; §13.9 + §13.10 cross-ref на PSR_v1 «v1.6» → «v2.0»; §13.10 НЕ удалено — оно про R14 UPM/21st pipeline, не R15). Tooling Прил. Н v1.15 → v1.16 (§9.2 reformulated из regulatory denylist в technical guidance: motion-v + gsap + anime.js + lottie-web + popmotion + @motionone/dom → ✅ разрешено без обоснования; framer-motion + react-spring → ❌ technical block, peerDep react+react-dom, не regulatory rule). **CLAUDE.md этот файл:** §2 «Animation default stack» переписан с regulatory denylist на guidance recommendation; §5 п.12 → маркер «Резерв. Был "не устанавливать motion runtime библиотеки без R15.2". Снят 12.05.2026.» (нумерация §5 п.1–11 сохранена, чтобы cross-refs в memory `feedback_environment.md` / `feedback_plugin_paired_stack.md` не сломать); §0 cross-refs обновлены (Pravila v1.10 → v1.11, PSR_v1 v1.7 → v2.0, Tooling v1.15 → v1.16); §9 «История версий» — entry v1.88. **MEMORY sync:** `memory/feedback_plugin_paired_stack.md` обновлён (v1.7 → v2.0; «R15 motion двухуровневый» → historical context); `MEMORY.md` index hook обновлён. **0 изменений в коде проекта** (`resources/js/`, `app/`, `db/` нетронуты). **0 npm install** (motion-v и др. в `package.json` не попадают; их установка теперь разрешена, но не делается этим коммитом). **0 schema changes**. **Plan:** docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md. **Spec:** docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md. Через `/claude-md-management:claude-md-improver` (для CLAUDE.md) + manual Edit (для PSR_v1, Tooling, Pravila). v1.87→v1.88.*
```
(Keep the new entry as a single paragraph in italic, matching the style of existing entries.)
- [ ] **Step 3: Verify file integrity**
Run: `head -3 docs/CHANGELOG_claude_md.md` — first three non-empty lines should start with v1.88.
Run: `Grep -c "v1.88" docs/CHANGELOG_claude_md.md` — expect ≥1.
---
## Task 7: MEMORY sync — update memory index + feedback file
**Files:**
- Modify: `C:\Users\Administrator\.claude\projects\c---------------------crm-------------\memory\MEMORY.md` (1 line)
- Modify: `C:\Users\Administrator\.claude\projects\c---------------------crm-------------\memory\feedback_plugin_paired_stack.md` (~5 lines)
- [ ] **Step 1: Re-Read MEMORY.md index entry for plugin paired stack**
Use Read tool (full path with backslashes for Windows). Find line containing «Plugin paired stack pattern + расширенный пул UPM/21st».
Expected current content (approximately): `- [Plugin paired stack pattern + расширенный пул UPM/21st + R15 motion + tier-структура](feedback_plugin_paired_stack.md) — ...`
- [ ] **Step 2: Edit MEMORY.md — update hook to mention R15 removal**
Replace the existing «R15 motion» phrasing with «R15 motion (снят 12.05.2026 в PSR_v1 v2.0)» in the MEMORY.md index line.
Update version refs in the hook line (likely `**v1.7**, 16 правил R0R15`) → `**v2.0**, 15 правил R0R14`.
- [ ] **Step 3: Edit feedback_plugin_paired_stack.md frontmatter**
In `name:` field (line 2), update `**v1.7**, 16 правил R0R15, ~33 закрытых конфликта``**v2.0**, 15 правил R0R14, ~33 закрытых конфликта (R15 снят 12.05.2026 в v2.0)`.
In `description:` (line 3) update any `v1.7``v2.0`; preserve historical narrative ABOUT R15's introduction in v1.4 as point-in-time observation.
- [ ] **Step 4: Edit feedback_plugin_paired_stack.md body — add v2.0 rollback context**
Find the section heading "Ключевые ссылки (v1.6/v1.10/v1.14/v1.85):" (or similar latest snapshot). Update version refs:
- `Plugin_stack_rules_v1.md **v1.6**``**v2.0**`
- `Pravila_raboty_Claude_v1_1.md **v1.10**``**v1.11**`
- `CLAUDE.md **v1.85**``**v1.88**`
- `Tooling_v8_3.md **v1.14**``**v1.16**`
Find the section heading "**R15 motion двухуровневый (новое 10.05.2026):**" — add at end of that paragraph:
```
**Снято 12.05.2026 в PSR_v1 v2.0** (conscious rollback по решению заказчика; framer-motion переведён из regulatory hard-запрета в technical-only guidance). motion-v + gsap + anime.js + lottie-web + popmotion + @motionone/dom — теперь безусловно разрешены. Default motion stack (Vue native + Vuetify + CSS + View Transitions) — guidance, не hard-rule. См. CLAUDE.md v1.88 §2 и Tooling §9.2.
```
- [ ] **Step 5: Verify memory updates**
Run: `Grep -n "R15 motion" memory/MEMORY.md` and `memory/feedback_plugin_paired_stack.md` — should find updated references mentioning «снят 12.05.2026».
(On Windows path containing Cyrillic: use full path with backslashes via Grep tool's `path` parameter pointing at the projects/.../memory dir.)
---
## Task 8: Semantic grep verification — find any orphaned R15 refs
**Files:**
- Read-only verification across project tree.
- [ ] **Step 1: Grep for live R15 regulatory refs**
Run:
```
Grep pattern "R15\.[1-9]|R15\.[01][0-9]" path "docs/" type "md" output_mode "content" -n true
```
Expected: only inside changelog entries (v1.4, v1.5, v1.6, v1.7, v2.0 historical narratives). NO matches inside R0/R1.../R14 rule bodies, NO matches in main rule narrative.
If any match remains in a rule body — investigate. Either it's a forgotten edit (fix), or a legitimate historical mention inside a different document's changelog (leave).
- [ ] **Step 2: Grep for «motion-runtime hard-запрет» / «framer-motion hard-запрет»**
Run:
```
Grep pattern "motion-runtime hard-запрет|framer-motion hard-запрет" path "docs/" output_mode "content" -n true
```
Plus same for `CLAUDE.md`.
Expected: 0 matches in live text. Only historical changelog narratives might contain «hard-запрет» wording — verify each.
- [ ] **Step 3: Grep for stale version refs**
Run:
```
Grep pattern "PSR_v1 v1\.7|v1\.7 PSR_v1|Plugin_stack_rules_v1.*v1\.7" path "docs/ CLAUDE.md" output_mode "content" -n true
```
Expected: 0 live refs (all must be at v2.0+ or explicitly historical).
Same for Pravila v1.10 → expect 0 live refs (all v1.11+ or historical).
Same for Tooling v1.15 → expect 0 live refs (all v1.16+ or historical).
Same for CLAUDE.md v1.87 → expect 0 live refs (all v1.88+ or historical).
- [ ] **Step 4: Cross-ref reciprocity check**
For each pair of documents:
- PSR_v1 v2.0 mentions CLAUDE.md v1.88+, Pravila v1.11+, Tooling v1.16+? ✓
- CLAUDE.md v1.88 mentions PSR_v1 v2.0+, Pravila v1.11+, Tooling v1.16+? ✓
- Tooling v1.16 mentions PSR_v1 v2.0+, CLAUDE.md v1.88+, Pravila v1.11+? ✓
- Pravila v1.11 mentions PSR_v1 v2.0 in §11.5/§13.2? ✓
Use `Grep -n` on each document's header (lines 115) to verify.
- [ ] **Step 5: README sync check (drive-by)**
Run:
```
Grep pattern "R15|motion-runtime" path "README.md docs/README_АРХИВ_v8_5.md" output_mode "content" -n true
```
If matches exist with regulatory phrasing — flag for follow-up commit (out of scope for this plan; create a TODO note for engineer/user).
---
## Task 9: Atomic commit + lefthook + push + PR
**Files:**
- All modified files staged together.
- [ ] **Step 1: Review git diff before staging**
Run: `git diff --stat`
Expected: changes in 57 files:
- `CLAUDE.md`
- `docs/Plugin_stack_rules_v1.md`
- `docs/Tooling_v8_3.md`
- `docs/Pravila_raboty_Claude_v1_1.md`
- `docs/CHANGELOG_claude_md.md`
- `memory/MEMORY.md`
- `memory/feedback_plugin_paired_stack.md`
If unexpected files appear — investigate.
Spot-check: `git diff CLAUDE.md` shows §5 п.12 → маркер; `git diff docs/Plugin_stack_rules_v1.md` shows R15 deletion ~85 lines.
- [ ] **Step 2: Stage all 7 files explicitly (avoid `git add -A`)**
Run:
```bash
git add CLAUDE.md \
docs/Plugin_stack_rules_v1.md \
docs/Tooling_v8_3.md \
docs/Pravila_raboty_Claude_v1_1.md \
docs/CHANGELOG_claude_md.md
```
Memory files (`memory/MEMORY.md`, `memory/feedback_plugin_paired_stack.md`) are under the user's `~/.claude/projects/.../memory/` path (Windows). They are NOT in the repo working tree — they live in a different parent dir. Verify with `git status` whether memory paths appear in the repo. **If they do** (i.e., memory dir is symlinked or copied into repo) — stage them too. **If they don't** (normal case, memory is per-user/per-machine) — they're outside the repo, sync them separately and they don't go into the commit.
- [ ] **Step 3: Atomic commit**
Run:
```bash
git commit -m "$(cat <<'EOF'
chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)
Conscious rollback of v1.83 audited construction per user decision
12.05.2026. R15 PSR_v1 section deleted entirely; framer-motion remains
technical block (React-only peerDep), no longer regulatory rule.
Affected:
- PSR_v1 v1.7 → v2.0 (R15, R0.6 п.11, R8 motion, R11.6, R13 motion rows
removed; finale + properties reformulated)
- CLAUDE.md v1.87 → v1.88 (§5 п.12 → marker; §2 motion stack → guidance)
- Tooling v1.15 → v1.16 (§9.2 reformulated; framer-motion + react-spring
marked as technical block, not regulatory)
- Pravila v1.10 → v1.11 (§11.5/§13.2 counts updated; §13.9/§13.10 cross-ref
bumps; §13.10 NOT deleted — it governs R14 UPM/21st pipeline, not R15)
- CHANGELOG_claude_md.md — v1.88 entry
Brainstormed via superpowers:brainstorming. Planned via
superpowers:writing-plans. Executed via /claude-md-management:claude-md-improver
+ manual Edit.
Spec: docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md
Plan: docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
EOF
)"
```
- [ ] **Step 4: Verify lefthook passed all hooks**
If a hook fails:
- **lychee broken link** — fix the markdown link, re-stage, NEW commit (do NOT amend)
- **markdownlint error** — fix the .md, re-stage, NEW commit
- **gitleaks leak** — investigate (motion-related docs should have no secrets; if false-positive, evaluate and add to gitleaks allowlist with caution)
- **larastan / pint / pest** — not applicable (no PHP touched); if hooks try to run on PHP files because of changed file list — investigate hook config
Expected: all hooks pass, commit lands clean.
Run: `git log --oneline -3` to verify HEAD = atomic commit.
- [ ] **Step 5: Push branch**
Run: `git push -u origin rules/remove-r15`
Expected: branch pushed to GitHub.
- [ ] **Step 6: Create PR with `gh pr create`**
Run:
```bash
gh pr create --base main --head rules/remove-r15 --title "chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)" --body "$(cat <<'EOF'
## Summary
Conscious rollback of v1.83 audited construction per user decision 12.05.2026 ("сними все запреты на использование framer motion").
R15 PSR_v1 section removed entirely. motion-v / gsap / anime.js / lottie-web / popmotion / @motionone/dom — unconditionally permitted. framer-motion / react-spring remain **technical block** (React-only peerDep on react+react-dom), not regulatory rule — `npm install framer-motion` would proceed with peer-warn but `import { motion } from 'framer-motion'` in `.vue` files would runtime crash.
## Files changed
- `docs/Plugin_stack_rules_v1.md` v1.7 → v2.0 — R15 section deleted, R0.6 п.11 deleted, R8 motion tie-breakers deleted, R11.6 motion hierarchy deleted, R13 motion rows deleted, finale + properties reformulated.
- `CLAUDE.md` v1.87 → v1.88 — §5 п.12 → marker preserving numbering, §2 Animation default stack → guidance recommendation.
- `docs/Tooling_v8_3.md` v1.15 → v1.16 — §9.2 reformulated from regulatory denylist into technical guidance.
- `docs/Pravila_raboty_Claude_v1_1.md` v1.10 → v1.11 — §11.5 + §13.2 counts updated; §13.9 + §13.10 cross-refs bumped. §13.10 NOT deleted (governs R14 UPM/21st pipeline, not R15 — spec design section 2.4 contained misreading; correction in v1.11 changelog).
- `docs/CHANGELOG_claude_md.md` — v1.88 entry.
## Spec / Plan
- Spec: [docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md](docs/superpowers/specs/2026-05-12-remove-r15-motion-restrictions-design.md)
- Plan: [docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md](docs/superpowers/plans/2026-05-12-remove-r15-motion-restrictions.md)
## Verification
- [x] Lefthook all hooks passed (gitleaks 0, lychee 0 broken, markdownlint clean)
- [x] Semantic grep — 0 live R15 refs in rule bodies (only historical in changelog entries)
- [x] Cross-ref reciprocity verified between 4 normative docs
## Out of scope
- No code touched (`resources/js/`, `app/`, `db/`, `tests/`).
- No npm install (motion-v et al. now permitted but not installed).
- No schema changes.
- `framer-motion` remains technical block — installing it would not break the rule base, but it would not work in Vue.
## Test plan
- [ ] Visual review of diff
- [ ] Verify §5 п.12 in CLAUDE.md reads "Резерв. Был ... Снят 12.05.2026 ..."
- [ ] Verify R15 section absent from PSR_v1 v2.0 rule body
- [ ] Verify §13.10 still present in Pravila v1.11 (governs R14, not R15)
- [ ] (Optional) `npm install motion-v --save-dev --dry-run` does not trigger any project-level rule check failure
🤖 Generated with [Claude Code](https://claude.com/claude-code)
EOF
)"
```
- [ ] **Step 7: Return PR URL to user**
Echo the URL printed by `gh pr create`. Plan execution complete.
---
## Self-Review
**1. Spec coverage:**
- Spec §2.1 (PSR_v1 changes) → Task 2 ✓
- Spec §2.2 (CLAUDE.md changes) → Task 5 (via skill) ✓
- Spec §2.3 (Tooling changes) → Task 3 ✓
- Spec §2.4 (Pravila changes) → Task 4 (with correction: §13.10 NOT deleted, it's R14-linked not R15-linked — verified during plan exploration) ✓
- Spec §4 (MEMORY sync, CHANGELOG) → Tasks 6 + 7 ✓
- Spec §5 (verification) → Task 8 + Task 9 step 4 ✓
- Spec §6 (atomic, branch, channel, commit, PR) → Tasks 1, 9 ✓
**2. Placeholder scan:** No TBD/TODO; all wording explicit. One judgment call documented (memory files in/out of repo, T9 step 2) with engineer instruction to verify via `git status`.
**3. Type consistency:** Version refs consistent across all task descriptions (PSR_v1 v1.7 → v2.0, CLAUDE.md v1.87 → v1.88, Tooling v1.15 → v1.16, Pravila v1.10 → v1.11). File paths consistent (forward-slash repo-relative). Spec design assumption about §13.10 being R15-linked is corrected inline in Task 4 plus surfaced in CHANGELOG entry T6.
**4. Risk notes for engineer:**
- Line numbers in this plan are based on plan-writing-time Read of files. After ANY edit (especially T2 deletions), subsequent line numbers shift. **Always Re-Read affected ranges before next edit.**
- `superpowers:executing-plans` and `superpowers:subagent-driven-development` both work; subagent-driven recommended for review checkpoints between tasks (especially T2 which is large).
- If `/claude-md-management:claude-md-improver` cannot match a regex on CLAUDE.md (e.g., due to whitespace) — re-invoke with refined wording. Do NOT fall back to direct Edit (§5 п.10 hard-rule).
@@ -0,0 +1,161 @@
---
title: Снятие R15 motion-runtime restrictions из нормативной базы
date: 2026-05-12
status: approved-by-customer
author: Claude (через superpowers:brainstorming)
related-rules: PSR_v1 v1.7 → v2.0, CLAUDE.md v1.87 → v1.88, Tooling v1.15 → v1.16, Pravila v1.10 → v1.11
---
# Design: Снятие R15 motion-runtime restrictions
## 1. Контекст и триггер решения
12.05.2026 заказчик запросил: «снять все запреты на использование framer-motion». В ходе brainstorming sanity-check'а согласовано:
- `framer-motion` (React-only, peerDep `react` + `react-dom`) — остаётся **technical block**, физически не работает в Vue 3 + Vuetify 3. Это свойство библиотеки, не regulatory rule.
- Реальная цель — широкое использование motion-runtime библиотек в проекте. Vue-эквивалент framer-motion — `motion-v` (Vue 3 порт от того же автора, ~95% API-совместимость).
- Сохранение R15 4-триггерного окна (PSR_v1 v1.7) делает любое использование motion-v / gsap / anime.js / lottie-web затруднённым; заказчик хочет снять барьер целиком.
**Решение**: удалить R15-секцию из PSR_v1 целиком и синхронизировать связанные документы.
Это **сознательный rollback** аудированной нормативной правки v1.83 (10.05.2026, когда R15 двухуровневая motion-конструкция была введена). Чтобы будущий аудит видел дату/причину снятия — фиксируется явно в changelog'е PSR_v1 v2.0.
## 2. Архитектура правки (4 документа)
### 2.1. `docs/Plugin_stack_rules_v1.md` v1.7 → v2.0 (major bump)
**Удалить целиком:**
- R15.1 — framer-motion hard-запрет навсегда (React-only архитектурно)
- R15.2 — motion-v 4-триггерное условное окно
- R15.3 — default motion stack как обязательная стойка
- R15.7 — расширение R15.1 на gsap/anime.js/lottie-web/popmotion/@motionone/dom
- R0.6 пункт 11 — «animation runtime hard-стоп Auto mode не отменяет»
**Изменить:**
- Шапка: «v1.7, 16 правил R0R15» → «v2.0, 15 правил R0R14»
- Changelog v2.0 entry: «major bump — removal of R15 motion-runtime restrictions per user decision 12.05.2026; conscious rollback от v1.83 audited construction (10.05.2026 поздний вечер); rationale: customer trust в developer team's choice motion-runtime без regulatory guardrail»
- Cross-refs шапки на актуальные версии связанных документов (CLAUDE.md v1.88, Pravila v1.11, Tooling v1.16)
### 2.2. `CLAUDE.md` v1.87 → v1.88
**Удалить:**
- §5 п.12 «Не устанавливать motion runtime библиотеки...» — абзац целиком
**Изменить:**
- §2 строка «Animation default stack» — переписать с «motion-v / framer-motion / gsap / anime.js / lottie-web — **не установлены** и условно разрешены только по R15.2 (4 триггера)» на: «Default motion stack — рекомендация (не hard-rule); motion-runtime библиотеки разрешены к установке без обоснования; `framer-motion` физически не работает в Vue (React-only) — см. Tooling §9.2 technical guidance»
- §0 строка изменения — запись об v1.88
- §9 «История версий» — entry v1.88
**§5 п.12 — резолюция противоречия:** контент абзаца удаляется; заголовок-маркер остаётся как:
```
12. **Резерв.** Был «не устанавливать motion runtime библиотеки без прохождения R15.2». Снят 12.05.2026 (CLAUDE.md v1.88 + PSR_v1 v2.0). Подробности — docs/CHANGELOG_claude_md.md.
```
Это сохраняет нумерацию п.10/п.11/п.12 → cross-refs в memory (`feedback_environment.md`, `feedback_plugin_paired_stack.md`) и других местах не ломаются.
**Не менять:**
- §5 п.10 (правки через claude-md-management — действует)
- §5 п.11 (Superpowers hard rule — действует)
### 2.3. `docs/Tooling_v8_3.md` Прил. Н v1.15 → v1.16
**Изменить §9.2:**
- denylist motion-runtime — переформулировать. Удалить условные пометки на motion-v / gsap / anime.js / lottie-web / popmotion / motion-one / @motionone/dom.
- `framer-motion` оставить с маркером **«technical guidance: React-only library, peerDep react+react-dom, runtime crash в .vue файлах. Не regulatory rule — свойство библиотеки»**.
**Шапка:** cross-refs на актуальные версии (PSR_v1 v2.0, CLAUDE.md v1.88, Pravila v1.11).
**Changelog v1.16:** запись.
### 2.4. `docs/Pravila_raboty_Claude_v1_1.md` v1.10 → v1.11
**Удалить:**
- §13.10 — transitive hard-link на R15 (R15 не существует, link не имеет цели)
**Изменить:**
- §13.2 счётчик «v1.6 (16 правил)» → «v1.7 (15)»
- §0 строка изменения — запись об v1.11.
**Не задеты:**
- §13.9 (hard-link на R10, не R15 — verified через memory `feedback_superpowers_hard_rule.md`).
- §11/§12 (Superpowers hard rule).
- §0–§9 (продуктовые правила, не связаны с motion-runtime).
**Контрольная re-Read перед правкой:** перед применением патча — fresh Read актуального содержимого Pravila §13 (§13.9, §13.10, §13.2) и подтвердить факты grep'ом перед удалением. Если §13.9 фактически содержит cross-ref на R15 (memory может быть stale) — расширить scope правки.
## 3. Data flow / последствия после merge
| Действие | До | После |
|---|---|---|
| `npm install motion-v` | требует обоснование 4 триггеров R15.2 + AskUserQuestion | без обоснования, без AskUserQuestion |
| `npm install gsap` / `anime.js` / `lottie-web` / `popmotion` / `@motionone/dom` | R15.7 запрет без обоснования | без обоснования |
| `npm install framer-motion` | R15.1 hard-запрет, Auto mode не отменяет | npm install проходит с peer-dep warn; runtime crash при `import { motion } from 'framer-motion'` в .vue — это поведение библиотеки, не регуляторный блок |
| Default motion stack (Vue Transition + Vuetify transitions + CSS @keyframes + View Transitions API) | обязательная стойка R15.3 | рекомендация |
| ESLint / lefthook / pre-commit | нет хуков на motion-deps | без изменений |
## 4. Cross-doc consistency / sync
Все 4 документа синхронизируются в одном atomic-коммите. Дополнительно:
- **MEMORY.md** index entry «Plugin paired stack pattern + расширенный пул UPM/21st + R15 motion + tier-структура» — обновить hook: «R15 motion» → «R15 motion (снят 12.05.2026, v2.0)»
- **`memory/feedback_plugin_paired_stack.md`** — поправить упоминания v1.7 на v2.0; удалить блок «R15 двухуровневая motion-конструкция» или маркировать как historical context
- **`docs/CHANGELOG_claude_md.md`** — запись v1.88 с описанием removal + список затронутых файлов
## 5. Verification после правок
- **Lefthook полный прогон**:
- lychee — 0 broken links (cross-refs шапок не сломаны)
- gitleaks — 0 leaks (только .md правки)
- markdownlint — clean на всех 4 файлах
- **Семантический grep**:
- `rg "R15" docs/ CLAUDE.md` — все вхождения либо удалены, либо переформулированы в changelog'ах как historical
- `rg "motion-runtime hard-запрет"` — 0 matches
- `rg "framer-motion hard-запрет"` — 0 matches
- `rg "v1\.7\+|PSR_v1 v1\.7"` — все мигрировано на v2.0+ или явно historical
- **Cross-ref проверка вручную**: шапки всех 4 документов содержат актуальные взаимные ссылки (PSR_v1 v2.0 ↔ CLAUDE.md v1.88 ↔ Tooling v1.16 ↔ Pravila v1.11).
- **MEMORY sync**: re-Read memory файлов после правок, проверка что upstream-факты согласованы.
Нет runtime-тестов (правки только в `.md`, не задеты Pest / Vitest / Histoire).
## 6. Атомарность и канал исполнения
- **Ветка**: `rules/remove-r15` от `origin/main` (`48f27b4`). Не подмешивать в `plan5-frontend-projects` — нормативная правка должна быть отдельным PR.
- **Канал**: `/claude-md-management:claude-md-improver` (CLAUDE.md §5 п.10 hard-rule — прямой Edit/Write по CLAUDE.md запрещён).
- **Коммиты**:
1. `docs(spec): add design for R15 removal` — этот design doc, отдельный коммит
2. `chore(rules): remove R15 motion-runtime restrictions (PSR_v1 v2.0)` — все 4 .md + CHANGELOG + MEMORY sync, atomic
- **Pre-commit**: lefthook все jobs прогоняются перед commit. Если падает — fix + новый коммит (не amend, CLAUDE.md §5 п.11).
- **PR**: после push — `gh pr create`. Body содержит:
- Section 1 (контекст и rollback)
- Section 2 (что меняется в 4 файлах)
- Section 3 (последствия)
- Section 4 (cross-doc consistency)
- Section 5 (verification список)
- Ссылка на этот design doc
## 7. Open issues / out-of-scope
- **Не задето**: ТЗ v8.5 (стек Vue + Vuetify не меняется), DEVELOPER_HANDOFF (компоненты под Vue остаются), брендбук (палитра/шрифты не задеты), schema БД, backend Laravel.
- **Не задето**: R0R14 PSR_v1 (стек-фильтры R6.0/R6.1, paired-stack R10, иерархия источников R11, decision matrix R13, UI-pipeline R14 — все остаются в силе).
- **Не задето**: hard rule §12 Pravila (Superpowers skill инвокация первой) — остаётся.
## 8. Decision trail
- 12.05.2026 ~16:00 — заказчик «установи framer motion» (economy 100%) → отказ с объяснением hard-запрета.
- 12.05.2026 — заказчик «сними все запреты на использование framer motion, economy 0%».
- 12.05.2026 — brainstorming sanity-check:
- Q1: scope use case? → «весь фронт».
- Q2: framer-motion именно или API? → «motion-v подойдёт» (sanity-check сработал, миграция фронта на React отменена).
- Q3: какой вариант правки R15? → «B — полная отмена R15» (вопреки рекомендации A).
- Section 15 design'а — все одобрены «да».
- Ветка `rules/remove-r15` от main — одобрена.