Skip to content
Back to skills

russian-text-quality

ASecurity

Use when reviewing or writing code that contains Russian-language UI strings, i18n locale files (ru.json, ru.yml, ru.po), Russian comments, or transliterated identifiers (polzovatel, tovar, kolichestvo). Triggers on mixed English-code + Russian-content projects. Does not cover typography, spelling, or ё/е.

  • 5 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
developmentgoreactvuenodegit

Security analysis

A100/100

Pro scans all 11 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add Anic888/russian-text-quality --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of russian-text-quality?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for russian-text-quality
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/anic888-russian-text-quality/badge)](https://www.skillsdirectory.com/skills/anic888-russian-text-quality)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: russian-text-quality
description: Use when reviewing or writing code that contains Russian-language UI strings, i18n locale files (ru.json, ru.yml, ru.po), Russian comments, or transliterated identifiers (polzovatel, tovar, kolichestvo). Triggers on mixed English-code + Russian-content projects. Does not cover typography, spelling, or ё/е.
---

# Russian Text Quality Review

## Overview

Detects Russian-language quality bugs that general linters and LLMs consistently miss in code: broken pluralization in i18n locale files, case-agreement bugs in string concatenation, terminology drift across files, transliterated identifiers, and inconsistent language mixing. Code-aware, not prose-focused.

**Core principle:** structural Russian mistakes that survive `eslint` and type-checks but break production UIs. Prose quality is delegated to other tools.

## Activation

Run this skill ONLY if BOTH conditions hold:

1. The project contains **≥10 total Cyrillic characters** across code and locale files (excluding `node_modules`, `.git`, `dist`, `build`, and `.gitignore`d paths).
2. At least one file contains **≥5 consecutive Cyrillic characters** (rules out single stray tokens).

If either condition fails, respond with `Not activated — no Russian content detected` and stop. Never run on English-only projects.

Full activation pseudo-code: `references/activation-logic.md`.

## What this skill checks

| # | Check | Detection | Severity | Confidence |
|---|---|---|---|---|
| 1 | **Plural structure** — i18next/ICU/vue-i18n Russian plurals missing CLDR categories (`one`/`few`/`many`/`other`) | Deterministic parse of locale files + call sites | **Error** | High |
| 2 | **Terminology drift** — same source key translated to different Russian terms across files, or known-synonym variance | Normalized value comparison | Warning | Medium |
| 3 | **Concatenation case bug** — Russian preposition/verb governing non-nominative case followed by string interpolation | Heuristic regex + closed trigger list | Warning | Medium |
| 4 | **Language mixing** — inconsistent comment language in a single file, or inline Russian literals outside i18n | Per-file line-language ratios | Warning | Medium |
| 5 | **Transliterated identifiers** — `polzovatel`, `tovar`, `kolichestvo` etc. | Dictionary + phonotactic + file-context (3-tier) | Info | Low |

Full detection algorithms live in `references/plural-rules.md` (check #1), `references/concatenation-triggers.md` (check #3), and `references/mixing-and-transliteration.md` (checks #4 and #5). Check #2 terminology detection is described in the workflow below and in `.claude/russian-glossary.example.yml`.

## What this skill does NOT check

Delegate these to purpose-built tools:

| Out of scope | Recommended tool |
|---|---|
| Typography (« », em-dash —, non-breaking spaces) | [talkstream/ru-text](https://github.com/talkstream/ru-text) |
| Spelling | [yaspeller](https://github.com/hcodes/yaspeller) |
| ё/е restoration | [eyo / eyo-kernel](https://github.com/e2yo/eyo) |
| UX writing quality, translationese | [talkstream/ru-text](https://github.com/talkstream/ru-text) |

## Review workflow

1. **Check activation.** If conditions not met, stop.
2. **Detect i18n framework** from `package.json`: `i18next`, `react-intl`/`@formatjs/*`, `vue-i18n`/`@intlify/*`, or none. If multiple, run all applicable detection strategies.
3. **Run checks** against matching file targets. Skip checks whose file types are absent.
4. **Emit the Markdown report** in the format below.
5. **Do NOT modify files** without explicit user approval. Findings are suggestions except for `#1` plural scaffolding, which may be auto-applied only when the user approves.

## Output format

```
# Russian Text Review — <project name>

## Summary
- Files scanned: N
- Russian content detected in: M files
- Findings: X errors, Y warnings, Z info

## Findings

### Errors (must fix)
#### #1 Plural structure
- [HIGH] path/to/ru.json:L — key `items.count` missing `_few`, `_many` siblings
  - **Why:** Russian CLDR requires `one/few/many/other`. Missing `_few` produces wrong form for n=2,3,4.
  - **Fix:** add `items.count_few`, `items.count_many` entries (scaffolded below).

### Warnings
#### #5 Terminology drift
- [MEDIUM] locales/ru.json vs locales/admin/ru.json — key `user` translates to `пользователь` and `юзер`
  - **Why:** inconsistent terminology confuses users and breaks search.
  - **Fix:** pick one; lock via `.claude/russian-glossary.yml`.

### Info
#### #1 Transliterated identifiers
- [LOW] src/order.ts:12 — identifier `kolichestvo_tovarov` looks like transliterated Russian
  - **Suggestion:** `product_quantity` or keep Cyrillic if that is your project convention.

## External tools we recommend
- Typography / UX writing → talkstream/ru-text
- Spelling → yaspeller
- ё/е → eyo
```

The "External tools we recommend" block appears only when the scan finds Russian content. On English-only projects, the skill does not run at all.

## Common mistakes when using this skill

- **Running on English-only projects.** Honor the activation guard. Do not bypass it to "check anyway".
- **Flagging typography, spelling, or ё/е.** These are explicit non-goals — delegate, do not duplicate.
- **Treating medium-confidence heuristics as errors.** Checks #3, #4, #5 emit warnings or info; never promote them to errors.
- **Auto-fixing without approval.** Only `#1` plural scaffolding can be offered as an auto-fix, and only after the user approves the suggested diff.
- **Matching `key_plural` suffixes.** This skill targets i18next v4 format only. Old v3 projects using `key_plural` are out of scope in v1: when detected, emit a single `Info` finding noting the v3 file was skipped, then stop plural checks for that file.

## References

- `references/plural-rules.md` — CLDR Russian rules + per-framework detection algorithms (i18next, ICU, vue-i18n) with test cases. Includes Step 2.5 for locale values with count-placeholders but no plural siblings.
- `references/concatenation-triggers.md` — closed list of triggers for check #3 with exclusions
- `references/mixing-and-transliteration.md` — detection pseudo-code and thresholds for checks #4 and #5
- `references/transliteration-dict.yml` — seed dictionary used by check #5
- `references/activation-logic.md` — activation pseudo-code + test cases
- `references/examples.md` — 16 before/after cases sourced from real projects
- `.claude/russian-glossary.example.yml` — template for user-provided terminology glossary

Files in this skill

  • .claude/russian-glossary.example.yml2.5 KB
  • CHANGELOG.md6.1 KB
  • CONTRIBUTING.md7.8 KB
  • SECURITY.md2.3 KB
  • SKILL.md6.4 KB
  • references/activation-logic.md3.7 KB
  • references/concatenation-triggers.md6.1 KB
  • references/examples.md11.3 KB
  • references/mixing-and-transliteration.md9.4 KB
  • references/plural-rules.md12.1 KB
  • references/transliteration-dict.yml4.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.