8e8f06ebe7
Три группы накопившихся auto-правок (НЕ ручные): 1. markdownlint --fix auto-format (~25 .md в docs/superpowers/, docs/security/marketing-vet.md, docs/adr/015, docs/deploy/lkomega-runbook): MD031/MD032 (blank lines around fence/list) + MD004 (bullet markers `+`→`-`). Содержательных текстовых правок 3: ADR-015 bullet, sprint5d-cleanup bullet, router-discipline trailing space. 2. lefthook 2.1.6 → 2.1.8 (package.json + lock): patch-bump, авто-резолвил npm. 3. Observer runtime (docs/observer/): episodes-2026-05.jsonl +420 строк (текущая активность мозга), STATUS.md regen, .pii-counters / .read-counter тики, +2026-05-24-brain-retro.md note. Цель — разблокировать merge feat/llm-first-router → main (этап 0 плана постановки в боевой). Содержание ветки не трогает.
175 lines
17 KiB
Markdown
175 lines
17 KiB
Markdown
# Anthropic Dev-Tooling Formalization — Design
|
||
|
||
**Date:** 2026-05-18
|
||
**Topic:** Формализация 5 Anthropic-плагинов уже включённых в `~/.claude/settings.json` user-level, но без номера в реестре Tooling §3.3 / PSR_v1 R10.1.
|
||
**Deciders:** Дмитрий
|
||
**Method:** аудит «мозга» через discovery-interview (SYSTEM-режим, 2026-05-18). Решение по варианту (а) — формализовать все 5, риски закрыть предварительно.
|
||
|
||
---
|
||
|
||
## Goal
|
||
|
||
Закрыть **L1-паттерн** «плагин фактически включён в settings.json без формализации в правилах» (зафиксирован 2026-05-10 на UPM/21st; повторился 2026-05-13 на Sentry/Redis MCP). За неделю интеграционных эпиков (A6/D3/C9/A11/A3/A4/deptrac/C10/discovery) реестр Tooling вырос с 35 до 55 позиций, но **5 Anthropic dev-плагинов** оставались формализационным долгом — они есть в карте (iter7 audit 16.05.2026), но не в Tooling/PSR/Pravila.
|
||
|
||
Превратить долг в полноценные позиции #56–#60 с двумя новыми off-phase подкатегориями, по проверенному паттерну C10/A11/A3.
|
||
|
||
---
|
||
|
||
## Context
|
||
|
||
**5 плагинов в `~/.claude/settings.json` `enabledPlugins` без номера:**
|
||
|
||
1. `skill-creator@claude-plugins-official` (Anthropic) — создание скилов, performance-метрики, оптимизация описаний для триггеринга
|
||
2. `plugin-dev@claude-plugins-official` (Anthropic) — конструктор плагинов: 8 sub-skills (plugin-structure / agent-development / skill-development / command-development / hook-development / mcp-integration / plugin-settings) + 2 агента (agent-creator, plugin-validator, skill-reviewer)
|
||
3. `hookify@claude-plugins-official` (Anthropic) — генератор хуков из анализа транскриптов или явных инструкций (`/hookify` + skill `writing-rules` + агент `conversation-analyzer`)
|
||
4. `claude-code-setup@claude-plugins-official` (Anthropic) — анализатор кодовой базы + рекомендации Claude Code automations (`/claude-automation-recommender`)
|
||
5. `context7@claude-plugins-official` (Anthropic) — MCP-документация для библиотек/фреймворков (актуальные доки React/Laravel/Vue/Prisma/Tailwind/…)
|
||
|
||
**Карта (`docs/automation-graph.html`)** иметь 5 соответствующих узлов: `skill_creator`, `plugin_dev`, `hookify_plugin`, `claude_setup`, `context7` — добавлены в iter7 audit-actualization 16.05.2026. Узлы **есть**, но nd()-блоки не несут номера/правил, и edge к `psr_v1` «R10.1 блок 1» — отсутствуют. Один из узлов (`hookify_plugin`) уже носит 🔴-конфликт `hookify_plugin ↔ hk_pre_claude` (карта строка 1844).
|
||
|
||
**Project-level `.mcp.json`** — все 9 MCP формализованы (#2/#3/#10/#25/#34/#35/#45/#47 + ruflo §4.10). User-level `.claude.json` `mcpServers` — только `magic` (#32). Project `.claude/settings.json` hooks — описаны в Pravila §14 / Tooling §14. Утечек инвентаря вне 5 пунктов выше **нет**.
|
||
|
||
**Прецеденты формализации post-факт:**
|
||
|
||
- 2026-05-10 (UPM #31 + 21st Magic MCP #32) — после явного вопроса заказчика «хочу добавить плагины»
|
||
- 2026-05-13 (Sentry MCP #34 + Redis MCP #35) — retrospective в v1.92 после PR #3 merge
|
||
- 2026-05-17/18 (A6/D3/C9/A11/A3/A4/deptrac/C10/discovery) — проактивная сектор-за-сектором формализация
|
||
|
||
---
|
||
|
||
## Decisions
|
||
|
||
### D1: Две off-phase подкатегории, не одна
|
||
|
||
Семантика разная — нельзя свалить в одну категорию:
|
||
|
||
- **authoring-tooling** (создание Claude-артефактов): `skill-creator` #56, `plugin-dev` #57, `hookify` #58
|
||
- **dev-support** (поддержка/документация Claude-разработки): `claude-code-setup` #59, `context7` #60
|
||
|
||
Это даёт более чистые правила в R10.1 и более точные триггеры в Pravila §13.2.
|
||
|
||
### D2: hookify — отдельное hard-правило в R10.1 (закрывает 🔴-конфликт)
|
||
|
||
Текущее состояние: 🔴-конфликт `hookify_plugin ↔ hk_pre_claude` на карте (плагин hookify может перезаписать существующие хуки в `~/.claude/settings.json` без diff).
|
||
|
||
Правило закрытия:
|
||
|
||
> hookify вызывается **только по явному `/hookify`**, не проактивно. Перед генерацией хука — обязательный pre-check на коллизию с уже-зарегистрированными хуками в `~/.claude/settings.json` (особенно: economy-mode / skill-marker / skill-check / state-guard / postcompact / verifier — это 6-компонентная архитектура runtime-enforcement, никакие из них не должны перезаписываться). При обнаружении коллизии — остановка с пометкой «hookify не может выполнить генерацию автоматически — требуется ручное согласование изменений в settings.json».
|
||
|
||
После правила: 🔴 → 🟢 (закрыто правилом).
|
||
|
||
### D3: skill-creator ↔ plugin-dev:skill-development — граница
|
||
|
||
Оба умеют создавать скилы. Граница:
|
||
|
||
- **skill-creator** — для **standalone** скилов (`.claude/skills/<name>/`), c performance-метриками и benchmarking. Использовать первым при создании нового **проектного** скила.
|
||
- **plugin-dev:skill-development** — для скилов **внутри marketplace-плагина**, который ты разрабатываешь. Использовать только при работе над собственным Claude-плагином (не наш кейс на 2026-05-18).
|
||
|
||
Дополнительно: **вендоренные сторонние скилы** (`.claude/skills/mermaid/`, `data-scientist/`, `ccpm/`) и **self-authored проектные** (`audit-portal/`, `regression/`, `process-modeling/`, `process-analysis/`, `discovery-interview/`) — модифицируются **прямым Edit**, не через skill-creator (он может предложить переписать как новый, потерять провенанс).
|
||
|
||
### D4: context7 ↔ WebFetch ↔ WebSearch — граница источников документации
|
||
|
||
Текущая практика: я обращался к context7 на A11/A3/discovery эпиках для актуальных доков (Laravel/Pest/Vue), но это нигде не документировано.
|
||
|
||
Правило в R10.1 dev-support:
|
||
|
||
- **context7** — первый выбор для документации **известной библиотеки** (Laravel, Vue, React, Pest, Vuetify, Tailwind, …). MCP отдаёт актуальную версию из upstream, обходит cutoff training data.
|
||
- **WebFetch** — fallback на конкретный URL (GitHub README, ADR-документ внешнего проекта).
|
||
- **WebSearch** — поиск без знания URL, либо актуальные события/статьи.
|
||
|
||
### D5: claude-code-setup — read-only анализатор
|
||
|
||
`/claude-automation-recommender` — анализирует кодовую базу и предлагает плагины/хуки/скилы. Правило:
|
||
|
||
- Рекомендации **фильтровать** через R0 stack-gate + R10.1 (R0.6 hard-стопы — брендовое UI, ru-стек, уже формализованное и т.п.).
|
||
- **Не устанавливать** ничего по рекомендации без явного согласования с заказчиком.
|
||
- Использование read-only/advisory — не trigger'ит R6.0/R6.1/R14.
|
||
|
||
### D6: ADR-010 — новый ADR-документ
|
||
|
||
По образцу ADR-004 (C9 project-management) / ADR-005 (deptrac) / ADR-006 (A4 design) / ADR-007 (A11 ml-ai) / ADR-008 (C10 business-process) / ADR-009 (discovery-interview). Содержание: формализация retrospective, split на 2 подкатегории, locked границы D2-D5.
|
||
|
||
Альтернатива (retrospective без ADR, как Sentry/Redis #34/#35 в v1.92) — отвергается: тут 5 позиций и 2 новые подкатегории, decision-grain выше — ADR обязателен.
|
||
|
||
### D7: Карта — refresh, не add
|
||
|
||
Узлы skill_creator / plugin_dev / hookify_plugin / claude_setup / context7 в карте **есть** (iter7 16.05). Нужно:
|
||
|
||
- Обновить лейблы 4 узлов-правил (Pravila/CLAUDE.md/PSR_v1/Tooling) на новые версии **v1.27 / v2.14 / v3.13 / v2.14** (после A6 v1.24/v2.10/v3.10/v2.10 дрейф копится — последний refresh `de66b8b` 17.05; за C10 и discovery + сейчас за this эпик)
|
||
- Каждому из 5 узлов — обновить nd() с номером (#56-#60), категорией, ограничениями, edge к `psr_v1` «R10.1 блок 1»
|
||
- Конфликт `hookify_plugin ↔ hk_pre_claude` — 🔴 → 🟢 с rule «D2 правило в R10.1»
|
||
- NODE_META.changed → 18.05.2026 для всех 5
|
||
- tooling-узел nd() count: «70 / 50» → «75 / 55» (после регистрации 5 позиций) — но это уже стало неактуально (последний refresh говорит 70/50, после C10 и discovery — реально 75/55 уже). Verify Task 7.
|
||
- `NODE_SECTION` — узлы остаются в текущих разделах (E7), не перетегируются (REU4 паттерн)
|
||
- Метрики карты — 124/130 (узлы и рёбра без изменений в количестве; только nd-наполнение + 5 новых edge к psr_v1 = 124/135)
|
||
|
||
### D8: Memory — single-bump
|
||
|
||
После эпика — update `feedback_plugin_paired_stack.md` (active versions + 6-я off-phase подкатегория — wait, после A11 их уже 10, после C10 11, после discovery 12, после нас 13). MEMORY.md и project_state.md — стандартные version bumps.
|
||
|
||
---
|
||
|
||
## Conflict audit — locked
|
||
|
||
Полный аудит R1–R14 проведён в discovery-сессии 2026-05-18. Сводка:
|
||
|
||
| # | Риск | Severity | Locked resolution |
|
||
|---|---|---|---|
|
||
| R1 | hookify может перезаписать settings.json (🔴) | 🟡 → 🟢 после правила | D2 — отдельное правило pre-check в R10.1 |
|
||
| R2 | plugin-dev может предложить переделать наши self-authored скилы | 🟡 | D3 — граница «standalone vs marketplace; вендоренное/self-authored — direct Edit» |
|
||
| R3 | skill-creator ↔ plugin-dev:skill-development overlap | 🟢 | D3 — граница |
|
||
| R4 | context7 ↔ WebFetch ↔ WebSearch overlap | 🟢 | D4 — приоритет |
|
||
| R5 | claude-code-setup может предложить установить плагин | 🟢 | D5 — read-only фильтр |
|
||
| R6 | Карта: 5 узлов есть, без номеров и edge | 🟢 | D7 — refresh + 5 новых edge |
|
||
| R7 | Категоризация в одну подкатегорию запутает | 🟢 | D1 — две подкатегории |
|
||
| R8 | User-level настройки на 16 параллельных проектах машины | 🟢 | Формализация в Лидерра-нормативке не ломает другие проекты |
|
||
| R9 | Кодовая регрессия | 🟢 | Её нет — только текстовая нормативка; pre-commit + pre-push стандарт |
|
||
| R10 | Темп: 5 позиций в один эпик | 🟢 | Норм — посильно по образцу A11 (3) / C10 (4) |
|
||
| R11 | ADR нужен? | 🟢 | D6 — да, ADR-010 |
|
||
| R12 | Memory upd | 🟢 | D8 — стандартный bump |
|
||
| R13 | Версии нормативки | 🟢 | Tooling v2.13→v2.14 / PSR v3.12→v3.13 / Pravila v1.26→v1.27 / CLAUDE.md v2.13→v2.14 |
|
||
| R14 | Конфликт-аудит пометки в Tooling §3.3 | 🟢 | По образцу AK1/MK1/ML3/LINT1 — короткие SC1-SC5 / PD1-PD3 / HK1-HK3 / CCS1 / CTX1 |
|
||
|
||
---
|
||
|
||
## File structure
|
||
|
||
| File | Action | Responsibility |
|
||
|---|---|---|
|
||
| `docs/adr/ADR-010-anthropic-dev-tooling.md` | Create | Формализация retrospective decision, split 2 подкатегории, locked границы D2-D5 |
|
||
| `docs/Tooling_v8_3.md` | Modify | Прил. Н — 2 новых subsection (§4.31 authoring-tooling, §4.32 dev-support); §4.31-§4.35 5 позиций (#56-#60); §0 счётчик 55→60 |
|
||
| `docs/Plugin_stack_rules_v1.md` | Modify | R10.1 Блок 1 — +5 строк с ролями и triggers; hookify-special note (D2); §0 +entry v3.13 |
|
||
| `docs/Pravila_raboty_Claude_v1_1.md` | Modify | §13.2 — +2 абзаца (authoring-tooling + dev-support); §0 +entry v1.27 |
|
||
| `CLAUDE.md` | Modify (через `/claude-md-management:claude-md-improver` ИЛИ прямой Edit в worktree — §5 п.10 worktree-эксцепшн, прецедент A11/C10/discovery v2.10/v2.12/v2.13) | §3 title 55→60; §1 priority chain row 2b 55→60; §3.3 +5 строк #56-#60; §3.3 footer 55→60 + 13 off-phase подкатегорий; §0 cross-refs Pravila v1.27 / PSR v3.13 / Tooling v2.14; §6 +абзац интеграции; §9 +entry v2.14; шапка v2.13 → v2.14 |
|
||
| `docs/CHANGELOG_claude_md.md` | Modify | Entry v2.14 |
|
||
| `docs/automation-graph.html` | Modify | 5 узлов (skill_creator/plugin_dev/hookify_plugin/claude_setup/context7) — refresh nd() с номерами + edge к `psr_v1`; 4 узла-правила — refresh лейблы под новые версии; конфликт hookify ⊥ hk_pre_claude 🔴→🟢; tooling-узел nd() count refresh |
|
||
| `MEMORY.md` + `feedback_plugin_paired_stack.md` + `project_state.md` + `reference_archive.md` | Modify | Standard bumps + new memory `project_anthropic_dev_tooling.md` для этой интеграции |
|
||
|
||
**Files NOT modified:**
|
||
|
||
- `~/.claude/settings.json` — настройки не трогаем (плагины уже включены)
|
||
- `~/.claude.json` — то же
|
||
- `.mcp.json` — не затронут (только context7 — но он `enabledPlugins`, не MCP-сервер в .mcp.json)
|
||
- `lefthook.yml` — нет хуков от этих плагинов в pre-commit/pre-push
|
||
- Test files — кодовой регрессии нет
|
||
|
||
---
|
||
|
||
## Severable scope
|
||
|
||
**Core scope (Task 1–9):** ADR-010 + 4 normative files + map refresh + memory + pre-push + push. Закрывает эпик целиком.
|
||
|
||
**Out of scope (defer):**
|
||
|
||
- Изменение `enabledPlugins` (выключение/включение) — это вариант (б)/(в), отвергнут заказчиком в пользу (а)
|
||
- Изменение хуков hookify в `.claude/settings.json` — формализуем правило, не код
|
||
- Создание `docs/<category>/README.md` (как сделано в A11 `docs/ml/`, C10 `docs/process/`, discovery `docs/discovery/`) — для authoring-tooling и dev-support **не нужно**: это infrastructure-категория, не имеет проектных артефактов (как и claude-md-management #33 не имеет `docs/claude-md/`). Pravila §13.2 абзаца + Tooling subsection достаточно.
|
||
|
||
---
|
||
|
||
## Sequencing
|
||
|
||
Worktree уже создан: `.claude/worktrees/anthropic-dev-tooling`, branch `feat/anthropic-dev-tooling`, базовый коммит origin/main `b40f2c8` (последний — discovery-interview map node).
|
||
|
||
Все 9 tasks плана исполняются в этой ветке последовательно (механика суб-агентов разрешена, но git-задачи — контроллер Sonnet, никакого Haiku-commit, урок Sprint 3F/5/6). Push: `git push origin feat/anthropic-dev-tooling:main` после pre-push (gitleaks-full-history + lychee).
|