- Зачем:
- линтер умел только вычитать маркеры, а текст без авторского голоса
палится не хуже текста с 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>
92 lines
8.8 KiB
Markdown
92 lines
8.8 KiB
Markdown
---
|
|
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-генерацией. Человек тоже может так писать.
|
|
- **Русский язык — приоритет.** База паттернов заточена под русскоязычный текст. Английские паттерны включены для смешанных текстов (технические статьи с англицизмами).
|
|
- **Не трогать содержание.** Скилл проверяет стиль и форму, не фактическую корректность.
|