desko77/cursor-1c-skills/1c-bsl-validate
Claude Code and agent skill by desko77/cursor-1c-skills
- community
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-validateSKILL.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 замечаний |
Команда
Основная проверка: метод общего модуля
Вызов вида ОбщиеФункции.Метод, где ОбщиеФункции есть в индексе среди общих модулей, проверяется точно: метод обязан быть в списке экспортных. Ложных срабатываний тут нет - левая часть однозначно опознана как общий модуль по имени из конфигурации.
Работает в ЛЮБЫХ модулях: формы, объекта, менеджера, общего.
Список экспортных методов индекс собирает разбором Ext/Module.bsl с вырезанными строчными комментариями. Закомментированная процедура призраком в список не попадет.
Дополнительная проверка: неизвестные имена (флаг -UnknownCalls)
Ищет Имя.Метод, где Имя не объявлено в модуле, не общий модуль и не глобальная коллекция платформы. Так ловится вызов УДАЛЕННОГО общего модуля.
Проверка идет только в общих модулях и только по флагу. Причина простая: у общего модуля список доступных имен замкнут - все, что не локальная переменная, параметр или глобальная коллекция, обязано быть общим модулем. У модуля формы или объекта это не так: Дерево.ПолучитьЭлементы обращается к реквизиту формы, который нигде не объявлен, и такая проверка выдала бы ложное срабатывание на каждый реквизит.
Локальными считаются: Перем, параметры процедур и функций (включая значения по умолчанию), цели присваиваний, переменные циклов Для и Для Каждого.
Список глобальных коллекций платформы в навыке заведомо НЕПОЛНЫЙ - их сотни. Именно поэтому проверка и включается флагом: с ним она полезна, без него ничего не портит.
Чего НЕ проверяется
Это не компилятор BSL. Без платформы недоступны типы выражений, число и типы параметров вызова, директивы компиляции, доступность метода с клиента или сервера.
Намеренно пропускается:
- цепочки - в
Справочники.Номенклатура.СоздатьЭлементкорнем считаетсяСправочники,
а не Номенклатура;
- вызов через переменную - если имя объявлено в модуле, оно не трогается;
- строковые литералы и комментарии вырезаются до разбора: тексты запросов внутри строк полны
точек, иначе каждая вторая строка запроса стала бы вызовом.
Все замечания - предупреждения, код возврата всегда 0. Это самый шумный класс проверок из всех, что можно сделать по выгрузке, и ошибка тут дороже пропуска.
Режим каталога дефектов (-Catalog)
Триггеры: нужен быстрый текстовый прогон модулей по каталогу дефектов - перед ревью, в конфигурации без EDT, в конвейере после правок. Вход - файл .bsl или каталог (обход рекурсивный); индекс конфигурации НЕ нужен. Правила - реестр scripts/catalog-rules.json рядом со скриптом: массив объектов id, title, kind (regex - паттерн по строкам модуля, query-regex - по тексту запросного литерала целиком с номером строки по смещению совпадения, structure - многошаговая проверка). Идентификатор правила равен идентификатору карточки каталога дефектов; фикстуры карточек (tests/catalog/<ИД>) задают ожидаемые строки.
| Параметр | Обяз. | Описание | |
|---|---|---|---|
| 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
- SKILL.md in the repositoryCheckingskills/1c-bsl-validate/SKILL.md
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
[](https://verified-skill.com/skills/desko77/cursor-1c-skills/1c-bsl-validate)