diff --git a/docs/superpowers/plans/2026-05-17-a3-integration-tooling-integration.md b/docs/superpowers/plans/2026-05-17-a3-integration-tooling-integration.md index 11117cb5..4ffee583 100644 --- a/docs/superpowers/plans/2026-05-17-a3-integration-tooling-integration.md +++ b/docs/superpowers/plans/2026-05-17-a3-integration-tooling-integration.md @@ -4,7 +4,7 @@ **Goal:** Наполнить пустой раздел A3 «Программирование — интеграции (API, вебхуки)» карты `automation-graph.html` — формализовать 2 новых интеграционных инструмента + кросс-реф 5 существующих, синхронизировать 4 нормативных файла. -**Architecture:** Параллельно A6/D3. Новый аддитивный слой `NODE_SECTION_SECONDARY` в карте (`NODE_SECTION` 1:1 не трогается) даёт кросс-реф существующих узлов в A3. `openapi-mcp-server` — реальная установка (`.mcp.json`), `api-docs` agent — 0-install (claude-flow). Нормативка — A6/D3-паттерн (Tooling §4.16 + PSR_v1 R10.1 + Pravila §13.2 + CLAUDE.md через `claude-md-improver`). +**Architecture:** Параллельно A6/D3. Новый аддитивный слой `NODE_SECTION_SECONDARY` в карте (`NODE_SECTION` 1:1 не трогается) даёт кросс-реф существующих узлов в A3. `openapi-mcp-server` — реальная установка (`.mcp.json`), `api-docs` agent — 0-install (claude-flow). Нормативка — A6/D3-паттерн (Tooling §4.22 + PSR_v1 R10.1 + Pravila §13.2 + CLAUDE.md через `claude-md-improver`). **Tech Stack:** `automation-graph.html` (vis.js, vanilla JS), `.mcp.json` (stdio MCP), Markdown (Tooling/PSR_v1/Pravila/CLAUDE.md), claude-flow `api-docs` agent, npm/npx. @@ -18,7 +18,7 @@ - lefthook pre-commit (gitleaks / markdownlint / cspell / adr-judge) — на каждом коммите; - MCP-smoke — `openapi-mcp-server` поднимается в stdio; -- визуальный smoke карты — 112 узлов, 0 JS-ошибок в консоли, панель «Разделы» показывает A3; +- визуальный smoke карты — 118 узлов, 0 JS-ошибок в консоли, панель «Разделы» показывает A3; - регрессия `quick` (lint/format/type-check) — перед финальным коммитом нормативки. Если cspell блокирует новый валидный термин — добавить в `cspell-words.txt` (в том же коммите). @@ -32,10 +32,10 @@ - Create: `docs/api/openapi.yaml` — стартовый OpenAPI-скелет (smoke, deals API) - Modify: `.mcp.json` — +`openapi` server entry - Modify: `docs/automation-graph.html` — `NODE_SECTION_SECONDARY` слой + 2 узла + рендер -- Modify: `docs/Tooling_v8_3.md` — §4.16 + §0 счётчик, v2.4→v2.5 -- Modify: `docs/Plugin_stack_rules_v1.md` — R10.1 Блок 3, v3.4→v3.5 -- Modify: `docs/Pravila_raboty_Claude_v1_1.md` — §13.2, v1.18→v1.19 -- Modify: `CLAUDE.md` — через `/claude-md-management:claude-md-improver`, v2.4→v2.5 +- Modify: `docs/Tooling_v8_3.md` — §4.22 + §0 счётчик, v2.8→v2.9 +- Modify: `docs/Plugin_stack_rules_v1.md` — R10.1 Блок 3, v3.8→v3.9 +- Modify: `docs/Pravila_raboty_Claude_v1_1.md` — §13.2, v1.22→v1.23 +- Modify: `CLAUDE.md` — через `/claude-md-management:claude-md-improver`, v2.8→v2.9 - Modify: `cspell-words.txt` — новые термины по мере надобности - Modify: `memory/project_automation_map.md`, `memory/reference_archive.md` — после push @@ -118,7 +118,7 @@ Run: `Read` по `.mcp.json`. Зафиксировать формат сущес - [ ] **Step 4: Smoke — сервер поднимается** Run: `npx -y --help` (проверка, что пакет ставится и запускается на native-Windows). -Expected: печатает usage без краша. Если падает (native-Windows несовместимость / кириллица в пути, квирк #26) — **fallback:** оставить server-блок в `.mcp.json` закомментированным-эквивалентом не выйдет (JSON не поддерживает комментарии) → задокументировать в Tooling §4.16 статус «pending: native-Windows install не верифицирован» (прецедент — Sentry MCP «pending Б-1»), узел карты остаётся. Зафиксировать факт в коммите Step 5. +Expected: печатает usage без краша. Если падает (native-Windows несовместимость / кириллица в пути, квирк #26) — **fallback:** оставить server-блок в `.mcp.json` закомментированным-эквивалентом не выйдет (JSON не поддерживает комментарии) → задокументировать в Tooling §4.22 статус «pending: native-Windows install не верифицирован» (прецедент — Sentry MCP «pending Б-1»), узел карты остаётся. Зафиксировать факт в коммите Step 5. - [ ] **Step 5: Commit** @@ -137,7 +137,7 @@ git commit -m "feat(a3): register openapi-mcp-server in .mcp.json" - [ ] **Step 1: Добавить объект `NODE_SECTION_SECONDARY`** -После закрывающей `};` объекта `NODE_SECTION` (заканчивается ~строка 1971, перед `const SECTION_BY_ID`) вставить: +После закрывающей `};` объекта `NODE_SECTION` (локализовать Grep'ом: закрывающая `};` объекта `NODE_SECTION` перед `const SECTION_BY_ID`) вставить: ```js // Вторичная классификация: узел первично в NODE_SECTION, дополнительно — в этих @@ -154,7 +154,7 @@ const NODE_SECTION_SECONDARY = { - [ ] **Step 2: Модифицировать build `SECTION_NODES`** -Текущий код (строки 1973-1977): +Текущий код (локализовать Grep'ом `const SECTION_NODES = new Map`): ```js const SECTION_NODES = new Map(SECTIONS.map(s => [s.id, []])); @@ -179,7 +179,7 @@ NODES.forEach(n => { - [ ] **Step 3: Модифицировать строку «Раздел» Паспорта** -Текущий код (строки 2082-2083): +Текущий код (локализовать Grep'ом `ld-section` в `showNodeLegend`): ```js const _sec = NODE_SECTION[nodeId] ? SECTION_BY_ID.get(NODE_SECTION[nodeId]) : null; @@ -199,7 +199,7 @@ NODES.forEach(n => { - [ ] **Step 4: Проверить, что счётчик в `showSectionsLegend` уже корректен** -Строки 2208-2211: `nodeIds.length` берётся из `SECTION_NODES.get(sec.id)` — после Step 2 счётчик автоматически учитывает кросс-реф. Правок не требуется. Зафиксировать факт (no-op проверка). +(Локализовать Grep'ом `nodeIds.length` в `showSectionsLegend`): `nodeIds.length` берётся из `SECTION_NODES.get(sec.id)` — после Step 2 счётчик автоматически учитывает кросс-реф. Правок не требуется. Зафиксировать факт (no-op проверка). - [ ] **Step 5: Визуальный smoke (промежуточный)** @@ -222,7 +222,7 @@ git commit -m "feat(map): NODE_SECTION_SECONDARY layer — cross-ref nodes into - [ ] **Step 1: Добавить узел `ag_apidocs` в `NODES`** -В секции агентов (после `ag_rls`, формат-образец `ag_pest` строка 297 — `group: 'agents'`, `ring: 4`) вставить: +В секции агентов (после `ag_rls`, формат-образец `ag_pest` — Grep `id: 'ag_pest'` — `group: 'agents'`, `ring: 4`) вставить: ```js // A3 integration-tooling (17.05.2026) — agent раздела «Программирование — интеграции» @@ -233,7 +233,7 @@ git commit -m "feat(map): NODE_SECTION_SECONDARY layer — cross-ref nodes into - [ ] **Step 2: Добавить узел `mcp_openapi` в `NODES`** -В секции MCP-серверов (после `mcp_semgrep`, формат-образец `mcp_boost` строка 310 — `group: 'mcp'`, `ring: 5`) вставить: +В секции MCP-серверов (после `mcp_semgrep`, формат-образец `mcp_boost` — Grep `id: 'mcp_boost'` — `group: 'mcp'`, `ring: 5`) вставить: ```js // A3 integration-tooling (17.05.2026) — MCP-сервер раздела «Программирование — интеграции» @@ -257,7 +257,7 @@ Run: `Grep` по `automation-graph.html` паттерн `id: 'mcp_semgrep'|id: ' - [ ] **Step 4: Добавить `nd()`-детали в `NODE_DETAILS`** -После D3-блока `nd()` (`tob_skills`/`sec_guidance`, ~строка 725+) добавить (формат-образец `adr_kit` строки 699-706 — 6 аргументов `nd()`: что делает / когда / ограничения / кому подчиняется / кто подчиняется / с кем работает): +После D3-блока `nd()` (`tob_skills`/`sec_guidance`, локализовать Grep'ом `tob_skills`) добавить (формат-образец `adr_kit` — Grep `adr_kit: nd\(` — 6 аргументов `nd()`: что делает / когда / ограничения / кому подчиняется / кто подчиняется / с кем работает): ```js // ── A3 INTEGRATION-TOOLING (17.05.2026) ────────── @@ -265,15 +265,15 @@ Run: `Grep` по `automation-graph.html` паттерн `id: 'mcp_semgrep'|id: ' 'Агент claude-flow — генерирует OpenAPI-спеку REST API по роутам и контроллерам Laravel. Pattern learning. 0 установки — агент доступен в сессии.', 'При фиксации контракта REST API: генерация/обновление OpenAPI-спеки группы эндпоинтов. Результат — docs/api/.', 'Sub-агент claude-flow — узел карты, но без отдельного номера в реестре Tooling Прил. Н (реестр — plugin-grain; 11 agent-узлов карты так же без Tooling-номеров). Не UI → вне фильтров R6.0/R6.1/R14.', - [{ name: 'CLAUDE.md', cond: '§3.3 — упомянут при #41 openapi-mcp' }], + [{ name: 'CLAUDE.md', cond: '§3.3 — упомянут при #47 openapi-mcp' }], [], [{ name: 'MCP: openapi', cond: 'генерирует спеку → openapi-mcp отдаёт её как MCP-ресурс' }] ), mcp_openapi: nd( 'MCP-сервер (npm, stdio) — отдаёт OpenAPI-спеку как MCP-ресурс/тулы; introspection своей и чужих API при интеграционной разработке.', 'При работе с интеграциями (API/вебхуки) — обращение к структуре OpenAPI-спеки из сессии Claude. READ-ONLY introspection.', - 'Правило PSR_v1 R10.1 блок 3 (integration-tooling, off-phase — 7-я подкатегория). stdio-режим, без port-conflict. Не UI → вне фильтров R6.0/R6.1/R14. Tooling §4.16 #41, CLAUDE.md §3.3 #41.', - [{ name: 'PSR_v1', cond: 'R10.1 блок 3: integration-tooling' }, { name: 'Tooling', cond: '§4.16 #41 — реестр' }], + 'Правило PSR_v1 R10.1 блок 3 (integration-tooling, off-phase — 9-я подкатегория). stdio-режим, без port-conflict. Не UI → вне фильтров R6.0/R6.1/R14. Tooling §4.22 #47, CLAUDE.md §3.3 #47.', + [{ name: 'PSR_v1', cond: 'R10.1 блок 3: integration-tooling' }, { name: 'Tooling', cond: '§4.22 #47 — реестр' }], [], [{ name: 'docs/api/', cond: 'источник OpenAPI-спеки' }] ), @@ -281,7 +281,7 @@ Run: `Grep` по `automation-graph.html` паттерн `id: 'mcp_semgrep'|id: ' - [ ] **Step 5: Добавить записи в `NODE_TIMELINE`** -После A6/D3-записей в `NODE_TIMELINE` (формат-образец `skill_creator` строка 1811 — `{ since, changed, uses, usesSrc }`) добавить: +После A6/D3-записей в `NODE_TIMELINE` (формат-образец `skill_creator` — Grep `skill_creator:.*since` — `{ since, changed, uses, usesSrc }`) добавить: ```js // ── A3 INTEGRATION-TOOLING (17.05.2026) ── @@ -291,19 +291,19 @@ Run: `Grep` по `automation-graph.html` паттерн `id: 'mcp_semgrep'|id: ' - [ ] **Step 6: Добавить рёбра в `EDGES`** -После D3-блока рёбер (`E('psr_v1', 'sec_guidance', ...)` и далее, ~строка 514) добавить: +После D3-блока рёбер (локализовать Grep'ом `E('psr_v1', 'sec_guidance'`) добавить: ```js // ── A3 INTEGRATION-TOOLING 17.05.2026 — связи новых узлов ── E('psr_v1', 'mcp_openapi', 'R10.1 блок 3:\nintegration-tooling'), - E('tooling', 'mcp_openapi', '§4.16 #41 — реестр'), + E('tooling', 'mcp_openapi', '§4.22 #47 — реестр'), E('ag_apidocs', 'mcp_openapi', 'спека → MCP-ресурс'), ``` - [ ] **Step 7: Обновить комментарий-счётчик `NODE_SECTION`** -Строка 1924: `// Узел -> раздел. Покрывает все 110 узлов карты.` → `112 узлов`. -Run: `Grep` по `automation-graph.html` паттерн `\b(110|111|112)\b.*узлов` и `рёбер` — найти прочие счётчики/метрики, если есть, инкрементировать (узлы +2, рёбра +3). Если иных счётчиков нет — зафиксировать факт. +(Grep-комментарий `Покрывает все NNN узлов карты` — сейчас 116, ставим 118): `// Узел -> раздел. Покрывает все 116 узлов карты.` → `118 узлов`. +Run: `Grep` по `automation-graph.html` паттерн `\b(116|117|118)\b.*узлов` и `рёбер` — найти прочие счётчики/метрики, если есть, инкрементировать (узлы +2, рёбра +3). Если иных счётчиков нет — зафиксировать факт. - [ ] **Step 8: Commit** @@ -342,25 +342,25 @@ Run (background): `npx -y serve docs -l 8123`. Через Playwright MCP: `brows --- -## Task 6: Tooling Прил. Н — §4.16 + счётчик +## Task 6: Tooling Прил. Н — §4.22 + счётчик **Files:** - Modify: `docs/Tooling_v8_3.md` -- [ ] **Step 1: Прочитать §4.14/§4.15 (D3-записи)** +- [ ] **Step 1: Прочитать §4.21/§4.20 (A4-записи)** -Run: `Read` `docs/Tooling_v8_3.md`, `Grep` паттерн `§4.14|§4.15|§4.13` — зафиксировать структуру/стиль off-phase subsection (#39/#40 audit-security) для зеркалирования. +Run: `Read` `docs/Tooling_v8_3.md`, `Grep` паттерн `§4.21|§4.20|§4.19` — зафиксировать структуру/стиль off-phase subsection (#44/#45/#46 design-tooling) для зеркалирования. -- [ ] **Step 2: Добавить §4.16** +- [ ] **Step 2: Добавить §4.22** -После §4.15 добавить новый подраздел (зеркалируя стиль §4.14/§4.15): +После §4.21 добавить новый подраздел (зеркалируя стиль §4.19/§4.20/§4.21): ```markdown -### §4.16. #41 openapi-mcp-server — off-phase integration-tooling +### §4.22. #47 openapi-mcp-server — off-phase integration-tooling **Пакет:** `` (npm, репозиторий `ivo-toby/mcp-openapi-server`), stdio MCP, server `openapi` в `.mcp.json`, tools `mcp__openapi__*`. -**Категория:** off-phase, **integration-tooling** (7-я off-phase подкатегория — после UI-пула / infrastructure / debug-runtime / orchestration / architecture-tooling / audit-security). Раздел A3 карты «Программирование — интеграции (API, вебхуки)». +**Категория:** off-phase, **integration-tooling** (9-я off-phase подкатегория — после UI-пула / infrastructure / debug-runtime / orchestration / architecture-tooling / audit-security / project-management / design-tooling). Раздел A3 карты «Программирование — интеграции (API, вебхуки)». **Назначение:** отдаёт OpenAPI-спеку как MCP-ресурс/тулы; introspection своей и чужих API при интеграционной разработке. READ-ONLY. **Парный узел карты:** `api-docs` agent (claude-flow) — генератор OpenAPI-спеки; узел карты A3 без отдельного Tooling-номера (sub-агент, реестр — plugin-grain). **Координация:** PSR_v1 R10.1 Блок 3 (MCP-серверы). Не UI → не trigger'ит R6.0/R6.1, вне R14 pipeline. @@ -371,17 +371,17 @@ Run: `Read` `docs/Tooling_v8_3.md`, `Grep` паттерн `§4.14|§4.15|§4.13` - [ ] **Step 3: Обновить счётчик §0** -Run: `Grep` по `docs/Tooling_v8_3.md` паттерн `38|40|формализованных позиций|off-phase` — найти строку-счётчик §0 (после D3 = «40 формализованных позиций: 29 active + 10 off-phase + 1 historic» либо аналог). Инкрементировать: позиций 40→**41**, off-phase 10→**11**. Обновить перечисление off-phase subsections (добавить §4.16) и упоминание подкатегорий (добавить integration-tooling). +Run: `Grep` по `docs/Tooling_v8_3.md` паттерн `46|формализованных позиций|off-phase` — найти строку-счётчик §0 (после A4 = «46 формализованных позиций: 29 active + 16 off-phase + 1 historic» либо аналог). Инкрементировать: позиций 46→**47**, off-phase 16→**17**. Обновить перечисление off-phase subsections (добавить §4.22) и упоминание подкатегорий (добавить integration-tooling). - [ ] **Step 4: Bump версии Прил. Н** -Шапка/колонтитул Прил. Н: v2.4 → **v2.5**. Добавить changelog-строку «v2.5 от 17.05.2026 — A3 integration-tooling: §4.16 #41 openapi-mcp-server, 7-я off-phase подкатегория integration-tooling; §0 счётчик 40→41. Связано: PSR_v1 v3.5, Pravila v1.19, CLAUDE.md v2.5.» +Шапка/колонтитул Прил. Н: v2.8 → **v2.9**. Добавить changelog-строку «v2.9 от 17.05.2026 — A3 integration-tooling: §4.22 #47 openapi-mcp-server, 9-я off-phase подкатегория integration-tooling; §0 счётчик 46→47. Связано: PSR_v1 v3.9, Pravila v1.23, CLAUDE.md v2.9.» - [ ] **Step 5: Commit** ```bash git add docs/Tooling_v8_3.md -git commit -m "docs(a3): Tooling Прил. Н v2.5 — register #41 openapi-mcp-server (§4.16)" +git commit -m "docs(a3): Tooling Прил. Н v2.9 — register #47 openapi-mcp-server (§4.22)" ``` cspell-блок → добавить термины в `cspell-words.txt`, повторить. @@ -403,20 +403,20 @@ Run: `Grep` `docs/Plugin_stack_rules_v1.md` паттерн `R10.1|Блок 3|sen В таблицу/список Блока 3 R10.1 добавить строку (зеркалируя строки sentry/redis): ```markdown -| openapi-mcp-server | integration-tooling | off-phase. stdio MCP, server `openapi` в `.mcp.json`. Раздел A3 карты. Не trigger'ит R6.0/R6.1, вне R14 pipeline. Tooling §4.16 #41. | +| openapi-mcp-server | integration-tooling | off-phase. stdio MCP, server `openapi` в `.mcp.json`. Раздел A3 карты. Не trigger'ит R6.0/R6.1, вне R14 pipeline. Tooling §4.22 #47. | ``` Точный формат строки — по факту таблицы (колонки сверить в Step 1). - [ ] **Step 3: Bump версии** -Шапка PSR_v1: v3.4 → **v3.5**. Changelog-строка «v3.5 от 17.05.2026 — R10.1 Блок 3 +1 строка openapi-mcp-server (категория integration-tooling, off-phase, раздел A3). Не UI → вне R6/R14. Связано: Tooling v2.5, Pravila v1.19, CLAUDE.md v2.5.» Обновить cross-refs шапки, если они перечисляют версии родственных файлов. +Шапка PSR_v1: v3.8 → **v3.9**. Changelog-строка «v3.9 от 17.05.2026 — R10.1 Блок 3 +1 строка openapi-mcp-server (категория integration-tooling, off-phase, раздел A3). Не UI → вне R6/R14. Связано: Tooling v2.9, Pravila v1.23, CLAUDE.md v2.9.» Обновить cross-refs шапки, если они перечисляют версии родственных файлов. - [ ] **Step 4: Commit** ```bash git add docs/Plugin_stack_rules_v1.md -git commit -m "docs(a3): PSR_v1 v3.5 — R10.1 Блок 3 +openapi-mcp (integration-tooling)" +git commit -m "docs(a3): PSR_v1 v3.9 — R10.1 Блок 3 +openapi-mcp (integration-tooling)" ``` --- @@ -436,18 +436,18 @@ Run: `Grep` `docs/Pravila_raboty_Claude_v1_1.md` паттерн `§13.2|Off-phas После абзаца «Off-phase audit-security» добавить: ```markdown -**Off-phase integration-tooling.** Инструменты раздела A3 карты «Программирование — интеграции (API, вебхуки)» — #41 `openapi-mcp-server` (Tooling §4.16; стек §4.x — введён A3-интеграцией 17.05.2026) и `api-docs` agent (claude-flow, узел карты A3 без отдельного Tooling-номера). Off-phase, не UI → вне R6/R14 PSR_v1. READ-ONLY introspection. Регулируются PSR_v1 R10.1 Блок 3. +**Off-phase integration-tooling.** Инструменты раздела A3 карты «Программирование — интеграции (API, вебхуки)» — #47 `openapi-mcp-server` (Tooling §4.22; введён A3-интеграцией 17.05.2026) и `api-docs` agent (claude-flow, узел карты A3 без отдельного Tooling-номера). Off-phase, не UI → вне R6/R14 PSR_v1. READ-ONLY introspection. Регулируются PSR_v1 R10.1 Блок 3. ``` - [ ] **Step 3: Bump версии + счётчик правил** -Шапка Pravila: v1.18 → **v1.19**. Если §13.2 (или §11.5) содержит счётчик подкатегорий/правил — свериться `Grep`'ом и инкрементировать. Changelog-строка «v1.19 от 17.05.2026 — §13.2 +абзац Off-phase integration-tooling (#41 openapi-mcp-server / api-docs agent — раздел A3 карты). Связано: Tooling v2.5, PSR_v1 v3.5, CLAUDE.md v2.5.» +Шапка Pravila: v1.22 → **v1.23**. Если §13.2 (или §11.5) содержит счётчик подкатегорий/правил — свериться `Grep`'ом и инкрементировать. Changelog-строка «v1.23 от 17.05.2026 — §13.2 +абзац Off-phase integration-tooling (#47 openapi-mcp-server / api-docs agent — раздел A3 карты). Связано: Tooling v2.9, PSR_v1 v3.9, CLAUDE.md v2.9.» - [ ] **Step 4: Commit** ```bash git add docs/Pravila_raboty_Claude_v1_1.md -git commit -m "docs(a3): Pravila v1.19 — §13.2 +Off-phase integration-tooling" +git commit -m "docs(a3): Pravila v1.23 — §13.2 +Off-phase integration-tooling" ``` --- @@ -462,14 +462,14 @@ git commit -m "docs(a3): Pravila v1.19 — §13.2 +Off-phase integration-tooling Invoke `/claude-md-management:claude-md-improver` со списком targeted-правок: -- §3 title «Карта 40 инструментов» → «41»; -- §3.3 +строка #41 openapi-mcp-server (integration-tooling, off-phase; Tooling §4.16) + упоминание `api-docs` agent как парного узла карты A3 без Tooling-номера; -- §1 priority-chain row 2b «реестр 40» → «41»; -- §3.3 footer count 40→41 + integration-tooling как 7-я off-phase подкатегория; -- §3.4 нумерационная сноска — добавить #41 в перечисление off-phase, обновить арифметику; -- §0 cross-refs: Pravila v1.18→**v1.19**, PSR_v1 v3.4→**v3.5**, Tooling v2.4→**v2.5**; -- §6 +абзац A3 integration-tooling (по образцу абзацев A6/D3); -- шапка v2.4 → **v2.5** + §9 changelog-запись. +- §3 title «Карта 46 инструментов» → «47»; +- §3.3 +строка #47 openapi-mcp-server (integration-tooling, off-phase; Tooling §4.22) + упоминание `api-docs` agent как парного узла карты A3 без Tooling-номера; +- §1 priority-chain row 2b «реестр 46» → «47»; +- §3.3 footer count 46→47 + integration-tooling как 9-я off-phase подкатегория; +- §3.4 нумерационная сноска — добавить #47 в перечисление off-phase, обновить арифметику; +- §0 cross-refs: Pravila v1.22→**v1.23**, PSR_v1 v3.8→**v3.9**, Tooling v2.8→**v2.9**; +- §6 +абзац A3 integration-tooling (по образцу абзацев A6/D3/A4); +- шапка v2.8 → **v2.9** + §9 changelog-запись. - [ ] **Step 2: Проверить синхронность (§5 п.7)** @@ -481,7 +481,7 @@ Invoke `/claude-md-management:claude-md-improver` со списком targeted- ```bash git add CLAUDE.md -git commit -m "docs(a3): CLAUDE.md v2.5 — register #41 openapi-mcp-server (A3 integration-tooling)" +git commit -m "docs(a3): CLAUDE.md v2.9 — register #47 openapi-mcp-server (A3 integration-tooling)" ``` --- @@ -498,12 +498,12 @@ Invoke skill `regression` с аргументом `quick` (lint/format/type-chec - [ ] **Step 2: Финальная сверка счётчика (риск нумерации)** -Run: `git log --oneline origin/main..HEAD` + `Grep` Tooling §0 — подтвердить, что #41/§4.16 не пересёкся с A11/C9, если те смёрджились в main. При коллизии — перенумеровать openapi-mcp на следующий свободный номер во всех 4 файлах + карте, повторить затронутые коммиты. +Run: `git log --oneline origin/main..HEAD` + `Grep` Tooling §0 — подтвердить, что #47/§4.22 не пересёкся с A11, если та смёрджилась в main (C9/deptrac/A4 уже влиты). При коллизии — перенумеровать openapi-mcp на следующий свободный номер во всех 4 файлах + карте, повторить затронутые коммиты. - [ ] **Step 3: Обновить memory** -- `memory/project_automation_map.md` — метрики 110→112 узлов / +3 ребра, раздел A3 наполнен (7 узлов: 2 новых + 5 кросс-реф), `NODE_SECTION_SECONDARY` слой. -- `memory/reference_archive.md` — версии Tooling v2.5 / PSR_v1 v3.5 / Pravila v1.19 / CLAUDE.md v2.5. +- `memory/project_automation_map.md` — метрики 116→118 узлов / +3 ребра, раздел A3 наполнен (7 узлов: 2 новых + 5 кросс-реф), `NODE_SECTION_SECONDARY` слой. +- `memory/reference_archive.md` — версии Tooling v2.9 / PSR_v1 v3.9 / Pravila v1.23 / CLAUDE.md v2.9. - `MEMORY.md` — обновить строки-указатели при необходимости. - [ ] **Step 4: Commit memory** @@ -533,4 +533,4 @@ git commit -m "docs(a3): memory sync — A3 integration-tooling closed" **Placeholder scan:** `` — намеренный плейсхолдер, разрешается в Task 2 Step 1 (`npm view`) и подставляется в Task 2 Step 3 / Task 6 Step 2; «[подставить из Task 2 Step 4]» — статус установки, разрешается в рамках Task 2. Иных плейсхолдеров нет. -**Type consistency:** имена узлов `ag_apidocs` / `mcp_openapi` — единообразны во всех задачах (NODES, NODE_SECTION, NODE_DETAILS, NODE_TIMELINE, EDGES, NODE_SECTION_SECONDARY не содержит их — они первичны в A3). Объект `NODE_SECTION_SECONDARY` — одно имя везде. Версии: Tooling v2.5 / PSR_v1 v3.5 / Pravila v1.19 / CLAUDE.md v2.5 — консистентны в Tasks 6-9 и §0 cross-refs. +**Type consistency:** имена узлов `ag_apidocs` / `mcp_openapi` — единообразны во всех задачах (NODES, NODE_SECTION, NODE_DETAILS, NODE_TIMELINE, EDGES, NODE_SECTION_SECONDARY не содержит их — они первичны в A3). Объект `NODE_SECTION_SECONDARY` — одно имя везде. Версии: Tooling v2.9 / PSR_v1 v3.9 / Pravila v1.23 / CLAUDE.md v2.9 — консистентны в Tasks 6-9 и §0 cross-refs. diff --git a/docs/superpowers/specs/2026-05-17-a3-integration-tooling-design.md b/docs/superpowers/specs/2026-05-17-a3-integration-tooling-design.md index 0a1bbe55..6bd120c3 100644 --- a/docs/superpowers/specs/2026-05-17-a3-integration-tooling-design.md +++ b/docs/superpowers/specs/2026-05-17-a3-integration-tooling-design.md @@ -3,7 +3,7 @@ **Дата:** 2026-05-17 **Раздел карты:** A3 «Программирование — интеграции (API, вебхуки)» **Параллель:** A6 architecture-tooling (17.05.2026), D3 audit-security (17.05.2026) -**Ветка:** `feat/a3-integration-tooling` (форк от `7c12b74` — D3-tip, CLAUDE.md v2.4) +**Ветка:** `feat/a3-integration-tooling` (rebased на origin/main `1313d89`, CLAUDE.md v2.8) ## 1. Проблема @@ -13,6 +13,7 @@ (HMAC + per-token rate-limit), ~5 внешних API (Unisender Go / Yandex Cloud / Yandex 360 / JivoSite / Sentry) — но инструментами разделов A1/A5/A7/A8/E7. Ни один инструмент не классифицирован как A3. Состояние — как у A6 до 17.05. +(строки 1868-1911 в оригинальном форке — после ребейза локализовать Grep'ом по `'A3'` в `NODE_SECTION`). ## 2. Цель и scope @@ -33,7 +34,7 @@ Docker/JVM+Mongo, несовместим с native-Windows-no-Docker стеко | Узел (id карты) | Что | Установка | Tooling-реестр | |---|---|---|---| | **api-docs agent** (`ag_apidocs`, claude-flow) | генерация OpenAPI-спеки REST API, pattern learning | 0 — агент уже доступен в сессии | **нет номера** — claude-flow sub-агент; реестр Прил. Н — plugin-grain (как 11 уже существующих agent-узлов карты, ни один не имеет Tooling-номера) | -| **openapi-mcp-server** (`mcp_openapi`, npm, stdio MCP) | отдаёт OpenAPI-спеку как MCP-ресурс/тулы; introspection своей и чужих API | `npm i` + запись в `.mcp.json` | **#41**, Tooling §4.16 | +| **openapi-mcp-server** (`mcp_openapi`, npm, stdio MCP) | отдаёт OpenAPI-спеку как MCP-ресурс/тулы; introspection своей и чужих API | `npm i` + запись в `.mcp.json` | **#47**, Tooling §4.22 | ### 3.2. Кросс-реф вторичным тегом A3 (5 — первично остаются в своих разделах) @@ -70,16 +71,16 @@ Docker/JVM+Mongo, несовместим с native-Windows-no-Docker стеко - **`NODE_TIMELINE`:** `ag_apidocs` / `mcp_openapi` — `since: '17.05.2026'`. - **Рёбра (~2-3):** новые узлы → governing-правила, напр. `E('psr_v1', 'mcp_openapi', 'R10.1 блок 3:\nintegration-tooling')`. -- **Счётчики:** 106→108 узлов, 109→~112 рёбер. Новых конфликтов не ожидается. +- **Счётчики:** 116→118 узлов, +3 ребра. Новых конфликтов не ожидается. ## 5. Нормативка (4 файла — как A6/D3) | Файл | Правка | Версия | |---|---|---| -| Tooling Прил. Н | §4.16 (новый) — #41 openapi-mcp-server; §0 счётчик 40→41; 7-я off-phase подкатегория **integration-tooling** | v2.4→v2.5 | -| PSR_v1 | R10.1 Блок 3 (MCP-серверы) +1 строка openapi-mcp; integration-tooling — не UI → вне R6/R14 | v3.4→v3.5 | -| Pravila | §13.2 +абзац «Off-phase integration-tooling» | v1.18→v1.19 | -| CLAUDE.md | §3 title 40→41; §3.3 +строка #41 (+упоминание api-docs agent); §1 row 2b 40→41; §3.3 footer; §0 cross-refs; §6 +абзац A3 | v2.4→v2.5 | +| Tooling Прил. Н | §4.22 (новый) — #47 openapi-mcp-server; §0 счётчик 46→47; 9-я off-phase подкатегория **integration-tooling** | v2.8→v2.9 | +| PSR_v1 | R10.1 Блок 3 (MCP-серверы) +1 строка openapi-mcp; integration-tooling — не UI → вне R6/R14 | v3.8→v3.9 | +| Pravila | §13.2 +абзац «Off-phase integration-tooling» | v1.22→v1.23 | +| CLAUDE.md | §3 title 46→47; §3.3 +строка #47 (+упоминание api-docs agent); §1 row 2b 46→47; §3.3 footer; §0 cross-refs; §6 +абзац A3 | v2.8→v2.9 | CLAUDE.md — через `/claude-md-management:claude-md-improver` (§5 п.10). Кросс-реф 5 существующих инструментов — **только map-модель**; в нормативный реестр не @@ -94,24 +95,17 @@ CLAUDE.md — через `/claude-md-management:claude-md-improver` (§5 п.10). api-docs agent на одну группу эндпоинтов (deals API) → стартовый OpenAPI-скелет как proof. Полную спеку не генерируем. - Регрессия `quick` (lint/format/type-check) перед коммитом нормативки. -- Визуальный smoke карты: открыть `automation-graph.html` — 108 узлов, +- Визуальный smoke карты: открыть `automation-graph.html` — 118 узлов, 0 JS-ошибок, панель «Разделы» показывает A3 с 7 узлами. - `git` без bypass хуков. -## 7. Риск нумерации (кросс-веточный) +## 7. Нумерация (риск реализовался — закрыт) -D3 (committed, unpushed) занял #39/#40 + Tooling §4.14/§4.15. A3 строится поверх -D3-tip → #41/§4.16. **Параллельно в работе:** ветка `feat/a11-ml-ai-tooling` -(A11 ML/AI-tooling) и черновик плана C9 -(`docs/superpowers/plans/2026-05-17-c9-project-management-tooling-integration.md`) -— обе тоже могут регистрировать инструменты. Если A11/C9 смёрджатся в main -раньше A3 — перенумеровать openapi-mcp при интеграции (#41 → следующий -свободный). Митигация: финальная сверка счётчика Tooling §0 перед коммитом -нормативки A3. +Ветка `feat/a3-integration-tooling` исходно форкнулась от D3-эры (`7c12b74`). За это время в origin/main влиты C9 (#41 CCPM / #42 product-management), deptrac (#43), A4 (#44/#45/#46). Риск из исходной редакции §7 материализовался. Закрыт ребейзом feat/a3 на актуальный origin/main `1313d89`: openapi-mcp-server подтверждён как **#47**, Tooling **§4.22**, integration-tooling — **9-я** off-phase подкатегория. Остаточный риск: если ещё одна интеграция (напр. A11) смёрджится в main раньше A3 — финально сверить счётчик Tooling §0 перед коммитом нормативки (план Task 10 Step 2). ## 8. Ветка и артефакты -- Ветка `feat/a3-integration-tooling` от `7c12b74` (D3-tip). +- Ветка `feat/a3-integration-tooling` rebased на origin/main `1313d89`. - Spec: этот файл. - План: `docs/superpowers/plans/2026-05-17-a3-integration-tooling-integration.md`. - Merge: `git push origin feat/a3-integration-tooling:main` после D3 (ветка A3