executing-plans
executing-plans
Use when executing an implementation plan in the current session as the implementer yourself — your human partner chose inline execution, or no subagent tool is available
ru-checkFull 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-initia…
Independent GitHub snapshot · Automated classification · Original documentation governs
Review the text provided in $ARGUMENTS (or the most recent Russian text output if no arguments) using the ru-text skill.
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:
references whose parent directory is named ru-text, and
which contains info-style.md. Every file named below sits in that folder.Glob on a pattern like
**/ru-text/references/info-style.md, or whatever file search the host offers, then
Read. This command has no use for a command line: Bash is on its disallowed-tools
list, and hosts that do not implement that field still refuse it — measured in Claude
Cowork on 12.08.2026, where an opening ls returned «Permission to use Bash has been
denied» in red before the search found the corpus anyway. The call bought nothing and
cost the reader a scare.${CLAUDE_SKILL_DIR}/../ru-text/references/ — Read
info-style.md there first and skip the search. If that path arrives unexpanded or the
read fails, fall back to the search above.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:
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.addenda.md: from the ## Neuroslop index heading to
the next ##. Not the rest of the file — the rest is ten times the size.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, a space between a number and %, 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.
Typography — read typography.md, then apply:
% is glued to
the number in general and web text (R37: 100%, not 100 %; a GOST technical document may use
100<NBSP>%). Report it with the reason the rule gives: an ordinary
space is a line break point and leaves % alone on the next lineAnti-patterns — read anti-patterns.md, then scan for:
Writing quality — read info-style.md, then apply:
Domain-specific — load if text type is identifiable:
ux-writing.mdbusiness-writing.mdeditorial-punctuation.md + editorial-grammar.mdExperience-based / neuroslop — read addenda.md, then scan for the AI-generated-prose tells:
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.
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: