desko77/cursor-1c-skills/1c-bsl-validate

Claude Code and agent skill by desko77/cursor-1c-skills

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

Проверка вызовов общих модулей в BSL по выгрузке конфигурации - существует ли модуль и экспортный ли у него метод; режим -Catalog - текстовый lint модулей по каталогу дефектов (транзакции, запросы, сообщения пользователю). Работает без платформы, по индексу от 1c-config-index

Install

npx vskill@latest install desko77/cursor-1c-skills/1c-bsl-validate

SKILL.md

/bsl-validate - вызовы общих модулей против выгрузки, lint по каталогу дефектов

Отвечает на один вопрос: вызванный метод общего модуля вообще существует и экспортный ли он. Переименовали метод или сняли Экспорт - вызовы в других модулях об этом не узнают до запуска.

Работает без EDT, без платформы и без базы. Синтаксис BSL этот навык НЕ проверяет - для синтаксиса есть отдельный сервер 1c-syntax-checker-mcp.

Второй режим - -Catalog: текстовый lint модулей по каталогу дефектов скила 1c-code-review (раздел ниже).

Параметры

ПараметрОбяз.Умолч.Описание
ModulePathда-Файл .bsl либо каталог - тогда обходится рекурсивно
IndexPathда-Индекс от 1c-config-index
UnknownCallsнет-Дополнительно искать вызовы неизвестных имен (только общие модули)
Detailedнет-Показать счетчики даже когда есть замечания
MaxErrorsнет30Не выводить больше N замечаний

Команда

bash
python skills/1c-config-index/scripts/config-index.py -ConfigPath src -OutFile .cache/index.json
python skills/1c-bsl-validate/scripts/bsl-validate.py -ModulePath src -IndexPath .cache/index.json
powershell
powershell.exe -NoProfile -File "skills/1c-bsl-validate/scripts/bsl-validate.ps1" -ModulePath "src" -IndexPath ".cache/index.json"

Основная проверка: метод общего модуля

Вызов вида ОбщиеФункции.Метод, где ОбщиеФункции есть в индексе среди общих модулей, проверяется точно: метод обязан быть в списке экспортных. Ложных срабатываний тут нет - левая часть однозначно опознана как общий модуль по имени из конфигурации.

Работает в ЛЮБЫХ модулях: формы, объекта, менеджера, общего.

Список экспортных методов индекс собирает разбором Ext/Module.bsl с вырезанными строчными комментариями. Закомментированная процедура призраком в список не попадет.

Дополнительная проверка: неизвестные имена (флаг -UnknownCalls)

Ищет Имя.Метод, где Имя не объявлено в модуле, не общий модуль и не глобальная коллекция платформы. Так ловится вызов УДАЛЕННОГО общего модуля.

Проверка идет только в общих модулях и только по флагу. Причина простая: у общего модуля список доступных имен замкнут - все, что не локальная переменная, параметр или глобальная коллекция, обязано быть общим модулем. У модуля формы или объекта это не так: Дерево.ПолучитьЭлементы обращается к реквизиту формы, который нигде не объявлен, и такая проверка выдала бы ложное срабатывание на каждый реквизит.

Локальными считаются: Перем, параметры процедур и функций (включая значения по умолчанию), цели присваиваний, переменные циклов Для и Для Каждого.

Список глобальных коллекций платформы в навыке заведомо НЕПОЛНЫЙ - их сотни. Именно поэтому проверка и включается флагом: с ним она полезна, без него ничего не портит.

Чего НЕ проверяется

Это не компилятор BSL. Без платформы недоступны типы выражений, число и типы параметров вызова, директивы компиляции, доступность метода с клиента или сервера.

Намеренно пропускается:

  • цепочки - в Справочники.Номенклатура.СоздатьЭлемент корнем считается Справочники,

а не Номенклатура;

  • вызов через переменную - если имя объявлено в модуле, оно не трогается;
  • строковые литералы и комментарии вырезаются до разбора: тексты запросов внутри строк полны

точек, иначе каждая вторая строка запроса стала бы вызовом.

Все замечания - предупреждения, код возврата всегда 0. Это самый шумный класс проверок из всех, что можно сделать по выгрузке, и ошибка тут дороже пропуска.

Режим каталога дефектов (-Catalog)

Триггеры: нужен быстрый текстовый прогон модулей по каталогу дефектов - перед ревью, в конфигурации без EDT, в конвейере после правок. Вход - файл .bsl или каталог (обход рекурсивный); индекс конфигурации НЕ нужен. Правила - реестр scripts/catalog-rules.json рядом со скриптом: массив объектов id, title, kind (regex - паттерн по строкам модуля, query-regex - по тексту запросного литерала целиком с номером строки по смещению совпадения, structure - многошаговая проверка). Идентификатор правила равен идентификатору карточки каталога дефектов; фикстуры карточек (tests/catalog/<ИД>) задают ожидаемые строки.

bash
python skills/1c-bsl-validate/scripts/bsl-validate.py -ModulePath src -Catalog
python skills/1c-bsl-validate/scripts/bsl-validate.py -ModulePath src -Catalog -RuleId TXN-01 -Json
ПараметрОбяз.Описание
CatalogдаВключить режим lint по каталогу
RuleIdнетВыполнить только правило карточки с этим идентификатором
JsonнетПечатать только JSON вместо таблицы

Выход: таблица находок [<ИД>] <файл>:<строка> <фрагмент> и итог (порядок находок - файл, строка, идентификатор); последняя строка EVIDENCE {...} - компактный JSON одной строкой (разделители без пробелов) с полями check (всегда bsl_validate@configurator), ids, inputHash (полный sha256 входа, 64 hex), status (pass - находок нет, findings - находки есть), findings (находки с id, file, line, match) для писателя следа; оба порта (Python и PowerShell) дают одинаковую строку байт в байт. Пример: EVIDENCE {"check":"bsl_validate@configurator","ids":["TXN-01"],"inputHash":"<64 hex>","status":"findings","findings":[...]}. Коды выхода: 0 - находок нет, 1 - есть находки, 2 - ошибка вызова (нет пути, битый реестр).

Ограничения: только текстовые признаки без семантики - типов выражений, областей видимости и разрешенных имен здесь нет. Находка - предупреждение с отсылкой к карточке каталога, а не приговор: часть правил ловит и законные формы (например, ОБЪЕДИНИТЬ без ВСЕ при ожидаемых дубликатах), финальное решение за карточкой и ревьюером.

Связанные навыки

  • 1c-config-index - строит индекс, без него проверка не работает
  • 1c-query-validate - проверка текста запроса по той же выгрузке
  • 1c-cfe-patch-method - перехват метода в расширении

Security

  • Security scanPassed, 90 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
5

Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/desko77/cursor-1c-skills/1c-bsl-validate/badge)](https://verified-skill.com/skills/desko77/cursor-1c-skills/1c-bsl-validate)

Something wrong with this skill or its page? Tell us.