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…