Files
dotfiles/agents/.agents/skills/ai-text-lint/SKILL.md
T
Dmitriy DementievandClaude 12a8d419ec refactor(skills): ai-text-lint переписан как оптика из пяти линз
- Зачем:
  - каталог из 29 паттернов писался, когда модели были слабее; сейчас
    потребители скилла — Opus 5 и GPT 5.6 Sol, которые знают эти правила
    по умолчанию, и 578 строк платили контекстом за no-op.
  - каталог закрыт: он стареет вместе со slop'ом и провоцирует checklist
    theater вместо суждения.
- Что:
  - references/patterns.md удалён, 29 ID сведены к пяти линзам:
    Клавиатура, Голос, Решётка, Вода, Ассистент; скилл ужался с 661
    строки до 145.
  - severity 29x3 сжата в профили трёх сред: красные ячейки
    группируются по среде, а не по паттерну, плюс «не X, а Y» везде.
  - основным режимом стала правка, отчёт вынесен во вторую ветку;
    Голос не правится молча и предъявляется первым, потому что требует
    мнения, случая и цифр автора, которых у скилла нет.
  - каталожную проверку заменил гейт человеческого дубля, плотность
    переведена из гейта в интерпретацию вердикта.
- Проверка:
  - слепой прогон новой версии на трёх входах: AI-проза для статьи,
    AI-сообщение в мессенджер, живое человеческое сообщение.
  - на человеческом тексте ноль ложных находок; десять дефектов
    инструкции, найденных прогоном, исправлены до коммита.

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

146 lines
18 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: ai-text-lint
description: "Оптика для вычитки текста на slop — признаки AI-генерации. По умолчанию правит текст, по запросу выдаёт отчёт с находками. Используй, когда пользователь просит: применить скилл и внести правки, вычистить AI-стиль, гуманизировать текст, вернуть авторский голос; проверить или пролинтовать статью, письмо, сообщение или резюме перед публикацией; быстро глянуть короткий текст на явные маркеры."
---
# AI Text Lint
Оптика для вычитки готового текста. Скилл вызывается вручную и намеренно: держать эти линзы в голове во время письма — значит тратить внимание на форму вместо смысла. Сначала текст пишется, потом прогоняется.
## Рамка
Один вопрос порождает всё остальное:
> Похоже, что этот текст **набрал руками** вот **этот человек** вот в **эту среду**?
Пять линз — пять способов, которыми ответ бывает «нет».
## Линзы
### Клавиатура — набрал ли это человек руками?
Стоимость набора. Символ, который требует лишнего движения и ничего не даёт взамен, человек не ставит: em dash (Alt+0151), «ё» в дальнем углу, ёлочки, неразрывный пробел, троеточие одним символом, безупречно расставленные запятые в чате. Модель ставит всё это по умолчанию, потому что училась на отредактированных текстах.
Линза генеративна: она порождает не список символов, а вопрос «сколько усилий стоило это набрать». Новый типографский изыск попадёт под неё без обновления скилла.
Среда решает всё. В Telegram и Slack автозамены нет, поэтому em dash там — чужой след. В статье текст прошёл через редактор с автозаменой, поэтому **в article клавиатура не находка вообще**, кроме случая, когда точно известно, что текст набирался в plain-text.
### Голос — этот ли человек говорит?
Есть ли в тексте автор. Признаки отсутствия: предмет описан со стороны, позиция не занята, критика обёрнута в два слоя позитива, плюсы и минусы разложены симметрично и вывода не следует, ссылка на авторитет размыта («эксперты считают»), оценка навешена хвостовым оборотом («...значительно упростив оркестрацию») вместо отдельной мысли, слеш вместо выбора («удалённо/гибрид»). Отдельный случай — безличность там, где уместно «я» или «мы»: «рекомендуется использовать пул соединений» вместо «мы держим пул на 20, больше упирается в базу».
**Голос — единственная линза, которая правится добавлением, а не вычитанием.** Добавить нужно то, чего у скилла нет: мнение автора, случай из его практики, его цифру, его сломанный прод. Поэтому Голос никогда не чинится молча — см. «Режим правки».
### Решётка — рука так ровно не кладёт
Неестественно ровная сетка на любом уровне: предложения внутри абзаца, абзацы, пункты списка, разделы. Живой текст рваный: где-то проваливается в детали, где-то проскакивает тему одной строкой.
Одна цифра, чтобы линза не была вкусовщиной: считать длину однородных единиц **в словах**, брать **размах** (максимум минус минимум) и делить на среднее. Меньше 20% — решётка. Пять пунктов по 12, 11, 13, 12, 11 слов дают размах 17% — ровно подозрительно. Абсолютная длина роли не играет, важен разброс.
Второй слой — синтаксическая решётка: подряд идущие предложения по одной схеме, одинаковые зачины, буллеты «**жирный заголовок** — расшифровка» без единого исключения, форсированные триады («быстро, надёжно, удобно») там, где естественная группа — две вещи или четыре.
### Вода — прибавилось ли информации?
Тест: убрать фразу и посмотреть, изменилось ли что-нибудь. Не изменилось — вода. Ловит канцелярит («является», «данный», «в рамках», «осуществлять»), раздувание важности, impact-фразы без цифр, стопки баззвордов, связки-пустышки («кроме того», «вместе с тем», «стоит отметить»), ложные диапазоны («от стартапов до корпораций»), хеджирование в три слоя.
Одна конструкция заслуживает имени, потому что срабатывает почти безошибочно и в любой среде: **«не X, а Y»**, «не просто X, но и Y». Обещает контраст, доставляет пустоту.
### Ассистент — не чат-бот ли это отвечает?
Артефакты интерфейса помощника, протёкшие в авторский текст: церемония на входе («В современном мире...», «Давайте разберёмся»), церемония на выходе («Надеюсь, это поможет», «Буду рад помочь»), подведение итогов там, где никто не просил, декоративные эмодзи в заголовках и буллетах, вступительное двоеточие перед каждым списком.
Самая механическая из пяти, ловится почти поиском по подстроке.
## Калибровка по средам
Severity — свойство среды, а не находки. Одна и та же клавиатура: в статье не считается, в чате красный флаг.
**article** (статья, блог-пост, README) — вес на **Голосе** и **Воде**.
🔴 нет позиции автора · размытая ссылка на авторитет · раздувание важности · «В современном мире» · эмодзи в заголовках · буллеты «жирный заголовок + расшифровка»
**message** (Slack, Telegram, email коллеге) — вес на **Клавиатуре** и **Ассистенте**. Голос почти не считается: в чате нужна краткость, а не позиция.
🔴 em dash · сплошная «ё» · плотный канцелярит · «давайте разберёмся» · «буду рад помочь» · итоги в конце сообщения · связки «кроме того / вместе с тем» · безличное «рекомендуется»
**resume** (резюме, сопроводительное) — вес на **Воде** и **Решётке**.
🔴 impact-фраза без цифр · стопка баззвордов · однородные буллеты в опыте · причастные хвосты («...значительно упростив») · хеджирование · em dash · «ё»
**Везде 🔴:** «не X, а Y» / «не просто X, но и Y».
Красные списки — это калибровка, которую из общих соображений не вывести. Остальное взвешивать самому: насколько уверенное срабатывание и насколько мешает в этой среде. Механического правила понижения нет — уверенная находка по неглавной линзе спокойно бывает важнее вялой по главной.
Находка часто попадает сразу в две линзы («данный подход имеет как преимущества, так и ограничения» — это и Голос, и Вода). Назвать обе, вес ставить по той, что сильнее в этой среде.
## Гейт: человеческий дубль
Линзы открыты, поэтому находку легко выдумать. Гейт один и он обязателен:
> Находка засчитывается, только если получается написать правдоподобный человеческий вариант этого фрагмента, **заметно отличающийся** от исходного.
Не получается — находки нет, есть вкусовщина. Гейт бесплатный: дубль сразу становится правкой или рекомендацией.
**Плотность — не гейт, а интерпретация.** Одиночное срабатывание в живом тексте нормально, человек тоже так пишет. Кластер (три и больше маркера в абзаце, или одна линза ровным слоем по всему тексту) означает, что текст генерился, а не писался. Плотность влияет на вердикт и на то, насколько настойчиво предлагать правки, но не отменяет отдельную находку: одинокое «не просто X, а Y» остаётся красным.
## Как применять
**Шаг 1. Определить среду** — article / message / resume. Если не ясно из разговора, спросить: от среды зависит вся калибровка.
**Шаг 2. Пройти пятью линзами.** Готово, когда приложены все пять. Каждое срабатывание провести через гейт до того, как оно куда-то попадёт.
**Шаг 3.** Дальше — по тому, что просили.
### Режим правки (по умолчанию)
«Примени скилл», «вычисти», «поправь» — значит внести правки, а не отчитаться.
Четыре линзы правятся молча: **Клавиатура**, **Решётка**, **Вода**, **Ассистент**. Все четыре вычитают — убрать символ, разорвать ровность, выкинуть пустое. Ошибиться тут дёшево, и правка обратима.
**Голос не правится молча никогда.** Починить его — значит дописать мнение, случай или цифру, которых у скилла нет. Выдуманный инцидент в чужом тексте хуже любого slop'а.
Отдать результат строго в этом порядке:
1. **Голос — первым и всегда явно, даже когда находок нет.** Нет находок — одна строка «Голос: чисто». Есть — предъявить вопросом, по одному на находку: «второй абзац ничей: что ты про это на самом деле думаешь?», «тут просится цифра — какая была?».
2. Поправленный текст.
3. Что изменено — компактным списком по линзам, без цитат: «Клавиатура: 6 em dash → дефис, убрана „ё“. Вода: выкинуто „является ключевым фактором“, „кроме того“ ×2».
Порядок именно такой, потому что Голос — единственное, что требует действия от автора, а остальное уже сделано. В конце вывода, под простынёй правок, он теряется, и самая ценная линза пропадает молча.
**Правка не закончена, пока про Голос не сказано что-то одно: вопросы или «чисто».** Пропуск этой строки читается как «проверено, всё хорошо», хотя означает «забыли».
Границы правки: меняется форма, не смысл. Термины, числа, факты, ссылки — неприкосновенны. Авторские особенности (короткие рубленые фразы, мат, необычная пунктуация как приём) — это голос, а не slop, их не выравнивать.
### Режим отчёта (когда просят диагностику)
«Проверь», «что тут не так», «прогони и покажи находки» — значит не трогать текст.
```
## Результаты проверки
**Среда:** [article / message / resume]
**Вердикт:** [одно предложение: сколько находок, какая линза доминирует, кластер или разрозненно]
1. 🔴 **Голос** — [в чём проблема, полстроки]
> [цитата, проблемный фрагмент **жирным**]
Человек бы написал: [дубль]
2. 🟡 **Вода / Решётка** — ...
```
Порядок: по убыванию severity, внутри — по порядку в тексте. 🟢 включать, если их немного; при десятке мелочей свернуть в одну строку «плюс по мелочи: ...».
Находок нет — сказать это и перечислить, что проверялось: на чистом тексте автору важно видеть, что линзы приложены, а не что скилл поленился.
### Quick scan
Только по явной просьбе («глянь быстро», «на бегу»). Короткий текст сам по себе в этот режим не отправляет.
Линзы **Клавиатура** и **Ассистент**, только 🔴, списком без объяснений. На коротком сообщении они дают почти все находки и стоят один проход глазами.
Голос сюда не входит. Если быстрый скан просят на статье — сказать одной строкой, что Голос не смотрелся: в article это главная линза, и молчаливый пропуск создаёт ложное ощущение чистоты.
## Важно
- **Это не AI-детектор.** Скилл не определяет, писал ли текст AI. Он находит стилистику, которая _ассоциируется_ с генерацией. Живой человек пишет так же — особенно аккуратный человек после редактора.
- **Русский приоритетнее.** Линзы настроены на русский. В смешанной технической прозе английские маркеры («delve», «leverage», «testament to») ловятся теми же линзами, отдельного списка не нужно.
- **Содержание не трогать.** Форма, не фактическая корректность.
- **Последнее слово за автором.** Не согласен с находкой — объяснить, почему она отмечена, и принять решение автора.