humanizer-ru
Manifest valid★ 114AI agent skill: finds and removes traces of machine-generated content from Russian text. 38 patterns, 39 regex-markers with an evidence registry, blind paired runs, file layer for stripping C2PA/EXIF/XMP
humanizer-ru
Verifiable hygiene for chat insertions into Russian text
40 regex markers of chat-interface insertion artifacts, of which 38 have a complete record of evidence. Zero class A false positives across 12,314 non-carrier texts, class B — 8, i.e. 0.00065 (Wilson 95% CI 0.0003 to 0.0013; measured 04.09.2026 against a frozen preregistration). Every figure with its date and reproduction command — in the “Project numbers” section.
Insertion-artifact cleaning and fact reconciliation are also available for
English text: add --language en to humanizer-clean, humanizer-polish,
humanizer-facts or humanizer-report (or --language auto). This does not
enable the Russian stylistic heuristics and does not deliver authorship
verdicts; the profile preserves code, URLs, Markdown and verifiable facts.
The Russian profile remains the default for compatibility.
Who this is for
- Editors and instructors: check text before publishing:
humanizer-markers --scan файл.md. - Developers and CI: a gate for chat-interface insertions: action and contract.
- AI-assistant users: the same check inside an agent environment: MCP in a single config or demo.
Try it in 30 seconds
- Browser demo: nothing to install, text does not leave the browser.
- Report an issue or share your experience: issue in the repository; user text is not transmitted automatically by either the demo or the feedback collector.
- Check a specific insertion:
The shortest path “found → removed → verified”:
pip install humanizer-ru
humanizer-markers --scan input.txt # найти следы (rc=1 = находка)
humanizer-clean --in-place input.txt # снять поддержанные артефакты
humanizer-markers --scan input.txt # убедиться, что остатка нет (rc=0)
For English input add --language en; for mixed input — --language auto.
Cleaning does not rewrite style or meaning: verify the result manually and
use humanizer-facts diff до.txt после.txt --no-additions after
editorial changes.
python -c "open('primer.txt','w',encoding='utf-8').write('Согласно отчёту :contentReference[oaicite:3]{index=3}, рост заявок.\n')"
humanizer-markers --scan primer.txt; echo "rc=$?"
primer.txt:1 [contentReference] Согласно отчёту :contentReference[oaicite:3]{index=3}, рост заявок.
Найдено маркеров: 1.
rc=1
rc=1 means “markers found” — this is the expected result of a check against a sample with an insertion trace, not an error; rc=0 — no traces, rc=2 — input cannot be read (with --json the error envelope is printed to stdout).
Full scenario: find, clean safely, verify, report
-
Find an insertion artifact.
humanizer-markers --scan файл.mdprints findings with coordinates and class: A — hard copy-paste artifacts from chat interfaces, B — contextual indicators such as invisible characters and hidden layout; rc=1 means findings. The demo page does the same in the browser without installation and highlights the original ranges.humanizer-scancounts soft signs of machine writing: they calibrate the scope of the edit and do not deliver a verdict. -
Clean safely.
humanizer-clean --in-place файл.mdruns, in a single command, the before check, removal of supported artifacts, the after check and fact reconciliation; the original is kept in a.bakcopy. It removes invisible layer-A markers and visible class-A artifacts outside protected regions (code, frontmatter, URLs, HTML attributes, ZWJ emoji clusters). Style and meaning are not rewritten; unsupported findings such as class B, wiki markup and placeholders remain as explicit residue with exit code 1, and full cleanliness is not claimed. If the invariants of protected regions are violated, the result is not written. Invisible characters are also removed pointwise, by the risk classes from theinvisible_classesfield ofmarkers.v1.json:humanizer-markers --remove файл.mdremoves safe automatically, ambiguous — only with the explicit flag--include-ambiguous, dangerous shows and does not remove.humanizer-polishnormalizes typography without changing meaning; on markup use the modes--preserve-markupand--typographic. -
Check the diff.
humanizer-clean --diff файл.mdprints a unified diff before and after without writing; the--jsonenvelope carries the fact reconciliation and a list of residue. After manual editing, verify facts separately:humanizer-facts diff до.txt после.txt --no-additionscompares numbers, dates, URLs, names, quotes, negations and modalities; the lost and changed fields must be empty, otherwise restore the facts to the text. -
Report the result.
humanizer-report до.txt после.txtprepares a report on the edit with fact reconciliation. To pass a finding to a colleague usehumanizer-markers --scan --json файл.md: forward the file, line, marker, class and fragment fields, not the whole document. A class-A finding establishes the fact of insertion, not the author: mark the source that the artifact pointed to as “needs verification”. There are no authorship verdicts, neither in the tools nor in the skill — that is the Principal Rule of SKILL.md.
The scenario in a single block:
humanizer-markers --scan вставка.md # 1: найти; rc=1 = находки есть
humanizer-clean --diff вставка.md # 2: показать, что будет снято
humanizer-clean --in-place вставка.md # 2: очистить; оригинал в .bak
humanizer-facts diff вставка.md.bak вставка.md --no-additions # 3: сверить факты
humanizer-report вставка.md.bak вставка.md # 4: отчёт о правке
Details of commands and modes — in docs/USAGE.md.
MCP in a single config
{
"mcpServers": {
"humanizer-ru": {
"command": "uvx",
"args": ["--from", "humanizer-ru==3.36.4", "humanizer-mcp"]
}
}
}
The uvx form installs the pinned PyPI release and starts the stdio
server. With a local install, pip install humanizer-ru and running
humanizer-mcp are equivalent.
Matrix of verified capabilities and boundaries
No leadership claims: as of the recording date there is no comparable external research in the niche (see LEADERBOARD.md). Rows — what is actually verified by gates and tests of the cycle; boundaries — what the surface does not do.
| Surface | Known artifact check | Safe cleaning | Fact reconciliation | Machine envelope | Boundary |
|---|---|---|---|---|---|
CLI (humanizer-markers, -polish, -facts, -report) | yes, with coordinates and A/B classes | strip / --preserve-markup / --typographic modes with preservation invariants | humanizer-facts (fact categories) | --json, exit codes per contract | does not check semantics; no authorship verdicts |
MCP (humanizer-mcp, tool set from contract.v1.json) | same commands via stdio | same modes via humanizer_polish | humanizer_facts | JSON-RPC envelopes, isError per contract | text does not leave the process |
| Pages demo | yes, highlights original ranges in the browser | yes, preview + explicit Apply + Undo for supported artifacts | no | copying the report from a single result | offline in the browser, no installation |
| GitHub Action | insertion gate + auto-fix of the text path (class A) | action_fix outside fenced/code regions | no | gate rc | fix does not touch protected regions |
| Text skill (SKILL.md) | agent procedures per references | stylistic edits only on explicit request | no | no (skill prose) | no guarantees of naturalness or meaning preservation |
What this does NOT do
-
Rewritten text: the theoretical detection ceiling under paraphrase [bib:sadasivan2023]; paraphrase zeroes out detectors [bib:dipper2023].
-
Natively smooth machine text without artifacts: the documented boundary is the same [bib:sadasivan2023]; population-level detection is possible only on large samples [bib:chakraborty2023], and per-document verdicts are not claimed.
-
Short text: fewer signals than words, watermarks and statistics require length [bib:anthropic2026wm], [bib:synthid2024].
-
Watermarks without a key: a distortion-free watermark is invisible to a third-party observer by construction [bib:kuditipudi2023]; cryptographic indistinguishability without the key [bib:cgz2023]; the SynthID-Text detector requires a developer key [bib:synthid2024]; Anthropic confirms: without the key the watermark cannot be verified, the detector API is in closed preview [bib:anthropic2026wm].
-
[bib:…] keys are listed in research/BIBLIOGRAPHY.md.
-
Do not run polish on Markdown or markup: it strips ##, **, «ёлочки» quotes, em dashes; for markup use the --preserve-markup mode.
Why you can trust it
- Methodology and benchmark: figures with confidence intervals.
- Public benchmark: table with CIs, reproduction commands and a “where we are worse” column.
- Threat model and detector boundaries.
- Parity gate for Python and JS rules.
- Self-audit: figures, statuses and errata.
- Status of the last successful run and deploy: status.json on Pages (generated by a deploy artifact from the exact SHA; updated only on green runs).
Installing the skill in browser clients
- The demo works without installation: https://vladimir-human.github.io/humanizer-ru/ — text does not leave the browser.
- Claude.ai and Claude Code: add the skill from the
dsh/skills/humanizer-rudirectory following the installation instructions in docs/USAGE.md. - Agent clients with agentskills.io support (opencode, DeepSeek Harness): unpack the text bundle from the release archive.
- Browser extension rejected: a new surface outline (permissions, store review) does not pay for itself; the idea backlog — research/BACKLOG.md.
Directories: Glama MCP · skills.sh.
Same-named projects
On GitHub there are skills with the same name but different content. Snapshot 2026-09-11
(verification: gh repo view <владелец>/humanizer-ru --json stargazerCount):
- ilyautov/humanizer-ru — 333 stars: positions as “removes neural-network signs,” no public registry of numbers; invited to a joint public benchmark (issue 220).
- smixs/humanizer-ru — 154 stars: a deterministic linter; the only same-named project included in LEADERBOARD.md as a candidate (paired run 2026-09-03).
- This project — verifiable chat-interface insertion hygiene: every figure from deterministic snapshots and the fact registry, boundaries — in THREAT-MODEL, false positives — in the benchmark.
Came by the name — choose by verification method, not by stars.
Project numbers
- 58 machine-writing patterns and 40 regex markers (classes A and B).
- Evidence records: 38 out of 40 markers (registry research/fixtures/marker-sources.json).
- Gates: 156 gates in full check_all (145 in --quick); fixtures in tests/fixtures/, documentation is checked by check_docs.py, persona is described in PERSONA.md.
Why it is named this way: the name was inherited from the first function, which stripped the copy-paste layer after a chatbot and returned text to its human look. The second function of the product: diagnostics, highlighting machine traces and explaining the reason for each flag, with no authorship verdicts. Both functions work offline; text does not leave your machine.
Class breakdown of FP, exploratory, outside preregistration F16: class A: 0 cases on 12314 non-carrier texts; class B: 8 cases on 12314, i.e. 0.00065, Wilson 95% CI from 0.0003 to 0.0013; control set of 40 texts: 0 flags; heavy domain S4 legal and official, n=381, volume deficit recorded in the preregistration: 18 cases on 381, i.e. 0.0472, Wilson 95% CI from 0.0301 to 0.0734; denominators: 12354 full F16 corpus, 12314 validation stratum.
More details
- What to feed it and how to rewrite
- Manual installation and usage
- Architecture and patterns
- Security and version differences
- Sources
Regex markers: classes A and B
Class A — hard copy-paste artifacts: service links and citation markers
from chat interfaces. Class B — contextual indicators: invisible characters,
hidden layout, placeholder fields; a single B match is not enough.
Marker class — copypaste_artifacts; marker retirement is possible only
on failure within its own class; statuses and dates — in markers.v1.json.
Changelog
Changelog — in CHANGELOG.md and on GitHub Releases.
License
MIT
Project status
Dogfooding — the project checks its own texts with its own rules: the style-marker threshold in delivery files is verified by the gate scripts/check_own_style.py (the current maximum is printed on its run).
Comments
Loading…
Similar plugins
by fishzjp
让 AI 像资深测试工程师一样工作:面向 AI Agent 的测试工程 Skill 框架——11 Skills + 共享知识库 + 类型决策矩阵(Claude Code / dsh 等 Agent 可用)
★ 9
↓ 204/wk
MIT
Python
Aug 25, 2026
dsh plugin --profile web add dsh-qa-skillsby Azzygoatcoder
模块化 AI 科研/工程技能 monorepo(DeepSeek Harness / Claude Code 通用)— plugins/ + skills/ + bin 脚本 + LaTeX 模板,验证环驱动
★ 9
MIT
Python
Sep 24, 2026
dsh plugin --profile web add agent-useful-skillsby shuguang1994
Make any project AI-agent-ready in one command. Adaptive tech stack detection (7 languages × 14 frameworks × 61 components), auto-generates AGENTS.md, docs skeleton, CI/CD, and testing infrastructure.
★ 23
↓ 19/wk
MIT
JavaScript
Oct 14, 2026
dsh plugin --profile web add project-blueprintby jaccen
图形学与3DGS、空间智能持续更新论文;AI Agent Skills for 3D Gaussian Splatting, NeRF & Computer Graphics Research. 800+ methods, 25categories, 12skills. OpenClaw / Claude Code compatible.
★ 174
Apache-2.0
HTML
Oct 29, 2026
dsh plugin --profile web add awesome-gaussian-skillsby luxueliu
AI 不缺聪明,缺纪律!交付前自检(没从磁盘回读不算完成)/跑偏纠偏(一句「你偏了」就停)/系统化调试(同一个修复猜三次不收敛时用)/多 agent 接力(防旧状态盖掉新写入)——4 个单文件技能零依赖,每条都来自真实翻车事故,DeepSeek Harness / Claude Code / Codex 通用
★ 0
MIT
JavaScript
Aug 27, 2026
dsh plugin --profile web add luxueliu-agent-discipline-skillsby agent-plaza
Zero-signup public commons for AI agents — HTTP API + Agent Skill (Codex, Cursor, Hermes)
★ 3
MIT
TypeScript
Aug 14, 2026
dsh plugin --profile web add agent-plaza