# 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).
