From 1f8d611a00c5844b13561e66001bc4294dbe28a3 Mon Sep 17 00:00:00 2001 From: Nick Shirokov Date: Sat, 18 Jul 2026 22:00:18 +0300 Subject: [PATCH] =?UTF-8?q?docs(cfe-patch-method):=20SKILL.md=20=E2=80=94?= =?UTF-8?q?=20=D0=B0=D0=BA=D1=82=D1=83=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D1=8F=20description=20=D0=B8=20=D1=82=D0=B5=D1=80=D0=BC?= =?UTF-8?q?=D0=B8=D0=BD=D0=BE=D0=BB=D0=BE=D0=B3=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - description: «Генерация и актуализация…», без потери триггер-слов - Типы перехвата: применимость к процедурам/функциям вынесена в колонку - Две секции актуализации слиты в одну, телеграф переписан ровным тоном - «КФ» → «конфигурация-источник» (единый термин) Co-Authored-By: Claude Opus 4.8 --- .claude/skills/cfe-patch-method/SKILL.md | 39 +++++++++++------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/.claude/skills/cfe-patch-method/SKILL.md b/.claude/skills/cfe-patch-method/SKILL.md index 4944381b..28b37988 100644 --- a/.claude/skills/cfe-patch-method/SKILL.md +++ b/.claude/skills/cfe-patch-method/SKILL.md @@ -1,6 +1,6 @@ --- name: cfe-patch-method -description: Генерация перехватчика метода в расширении 1С (CFE). Используй когда нужно перехватить метод заимствованного объекта — вставить код до, после, вместо оригинального или изменить его тело (ИзменениеИКонтроль), а также актуализировать перехватчик после изменения оригинала +description: Генерация и актуализация перехватчика метода в расширении 1С (CFE). Используй когда нужно перехватить метод заимствованного объекта — вставить код до, после, вместо оригинала, изменить его тело (ИзменениеИКонтроль) — или актуализировать перехватчик после изменения оригинала argument-hint: -ExtensionPath -ConfigPath -ModulePath "Catalog.X.ObjectModule" -MethodName "ПриЗаписи" -InterceptorType Before allowed-tools: - Bash @@ -53,14 +53,12 @@ allowed-tools: ## Типы перехвата -| InterceptorType | Декоратор | Назначение | -|-----------------|-----------|------------| -| `Before` | `&Перед` | Код до вызова оригинального метода | -| `After` | `&После` | Код после вызова оригинального метода | -| `Instead` | `&Вместо` | Замена метода; в теле — скаффолд `ПродолжитьВызов(...)` | -| `ModificationAndControl` | `&ИзменениеИКонтроль` | Копия тела оригинала для правки маркерами `#Вставка`/`#Удаление` | - -`Before` и `After` применимы только к **процедурам**. Для **функций** доступны `Instead` и `ModificationAndControl`. +| InterceptorType | Декоратор | Назначение | Применим к | +|-----------------|-----------|------------|------------| +| `Before` | `&Перед` | Код до вызова оригинального метода | процедуры | +| `After` | `&После` | Код после вызова оригинального метода | процедуры | +| `Instead` | `&Вместо` | Замена метода; в теле — скаффолд `ПродолжитьВызов(...)` | процедуры и функции | +| `ModificationAndControl` | `&ИзменениеИКонтроль` | Копия тела оригинала для правки маркерами `#Вставка`/`#Удаление` | процедуры и функции | ## Маркеры `#Вставка` / `#Удаление` (для `ModificationAndControl`) @@ -90,26 +88,23 @@ allowed-tools: Правила: - Маркеры — на **отдельной строке с 0-й колонки** (без отступа), даже внутри отступов и текста запроса (`|…`). -- **Незамеченные (unmarked) строки должны совпадать с оригиналом дословно** — это и есть «контроль». Если оригинал в КФ изменится, unmarked-контекст разойдётся → метод потребует актуализации (см. ниже; проверить пачкой — `-Check`). +- **Незамеченные (unmarked) строки должны совпадать с оригиналом дословно** — это и есть «контроль». Если оригинал в конфигурации-источнике изменится, unmarked-контекст разойдётся → метод потребует актуализации (см. ниже; проверить пачкой — `-Check`). - Меняешь только свои `#Вставка`/`#Удаление`; чужой оригинал не трогай. -## Актуализация (повторный вызов `ModificationAndControl`) +## Актуализация -Если для метода уже есть перехватчик `&ИзменениеИКонтроль`, повторный вызов **актуализирует** его по текущему оригиналу: +После изменения оригинала в конфигурации-источнике перехватчик `&ИзменениеИКонтроль` может рассинхронизироваться — unmarked-контекст разойдётся с новым оригиналом. Платформа при загрузке об этом молчит, поэтому актуализируй сам: -- `[АКТУАЛЕН]` — оригинал не менялся, изменений нет; -- `[АКТУАЛИЗИРОВАН]` — тело обновлено по новому оригиналу, правки (`#Вставка`/`#Удаление`) перенесены автоматически (в выводе — сводка перенесённого); -- `[АКТУАЛИЗИРОВАН-ЧАСТИЧНО]` — часть правок не удалось разместить (якорь изменился в новом оригинале). Они помечены `// [РЕСИНК-КОНФЛИКТ]` в модуле и не потеряны. Путь к merge-воркспейсу печатается в выводе — начни с `index.md`, дальше по каждому конфликту его `conflict.md`, размести блоки вручную в `.bsl` расширения. +- **Проверить** — `-Check`: отчёт по дрейфу всех контролируемых методов расширения, ничего не пишет (`exit 1`, если дрейф есть). +- **Актуализировать** — `-Actualize`: переносит правки (`#Вставка`/`#Удаление`) на новый оригинал по всему расширению. Сузить область: `-ModulePath` — один модуль, `+ -MethodName` — один метод. Для одного метода то же делает повторный вызов с `-InterceptorType ModificationAndControl`. -Повторный вызов `Before`/`After`/`Instead` для уже перехваченного метода не создаёт дубль (`[ПРОПУЩЕН]`). +Статусы в выводе: -## Пакетно: `-Check` / `-Actualize` +- `[АКТУАЛЕН]` — оригинал не менялся, правок нет; +- `[АКТУАЛИЗИРОВАН]` — тело обновлено по новому оригиналу, правки перенесены (в выводе — сводка перенесённого); +- `[АКТУАЛИЗИРОВАН-ЧАСТИЧНО]` — часть правок не удалось разместить (якорь изменился в новом оригинале). Они помечены `// [РЕСИНК-КОНФЛИКТ]` в модуле и не потеряны; путь к merge-воркспейсу — в выводе (начни с `index.md`, дальше по каждому конфликту его `conflict.md`, размести блоки вручную в `.bsl` расширения). -По **всем** `&ИзменениеИКонтроль` расширения (сузить: `-ModulePath` — модуль, `+ -MethodName` — один); -затрагивают **только тело** контролируемых методов. `-Check` — отчёт по дрейфу (`exit 1`, если есть), -ничего не пишет; `-Actualize` — авто-перенос правок, конфликты уходят в merge-воркспейс (путь и порядок -разбора печатаются в выводе). Полезно после обновления КФ — о рассинхроне контроля платформа при -загрузке молчит. +Повторный вызов `Before`/`After`/`Instead` для уже перехваченного метода дубль не создаёт (`[ПРОПУЩЕН]`). ## Команда