From f14b579429705c3e0bd57aa219f2431df0eeca45 Mon Sep 17 00:00:00 2001 From: vitya Date: Tue, 12 May 2026 19:57:42 +0300 Subject: [PATCH] =?UTF-8?q?fix(skills):=20using-synology-ops=200.1.0?= =?UTF-8?q?=E2=86=920.1.1=20=E2=80=94=20extend=20skip-rule=20with=20non-NA?= =?UTF-8?q?S=20hosts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Behavioral fire-test of trigger phrases (10 parallel general-purpose subagents, each phrase as isolated user message, META: skills_invoked= parsed) revealed one false-positive: «restart-loop in books-pipeline» fired the skill despite books-pipeline not being a NAS-hosted container — static-pass prediction confirmed (implicit NAS-context discriminator, LLM keyed on `restart-loop` without host check). Tuning: extended skip-rule with non-NAS hosts examples (`books-pipeline`, `vps-*` etc. — only the 6 listed above are NAS-hosted). Description 941 chars / 1024 limit. PATCH bump (fix only, no new triggers). Retest of NEG#3 → PASS (subagent quoted new skip-rule). Final 10/10. Closes [using-synology-ops-test-trigger]; unblocks [using-synology-ops-review] (ready, baseline tasks all 🟢, but body still <пусто> stub — separate debt). dist-hermes/mcp/using-synology-ops/SKILL.md regenerated via build-hermes.py. Co-Authored-By: Claude Opus 4.7 (1M context) --- .tasks/STATUS.md | 31 +++++++-------------- dist-hermes/mcp/using-synology-ops/SKILL.md | 4 +-- skills/using-synology-ops/SKILL.md | 4 +-- 3 files changed, 14 insertions(+), 25 deletions(-) diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index 1bb11c6..adcd81b 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1,5 +1,5 @@ # Task Board -_Updated: 2026-05-12 (using-synology-ops-test-trigger 🟡 paused — static pass done, awaits fresh-session behavioral test)_ +_Updated: 2026-05-12 (using-synology-ops-test-trigger 🟢 done — 10/10 after PATCH 0.1.0→0.1.1)_ + --- -## 🟢 [using-synology-ops-review] — Skill-review checkpoint для using-synology-ops (промоушен 2026-05-12). +## ⚪ [using-synology-ops-review] — Skill-review checkpoint для using-synology-ops (промоушен 2026-05-12). **Источник дизайна:** .workshop/.archive/2026-05-12-using-synology-ops-skill.md (process trace дискуссии Q1–Q6) + .wiki/concepts/synology-ops-mcp-design.md в shared projects-wiki (canonical design самого MCP-сервера). **Импл-таски:** using-synology-ops-install, using-synology-ops-hermes-mapping, using-synology-ops-test-trigger. @@ -862,22 +863,10 @@ Findings — обычные follow-up tasks (`using-synology-ops--fix` ил **NB по body:** на момент создания таски body SKILL.md — пустой каркас (When to use / Inputs / Steps / Failure modes / Side effects / What NOT to do все пустые). Второй проход «доведём using-synology-ops» дописывает их глазами из archive + concepts/synology-ops-mcp-design.md. Если этот проход не сделан до review — close-note: "skill каркас, body пустой, перенесите review", это не findings. -**Status:** done -**Where I stopped:** Findings: #1 HIGH — body полностью пустой (нет When to use / Inputs / Steps / Failure modes / Side effects / What NOT to do). Created follow-up `using-synology-ops-body-fill`. #2 MEDIUM — description не покрывает все триггер-фразы (нет «медленно грузится», «не видит соседа», «что с контейнером X»). #3 LOW — нет ссылок на прецеденты (using-interns / using-projects-meta). -**Next action:** (none — kept until merged) -**Blocker:** impl-tasks: using-synology-ops-install, using-synology-ops-hermes-mapping, using-synology-ops-test-trigger +**Status:** ready +**Where I stopped:** (not started — baseline-таски все 🟢 на 2026-05-12, version теперь 0.1.1, body всё ещё <пусто> stub) +**Next action:** Ревьюер: прогнать поведенческий smoke-test в чистой main-сессии (subagent fire-test уже сделан имплементером — см. close-note test-trigger; нужен gold-standard прогон). Body пустой → по NB-правилу: "skill каркас, body пустой, перенесите review" или закрыть с findings про body-gap. Findings → follow-up tasks через `tasks_create`. **Branch:** n/a - - ---- - -## ⚪ [using-synology-ops-body-fill] — Заполнить пустой body SKILL.md для using-synology-ops (When to use / Inputs / Steps / Failure modes / Side effects / What NOT to do) по материалам .workshop/.archive/2026-05-12-using-synology-ops-skill.md (Q1-Q6 resolution) и .wiki/concepts/synology-ops-mcp-design.md. - -**Status:** ready -**Where I stopped:** (not started) -**Next action:** Прочитать archive trace Q1-Q6 + design doc, заполнить все секции body по канону (см. using-interns / using-projects-meta как прецеденты trigger-and-guidance skills). -**Branch:** n/a - --- diff --git a/dist-hermes/mcp/using-synology-ops/SKILL.md b/dist-hermes/mcp/using-synology-ops/SKILL.md index c3f9bc7..4d8c0c9 100644 --- a/dist-hermes/mcp/using-synology-ops/SKILL.md +++ b/dist-hermes/mcp/using-synology-ops/SKILL.md @@ -1,7 +1,7 @@ --- name: using-synology-ops -version: 0.1.0 -description: Use when diagnosing docker containers on the Synology NAS — the `synology-ops` HTTP MCP server (https://opsmcp.kzntsv.site/mcp) exposes 4 read-only tools — `ops.docker.ps`, `ops.docker.logs`, `ops.docker.inspect`, `ops.docker.stats` — all routed through tecnativa `synology-docker-proxy-ro` with `POST=0` (write-ops return 403). Triggers on container names (`modulair-rag`, `modulair-pipeline`, `lightrag-modulair`, `tier1-converter`, `modulair-mcp`, `synology-ops-mcp`), on NAS-domain words ("на NAS", "Synology", "синолоджи", "Portainer-стек", "ops-mcp", "опс мсп", "opsmcp.kzntsv.site"), or on incident phrases ("падает", "restart-loop", "не стартует", "unhealthy", "посмотри логи") when NAS-context. Read-only by design — no per-session grant needed. Skip for non-incident container mentions, explicit "open Portainer GUI" requests, and write-operations (those go to Portainer manually). +version: 0.1.1 +description: Use when diagnosing docker containers on the Synology NAS — the `synology-ops` HTTP MCP server (https://opsmcp.kzntsv.site/mcp) exposes 4 read-only tools — `ops.docker.ps`, `ops.docker.logs`, `ops.docker.inspect`, `ops.docker.stats` — all routed through tecnativa `synology-docker-proxy-ro` with `POST=0` (write-ops return 403). Triggers on container names (`modulair-rag`, `modulair-pipeline`, `lightrag-modulair`, `tier1-converter`, `modulair-mcp`, `synology-ops-mcp`), on NAS-domain words ("на NAS", "Synology", "синолоджи", "Portainer-стек", "ops-mcp", "опс мсп", "opsmcp.kzntsv.site"), or on incident phrases ("падает", "restart-loop", "не стартует", "unhealthy", "посмотри логи") when NAS-context. Read-only by design — no per-session grant needed. Skip for non-incident mentions, "open Portainer GUI" requests, write-ops, and incident phrases on non-NAS hosts (`books-pipeline`, `vps-*` etc. — only the 6 listed above are NAS-hosted). --- # using-synology-ops diff --git a/skills/using-synology-ops/SKILL.md b/skills/using-synology-ops/SKILL.md index c3f9bc7..4d8c0c9 100644 --- a/skills/using-synology-ops/SKILL.md +++ b/skills/using-synology-ops/SKILL.md @@ -1,7 +1,7 @@ --- name: using-synology-ops -version: 0.1.0 -description: Use when diagnosing docker containers on the Synology NAS — the `synology-ops` HTTP MCP server (https://opsmcp.kzntsv.site/mcp) exposes 4 read-only tools — `ops.docker.ps`, `ops.docker.logs`, `ops.docker.inspect`, `ops.docker.stats` — all routed through tecnativa `synology-docker-proxy-ro` with `POST=0` (write-ops return 403). Triggers on container names (`modulair-rag`, `modulair-pipeline`, `lightrag-modulair`, `tier1-converter`, `modulair-mcp`, `synology-ops-mcp`), on NAS-domain words ("на NAS", "Synology", "синолоджи", "Portainer-стек", "ops-mcp", "опс мсп", "opsmcp.kzntsv.site"), or on incident phrases ("падает", "restart-loop", "не стартует", "unhealthy", "посмотри логи") when NAS-context. Read-only by design — no per-session grant needed. Skip for non-incident container mentions, explicit "open Portainer GUI" requests, and write-operations (those go to Portainer manually). +version: 0.1.1 +description: Use when diagnosing docker containers on the Synology NAS — the `synology-ops` HTTP MCP server (https://opsmcp.kzntsv.site/mcp) exposes 4 read-only tools — `ops.docker.ps`, `ops.docker.logs`, `ops.docker.inspect`, `ops.docker.stats` — all routed through tecnativa `synology-docker-proxy-ro` with `POST=0` (write-ops return 403). Triggers on container names (`modulair-rag`, `modulair-pipeline`, `lightrag-modulair`, `tier1-converter`, `modulair-mcp`, `synology-ops-mcp`), on NAS-domain words ("на NAS", "Synology", "синолоджи", "Portainer-стек", "ops-mcp", "опс мсп", "opsmcp.kzntsv.site"), or on incident phrases ("падает", "restart-loop", "не стартует", "unhealthy", "посмотри логи") when NAS-context. Read-only by design — no per-session grant needed. Skip for non-incident mentions, "open Portainer GUI" requests, write-ops, and incident phrases on non-NAS hosts (`books-pipeline`, `vps-*` etc. — only the 6 listed above are NAS-hosted). --- # using-synology-ops