Skip to content
Back to skills

Code Patch

ASecurity

Точечно вставить или заменить BSL-код в логически адресованном модуле XML-выгрузки Configuration или Extension 1С. Используй для одной проверяемой операции insert или replace.

  • 213 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 2, 2026
ai-agents

Works with

  • cli
  • mcp

Security analysis

A100/100

Scanned October 3, 2026

npx -y skills add IngvarConsulting/unica --skill code-patch --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Code Patch?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Code Patch
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ingvarconsulting-code-patch/badge)](https://www.skillsdirectory.com/skills/ingvarconsulting-code-patch)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: code-patch
description: Точечно вставить или заменить BSL-код в логически адресованном модуле XML-выгрузки Configuration или Extension 1С. Используй для одной проверяемой операции insert или replace.
argument-hint: <at> <insert|replace> <text>
allowed-tools:
  - Read
  - Glob
---

# /code-patch — безопасная вставка и замена BSL

## MCP routing

- Preferred path: use MCP `unica` tool `unica.apply` с операциями
  `code.insert` и `code.replace`.
- Do not call internal MCP/CLI adapters directly. They are hidden behind
  `unica` and synchronized by the orchestrator.
- Сначала вызови `unica.apply` с `at` и `ops`: это план без записи.
  Когда пользователь поручил внести эту правку, вызови `unica.apply` только
  с `executionToken` из `data.executionToken` успешного плана.

**Селектор — это адрес.** Отдельного `selector` с `method` или `anchor` нет:
что править, называет `args.at`. У объекта с несколькими модулями роль входит в
адрес: узел метода — `…Module.Object.Method.<Имя>`, тело модуля целиком —
`…Module.Object.Body`. Общий модуль сам себе модуль, и сегмента роли у него нет
вовсе: `CommonModule.<Имя>.Method.<Имя>` и `CommonModule.<Имя>.Body`. Адрес и
точнее селектора, и переживает переименование файла, и уже проверен чтением.

Правится модуль существующего объекта метаданных в допущенном наборе
исходников формата платформы. Физический путь к `*Module.bsl` остаётся
внутренней деталью: наружу его отдаёт только аварийный `unica.resolve`, и в
обычном ходе работы он не нужен. Создать объект метаданных, удалить модуль
целиком, править EDT или внешние файлы, синхронизировать исходники с базой
этим путём нельзя.

Если правку нельзя выразить одной безопасной операцией, остановись: прочитай
предмет через `unica.view {at}` на узле модуля — ветвь `Method` перечисляет
методы, ветвь `Body` отдаёт строки парами `{line, text}` — и вернись с более
узкой операцией.

## Операции

| Операция | Что делает | `args` |
|---|---|---|
| `code.insert` | Вставляет текст в узел по адресу | `at`, `text` |
| `code.replace` | Заменяет содержимое узла по адресу | `at`, `text` |

Несколько операций одного вызова применяются как одна правка: либо все, либо
ни одной.

У заимствованного объекта расширения запись BSL также подключает модуль:
недостающее состояние `PropertyState` добавляется в дескриптор той же
транзакцией. Предпросмотр показывает обе правки. Уже установленное состояние
сохраняется; несовместимое состояние вызывает отказ до записи. После
применения проверь расширение через `unica.check {at: "ext:Configuration"}`,
подставив имя своего набора исходников.

## Порядок

1. Найди адрес: `unica.search {corpus: "names"}` по имени объекта, затем
   `unica.view {at}` вниз по ветвям `Module` и `Method`.
2. Прочти предмет: `unica.view {at}` на узле метода даёт подпись, контекст
   компиляции и собственные строки.
3. Предпросмотр: `unica.apply` с `at` и `ops`. Ответ несёт план правки и
   токен `data.executionToken`.
4. Применение: вызов только с `executionToken` из успешного плана.
   Исполнитель использует сохранённую транзакцию и проверяет её входы.
   После `stale_revision` получи новый план; изменение файла вне входов плана
   не мешает исполнению.
5. Проверка: `unica.check {at}` на модуле. Новые находки важности `error`
   блокируют.

## MCP examples

### Предпросмотр замены тела метода

```json
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "unica.apply",
    "arguments": {
      "at": "main:CommonModule.Пример",
      "ops": [
        {
          "op": "code.replace",
          "args": {
            "at": "main:CommonModule.Пример.Method.Выполнить.Body",
            "text": "    Возврат Истина;"
          }
        }
      ]
    }
  }
}
```

### Исполнение сохранённого плана

Сначала получи план этого изменения:

```json
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "unica.apply",
    "arguments": {
      "at": "main:CommonModule.Пример",
      "ops": [
        {
          "op": "code.insert",
          "args": {
            "at": "main:CommonModule.Пример.Body",
            "text": "Процедура Выполнить() Экспорт\nКонецПроцедуры"
          }
        }
      ]
    }
  }
}
```

Для исполнения передай `data.executionToken` из этого успешного плана:

```json
{
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "name": "unica.apply",
    "arguments": {
      "executionToken": "<data.executionToken из успешного плана>"
    }
  }
}
```

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.