antislop — фильтр, который убирает «ИИ-шлам» из интерфейсов, текста и кода
📂 Исходный код на GitHubПравила для ИИ-кодинг-агента: набор из шести agent skills, который отсекает generic «ИИ-шлам» в UI, тексте и комментариях к коду. Фильтр, а не стайлгайд: цвета, шрифты и layout он не диктует, а направление приходит из вашего DESIGN.md. Поддерживает Claude Code, Codex, Antigravity, OpenCode, Cursor, Cline, Amp, Gemini CLI, Copilot, Kimi Code, Pi и Oh My Pi. MIT.
Каждый ИИ-кодинг-агент выдаёт узнаваемый почерк: логотип со искрой, плашка «NEXT-GEN AI 2.0 beta» над заголовком, фальшивый терминал с задержкой 0.0001ms, три одинаковые карточки фич, круглые пилюли со стрелками. Скриншот выглядит прилично, но это не дизайн, а штамп. Репозиторий miqdadbadjuber/anti-slop собран именно для борьбы с этим: это набор агентных навыков, который заставляет модель писать и рисовать конкретно, а не «в стиле ИИ».
Главная идея проекта: antislop — это фильтр, а не стайлгайд. Он не предписывает цвета, шрифты или вёрстку. Он отсеивает технику без цели и требует, чтобы результат оставался живым. Направление приходит из вашего DESIGN.md, красоту придумываете вы сами, а проект только убирает мусор.
Что внутри
Ядро — 38 обязательных правил (R-01 … R-38), разложенных по трём уровням строгости:
| Уровень | Что означает |
|---|---|
| Hard Gate | Абсолютный запрет, без исключений: честность, работоспособность, доступность |
| Purpose-Gate | Техника разрешена, но агент обязан письменно объяснить, зачем она здесь |
| Quality Locks | Требования согласованности: единый радиус, осмысленные CTA, ритм секций |
Плюс Liveliness Toolkit с тремя регуляторами (ENERGY / RHYTHM / MOTION) и Design Read, и Delivery Gate — обязательный отчёт PASS/FAIL из четырёх блоков, который запускается до сдачи любой работы.
Логика уровней показательна. Правило R-17 запрещает статистику без реального источника: если настоящих данных нет, не показывайте цифры вообще. R-18 запрещает выдуманные отзывы с AI-аватарами и случайными именами. R-25 требует контраста не ниже WCAG AA. R-26 запрещает кнопки, которые ничего не делают. R-35 требует реально собрать и прокликать проект, а не отдать непроверенный код. Это не «сделай красиво», это «не ври и не оставляй мёртвые элементы».
Правило R-02 отдельно запрещает символ em dash в тексте, который пишет агент. Запрет с юмором, но механически это надёжный способ выбить из модели фирменную типографику с длинными тире.
Шесть навыков
Ядро загружается всегда, остальные — только когда задача их требует. Каждый навык это папка со SKILL.md по открытому стандарту Agent Skills, он ссылается на правила по номерам и не дублирует их.
| Навык | Про что | Версия |
|---|---|---|
antislop |
Ядро: правила, уровни, Delivery Gate, живость | v3.0.0 |
antislop-ui |
Вёрстка, цвет, компоненты, декор, движение | v2.2.0 |
antislop-copywriting |
Заголовки, CTA, тон, фейковые цифры, markdown-гигиена | v2.3.0 |
antislop-human |
Контраст, клавиатура, фокус, состояния | v2.4.0 |
antislop-layoutmobile |
Ресайз от телефона до десктопа, брейкпоинты, переполнение, тач-таргеты | v2.5.0 |
antislop-code |
Комментарии: вычистить generic-мусор, сохранить ценные, код не трогать | v3.1.0 |
Принцип аддитивности важен: добавление навыка не меняет ядро. Нужен UI — берите antislop-ui, нужна работа с текстом — antislop-copywriting, нужны комментарии — antislop-code. Если задача не подходит ни под что, ядро само по себе остаётся полноценным фильтром.
Три регулятора живости
Фильтр убирает мусор, но не может добавить энергию: убрав всё, модель заполнит пустоту своим самым generic-результатом. Поэтому Liveliness Toolkit работает не запретами, а требованиями. Каждый дизайн обязан явно выставить три регулятора и держать их от первой секции до последней:
| Регулятор | 1 (спокойно) | 2 (сбалансированно) | 3 (смело) |
|---|---|---|---|
| ENERGY | Linear, GOV.UK | Stripe, Vercel | Awwwards, агентские портфолио |
| RHYTHM | равномерная сетка | единообразие с парой разрывов | асимметрия, смешанные композиции |
| MOTION | только hover | scroll-reveal, переходы | параллакс, закрепление, хореография |
Почему уровней именно три, а не десять: модель и ревьюер надёжно отвечают на вопрос «секция однообразная или разнообразная», но не могут надёжно сказать, «это шесть или семь». Три уровня делают живость проверяемой.
Поверх регуляторов лежат пять рычагов: один фокусный элемент на экран, иерархический контраст, пробелы как структура, один сдержанный акцент и identity motif — узнаваемый повторяющийся приём. Ноль акцентов выглядит стерильно, акцент везде — это уже шлап.
Два режима работы
Агент в начале сессии спрашивает, когда применять antislop:
- DURING — вести работу по правилам в процессе, закончить Delivery Gate. Для нового UI.
- AFTER — провести аудит готового: пронумерованный список находок в файле
anti-slop/audit-001-YYYY-MM-DD.md, каждая ссылается на violated rule и получает приоритет по уровню (Hard Gate = HIGH, Purpose-Gate = MEDIUM, Quality Locks = LOW). Вы выбираете номера, которые чинить, агент правит только их и пишет follow-up отчёт.
Delivery Gate
Перед сдачей агент обязан выдать PASS/FAIL отчёт, где каждый PASS подкреплён конкретным доказательством, а любой FAIL означает «сначала починить, потом сдавать». Отчёт из четырёх блоков: Hard Gate (18 абсолютных вопросов), Purpose-Gate (12 техник с требованием письменного обоснования), Liveliness (7 вопросов, все ответы «да») и Craftsmanship с Quality Locks.
Число 18 в первом блоке — не совпадение: там 18 правил Hard Gate, и каждое проверяется напрямую. Второй блок повторяет 12 правил Purpose-Gate. Блок Liveliness требует, чтобы регуляторы были выставлены и заявлены до генерации, чтобы на каждом экране был фокус, а пробелы работали структурой, а не остатком.
Гейт нельзя делегировать и нельзя заменить: если сессию ведёт другой workflow, его собственный wrap-up отчётом не считается.
Установка
Рекомендуемый путь — инсталлятор. Он задаёт четыре вопроса (какие доп-навыки, куда ставить, какие агенты, ставить ли) и раскладывает папки. Это единственный путь, который при установке в проект пишет указатель в AGENTS.md, благодаря которому antislop перечитывается каждую сессию:
npx antislop-ai
Через каталог skills.sh копируются те же папки, но без указателя:
npx skills add miqdadbadjuber/anti-slop
Плагины ставятся из того же репозитория: у Claude Code сначала добавляется маркетплейс, потом плагин; у Antigravity, Cursor, Kimi Code, Cline, Codex и Oh My Pi своя дверь. У Pi это вообще не плагин, а пакет: ключ pi в корневом package.json указывает на папку skills/, ставится через pi install git:github.com/miqdadbadjuber/anti-slop.
Отдельный вариант — один файл antislop.md, который скачивается вручную и работает в любом чате, включая телефон:
curl -o antislop.md https://raw.githubusercontent.com/miqdadbadjuber/anti-slop/main/antislop.md
Куда именно лягут папки:
| Агент | Папка |
|---|---|
| Claude Code | .claude/skills/ |
| Codex | .codex/skills/ |
| Antigravity | .agents/skills/ |
| OpenCode | .opencode/skills/ |
| Cursor | .cursor/skills/ |
| Cline | .cline/skills/ |
| Amp | .agents/skills/ |
| Gemini CLI | .gemini/skills/ |
| Hermes | .hermes/skills/ |
| GitHub Copilot | .agents/skills/ |
| Kimi Code | .agents/skills/ |
| Pi | .pi/skills/ |
С Antigravity, Copilot, Kimi Code и Amp папка общая, инсталлятор пишет один раз. Hermes после установки в проект требует отдельный hermes skills trust, Pi спрашивает о доверии проекту при первом запуске и запоминает ответ через /trust.
Обновление
Сам antislop себя не обновляет. Для первых двух путей есть короткая команда:
npx antislop-ai --update
Она заменяет все найденные папки antislop в проекте и в домашней директории, печатает, какой релиз заменила, и ничего не спрашивает. Плагины обновляются командами самого агента: claude plugin update antislop@anti-slop, codex plugin marketplace upgrade anti-slop, cline plugin install ... --force, для Oh My Pi это omp plugin marketplace update плюс omp plugin upgrade. Пакет Pi обновляется через pi update --extensions, потому что его объявление лежит в настройках Pi, а не в папке навыков.
Навыки читаются на старте сессии, поэтому после обновления нужна новая. Текущий релиз смотрите на странице releases или в файле VERSION внутри установленной папки.
Честная граница
Фильтр не превращает работу в дизайн. Удаление мусора не открывает хороший дизайн, оно оставляет пустоту, и живость приходится добавлять намеренно. Правило R-37 отражает это буквально: если дизайн сделан без направления, результат помечается как «draft without direction» с честными значениями регуляторов ENERGY 1 / RHYTHM 1 / MOTION 1 и не выдаётся как готовый продукт.
Сам проект тоже честен про свои пределы: ядро не может придумать направление, и об этом написано прямо. Подробная инструкция с нуля лежит в GUIDE.md, история релизов и планы — в ROADMAP.md, лицензия MIT — в LICENSE.
Проект написан на JavaScript (инсталлятор на npx), распространяется под MIT и принимает issue: нашли новый паттерн ИИ-шлама, правило, которое что-то пропускает, или баг в инсталляторе — пишите в issues.