# Code Quality

> Агент больше не спрячет баг за зелёными тестами: шлюз ловит подделки

Детерминированный шлюз качества для ИИ-агентов: блокирует подделку тестов, проверяет сложность, CRAP, покрытие диффа, секреты и зависимости. 12 языков, MIT.

- Что делает: проверяет качество кода ИИ-агентов
- Категории: MCP и Скиллы, Инструменты разработчика
- Бизнес-модель: Бесплатно
- Сайт сервиса: https://github.com/smixs/code-quality
- Карточка в каталоге: https://ailibri.com/code-quality
- Обновлено: 2026-09-24

## Описание

Code Quality — детерминированный шлюз качества кода (quality gate) для ИИ-агентов программирования: Claude Code, Codex, Grok, pi, omp и OpenCode. Через Git-хуки и Stop-хуки он поможет понять, действительно ли агент починил код или просто «подогнал» тесты под зелёный цвет. Пригодится разработчикам и командам, которые отдают агентам реальную работу в репозитории. Инструмент открытый, распространяется под лицензией MIT.

Главная идея в том, что проверки не спрашивают мнения модели. Скрипт смотрит на дифф и либо пропускает его, либо возвращает код выхода 1 с отчётом, где указаны правило, файл и строка. Так агент не сможет уговорить шлюз, что «всё и так нормально». Если результат — GATE FAIL, у агента будет один раунд на исправление. Когда на изменённых строках не останется новых находок, он получит GATE PASS.

Прежде всего Code Quality поможет поймать подделку тестов. Классический трюк агента — пометить падающий тест как пропущенный через it.skip. Шлюз выдаст на это tamper/test-skipped. Удаление или ослабление утверждений тоже не пройдёт незамеченным: если toEqual вдруг превратился в toBeTruthy, в отчёте появится tamper/assertion-weakened. Заблокирована и правка baseline вместе с кодом (tamper/baseline-touched). А вот новый мок для тестируемого модуля попадёт в отчёт только как заметка, без блокировки. Таксономия подделок взята из исследования TRACE.

Для каждой изменённой функции действует одна и та же планка:

- цикломатическая сложность — не выше 10;

- метрика CRAP — не выше 30;

- покрытие добавленных строк — не ниже 80%;

- никаких новых циклических зависимостей и нового мёртвого кода;

- никаких секретов.

Покрытие считается именно по диффу. Допустим, агент добавил 50 строк, а тесты задевают 31 из них. Тогда отчёт покажет cov/diff: 62% при минимуме 80%. Старый технический долг работе не помешает. Командой --update-baseline создаётся снимок, который фиксирует существующие находки как долг. Провал вызовут только новые проблемы на изменённых строках, так что легаси-проект можно подключить без предварительного рефакторинга.

Команда check на реальном репозитории отрабатывает за 3–19 секунд. Полный прогон с тестами и покрытием запускается вручную. Поддерживаются 12 языков через адаптеры: TypeScript, Python, Go, Rust, Java, Kotlin, C#, Swift, PHP, Ruby, C/C++ и Dart. Сложность считается через lizard, покрытие берётся из lcov. Под капотом также работают jscpd, ast-grep, gitleaks, osv-scanner, dependency-cruiser, knip, ESLint и Radon. Вся настройка живёт в одном файле .quality.toml, сервер не нужен.

Отдельно продумана защита от обхода. В репозитории с .quality.toml по умолчанию заблокированы git commit --no-verify и -n, git push --no-verify, а также подмена core.hooksPath через git -c или git config. Если такая строгость мешает, защиту можно отключить параметром block_bypass = false в секции [hooks].

Есть и опциональный классификатор Jev на основе модели. Он включается через [review] jev = true и задаёт пять откалиброванных вопросов «да/нет» о новых фрагментах тестов. Например, проверяет, не тавтологическое ли свойство проверяет тест и не скрывает ли мок изменение. Jev только добавляет заметки и никогда не меняет код выхода, поэтому детерминированность шлюза сохраняется. Для него понадобится ключ TypeSafe (TYPESAFE_API_KEY) или OpenRouter (OPENROUTER_API_KEY) в переменных окружения.

В Claude Code и Codex плагин ставится двумя командами через маркетплейс и подгружает хуки Stop и PreToolUse. В Codex эти хуки нужно просмотреть и подтвердить через /hooks. Для pi, omp и OpenCode есть свои способы установки. С Grok сложнее: на версии 1.0.40 хуки плагина не вызывались, поэтому их придётся установить глобально отдельной командой. После перемещения или обновления плагина эту команду нужно запустить заново. Можно поставить только навык через npx skills add, но тогда хуков не будет. Каждый репозиторий подключается командой install-hooks, при этом существующие хуки выстраиваются в цепочку. Для Claude Code, Codex, pi и OpenCode V2 плагин можно включить всей команде, закоммитив настройки проекта.

Для работы шлюза и shell-хуков нужен Bun. В OpenCode есть нюанс: попытку обхода инструмент заблокирует заранее, а при красном шлюзе напишет сообщение в сессию. Заставить агента сделать ещё один ход по событию простоя он не сможет. В документации есть справочник всех правил с пометками, что блокирует, а что только отмечается, описание адаптеров, настройка .quality.toml и хуков, а также SKILL.md — справочник, который читает сам агент.

## Похожие сервисы в каталоге

- [OpenMemory](https://ailibri.com/openmemory): OpenMemory — MCP-слой памяти для Cursor, VS Code и других AI-агентов. Автоматически сохраняет и подставляет контекст, предпочтения и паттерны кода по проектам.
- [YouTube Skills](https://ailibri.com/youtube-skills): Навыки YouTube для ИИ-агентов: транскрипты видео, поиск, данные каналов и плейлистов через API. Работает с OpenClaw, Hermes Agent и Claude Code.
- [Inspo MCP](https://ailibri.com/inspo-mcp): Архив из 832 реальных production-сайтов и 2320 экранов живых продуктов: референсные компоненты и DESIGN.md — подключается к AI-агенту через MCP-сервер.
- [Claude Commerce Agents](https://ailibri.com/claude-commerce-agents): Открытый референсный репозиторий Anthropic: каркас покупательского и торгового агентов на Claude, четыре демо-вертикали и плагин для Claude Code.
- [Sepia](https://ailibri.com/sepia): Устраняйте признаки ИИ в текстах: восстановление нарративной структуры для прозы и правила под формат для релиз-ноутов, PR-ответов, постмортемов и статей.
- [Remotion Agent Skills](https://ailibri.com/remotion-agent-skills): Набор Agent Skills от команды Remotion: слэш-команды для Claude Code, Codex, Kimi Code и Cursor. Установка одной командой npx skills add remotion-dev/skills.

---
Источник: AILibri — каталог нейросетей и ИИ-инструментов, https://ailibri.com