| name | search-before-write |
| description | Перед новым BSL-кодом найти существующий аналог |
| alwaysApply | false |
Поиск перед записью (Search Before Write)
Любая задача на написание кода — прежде всего задача на поиск. Сначала ищем, потом пишем.
Для 1C/BSL-проектов с доступным RLM широкая разведка начинается с rlm_start / rlm_execute, а не с LSP или raw grep. LSP подключай после RLM, когда уже найден конкретный файл, символ или позиция.
Каскад поиска
Каждый следующий шаг — только если предыдущий не дал результата:
| Шаг | Инструмент | Что ищем |
|---|
| 1 | rlm_start → rlm_execute | Широкий поиск аналогов, бизнес-механизмов, запросов, XML/MDO/forms/rights и связей по проекту |
| 2 | navigate_symbol / BSL LS | Точная проверка найденного символа, definition/references/call graph по известной позиции |
| 3 | list_metadata_objects, get_metadata_structure | Объекты конфигурации (справочники, регистры, документы), если RLM недоступен или нужен структурный MCP-ответ |
| 4 | search_syntax_reference, get_type_info | Встроенные типы/методы платформы |
| 5 | search_ssl_functions | Функции БСП (если конфигурация содержит БСП) |
| 6a | ask_ai_assistant (шаблон SEARCH_DOCS) | Документация платформы — если вопрос про API, методы, типы |
| 6b | ask_ai_assistant (шаблон SEARCH_ITS → FETCH_ITS) | Стандарты, методология, примеры ИТС — если вопрос про правила разработки |
| 6c | ask_ai_assistant (generic) | Прочие вопросы — только если 6a/6b не подходят |
Шаблоны промптов для шагов 6a–6c — см. навык buddy-prompting.
Триггеры
| Задача | Начальный шаг каскада |
|---|
| Новая функция/процедура | 1 — RLM-поиск аналогов по смыслу, имени и соседним терминам |
| Бизнес-логика | 1 — RLM-разведка механизма и связанных объектов/модулей |
| Использование API платформы | 4 — справка синтаксиса; fallback 6a (документация) |
| Печатная форма | 1 → 5 (RLM по формам/шаблонам/командам + БСП API) |
| Стандарты и правила разработки | 6b — поиск в ИТС |
| Миграция между версиями | 6a (шаблон DIFF_VERSIONS) |
| Запрос | 1 — RLM-поиск существующих запросов и связанных регистров/объектов |
Capabilities
| Capability | Назначение |
|---|
rlm_start / rlm_execute | Широкая проектная разведка по 1C/BSL перед написанием кода |
navigate_symbol | Поиск символов, определение, использования |
list_metadata_objects | Объекты метаданных по типу и маске |
get_metadata_structure | Структура объекта (реквизиты, измерения, ресурсы) |
search_syntax_reference | Справка синтаксиса платформы |
get_type_info | Детали типов платформы |
search_ssl_functions | Функции БСП |
ask_ai_assistant | Best practices, шаблоны |
Типичные ошибки
| Ошибка | Обходной путь |
|---|
| Пропуск поиска | Жёсткое правило: создание BSL-кода → первый шаг = RLM-разведка, если доступна |
Начали с navigate_symbol, но нет точного имени/позиции | Вернуться к rlm_start: задача широкая, LSP здесь преждевременен |
list_metadata_objects пусто | Конфигурация загружена? v8-runner build (или v8-runner dump --mode incremental если ИБ — источник правды); проверить metaType/nameMask |
navigate_symbol пусто | Если это широкая разведка — перейти к RLM. Если позиционная LSP-задача — уточнить имя (рус/лат, регистр) |
ask_ai_assistant пустой результат | Переформулировать query; см. правила в buddy-prompting |
search_ssl_functions недоступен | Без БСП — search_syntax_reference + navigate_symbol по общим модулям |
depends_on:
- framework/skills/tool-usage/code-analysis/rlm-bsl-search/SKILL.md
- framework/skills/tool-usage/code-analysis/code-navigation/SKILL.md