humanizer-ua
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 16 GitHub stars
Code Pass
- Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Редактура українського тексту: прибирає сліди ШІ, канцелярит, суржик і кальки, зберігаючи зміст і голос автора. 63 маркери, 30 заборон, сканер без залежностей.
Humanizer-UA
[ English ]
More skills: skills.sh/madeval
Український текст, який звучить як людина.
Скіл для агентів: редагує український текст, прибирає сліди ШІ, канцелярит, суржик, русизми й кальки. Зміст, факти й голос автора лишаються на місці.
github.com/MADEVAL/humanizer-ua · автор: Yevhen Leonidov
Мета
Мета скіла — живий і природний український текст.
Модель пише для найширшого читача. Людина пише для одного. Звідси й маркери: важливість замість факту, рівний ритм, декор, залишки чату.
Живий текст звучить як людина: у ньому чути конкретну думку, власний голос і ритм, що змінюється. Природний текст не має російського синтаксису, канцелярської обгортки й кальок, які видають машинний переклад.
Скіл не додає емоцій, жартів, оцінок чи фактів. Він прибирає те, що заважає тексту звучати по-людськи. Живість не дописують — її звільняють з-під обгортки.
Скіл не визначає авторство й не генерує текст заново: він редагує написане.
Що робить
- Знімає 30 жорстких заборон, 11 нормативних правил і працює з 80 маркерами у восьми групах.
- Тримає факт-замок: числа, дати, імена, цитати, умови й модальність не змінюються.
- Править точково: проблема в одному реченні не тягне переписування всього тексту.
- Враховує жанр: маркетинг, експертиза, діловий лист, новини, наука, документація, юридика, художній текст.
- Має сканер без залежностей: норма, стиль і структура окремими шкалами, 30 заборон, 11 нормативних правил, 33 маркери, метрики ритму.
- Не штрафує слабкий маркер, якщо в абзаці немає інших ознак.
- Перевіряє себе: тестовий корпус, рубрика, тести тригерів і CI-гейт.
Як це виглядає
Було:
У сучасному світі спільна робота над документами відіграє ключову роль. Варто зазначити, що даний інструмент являється комплексним рішенням, яке відкриває нові горизонти. Ми запустили спільні чернетки: двоє людей можуть редагувати документ одночасно, зміни видно одразу. Коментарі залишаються прив’язаними до речення.
Стало:
Ми запустили спільні чернетки. Двоє людей можуть редагувати документ одночасно, зміни видно одразу. Коментарі залишаються прив’язаними до речення.
Знято шість жорстких заборон. Нового факту не додано, решта тексту вціліла.
Аудит того самого тексту:
ЧИСТОТА: 52/100 [marketing] · рерайт
норма: 75/100 (2 помилок)
стиль: 32/100 (4 зауважень)
структура: 100/100 (0 зауважень)
факт-ризик: 0/100 (0 пунктів на перевірку)
слів: 40
покриття: 33 із 80 маркерів + 30 заборон
НОРМА (виправити обов'язково):
✖ HB05 «Являється» ×1 (рядок 1)
⚠ HB04 «Даний / дана / дане» ×1 (рядок 1)
ЖОРСТКІ ЗАБОРОНИ:
✖ HB01 «У сучасному світі» ×1 (рядок 1)
✖ HB02 «Варто зазначити» ×1 (рядок 1)
✖ HB06 «Відіграє роль» ×1 (рядок 1)
✖ HB08 «Нові горизонти» ×1 (рядок 1)
Сканер рахує спрацювання правил. Це не ймовірність ШІ й не вирок про авторство. Нормативна шкала має вето: текст із помилкою не стає «чистим», навіть якщо стиль ідеальний. Автоматично перевіряються 33 із 80 маркерів; решту агент проходить за каталогом очима, тому 100/100 — це «чисто за правилами сканера», а не повна гарантія.
Встановлення
git clone https://github.com/MADEVAL/humanizer-ua.git
cd humanizer-ua
Скіл лежить у skills/humanizer-ua/. Скопіюй папку туди, де агент шукає скіли:
# OpenCode, у межах проєкту
mkdir -p .opencode/skills
cp -r skills/humanizer-ua .opencode/skills/
# OpenCode і Cursor, спільний каталог
mkdir -p .agents/skills
cp -r skills/humanizer-ua .agents/skills/
# Claude Code
mkdir -p ~/.claude/skills
cp -r skills/humanizer-ua ~/.claude/skills/
# Codex
mkdir -p ~/.codex/skills
cp -r skills/humanizer-ua ~/.codex/skills/
Глобальні каталоги теж працюють: ~/.config/opencode/skills, ~/.cursor/skills, ~/.claude/skills, ~/.codex/skills.
Виклик
/humanizer-ua
[текст]
Або словами: «олюдни цей текст», «прибери сліди ШІ», «вичитай і прибери канцелярит», «зроби живішим, але нічого не додавай».
Режими
| Режим | Коли | Результат |
|---|---|---|
| Редактура | «олюдни», «перепиши», «вичитай» | Чистовик і 1–2 рядки службових позначок |
| Аудит | «перевір», «знайди маркери» | Звіт, текст не змінюється |
| Точкова правка | «прибери тільки канцелярит» | Лише названа категорія |
| Власна чернетка | без прохання, мовчки | Агент перевіряє власний український текст; чужий не чіпає |
| Голос за зразками | автор дав 2–3 тексти | Профіль голосу, заміни в його межах |
Сказав «не прав» — режим «Власна чернетка» вимкнено до кінця розмови.
Сканер
python3 skills/humanizer-ua/scripts/scan.py стаття.txt --genre marketing
python3 skills/humanizer-ua/scripts/scan.py стало.txt --before було.txt
python3 skills/humanizer-ua/scripts/scan.py стаття.txt --json
python3 skills/humanizer-ua/scripts/scan.py стаття.txt --min-score 60
Сканеру потрібен лише Python 3.9+. Без pip install, моделей і мережі. На Windows викликай python, а не python3.
Перевірки й утиліти
| Команда | Що захищає |
|---|---|
validate_package.py --full |
Усі перевірки одним запуском |
scan_gate.py статті/ --min-score 60 |
CI-гейт: падає, якщо хоч один файл нижче порогу |
lint_skill.py |
Структура скіла, биті посилання, таблиці, ID, версія |
check_examples.py |
Приклад аудиту в README збігається з реальним сканером |
install_smoke.py |
Скопійований скіл працює без репозиторію навколо |
build_release_zip.py |
ZIP із SKILL.md у корені, без __pycache__ |
export_rules.py |
JSON-експорт правил для інтеграцій і веб-демо |
self_scan.py |
Власна проза скіла не містить жорстких заборон |
bump_version.py 1.3.0 |
Синхронна версія в усіх маніфестах і CHANGELOG |
test_rules.py |
Кожне з 63 правил має позитивний приклад |
test_scan.py |
Сканер, CLI, факт-замок і метрики |
eval/run_triggers.py |
Опис скіла не втратив тригери й винятки |
Як працює
0. Межі → що можна чіпати, що ні
1. Діагностика → сканер + читання цілком
2. Розмітка → KEEP / CUT / TRIM / REPLACE / JOIN / SPLIT
3. Правка → жорсткі заборони → A–H
4. Факт-замок → числа, імена, умови, модальність
5. Свіжа вичитка → незалежне рев’ю
6. Повторний скан → два кола максимум
7. Видача → текст, максимум два рядки службового
Головне правило: видаляй, не дописуй. Емоції, оцінки, жарти, образи й факти, яких немає в джерелі, не додаються.
Принципи
- Видаляй, не дописуй. Маркер знімається видаленням обгортки або перебудовою з тих самих слів.
- Факт сильніший за стиль. Втрачене число — провал, навіть якщо текст звучить краще.
- Локальна правка. Не переписуй структуру, якщо проблема в одному реченні.
- Жанр визначає межі. Те, що вада в блозі, може бути нормою в науці чи юридиці.
- Одна ознака ще не маркер. Маркер — це щільність і автоматичність.
- Не детектор. Скіл не обіцяє проходження ШІ-детекторів і не вставляє одруки.
- Голос автора — частина змісту. Не вирівнюй живий текст під «ідеальний».
Архітектура
Humanizer-Ukraine/
├─ skills/humanizer-ua/
│ ├─ SKILL.md # процедура й маршрутизація
│ ├─ edit-log.md # правила з живого відгуку
│ ├─ references/
│ │ ├─ catalog.md # 80 маркерів, приклади
│ │ ├─ hard-bans.md # 30 заборон, жанрові винятки
│ │ ├─ surzhyk.md # русизми, кальки, керування
│ │ ├─ wordlist.md # перегріті слова й кліше
│ │ ├─ typography.md # лапки, апостроф, тире, числа
│ │ ├─ registers.md # жанрова матриця
│ │ ├─ voice.md # голос за зразками
│ │ ├─ review.md # бриф для свіжої вичитки
│ │ ├─ audit.md # формат аудиту
│ │ └─ scan.md # CLI і ручний fallback
│ └─ scripts/
│ ├─ scan.py # тонка CLI-обгортка
│ ├─ humanizer_ua/ # рушій
│ │ ├─ text.py # читання, маскування, абзаци, мова
│ │ ├─ rules.py # 30 заборон + 33 маркери
│ │ ├─ norm.py # 11 нормативних правил
│ │ ├─ context.py # словники-винятки й впевненість
│ │ ├─ markers.py # зіставлення й слабкі сигнали
│ │ ├─ metrics.py # ритм, структура, оформлення
│ │ ├─ facts.py # факт-замок і реєстр
│ │ ├─ scoring.py # три шкали, плотність, пороги
│ │ ├─ score.py # звіт, формати
│ │ ├─ cli.py # argparse
│ │ └─ version.py # версія пакета
│ ├─ scan_gate.py # CI-гейт по файлах
│ ├─ lint_skill.py # лінт скіла
│ ├─ check_examples.py # README ↔ сканер
│ ├─ install_smoke.py # перевірка копії
│ ├─ self_scan.py # перевірка власної прози
│ ├─ build_release_zip.py # ZIP для Claude.ai
│ ├─ export_rules.py # JSON для інтеграцій
│ ├─ bump_version.py # синхронна версія
│ ├─ test_scan.py # 32 тести CLI/фактів/шкал
│ └─ test_rules.py # 30 тестів: покриття й калібрування
├─ dist/
│ └─ rules-ua.json # JSON-експорт правил для інтеграцій
├─ eval/
│ ├─ corpus/ai/ # тексти з маркерами
│ ├─ corpus/human/ # природні тексти
│ ├─ cases.jsonl # пари «було → стало»
│ ├─ rubric.md # оцінювання
│ ├─ triggers.json # покриття опису
│ ├─ run_eval.py
│ └─ run_triggers.py
├─ commands/ # /humanize, /audit
├─ scripts/validate_package.py
├─ .github/workflows/ci.yml # перевірки на push і PR
├─ .claude-plugin/
├─ .cursor-plugin/
└─ README.md
Eval
python3 eval/run_eval.py
Перевірка відповідає на три питання:
- чи отримують ШІ-тексти нижчий бал, ніж людські;
- чи зберігають тестові пари обов’язкові факти;
- чи не вважає факт-замок втраченим те, що мусить залишитися.
Корпус маленький: 3 ШІ-тексти, 2 людські, 10 тестових пар. Це регресійний тест, а не доказ якості на будь-якому тексті.
Межі
- Сканер евристичний: він не розуміє іронію, цитати й контекст.
- Бал не є ймовірністю ШІ.
- Корпус маленький і нерепрезентативний.
- Скіл не обіцяє проходження детекторів і не робить текст «непомітним».
- Живість не вимірюється балом. Її видно, коли читаєш уголос.
Ліцензія
MIT. Див. LICENSE.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found