--- name: ai-text-lint description: "Ищет в тексте признаки AI-генерации (slop) и выдаёт отчёт с цитатами и severity, не переписывая текст. Используй, когда пользователь просит: проверить или пролинтовать статью, письмо, сообщение или резюме перед публикацией или отправкой; убрать AI-стиль, гуманизировать текст, вернуть ему авторский голос; быстро глянуть короткий текст на явные маркеры." --- # AI Text Lint Скилл для проверки текста на slop — типичные признаки AI-генерации. Работает как линтер: анализирует текст, находит конкретные проблемы, выдаёт отчёт. Не переписывает текст автоматически — решение о правках остаётся за пользователем. ## Принципы работы 1. **Только диагностика.** Скилл выдаёт отчёт, а не переписанный текст. Пользователь сам решает, что исправлять — и по его просьбе можно помочь с конкретными находками точечно. Не согласен с находкой — объяснить, почему она отмечена, и принять его решение. 2. **Конкретика.** Каждая находка — точная цитата из текста + объяснение, почему это маркер + вариант замены или рекомендация. 3. **Контекстуальность.** Не все паттерны одинаково критичны. Em dash в статье на Хабре — мелочь. Em dash в Slack-сообщении — красный флаг. Severity зависит от контекста. 4. **Без паранойи.** Одиночное срабатывание — не приговор. Проблема в кластерах: три-четыре маркера в одном абзаце. ## Workflow ### Шаг 1: Определить контекст Спросить пользователя (если не очевидно из разговора), для чего текст: - **article** — статья, блог-пост, документация (Хабр, README, техническая проза) - **message** — переписка с коллегами (Slack, Telegram, email) - **resume** — резюме, сопроводительное письмо Контекст влияет на severity паттернов. Severity для каждого паттерна указана в таблице внутри его описания в `references/patterns.md` (колонки article / message / resume). ### Шаг 2: Прогнать текст Используя базу паттернов из `references/patterns.md` (в папке этого скилла), пройтись по тексту и для каждой находки зафиксировать: - Какой паттерн сработал (ID и название) - Точная цитата из текста (выделить проблемный фрагмент) - Severity в данном контексте (🔴 high / 🟡 medium / 🟢 low) - Почему это маркер (коротко, одно предложение) - Что можно сделать (конкретная рекомендация или вариант замены) **Готово, когда каждый паттерн каталога применён к тексту.** Не «прочитал и выписал, что бросилось в глаза», а прошёлся по всем ID из `references/patterns.md`. Применён не значит обязан сработать. Паттерн без срабатываний в отчёт не попадает, паттерн вне контекста (R\* на не-резюме, структурные — на трёх предложениях) отмечается неприменимым. Натягивать срабатывание, чтобы проход выглядел полным, хуже, чем пропустить: см. Принцип 4. ### Шаг 3: Самоаудит поверх каталога Каталог закрытый, а slop изобретателен. Отложить список находок и перечитать текст с одним вопросом: **что ещё здесь выдаёт AI, помимо уже найденного?** Находка засчитывается, только если её **нельзя** записать ни под один ID каталога. Если фрагмент уже выписан на Шаге 2 — это не новая находка, а переформулировка старой. Такие находки нумеровать `X01`, `X02`, помечать «вне каталога» и включать в отчёт наравне с каталожными. **Ноль находок — нормальный и частый исход.** На тексте, который каталог покрыл хорошо, X-находок не должно быть вовсе. Вопрос Шага 3 поставлен открыто и не подразумевает, что ответ есть. Если самоаудит дал устойчивую находку (видно на разных текстах, формулируется как правило) — сказать об этом пользователю после отчёта: это кандидат в `references/patterns.md`. ### Шаг 4: Сформировать отчёт Формат отчёта: ``` ## Результаты проверки **Контекст:** [article / message / resume] **Общая оценка:** [краткий вердикт — сколько находок, общее впечатление] ### Находки 1. 🔴 **[ID паттерна]: [Название]** > [цитата из текста, проблемный фрагмент выделен **жирным**] Почему: [объяснение] Рекомендация: [что сделать] 2. 🟡 **[ID паттерна]: [Название]** ... ### Статистика - 🔴 High: N - 🟡 Medium: N - 🟢 Low: N ### Общие рекомендации [2-3 предложения о том, на что обратить внимание в первую очередь. Только для article и только если находки есть: если все они на удаление, назвать хотя бы одно место, где тексту не хватает голоса — убрать маркеры это половина работы. Для message и resume голос не требуется, там этот пункт пропускается] ``` ### Режим quick scan Если пользователь просит быстро проверить (короткий текст, сообщение перед отправкой, «глянь быстро») — показать только 🔴 high находки, без 🟡 и 🟢. Формат: короткий список без развёрнутых объяснений. Полный отчёт — только по запросу. В этом режиме исчерпывающий проход не нужен: Шаг 3 пропускается целиком, а на Шаге 2 достаточно паттернов с механической детекцией (P\*, L01, L02, L04, L05, S01, S03, T04, C01, C02) — они ловятся поиском по подстроке и дают почти весь 🔴 high на коротком тексте. ## Важно - **Не быть AI-детектором.** Скилл не определяет, написан ли текст AI. Он ищет стилистические паттерны, которые _ассоциируются_ с AI-генерацией. Человек тоже может так писать. - **Русский язык — приоритет.** База паттернов заточена под русскоязычный текст. Английские паттерны включены для смешанных текстов (технические статьи с англицизмами). - **Не трогать содержание.** Скилл проверяет стиль и форму, не фактическую корректность.