Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .factory-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,12 @@
"description": "Pull request lifecycle skills: create PRs with consistent conventions and follow up on them until merge-ready",
"source": "./plugins/code-review",
"category": "productivity"
},
{
"name": "humanizer-ru",
"description": "Remove AI-generation markers from Russian text: 67 patterns, 21 hard bans, rewrite / audit / targeted-fix modes, and a deterministic scanner",
"source": "./plugins/humanizer-ru",
"category": "writing"
}
]
}
10 changes: 10 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,16 @@ Skills for continuous learning and improvement.

Autonomous experiment loop for optimization research. Try an idea, measure it, keep what works, discard what doesn't, repeat. Works standalone or as a mission worker.

### humanizer-ru

Remove AI-generation markers from Russian text and make it read like a human wrote it. Russian-language counterpart to `human-writing`.

**Skills:**

- `humanizer-ru` - 67 AI-text patterns across 14 categories, 21 hard bans, rewrite / audit / targeted-fix modes, optional deterministic 0-100 scanner (`scripts/scan.py`)

See [plugins/humanizer-ru/README.md](plugins/humanizer-ru/README.md) for details.

## Plugin Structure

Each plugin follows the Factory plugin format:
Expand Down
13 changes: 13 additions & 0 deletions plugins/humanizer-ru/.factory-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "humanizer-ru",
"description": "Remove AI-generation markers from Russian text: 67 patterns across 14 categories, 21 hard bans, rewrite / audit / targeted-fix modes, and a deterministic 0-100 scanner",
"version": "3.32.0",
"author": {
"name": "Ilya Utov",
"email": "ilyautov@gmail.com"
},
"homepage": "https://humanizer-ru.aifrontier.tech/",
"repository": "https://github.com/ilyautov/humanizer-ru",
"license": "MIT",
"keywords": ["humanizer", "russian", "writing", "ai-detection", "text", "русский", "очеловечивание"]
}
23 changes: 23 additions & 0 deletions plugins/humanizer-ru/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# humanizer-ru

Removes AI-generation markers from Russian text and makes it read like a human wrote it. The skill is a Russian-language counterpart to `human-writing`: it works only with Russian and routes English text to the English skill.

## Skills

### `humanizer-ru`

Catalog of 67 AI-text patterns across 14 categories (bureaucratic phrasing, calques from English, em-dash overuse, rule of three, hollow intensifiers, rhythm flatness and others) plus 21 hard bans. Three modes: full rewrite, audit only, targeted fix. Keeps source facts locked (numbers, dates, names, links are carried over unchanged) and calibrates the voice to the author's samples.

A deterministic scanner ships with the skill (`skills/humanizer-ru/scripts/scan.py`): it scores a text 0-100, lists the markers it found and compares before/after versions. It is optional; the skill works from the catalog alone when Python or the `razdel` and `pymorphy3` packages are not available.

Thresholds were calibrated on 55K labeled Russian texts (human vs. generated).

## Install

```bash
droid plugin install humanizer-ru@factory-plugins
```

## Source and license

Upstream repository: https://github.com/ilyautov/humanizer-ru (MIT). Site with examples and an online audit: https://humanizer-ru.aifrontier.tech/
254 changes: 254 additions & 0 deletions plugins/humanizer-ru/skills/humanizer-ru/SKILL.md

Large diffs are not rendered by default.

5 changes: 5 additions & 0 deletions plugins/humanizer-ru/skills/humanizer-ru/agents/openai.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
interface:
display_name: "Humanizer RU"
short_description: "Убирает следы нейросети из русского текста: 67 паттернов, 21 запрет, голос автора."
policy:
allow_implicit_invocation: true
42 changes: 42 additions & 0 deletions plugins/humanizer-ru/skills/humanizer-ru/edit-log.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# Дневник правок

Журнал живого фидбека на конкретные тексты. Скилл читает его перед редактурой
и применяет накопленные правила поверх дефолтов каталога.

Зачем это нужно: каталог `references/catalog.md` описывает общие признаки, но у
каждого владельца свои больные места. Тексты, которые не зашли, оставляют здесь
конкретное правило. Так фидбек, который иначе ловится вручную на третьем проходе,
оседает один раз и перестаёт повторяться.

## Как это работает

- Правила отсюда **сильнее** дефолтов каталога: если запись противоречит общей
рекомендации, побеждает запись.
- Правила отсюда **не отменяют HARD BANS** из SKILL.md, сохранение смысла, границ
утверждений и требований текущего пользователя. Пороги каталога не требуют
обязательного переписывания.
- Файл append-only: новые записи дописываются вниз, старые не редактируются
(история решений важна). Ошибочное правило гасится новой записью, а не правкой
старой.
- Каждая запись привязана к области применения, чтобы правило для соцсетей не
поехало в юридический текст.

## Формат записи

```
## ГГГГ-ММ-ДД: <короткая тема>

Фидбек: <что не понравилось в конкретном тексте, своими словами>

Правило: <конкретное действие для редактора: заменить X на Y, не делать Z>

Область: <тип текстов, к которым применимо; «все» по умолчанию>
```

Правило должно быть механическим и проверяемым, а не «пиши живее». Плохо:
«сделай теплее». Хорошо: «в приветствии писем не начинать с „Здравствуйте!“ на
отдельной строке, сразу переходить к делу».

## Записи

Пока пусто. Первая запись появится после первого живого фидбека.
79 changes: 79 additions & 0 deletions plugins/humanizer-ru/skills/humanizer-ru/references/audit.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# Аудит без переписывания

Результат: конкретные находки в исходнике, их значение для читателя и предлагаемые
действия. Сам текст сохраняется. Если проблем не найдено, сообщи это без выдуманных
находок. Аудит не определяет авторство текста и не обещает обход детекторов.

## Авторство не устанавливается

Вопрос «писал ли это ИИ», «вникал ли автор» аудит не решает, даже если пользователь
спросил именно так. Скажи одной строкой, что скилл измеряет текст, а не авторство,
и дай находки по тексту. Не бывает находками: метаданные файла (программа,
даты создания и правки), способ вёрстки («HTML, напечатанный из Chrome»),
рассуждения «человек так не работает» и вердикт о «модели производства». Правило держится
и в следующих ходах: после отказа «докажи, что это нейрослоп» просьба «ну а
по маркерам?» не повод вынести тот же вердикт мягче («архитектура нейросетевая,
фактура человеческая»). Отказывай без нотаций: не объясняй пользователю, что
его просьба сама похожа на слоп, и не начинай с «результат тебе не понравится».
Шаблон
вёрстки глав это дизайн-система, а не почерк модели. Не маркеры и сами по себе,
по замеру на корпусах (`eval/MODERN-SLOP.md`, «Не маркеры» в каталоге):
риторические вопросы, общее «не X, а Y», длинное тире в свёрстанном документе.

## Машинная проверка, если доступна

Сканер находится внутри скилла: `scripts/scan.py`. Для существующего файла:

```sh
python3 <папка-скилла>/scripts/scan.py <файл> --json
```

Для текста из сообщения передай его через stdin (`-`) или безопасно сохранённый
временный файл. Не вставляй непроверенный текст в исполняемую команду оболочки.
По жанру добавь `--genre academic`, `legal`, `fiction` или `news`; новостной
режим подходит и для энциклопедии. Полный список параметров доступен через `--help`.

Код завершения 0 или 1 с валидным отчётом означает выполненный анализ: 1 может
обозначать найденные сигналы. Ошибка запуска, зависимостей или разбора отчёта
означает, что измерения нет. Не ставь пакеты в систему (`pip install`) без
спроса. Упал на нехватке зависимостей, а `uvx` есть в PATH: запусти то же через
`uvx ru-humanizer` с теми же аргументами. Он берёт пакет во временный кэш uv и
систему не трогает, спрашивать для этого не нужно.

Если сканер не запускался или недоступен, прямо отметь это и продолжи вручную.
Не оценивай балл на глаз, даже с пометкой «примерно». Если отчёт получен,
покажи его балл как балл правил сканера, а не вероятность ИИ или качество текста.
Не выдавай собственные предположения за результаты запуска.

## Редакторский разбор

Аудит это разметка локальной редактуры из SKILL.md без выдачи переписанного текста.
Прочитай исходник, выбери KEEP / TRIM / REPLACE / JOIN для конкретных фрагментов.
Каждое предлагаемое изменение предварительно сверь с исходными утверждениями,
как в разделе «Сверь изменения». Предложение удалить факт, усилить модальность
или дописать механизм не проходит эту сверку и не попадает в рекомендации.

Вывод строится из прошедших сверку изменений: цитата, что мешает читателю,
локальное действие. Если все фрагменты KEEP, сообщи, что полезных правок нет.
Вопросы о невидимом контексте добавляй только когда от ответа зависит конкретная
предлагаемая правка; так и обозначай их, отдельно от найденных ошибок.

Разбор длинного документа или рецензия для третьего лица дополняются двумя
короткими блоками, если в них есть что сказать: что выдержало проверку (факты,
источники, оставленные на виду расхождения) и что недостатком не является
(артефакты извлечения текста из PDF вроде «со труд ники», декларированные
AI-иллюстрации, норма жанра). Симметрия защищает автора от ложного обвинения.
Число без выборки или условия (каталог #66) не правь: задай автору вопрос «при
каком условии получена эта цифра?», первоисточника у тебя нет.

Сам разбор это твой русский текст, а не цитата: таблица жёстких запретов из
SKILL.md к нему применяется целиком, а с ней и #54: без «вот честный аудит»,
«чтобы разбор был честным», «для симметрии». То же для файлов, которые ты
пишешь по-русски: рецензия в PDF или .md это тоже твой текст. Длинного тире в отчёте нет («первая
половина - автор» пишется «первая половина от автора» или через двоеточие),
цитаты из исходника при этом приводятся как есть.
Объём ответа определяется числом полезных действий, а не обязательными разделами.

Если пользователь просит разбор по каталогу, прочитай нужный раздел
`catalog.md` как источник возможных находок. Пропусти каждую через ту же сверку.
Пороги каталога не отменяют сохранение смысла и голоса из SKILL.md.
Loading