← Plugin catalog
Productivity

ru-text

Arseniy Kamyshev v2.3.0

Publisher description

From the marketplace listing

Russian text quality for AI agents — neuroslop cleanup, typography, information style, editorial standards, UX writing, business correspondence. 2,000+ linguistic atoms, loaded on demand.

Language: English · Automatically detected from descriptions.

Files & skills

File archives

Plugin package33 files · 859 KBBrowse files →
Skill instructions
ru-check8.98 KB

View saved version →

---
name: ru-check
description: >
  Full Russian text quality check against the whole corpus. Triggers: вычитай, вычитай через
  ru-text, прогони ru-text, проверь текст по ru-text, ru-check, полная вычитка. Use when the
  user asks to proofread Russian text, or when a project gate names ru-text. Returns findings
  with the rule behind each and a proposed replacement; never edits a file. Self-initiated
  runs start with a fast triage and escalate on evidence; an explicit request always runs the
  full corpus.
allowed-tools: Read, Grep, Glob
disallowed-tools: Write, Edit, NotebookEdit, Bash, PowerShell, Monitor
context: fork
user-invocable: true
---

# Russian Text Quality Check

Review the text provided in $ARGUMENTS (or the most recent Russian text output if no arguments) using the ru-text skill.

## Where the reference files live

This skill reads the corpus that ships with the **ru-text** skill, which is installed
alongside it. Locate that folder once, then read the named files from it:

- Look for a directory named `references` whose parent directory is named `ru-text`, and
  which contains `info-style.md`. Every file named below sits in that folder.
- In Claude Code the plugin root is also available directly, which saves the search.
- **Do not guess a path.** If the folder cannot be found, say so and stop — a check run
  against remembered rules instead of the corpus is not this command, and reporting one
  as the other is the failure this whole product exists to prevent.

## Two depths, one command

This check runs at one of two depths. Nobody chooses a depth; these rules do.

**Full** — the «Check order» below, whole. Run it whenever a person asked for this check
(«вычитай», «прогони ru-text», a gate that names ru-text, a golden-set run) or triage
escalated. An explicit request is never answered with triage.

**Triage** — for self-initiated runs only: you produced or encountered Russian text and are
checking it out of discipline, with no instruction naming ru-text. Load three things and
nothing else:

1. The ru-text `SKILL.md` — its inline typography table and top stop-words. Skip if it is
   already in context, which on an always-on host it usually is.
2. The «Neuroslop index» section of `addenda.md`: from the `## Neuroslop index` heading to
   the next `##`. Not the rest of the file — the rest is ten times the size.
3. Section «B. Каталог стоп-слов» of `info-style.md`: from its `## B.` heading to the next
   `##`. Not the rest of the file.

Then check the text: typography mechanically (straight quotes, a hyphen doing a dash's work,
`...` for an ellipsis, an ordinary space after в, к, с, о, у, и, а — verify by codepoint, not
by eye); catalog stop-words including inflected forms, judging every candidate line yourself
(«данные» the noun is not «данный» the stop-word); index tells by eye.

Triage may **report** only what a single line decides: typography and confirmed catalog hits.
**A neuroslop tell is never a triage finding.** Every AD rule carries carve-outs that live
only in the full file, and «не X, а Y» with a real antecedent is ordinary prose — flagging it
from an index alone is the false positive this command would lose the most trust for. A tell
seen in triage is an escalation trigger and nothing else.

**Escalate to full** when any one of these holds: a neuroslop candidate appeared · five
findings are confirmed · the text is bound for a reader (a deliverable, a publication, a
client). Escalating is silent — continue into the full procedure as though it had been asked
for.

A triage report names itself: «Быстрая проверка: типографика и стоп-слова. Полная вычитка по
корпусу не выполнялась.» Reporting triage as the full check is the failure this product
exists to prevent. No search tool on this host → no triage: run the full check.

## Check order

1. **Typography** — read `typography.md`, then apply:
   - Quotes: «» primary, „" nested
   - Dashes: — (em) in text, – (en) in ranges, - (hyphen) in compounds only
   - Spaces: NBSP after single-letter prepositions, in digit groups, before units
   - Ellipsis, abbreviations, special characters

2. **Anti-patterns** — read `anti-patterns.md`, then scan for:
   - Bureaucratic language and nominalization
   - Passive voice overuse
   - Sentence bloat
   - Tautology and pleonasm

3. **Writing quality** — read `info-style.md`, then apply:
   - Stop-words and filler
   - Specificity and facts
   - Structure and clarity

4. **Domain-specific** — load if text type is identifiable:
   - UI/interface text → `ux-writing.md`
   - Email/business → `business-writing.md`
   - Needs grammar review → `editorial-punctuation.md` + `editorial-grammar.md`

5. **Experience-based / neuroslop** — read `addenda.md`, then scan for the AI-generated-prose tells:
   - Manufactured antithesis (AD-6) — «не X, а Y» / «не просто X, а Y» with no antecedent
   - Preemptive virtue qualifier (AD-7) — «без воды», «чётко, по делу»
   - Assistant-register meta-commentary (AD-8) — «Отличный вопрос!», «Надеюсь, это помогло»
   - Hollow openers (AD-9) — «давайте разберёмся», «погрузимся», «важно понимать, что»
   - Declared sincerity (AD-10) — «честный разбор», «давайте будем честны»: honesty predicated of the piece.
     The same reflex on a single statement — «скажу честно: дедлайн сорван» — is AD-7
   - Mandatory tricolon (AD-11) — «инновационный, трансформирующий, прорывной»
   - Hollowed mechanism (AD-12) — «зависит от различных факторов», «свои особенности»
   - Phantom attribution (AD-13) — «исследования показывают», «эксперты отмечают»
   - Chat transcript as the artifact (AD-14) — the document's skeleton is a dialogue
   - Search-engine addressee (AD-15) — the query phrase where a pronoun would serve
   - Additive pseudo-pair (AD-16) — «не только X, но и Y» where Y adds nothing

   The list above is a prompt for the eye, not the rule set. Two of these — AD-14 and AD-15
   — are charged to the **document**, so ask them of the piece as a whole and not of any
   one sentence. Every rule has carve-outs that decide as many cases as the triggers do;
   they are in `addenda.md`, and a finding raised without checking them is the false
   positive this command costs the most trust for.

## Output format

**Read-only — do NOT modify the source files.** `ru-check` is a *check*: it reports issues and returns the corrected text for the user to apply. It must not write to, edit, or overwrite the analysed file(s).

How this is enforced depends on the host, and it is worth being exact about it.

In Claude Code, `disallowed-tools` removes the listed tools from the pool while the command is active — verified on 2.1.220 by attempting a write through `Write`, through `Bash` redirection, through `Monitor`, and through a delegated subagent: every path was denied and no file was created. `allowed-tools` alone would not achieve this; that field pre-approves tools, it does not restrict them.

The list removes the direct file-writers — `Write`, `Edit`, `NotebookEdit` — and the command-executing tools we identified and tested on 2.1.220: `Bash`, `PowerShell` and `Monitor`. `Monitor` is easy to miss: it runs commands too, and it follows `Bash` permission rules, so a broad `Bash` allow-rule silently pre-approves it while a `disallowed-tools: Bash` entry does not remove it. **The list names the paths we closed, not every path that exists.**

Four limits, stated plainly. A connected MCP server can expose its own write tools, which a per-tool denial list cannot know about. A named subagent whose own definition grants it `tools: Write` is governed by that definition, not by a parent command's denial list. A later Claude Code release can add a tool this file does not name, and a hand-written list does not update itself. And on hosts that do not implement `disallowed-tools`, everything above is an instruction the agent is asked to follow, not a guarantee the platform enforces.

Where the mechanism ends, the contract does not: the rule is that this command returns text and never writes, on every host, whatever the tool roster happens to contain.

Returning the corrected text in the output rather than writing it keeps the command deterministic and free of side effects. Silently inserting NBSP into a source file is doubly harmful: a target that strips NBSP on import (e.g. Notion) shows the reader no change, and the same insertion breaks later exact-string tooling (grep/replace) on that file.

Return:
1. Corrected text
2. List of changes grouped by category (typography / style / grammar / domain)
3. Severity per change: critical / high / medium / low
ru-score5.04 KB

View saved version →

---
name: ru-score
description: >
  Score Russian text 0.0–10.0 across five dimensions: typography, clean language, grammar,
  structure, precision for the reader. Triggers: оцени текст, ru-score, оценка качества
  текста, насколько хорош текст, балл за текст. Use when the user wants a number rather than
  a list of findings. Never edits a file.
allowed-tools: Read, Grep, Glob
disallowed-tools: Write, Edit, NotebookEdit, Bash, PowerShell, Monitor
context: fork
user-invocable: true
---

# Russian Text Quality Score

Score the text provided in $ARGUMENTS (or the most recent Russian text output if no arguments) using the ru-text scoring rubric.

## Procedure

## Where the reference files live

This skill reads the corpus that ships with the **ru-text** skill, which is installed
alongside it. Locate that folder once, then read the named files from it:

- Look for a directory named `references` whose parent directory is named `ru-text`, and
  which contains `info-style.md`. Every file named below sits in that folder.
- In Claude Code the plugin root is also available directly, which saves the search.
- **Do not guess a path.** If the folder cannot be found, say so and stop — a check run
  against remembered rules instead of the corpus is not this command, and reporting one
  as the other is the failure this whole product exists to prevent.

1. **Load rubric** — read `scoring.md` for the full rubric with anchors.

2. **Determine domain** — identify whether the text is UI/interface, business email, article, or general:
   - UI text → also load `ux-writing.md` for the Reader Precision dimension
   - Business email → also load `business-writing.md` for the Reader Precision dimension
   - General → use `info-style.md` only

3. **Evaluate each dimension separately** — score in this order:
   - **T — Типографика** (weight 0.15): quotes, dashes, spaces, special characters per `typography.md`
   - **Ч — Чистота языка** (weight 0.25): stop-words, bureaucratic language, clichés, passive voice per `info-style.md` + `anti-patterns.md`
   - **Г — Грамотность** (weight 0.20): punctuation, agreement, tautology per `editorial-grammar.md` + `editorial-punctuation.md`
   - **С — Структура** (weight 0.20): logical flow, paragraphs, transitions, heading use per `info-style.md` structure section + `addenda.md`
   - **Ц — Точность для читателя** (weight 0.20): facts, evidence, reader benefit, actionability per domain rules

4. **For each dimension** — assign a score (0.0–10.0) using the rubric anchors in scoring.md. List 1–3 specific issues, quoting the problematic text fragment.

5. **Apply non-compensatory rules:**
   - Any dimension < 3.0 → cap total at 5.0
   - Typography < 4.0 → cap total at 7.0
   - Grammar < 4.0 → cap total at 7.0
   - Use the most restrictive cap when multiple conditions trigger

6. **Compute composite score:**
   ```
   S = round₁(T × 0.15 + Ч × 0.25 + Г × 0.20 + С × 0.20 + Ц × 0.20)
   ```

7. **Short text warning** — if text is under 50 words, prepend a reliability caveat.

## Score labels

| Score | Label |
|---|---|
| 9.0–10.0 | Эталонный |
| 7.0–8.9 | Хороший |
| 5.0–6.9 | Средний |
| 3.0–4.9 | Слабый |
| 0.0–2.9 | Критический |

## Output format

**Read-only — do NOT modify the source files.** `ru-score` reports a score and issues; it must not write to, edit, or overwrite the analysed file(s).

In Claude Code this is hardened by `disallowed-tools`, which removes the listed tools while the command is active — verified on 2.1.220. The list removes the direct file-writers `Write`, `Edit` and `NotebookEdit`, plus the command-executing tools we identified and tested: `Bash`, `PowerShell` and `Monitor`. It names the paths we closed, not every path that exists. `allowed-tools` pre-approves tools; it does not restrict them.

Four limits, stated plainly. A connected MCP server can expose write tools that a per-tool denial list cannot know about. A named subagent whose own definition grants it `tools: Write` is governed by that definition, not by this list. A later Claude Code release can add a tool this file does not name. And on hosts without `disallowed-tools` support the rule is an instruction rather than a platform guarantee.

The contract itself is behavioural and does not depend on the list: this command returns a score and never writes.

The report shape is not written twice. Read section «Output format» of `scoring.md` —
the mandated heading, the five Russian dimension labels, the per-cell limit of one to
three issues with quoted fragments, the weighted formula, the cap note, and the closing
«Что оценка не измеряет» section — and follow it exactly.

That file is the single source of it. A copy lived here until v2.0 and sat outside the
no-loss gate, so the two could drift and only a reader comparing them would notice.

If a dimension has no issues, write «Замечаний нет» in the remarks column.
ru-text4.23 KB

View saved version →

---
name: ru-text
description: >
  Russian text quality. Triggers: вычитай, проверь текст, поправь, отредактируй,
  причеши, ru-text. Typography silently on any Russian output; deeper editing on
  request. Info-style, editorial, UX writing, business correspondence, AI-text cleanup.
metadata:
  openclaw:
    always: true
    emoji: "\U0001F4DD"
    homepage: "https://ru-text.org"
---

# ru-text — Russian Text Quality

Independent Russian text quality reference by Arseniy Kamyshev.
With gratitude to the authors whose work shaped modern Russian text standards.
Credits and recommended reading: `references/sources.md`

**Style priority**: if the user explicitly requests a specific style (casual, academic, SEO, literary, etc.), their prompt overrides these default rules where they conflict. These rules are defaults, not mandates.

**Reviewing vs. rewriting**: when *checking* or proofreading existing text or a file, return the corrected version plus a list of changes — do not silently overwrite the source file. Rewrite a file in place only when the user explicitly asks.

**Someone else's words stay theirs**: quoted material, code blocks and third-party text inside the user's document are reproduced as-is. Report an issue you see in them if it matters; never rewrite them.

## Always-On: Typography

Apply to ALL Russian text output — silently: fix, don't announce.

| Rule | Wrong | Correct |
|---|---|---|
| Primary quotes: guillemets | "текст" | «текст» |
| Nested quotes: lapki | «"вложенные"» | «„вложенные“» |
| Em dash with spaces | слово - слово | слово — слово |
| En dash for ranges, no spaces | 10-15 дней | 10–15 дней |
| NBSP after single-letter prepositions | в начале (breakable) | в\u00A0начале |
| Ellipsis: single character | ... | … |
| Digit groups with thin spaces | 1000000 | 1 000 000 |
| Decimal comma (not dot) | 3.14 | 3,14 |
| Ordinal with hyphen | 1ый, 2ой | 1-й, 2-й |
| Numero sign | No. 5, #5 | № 5 |
| Abbreviations with NBSP | т.д., т.е. | т. д., т. е. |
| Ruble symbol after number | 1500 руб | 1 500 ₽ |

Full typography reference: `references/typography.md`

`/ru-text:ru-score` — text quality score (0–10, 5 dimensions).

## Top Stop-Words (when writing or editing on request)

| Stop-word | Replace with |
|---|---|
| является | — (dash) or restructure |
| осуществлять | делать, проводить |
| в настоящее время | сейчас |
| данный | этот |
| определённый | (name the specific thing) |
| произвести оплату | оплатить |
| высококачественный | (name the specific quality) |
| был осуществлён | (active voice + actor) |
| на сегодняшний день | сегодня |
| в целях | чтобы |

Full stop-word catalog (92 entries): `references/info-style.md`

## When to Load Reference Files

Reference files (paths are relative to this SKILL.md): `references/<filename>`
If the path is not resolved, search: `Glob("**/ru-text/references/scoring.md")` and use the parent directory.

| Task | File |
|---|---|
| Writing/editing articles, blog posts, SEO, content | info-style.md |
| Interface text, buttons, errors, hints, microcopy | ux-writing.md |
| Emails, messenger, business correspondence | business-writing.md |
| Punctuation review, comma placement | editorial-punctuation.md |
| Grammar, capitalization, agreement, pleonasms | editorial-grammar.md |
| Finding and fixing text problems, diagnostics | anti-patterns.md |
| Text scoring, quality assessment | scoring.md |
| Credits, source attribution | sources.md |
| Experience-based rules (dash overuse, etc.) | addenda.md |

## Quality Checklist

Before delivering Russian text:

- [ ] Quotes: «» primary, „“ nested
- [ ] Dashes: — in text, – in ranges, - only in compounds; max 1–2 per paragraph (a parallel row counts as one, dialogue dashes as none); trim to the limit, not to zero; edit a row whole or not at all
- [ ] NBSP after в, к, с, о, у, и, а
- [ ] Ellipsis: … (single char)
- [ ] Abbreviations: т. д., т. п. (with NBSP)
- [ ] No double spaces, no space before punctuation

Referenced files: 12

Package details

Publisher declarations from the archived package. These are separate from our research and the live service's terms.

Package license
MIT
Package author
Arseniy Kamyshev
Keywords
russian, neuroslop, ai-text-detection, typography, proofreading, editorial, info-style, ux-writing, text-quality, text-scoring

Declared capabilities

  • Read

Package observed Oct 2, 2026.

Technical details
First seen
Sep 30, 2026 · 22:02 UTC
Last seen
Oct 2, 2026 · 12:00 UTC
Collection status
Collected

plugins_6a6b66a0142c81918659256b4a12adba

Download plugin data (JSON)