From a146fc146793b923077d5baabacf0ecad23ad5c6 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sun, 26 Jul 2026 12:50:31 +0300 Subject: [PATCH] =?UTF-8?q?fix(xdto-edit):=20=D0=B4=D0=B8=D0=B0=D0=B3?= =?UTF-8?q?=D0=BD=D0=BE=D1=81=D1=82=D0=B8=D0=BA=D0=B0=20=D0=B1=D0=B5=D0=B7?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B8=D0=B2=D1=8F=D0=B7=D0=BA=D0=B8=20=D0=BA=20?= =?UTF-8?q?=D1=85=D0=B0=D1=80=D0=BD=D0=B5=D1=81=D1=81=D1=83=20=D0=B8=20?= =?UTF-8?q?=D0=BA=20=C2=AB=D0=B2=D1=81=D0=B5=D0=BC=D1=83=20=D0=BA=D0=BE?= =?UTF-8?q?=D0=BC=D0=BF=D0=BB=D0=B5=D0=BA=D1=82=D1=83=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Сообщение называло каталог .claude/skills, хотя проект портируется в .cursor/skills, .codex/skills, .gemini/skills и другие — путь теперь вычисляется от расположения скрипта и потому верен на любой порт-ветке. И предлагало копировать весь набор навыков, хотя нужны ровно два соседа: xdto-decompile и xdto-compile. Теперь называются только недостающие. Co-Authored-By: Claude Opus 5 (1M context) --- .claude/skills/xdto-edit/scripts/xdto-edit.ps1 | 7 ++++--- .claude/skills/xdto-edit/scripts/xdto-edit.py | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.claude/skills/xdto-edit/scripts/xdto-edit.ps1 b/.claude/skills/xdto-edit/scripts/xdto-edit.ps1 index a1438723..0c2812d4 100644 --- a/.claude/skills/xdto-edit/scripts/xdto-edit.ps1 +++ b/.claude/skills/xdto-edit/scripts/xdto-edit.ps1 @@ -141,10 +141,11 @@ function Assert-SiblingsPresent([string]$operation) { $missing = @() foreach ($k in $needed.Keys) { if (-not (Test-Path $needed[$k])) { $missing += $k } } if ($missing.Count -gt 0) { + $skillsRoot = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent throw ("Навык неработоспособен: рядом нет " + ($missing -join ", ") + ".`n" + - "Операция `"$operation`" выполняется через них, поэтому обойтись без них нельзя.`n" + - "Навыки устанавливаются комплектом — скопируйте каталог .claude/skills целиком, " + - "а не отдельные подкаталоги.") + "Операция `"$operation`" выполняется через " + + $(if ($missing.Count -gt 1) { "них" } else { "него" }) + ".`n" + + "Ожидаются в каталоге навыков: $skillsRoot") } } diff --git a/.claude/skills/xdto-edit/scripts/xdto-edit.py b/.claude/skills/xdto-edit/scripts/xdto-edit.py index 0057ae03..fd325114 100644 --- a/.claude/skills/xdto-edit/scripts/xdto-edit.py +++ b/.claude/skills/xdto-edit/scripts/xdto-edit.py @@ -166,9 +166,9 @@ def assert_siblings_present(operation): missing = [k for k, v in needed.items() if not os.path.exists(v)] if missing: die("Навык неработоспособен: рядом нет " + ", ".join(missing) + ".\n" - + f'Операция "{operation}" выполняется через них, поэтому обойтись без них нельзя.\n' - + "Навыки устанавливаются комплектом — скопируйте каталог .claude/skills целиком, " - "а не отдельные подкаталоги.") + + f'Операция "{operation}" выполняется через ' + + ("них" if len(missing) > 1 else "него") + ".\n" + + "Ожидаются в каталоге навыков: " + SKILLS) def invoke_sibling(script, argv, what):