code-review-checklist

code-review-checklist is a cursor rule for Cursor from Desko77/cursor-1c-skills. It costs 0 tokens per session (4,024 once invoked), scanned A, original, MIT.

A code-review checklist for 1C source files, including BSL and OS files. It groups findings by severity and checks issues such as security, performance, errors, access control, duplication, and maintainability.

In plain words
What is it for?
Use it when reviewing 1C code for syntax errors, unsafe queries, data risks, missing error handling, slow operations, access problems, complex code, and style issues.
Why use it?
It gives reviewers a consistent way to identify problems and decide which ones block a commit or should be fixed later. It also provides a confidence scale for findings.

Cursor rule for Cursor

Written for Cursor: a Cursor rule (.mdc).

Good fit Use it when reviewing 1C code for syntax errors, unsafe queries, data risks, missing error handling, slow operations, access problems, complex code, and style issues.

Compare 6 cursor rules from other repositories ↓
Install with agentmods
npx agentmods add rules/desko77/cursor-1c-skills/code-review-checklist
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/Desko77/cursor-1c-skills

Made for: Cursor.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for code-review-checklist

README.md
[![agentmods](https://agentmods.dev/badge/rules/desko77/cursor-1c-skills/code-review-checklist/github.svg)](https://agentmods.dev/rules/desko77/cursor-1c-skills/code-review-checklist)
Your own site
<a href="https://agentmods.dev/rules/desko77/cursor-1c-skills/code-review-checklist"><img src="https://agentmods.dev/badge/rules/desko77/cursor-1c-skills/code-review-checklist/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for code-review-checklist

Your own site · 80×15
<a href="https://agentmods.dev/rules/desko77/cursor-1c-skills/code-review-checklist"><img src="https://agentmods.dev/badge/rules/desko77/cursor-1c-skills/code-review-checklist.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 0 Nothing until a file matches its globs; then the whole rule loads.
When invoked 4,024 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.04024
Opus 5.5 $0.00000 $0.01610
Sonnet 5.5 $0.00000 $0.00805
Haiku 4.5 $0.00000 $0.00402

Measured 21d ago against content hash 8dfde08b53c3, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

code-review-checklist scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 21d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

rules/code-review-checklist.mdc · 206 lines

How it starts

The opening of the file, as written. The whole thing — 206 lines — stays where its author put it; the contents beside it link to each section on GitHub.

1C Code Review Checklist

Применяется: при ревью кода 1С (*.bsl, *.os).


Классификация находок

Critical - блокировать коммит

  • Синтаксические ошибки
  • SQL injection (конкатенация строк в запросе вместо параметров)
  • Риск порчи данных
  • Пробои безопасности (hardcoded пароли, обход RLS)
  • Операции >10с без оптимизации
  • Нарушения БСП с breaking changes

High - исправить до merge

  • Логические ошибки
  • Отсутствие обработки ошибок (пустой Исключение)
  • N+1 запросы (запрос в цикле)
  • Отсутствие индексов на фильтруемых полях
  • Недостаточный контроль доступа (нет проверки прав)
  • Дублирование кода >50 строк
  • Цикломатическая сложность >15 (количество независимых путей выполнения в функции)

Medium - исправить в спринте

  • Нарушение конвенций именования
  • Отсутствие документации экспортных функций
  • Субоптимальные алгоритмы
  • Code smells (God-модуль, длинные функции >200 строк)
  • Незначительные отклонения от БСП
  • Проблемы с тестируемостью

Low - технический долг

  • Форматирование
  • Стиль комментариев
  • Именование переменных
  • Мелкие оптимизации
  • Возможности для рефакторинга

Каталог дефектов

Секция генерируется tools/gen_catalog_index.py по карточкам каталога скила 1c-code-review; между маркерами не правится. Перевод важности карточек в действия ревью - skills/1c-code-review/references/severity.md.

Группа Идентификатор Важность Триггер
CLIENT CLIENT-01 Major Из клиентской процедуры подряд вызывается несколько серверных функций для одной операции
CLIENT CLIENT-02 Major Серверная функция модуля формы с директивой НаСервере не обращается к реквизитам формы
CLIENT CLIENT-03 Major В цикле клиентской процедуры вызывается серверная функция
CLIENT CLIENT-04 Major Для сообщения пользователю вызывается Сообщить() вместо ОбщегоНазначения.СообщитьПользователю
CLIENT CLIENT-05 Major В клиентском коде вызван синхронный или модальный метод: Вопрос, Предупреждение, ОткрытьЗначение, семейство Ввести, синхронные методы HTTPСоединения - либо оператор Перейти в клиентском модуле
EXT EXT-01 Major Тело заимствованной процедуры расширения изменено напрямую, без перехватчика
EXT EXT-02 Critical Перехватчик &Вместо не вызывает ПродолжитьВызов(), и полная замена типового метода не заявлена в шапке как намеренная
EXT EXT-03 Minor Процедура расширения названа без префикса расширения
EXT EXT-04 Major В Rights.xml роли расширения есть блок прав вида Enum.ИмяПеречисления
FORM FORM-01 Critical Локальная переменная объявлена с именем реквизита формы и получает значение
FORM FORM-02 Major Правка формы оставила ссылку на удаленное: обработчик события указывает на отсутствующий в модуле метод, элемент не имеет пути к данным после удаления реквизита, код модуля обращается к удаленному элементу через Элементы
META META-01 Major У двух объектов метаданных в исходниках один и тот же uuid
MODEL MODEL-01 Minor Более четырех уровней вложенности условий и циклов в одной процедуре
MODEL MODEL-02 Critical Набор записей с замещающей записью Записать(Истина) получает отбор не по всем ключевым измерениям регистра
MODEL MODEL-03 Major Виды характеристик создаются программно или регистры подсистемы свойств пишутся напрямую, минуя ее программный интерфейс
MODEL MODEL-04 Major Отказ операции возвращается выходным параметром-флагом или структурой результата, а вызывающий код продолжает работу без его проверки
MODEL MODEL-05 Minor Параметр-коллекция (структура, массив, таблица значений) объявлен без Знач, хотя метод ее не изменяет
MODEL MODEL-06 Minor Набор функций-помощников, каждая читает из одного и того же ответа одно поле и приводит его к нужному типу
MODEL MODEL-07 Major Ячейка табличного документа читается методом Получить(), которого у типа ТабличныйДокумент нет
MODEL MODEL-08 Major У объекта ПараметрыЗаписиJSON, созданного без аргументов, значение задается присваиванием свойству
MODEL MODEL-09 Minor Выборка запроса в цикле собирается в массив структур с теми же полями, что и список полей запроса
MODEL MODEL-10 Major Ключ соответствия строится склейкой нескольких значений в строку через разделитель
MODEL MODEL-11 Minor Обращение к реквизиту собственной конфигурации обложено проверкой его наличия через метаданные
MODEL MODEL-12 Minor Результат вызова своей функции читается через точку в нескольких местах метода вместо сохранения в переменную
MODEL MODEL-13 Minor Во всех точках вызова метод получает одно и то же значение параметра, а умолчания в сигнатуре нет
MODEL MODEL-14 Major Цепочка Если-ИначеЕсли из трех и более веток по значению или типу не имеет ветки Иначе
MODEL MODEL-15 Major Полю ссылочного типа присваивается примитив: пустая строка, ноль или булево
MODEL MODEL-16 Critical Правка удаляет метод модуля, а вызовы его из других процедур того же модуля остаются
MODEL MODEL-17 Major В сравнении или арифметике слева и справа стоит одно и то же выражение: Если А = А, Итог - Итог, Сумма / Сумма; в конкатенации два плюса подряд; переменной присваивается она сама
MODEL MODEL-18 Major Блок Исключение пуст или завершается без записи в журнал регистрации и без повторного вызова исключения
MODEL MODEL-19 Major Тело регламентного задания выполняет записи без защиты от повторного запуска: документы и движения создаются заново при каждом выполнении, нет отбора необработанных данных и проверки уже созданных записей
MODEL MODEL-20 Major Обработчик ПриЗаписи, ПередЗаписью или набора записей выполняет побочные действия - заполнение реквизитов, движения, сообщения, вызовы внешних сервисов - без выхода при ОбменДанными.Загрузка
MODEL MODEL-21 Major Серверный код датирует бизнес-операцию вызовом ТекущаяДата() без параметров
MODEL MODEL-22 Major Внутри цикла Для Каждого по коллекции вызывается удаление элемента этой же коллекции: Строки.Удалить(Строка)
PERF PERF-01 Critical В цикле создается Новый Запрос или выполняется Выполнить() на каждой итерации
PERF PERF-02 Critical У ссылочной переменной подряд читается несколько реквизитов через точку
PERF PERF-03 Minor В цикле вызывается функция с одинаковыми аргументами, результат не сохраняется
PERF PERF-04 Minor Два вложенных цикла ищут совпадение ключей между коллекциями
PERF PERF-05 Minor Внутри цикла читается константа или разыменовывается предопределенный элемент, хотя значение не зависит от итерации
PERF PERF-06 Minor НайтиПоНаименованию или НайтиПоКоду ищет элемент, от которого зависит работа механизма
PERF PERF-07 Major Код получает имя временного файла или строит свой путь в каталоге временных файлов, пишет туда и завершает работу без удаления
PERF PERF-08 Major Создается соединение с внешним ресурсом - HTTPСоединение, FTPСоединение, WSОпределения, WSПрокси, ИнтернетПочтовыйПрофиль - или вызывается ожидание завершения фонового задания без ограничения времени ожидания
PERF PERF-09 Major Интерактивный вызов выполняет обработку, рассчитанную на большой объем данных: серверный метод формы или обработки в одном вызове обходит тысячи записей, строит большие отчеты, читает внешние сервисы - без запуска фонового задания и индикации прогресса
PROC PROC-01 Major В отчете заявлено выполнение проверки (проверено, работает, исправлено) без команды прогона и его результата
PROC PROC-02 Major Вывод "код компилируется" сделан по загрузке или выгрузке конфигурации, валидатору XML или анализатору, который модули не компилирует
PROC PROC-03 Major Правка удаляет из исходного кода проверки редких и граничных случаев, а добавленные операции записи выполняются без чтения результата
QUERY QUERY-01 Critical В списке полей SELECT стоит вложенный ВЫБРАТЬ в скобках
QUERY QUERY-02 Major Условие на измерение виртуальной таблицы стоит в ГДЕ, а не в параметрах таблицы
QUERY QUERY-03 Major Запрос без ПЕРВЫЕ читает таблицу целиком, когда обработка использует часть строк
QUERY QUERY-04 Major Через точку читается поле составного типа без ВЫРАЗИТЬ
QUERY QUERY-05 Minor Из ссылки в списке полей читается Наименование только ради отображения
QUERY QUERY-06 Major В разделе ИЗ соединение выполняется с вложенным ВЫБРАТЬ в скобках
QUERY QUERY-07 Major В разделе ИЗ соединение выполняется напрямую с виртуальной таблицей
QUERY QUERY-08 Major Условия одной таблицы в ГДЕ соединены через ИЛИ по разным полям
QUERY QUERY-09 Minor Пакеты объединены через ОБЪЕДИНИТЬ без слова ВСЕ при отсутствии дубликатов
QUERY QUERY-10 Major Условия ГДЕ заданы по полям, пропускающим первые поля индекса таблицы
QUERY QUERY-11 Minor Ограничение выборки задано отбором настроек СКД, текст запроса набора без условия
QUERY QUERY-12 Minor Из полей правой таблицы ЛЕВОГО СОЕДИНЕНИЯ значения читаются без ЕСТЬNULL
QUERY QUERY-13 Major Таблица значений со строковой колонкой без КвалификаторыСтроки передается параметром в запрос и соединяется с таблицей базы
QUERY QUERY-14 Critical В разделе ГДЕ стоит вложенный ВЫБРАТЬ, ссылающийся на поле внешнего запроса
QUERY QUERY-15 Major Временная таблица помещена без ИНДЕКСИРОВАТЬ ПО и в том же пакете участвует в соединении по этим полям
QUERY QUERY-16 Critical Псевдоним поля или таблицы в запросе совпадает со служебным словом языка запросов
QUERY QUERY-17 Major Псевдоним источника в запросе совпадает с именем колонки или табличной части, видимыми в том же запросе
QUERY QUERY-18 Minor В запросе стоит ПЕРВЫЕ N, а секции УПОРЯДОЧИТЬ ПО нет
SEC SEC-01 Critical Значение подставляется в текст запроса сложением строк вместо параметра
SEC SEC-02 Critical УстановитьПривилегированныйРежим(Истина) или метод привилегированного общего модуля читает либо изменяет данные, состав которых задан параметрами от пользователя, и результат уходит пользователю или изменение делается от его имени - без явной проверки права до операции
SEC SEC-03 Critical В коде встречается пароль, токен или ключ строковым литералом
SEC SEC-04 Major Данные из файла, HTTP-сервиса или другой базы используются без проверки структуры и типов
SEC SEC-05 Major Строка из внешних данных конкатенацией собирается в HTML-документ или поле HTML формы
SEC SEC-06 Critical На сервере выполняется код или программа, не входящая в конфигурацию: Выполнить или Вычислить над строкой, собранной из внешних данных; подключение внешней компоненты; запуск внешнего приложения или команды системы - без безопасного режима и без проверки входных данных
TXN TXN-01 Major НачатьТранзакцию() вызывается внутри блока Попытка
TXN TXN-02 Major Между НачатьТранзакцию() и Попытка стоят операторы
TXN TXN-03 Major После ЗафиксироватьТранзакцию() внутри Попытка стоят еще операторы
TXN TXN-04 Major В блоке Исключение до ОтменитьТранзакцию() стоят другие операторы
TXN TXN-05 Major Блок Исключение кода с транзакцией завершается без ВызватьИсключение
TXN TXN-06 Major Внутри ПередЗаписью, ПриЗаписи или ОбработкаПроведения вызывается НачатьТранзакцию()
TXN TXN-07 Major БлокировкаДанных устанавливается после чтения данных, по которым принимается решение
TXN TXN-08 Minor Блокировка устанавливается без значений отбора или по всей таблице
TXN TXN-09 Major Две операции захватывают одни и те же ресурсы в разном порядке
TXN TXN-10 Major Между НачатьТранзакцию() и ЗафиксироватьТранзакцию() выполняются диалоги, обращения к внешним системам или запись в файлы
TXN TXN-11 Major Запись документа и его проведение объединены в одну явную транзакцию

Read the full file on GitHub · 206 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 21d ago Changed · +94 lines 8dfde08b53c3
  2. 1mo ago First seen · 112 lines · 0 tokens per session scan A a783d2173e08

Subscribe to this mod's changes

code-review-checklist is a cursor rule published in the GitHub repository Desko77/cursor-1c-skills (69 stars, last pushed 12d ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 4,024 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.