diff --git a/docs/automation-graph.html b/docs/automation-graph.html index 1b2a259c..4f81da1a 100644 --- a/docs/automation-graph.html +++ b/docs/automation-graph.html @@ -309,6 +309,8 @@ const NODES = [ { id: 'ag_pvalid', label: 'plugin-dev:\nplugin-validator',group: 'agents', size: 16, ring: 4, ...pos(4, 260) }, { id: 'ag_skreview', label: 'plugin-dev:\nskill-reviewer', group: 'agents', size: 16, ring: 4, ...pos(4, 275) }, { id: 'ag_rls', label: 'rls-reviewer', group: 'agents', size: 22, ring: 4, ...pos(4, 315) }, + // A3 integration-tooling (17.05.2026) — agent раздела «Программирование — интеграции» + { id: 'ag_apidocs', label: 'api-docs (agent)', group: 'agents', size: 18, ring: 4, ...pos(4, 175) }, // ── MCP-СЕРВЕРЫ (9) — E (UI) + W (data) ─────── { id: 'mcp_21st', label: 'MCP: 21st.dev Magic', group: 'mcp', size: 20, ring: 5, ...pos(5, 130) }, @@ -321,6 +323,8 @@ const NODES = [ { id: 'mcp_redis', label: 'MCP: redis', group: 'mcp', size: 22, ring: 5, ...pos(5, 310) }, { id: 'mcp_sentry', label: 'MCP: sentry', group: 'mcp', size: 22, ring: 5, ...pos(5, 330) }, { id: 'mcp_semgrep', label: 'MCP: semgrep', group: 'mcp', size: 20, ring: 5, ...pos(5, 350) }, + // A3 integration-tooling (17.05.2026) — MCP-сервер раздела «Программирование — интеграции» + { id: 'mcp_openapi', label: 'MCP: openapi', group: 'mcp', size: 20, ring: 5, ...pos(5, 5) }, // ── LEFTHOOK JOBS (10) — S+W (infra/data) ───── { id: 'lh_mdlint', label: 'lefthook:\nmarkdownlint', group: 'lefthook', size: 18, ring: 5, ...pos(5, 185) }, @@ -533,6 +537,11 @@ const EDGES = [ E('sk_audit_portal', 'sk_regression', 'использует\nна фазе тестов'), CONFLICT('tob_skills', 'mcp_semgrep', 'TB1: граница разграничена — Semgrep = inline SAST, Trail of Bits = глубокие on-demand аудит-кампании. Параллельное использование разрешено при разных сценариях.', 'GREEN'), + // ── A3 INTEGRATION-TOOLING 17.05.2026 — связи новых узлов ── + E('psr_v1', 'mcp_openapi', 'R10.1 блок 3:\nintegration-tooling'), + E('tooling', 'mcp_openapi', '§4.22 #47 — реестр'), + E('ag_apidocs', 'mcp_openapi', 'спека → MCP-ресурс'), + // ══════════════════════════════════════════════════ // КОНФЛИКТЫ — 3-color classification (iter2 §4) // 🔴 не закрыт правилом / ⚫ возник на практике / 🟢 закрыт правилом @@ -824,6 +833,24 @@ const NODE_DETAILS = { [{ name: 'скил security-review', cond: 'пара в D3 audit-security' }] ), + // ── A3 INTEGRATION-TOOLING (17.05.2026) ────────── + ag_apidocs: nd( + 'Агент 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 — упомянут при #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 — 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-спеки' }] + ), + // ── СКИЛЫ SUPERPOWERS ──────────────────────────── sk_brainstorm: nd( 'Продумывает задачу вместе с заказчиком, формулирует варианты A/B/C и согласует дизайн до написания кода.', @@ -1917,6 +1944,10 @@ const NODE_META = { mcp_figma: { since: '17.05.2026', changed: '—', uses: null, usesSrc: '—' }, mcp_icons: { since: '17.05.2026', changed: '—', uses: null, usesSrc: 'MCP' }, design_plugin:{ since: '17.05.2026', changed: '—', uses: null, usesSrc: 'плагин' }, + + // ── A3 INTEGRATION-TOOLING (17.05.2026) ── + ag_apidocs: { since: '17.05.2026', changed: '—', uses: null, usesSrc: '—' }, + mcp_openapi: { since: '17.05.2026', changed: '—', uses: null, usesSrc: '—' }, }; // Явные парные дубли (Фича 3) — попадают в кнопку «⧉ Дубли». @@ -1999,7 +2030,7 @@ const SECTIONS = [ { id: 'E7', bucket: 'E', label: 'Исследования' }, { id: 'E8', bucket: 'E', label: 'Самообучение Claude' }, ]; -// Узел -> раздел. Покрывает все 116 узлов карты. +// Узел -> раздел. Покрывает все 118 узлов карты. const NODE_SECTION = { // правила (4) pravila: 'E1', claude_md: 'E1', psr_v1: 'E1', tooling: 'E1', @@ -2049,6 +2080,8 @@ const NODE_SECTION = { ccpm: 'C9', product_mgmt: 'C9', // A4 design-tooling 17.05.2026 — раздел «Дизайн (UI/UX, графика, бренд)» расширен (3→6 узлов) mcp_figma: 'A4', mcp_icons: 'A4', design_plugin: 'A4', + // A3 integration-tooling 17.05.2026 — раздел «Программирование — интеграции» наполнен + ag_apidocs: 'A3', mcp_openapi: 'A3', }; // Вторичная классификация: узел первично в NODE_SECTION, дополнительно — в этих // разделах (кросс-реф). Введено A3-интеграцией 17.05.2026 — раздел A3 наполняется