Files
dotfiles/agents/.agents/skills/ai-text-lint/SKILL.md
T
Dmitriy DementievandClaude 061a8d062b feat(skills): ai-text-lint ловит потерю голоса и делает самоаудит
- Зачем:
  - линтер умел только вычитать маркеры, а текст без авторского голоса
    палится не хуже текста с em dash'ами: после чистки оставался
    безлико правильный результат.
  - у прогона не было критерия завершения, поэтому проверка сводилась
    к тому, что бросилось в глаза.
- Что:
  - T03 развёрнут в три срабатывания (перечисление без вывода, безличные
    конструкции, абстрактная оценка) с требованием назвать, что конкретно
    добавить, вместо совета «добавить позицию автора».
  - добавлен шаг самоаудита поверх закрытого каталога: находки X01, X02
    с тестом «нельзя записать ни под один ID» и разрешением нулевого
    результата.
  - Шаг 2 получил критерий «каждый паттерн применён к тексту», quick scan
    сведён к паттернам с механической детекцией.
  - S04 стал единственным владельцем однородности ритма; удалены дубль
    T03b, неоперационализируемый T03e, шаг «Ответить на вопросы» и девять
    перефразировок одной ветки в description.
- Проверка:
  - тестов на скиллы в репозитории нет, прогон ручной: вызвать скилл
    на абзаце AI-прозы и на коротком сообщении в мессенджер.
  - git show --stat HEAD: SKILL.md и references/patterns.md.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-21 10:35:34 +03:00

8.8 KiB

name, description
name description
ai-text-lint Ищет в тексте признаки 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-генерацией. Человек тоже может так писать.
  • Русский язык — приоритет. База паттернов заточена под русскоязычный текст. Английские паттерны включены для смешанных текстов (технические статьи с англицизмами).
  • Не трогать содержание. Скилл проверяет стиль и форму, не фактическую корректность.