konsistent CLI
Линтер структуры TypeScript-проекта: проверяет по правилам в konsistent.json, какие файлы, папки и экспорты должны быть в каждом пакете
- 195 ★ репозитория
- Последний коммит
Расширенный доступ
Почему такой уровень
- Проверка читает исходники и пути всего репозитория, но сама ничего не меняет
- Скилл `konsistent-fix-violations` правит файлы, переименовывает и переносит код после вашего подтверждения
Установка
- Работает в
Ручная установка
npm install konsistent --save-devДля pnpm `pnpm add konsistent --save-dev`, для Bun `bun add konsistent --dev`. Запуск: `npx konsistent`.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Проверка читает исходники и пути всего репозитория, но сама ничего не меняет
- Скилл `konsistent-fix-violations` правит файлы, переименовывает и переносит код после вашего подтверждения
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
konsistent — консольный линтер, который сверяет файлы и папки TypeScript-репозитория с объявленными шаблонами. ESLint, Biome и oxlint проверяют стиль кода внутри файла, а konsistent проверяет структуру проекта: например, что каждый пакет провайдера лежит в `packages/{providerId}`, содержит `src/index.ts` и экспортирует тип `<ProviderId>Provider`. Правила пишутся в `konsistent.json` в корне проекта. Пути задаются с переменными вроде `packages/{providerId}`, а в условиях `must` доступны наличие файлов и папок, экспорт значений и типов, причем имена можно строить из переменной функциями `toPascalCase()` и `toFlatCase()`. Карты `kebabToPascalMap` и `kebabToCamelMap` исправляют аббревиатуры, например openai в OpenAI. Команды: `konsistent` (то же, что `check`), `validate` для самого конфига, `help` и `version`. Нарушения выводятся списком, а в GitHub Actions превращаются в аннотации на диффе pull request. Для скриптов есть форматы `json` и `markdown`. Конвенцию можно пометить как предупреждение через `"severity": "warning"`; флаг `--error-on-warnings` для CI возвращает им статус ошибок. Рядом лежат два скилла. `konsistent-config` помогает агенту составить или изменить `konsistent.json`. `konsistent-fix-violations` запускает проверку, разбирает нарушения вместе с вами и правит код после вашего согласия.
Для кого. Мейнтейнерам монорепозиториев на TypeScript с десятком однотипных пакетов, в которых каждый обязан экспортировать один и тот же набор имен.
Подходит, если
- В монорепозитории растет число пакетов провайдеров, и CI должен падать, если у нового нет `src/index.ts` или нужного типа
- Агент пишет новый адаптер, и надо поймать, что он не унаследовал базовый класс, как остальные адаптеры
- Нарушений набралось много, и вы хотите решить с агентом, что правится в коде, а что в самом правиле
- В pull request нужны аннотации прямо на диффе или таблица нарушений в комментарии
Не подходит, если
- Нужна проверка стиля, неиспользуемых переменных или лучших практик внутри файла: этим занимаются ESLint, Biome и oxlint
- Код написан не на TypeScript: проверки строятся на экспортах и импортах TypeScript
- Проект маленький, в нем один пакет и нечего сверять между собой
Пример запроса к агенту
Составь konsistent.json для моего монорепозитория: у каждого пакета в packages должны быть src/index.ts и экспорт типа Provider, затем запусти проверку и разбери нарушенияОграничения
- На npm пакет вышел в бета-версии (1.0.0-beta.13), поэтому формат `konsistent.json` и правила могут меняться.
- По умолчанию `konsistent.json` ищется в корне проекта; если файл лежит в другом месте, нужен флаг `--config-path`.
- Без файла конфигурации запуск завершается сообщением, что файл не прочитан.
- Скилл `konsistent-config` намеренно составляет правила по преобладающим образцам кода, даже если часть файлов их нарушает: нулевой отчет не цель.
Как отключить. Уберите пакет командой `npm uninstall konsistent`, строку `konsistent` из `scripts` и файл `konsistent.json`. Скиллы удаляют из каталога скиллов агента.
Частые вопросы
Как установить konsistent?
Выполните `npm install konsistent --save-dev` (для pnpm `pnpm add konsistent --save-dev`, для Bun `bun add konsistent --dev`). Добавьте в `scripts` строку `"konsistent": "konsistent"` и запускайте `npm run konsistent`.
Чем konsistent отличается от ESLint?
ESLint проверяет код внутри файла, а konsistent сверяет структуру репозитория: наличие файлов, папок и экспортов в нужных местах. Запускать их стоит вместе.
Как подключить скиллы konsistent к агенту?
Выполните `npx skills add vercel-labs/konsistent --skill konsistent-config` для составления конфига и `npx skills add vercel-labs/konsistent --skill konsistent-fix-violations` для разбора нарушений.
Что делать, если нарушений слишком много?
Скорее всего, правило выбивается из кода: репозиторий не решил между двумя соглашениями. Выберите одно, обновите или смягчите правило и тогда правьте оставшийся код.
Как включить аннотации в GitHub Actions?
Ничего включать не надо: в GitHub Actions konsistent сам выводит аннотации `::error` и `::warning`, и нарушения видны прямо на диффе pull request. Формат можно задать флагом `--format`.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
CLI-инструментыЛинтер и форматтер для JavaScript и TypeScript без настройки, с готовыми профилями под десятки ИИ-агентов и редакторов
Скилл для агентов с конвенциями TypeScript: типы, дискриминированные объединения, функции, именование, структура, React и тесты, подгружается по темам
CLI на Rust для TypeScript и JavaScript: мертвый код, дубликаты, циклы, сложность и границы архитектуры по одному графу, есть MCP-сервер и скиллы
Скилл ставит набор правил Oxlint, которые ловят низкокачественные шаблоны в TypeScript и JavaScript, часто оставляемые генерацией кода
Три скилла и конфиг clippy: агент пишет, проверяет и переносит код на идиоматичный Rust, а правила проходят в CI
Задачи, документы, спецификации и решения проекта лежат файлами Markdown в репозитории, а агент читает их через CLI и MCP
Коротко о README
README объясняет пробел между линтерами стиля и структурой проекта, показывает установку, пример `konsistent.json` и вывод нарушений. Дальше идут команды, уровни серьезности, интеграция с CI и форматы вывода, а также две подсказки про скиллы для составления конфига и исправления нарушений.