framework/skills/tool-usage/code-analysis/code-verification/SKILL.md
После правок BSL: LSP, Buddy/API, syntax checks
npx skillsauth add steelmorgan/1c-agent-based-dev-framework code-verificationInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Навык описывает порядок проверки BSL-кода после внесения правок. Три слоя проверки, каждый ловит свой класс ошибок.
| Триггер | Действие | |---------|----------| | После изменения BSL-кода | Полный цикл (все 3 слоя) | | Ревью чужого кода | Слой 2 + Слой 3 | | Вопрос пользователя «проверь синтаксис» | Полный цикл |
Цель: немедленная обратная связь по изменённому файлу.
get_diagnostics(uri) — получить ошибки/предупреждения от BSL Language Server.error-уровень — исправить до перехода к слою 2.Цель: проверка синтаксиса, стандартов, поиск аналогов в БСП.
Что передавать: целиком процедуры/функции, в которых были правки. Не фрагменты, не отдельные строки — полные тела методов.
Вызов: ask_ai_assistant с шаблоном VALIDATE_BSL из buddy-prompting.
Как интерпретировать результат:
| Ситуация | Действие |
|----------|----------|
| Напарник нашёл ошибки | Проанализировать каждую. Ложные «необъявленная переменная» на глобальные методы — фильтровать. Остальное — исправить или обосновать. |
| Напарник не нашёл ошибок | НЕ считать доказательством корректности. У Напарника ограниченный контекст — он не видит проект. Перейти к слою 3. |
| Напарник рекомендует замену на БСП | Проверить через search_ssl_functions, что рекомендованная функция существует. |
Цель: подтвердить, что каждый используемый в коде платформенный объект, метод, свойство и конструктор реально существует на указанном типе.
Алгоритм:
Извлечь из изменённого кода все обращения к платформенному API:
Новый <Тип>(...) — создание объектов<Объект>.<Метод>(...) — вызовы методов<Объект>.<Свойство> — чтение/запись свойствДля каждого обращения — верифицировать:
| Что в коде | Как проверить | Capability |
|------------|---------------|------------|
| Новый <Тип> | Тип существует? | search_syntax_reference → get_type_info |
| Новый <Тип>(парам1, парам2) | Конструктор с такими параметрами? | getConstructors |
| Объект.Метод() | Метод есть на этом типе? | getMember |
| Объект.Свойство | Свойство есть на этом типе? | getMember |
| Тип неясен | Поиск по имени | search_syntax_reference → getMembers |
| Тип переменной/выражения неизвестен | Вывести тип значения под курсором | get_hover_info |
Особое внимание — коллекционные типы. API Структура, Соответствие, ТаблицаЗначений, Массив различается. Не предполагать одинаковые методы — проверять на конкретном типе.
Определение типа переменной. Когда непонятно, какой тип у переменной (а значит — какой API на ней допустим), get_hover_info(uri, line, character) по имени переменной возвращает выведенный BSL LS тип значения (Type System v2). Это вывод типа конкретного значения в этой точке, а не справка по всем типам платформы. Затем верифицировать члены полученного типа через getMember/getMembers. Если get_hover_info недоступен — определить тип по месту объявления/присваивания через navigate_symbol.
v8-runner syntax … (компилятор) ← формальная проверка, финальный вердикт
> get_diagnostics (LSP) ← быстрая диагностика
> bsl-platform-context ← авторитетный справочник API
> ask_ai_assistant ← совещательный голос (не доверять отсутствию ошибок)
При расхождении — побеждает источник выше по иерархии.
По итогам проверки — структурированный вывод:
синтаксис / ошибка API / нарушение стандарта / рантайм-риск.| Проблема | Обходной путь |
|----------|---------------|
| LSP недоступен | Пропустить слой 1, перейти к слою 2. Отметить в отчёте. |
| Напарник недоступен | Пропустить слой 2. Усилить слой 3. |
| bsl-platform-context не знает тип | Тип из проекта (не платформенный) — проверить через navigate_symbol. |
| Ложная «необъявленная переменная» от Напарника | Нормально для глобальных методов — фильтровать. |
| search_syntax_reference пустой | Уточнить имя типа (русское/английское написание), проверить версию. |
| Напарник рекомендует несуществующую функцию БСП | Проверить через search_ssl_functions. |
| Capability | Слой | Назначение |
|------------|------|------------|
| get_diagnostics | 1 | LSP-диагностика файла |
| ask_ai_assistant | 2 | VALIDATE_BSL через Напарника |
| search_ssl_functions | 2 | Проверка рекомендаций по БСП |
| search_syntax_reference | 3 | Поиск платформенного типа |
| get_type_info | 3 | Информация о типе |
| getMembers | 3 | Список членов типа |
| getMember | 3 | Проверка конкретного члена |
| getConstructors | 3 | Проверка конструктора |
| get_hover_info | 3 | Вывод типа значения переменной/выражения под курсором |
| navigate_symbol | 3 | Определение типа переменной по объявлению (fallback к get_hover_info) |
| v8-runner syntax … | * | Финальная проверка компилятором (CLI; см. навык v8-runner) |
development
1C server maintenance webhooks: container restart and external component cache cleanup
development
Interactive DAP debugging of a single BSL procedure
tools
Rules for using RLM tools for project search and navigation in 1C/BSL
development
Creates web applications and routes on Winow (a web server on OneScript and Autumn). Use when working with a web server on OneScript, routing, or Winow controllers.