AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Ru Textovod

skill-miolamio-agent-skills-ru-textovod · by miolamio

>

No reviews yet
0 installs
8 views
0.0% view→install

Install

$ agentstack add skill-miolamio-agent-skills-ru-textovod

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-miolamio-agent-skills-ru-textovod)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Ru Textovod? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

Russian Text Proofreader (Проверка русского текста)

Important Rules

  • Default command is autocorrection (API v2 grammar). Use it unless the user explicitly asks for spelling or punctuation separately.
  • Never modify files without user permission. Show the corrected text and ask before applying changes.
  • This skill is for proofreading — spelling, punctuation, grammar. For stylistic editing (AI markers, informational style, voice), recommend ru-editor.
  • Always use jq -n --arg to build JSON bodies — never interpolate text directly into JSON strings.
  • Always escape and validate text before sending to API.

Prerequisites — API Key Setup

Three environment variables are required:

| Variable | API | Purpose | |----------|-----|---------| | TEXTOVOD_USER_ID | v1 | User ID for spelling/punctuation | | TEXTOVOD_API_KEY | v1 | API key for spelling/punctuation | | TEXTOVOD_API2_TOKEN | v2 | Bearer token for autocorrection |

Check Credentials

Before any API call, check that the required env vars are set:

# For autocorrection (API v2)
echo "${TEXTOVOD_API2_TOKEN:+set}"

# For spelling/punctuation (API v1)
echo "${TEXTOVOD_USER_ID:+set} ${TEXTOVOD_API_KEY:+set}"

If Credentials Are Missing

Tell the user which variables are missing and how to set them:

Для работы нужны API-ключи Textovod.com.

Получите ключи на https://textovod.com/api и добавьте в ~/.zshrc:

export TEXTOVOD_USER_ID="your_user_id"
export TEXTOVOD_API_KEY="your_api_key"
export TEXTOVOD_API2_TOKEN="your_api2_token"

Затем перезапустите терминал или выполните: source ~/.zshrc

Alternatively, keys can be set in Claude Code settings (~/.claude/settings.json) under env.

Three Commands

1. Autocorrection (default)

Trigger: «проверь текст», «автокоррекция», «исправь ошибки», or no specific command.

Neural network-based. Fixes grammar, spelling, and punctuation in one pass. Best for general proofreading.

  • API: v2 grammar
  • Requires: TEXTOVOD_API2_TOKEN
  • Max: 35,000 characters
  • Reference: [references/api-v2-grammar.md](references/api-v2-grammar.md)

2. Spelling

Trigger: «проверь орфографию», «spelling», «орфография».

Dictionary-based spelling check. Returns individual misspelled words with suggestions.

  • API: v1 spelling
  • Requires: TEXTOVOD_USER_ID + TEXTOVOD_API_KEY
  • Max: 100,000 characters
  • Reference: [references/api-v1-spelling.md](references/api-v1-spelling.md)

3. Punctuation

Trigger: «проверь пунктуацию», «punctuation», «пунктуация», «запятые».

Rule-based punctuation check. Returns corrected text with punctuation fixes.

  • API: v1 punctuation
  • Requires: TEXTOVOD_USER_ID + TEXTOVOD_API_KEY
  • Max: 100,000 characters
  • Reference: [references/api-v1-punctuation.md](references/api-v1-punctuation.md)

Input Handling

Inline Text (primary)

User provides text directly in the message. Extract the text to check.

File Path

User provides a file path. Read the file content, then proceed as with inline text.

TEXT=$(cat "/path/to/file.txt")

JSON Escaping

Always use jq -n --arg to safely embed text into JSON:

JSON_BODY=$(jq -n --arg text "$TEXT" '{text: $text, lang: "ru"}')

Never do {"text": "$TEXT"} — this breaks on quotes, newlines, and special characters.

Character Limit Check

Before sending, verify text length:

CHAR_COUNT=$(echo -n "$TEXT" | wc -c)
# API v2: max 35000
# API v1: max 100000

If text exceeds the limit, inform the user and suggest splitting.

API Workflow

Each API has a different workflow:

Spelling (v1) — Immediate Response

Returns results in the submit response. No polling needed.

JSON_BODY=$(jq -n \
  --arg user_id "$TEXTOVOD_USER_ID" \
  --arg api_key "$TEXTOVOD_API_KEY" \
  --arg text "$TEXT" \
  '{user_id: $user_id, api_key: $api_key, text: $text, lang: "ru"}')

RESPONSE=$(curl -s -X POST https://textovod.com/api/spelling/user/add \
  -H "Content-Type: application/json" \
  -d "$JSON_BODY")

# result is a JSON string — parse with fromjson
echo "$RESPONSE" | jq -r '.result | fromjson | .[] | "\(.offset) \(.length) \(.mes) \(.rep[0])"'

Punctuation (v1) — Submit + Poll with text_id

# Submit
RESPONSE=$(curl -s -X POST https://textovod.com/api/punctuation/user/add \
  -H "Content-Type: application/json" -d "$JSON_BODY")
TEXT_ID=$(echo "$RESPONSE" | jq -r '.text_id')

# Poll (separate Bash calls, 3 sec apart, use text_id not id)
POLL_BODY=$(jq -n \
  --arg user_id "$TEXTOVOD_USER_ID" \
  --arg api_key "$TEXTOVOD_API_KEY" \
  --arg text_id "$TEXT_ID" \
  '{user_id: $user_id, api_key: $api_key, text_id: $text_id}')
RESULT=$(curl -s -X POST https://textovod.com/api/punctuation/user/status \
  -H "Content-Type: application/json" -d "$POLL_BODY")
# status 2 = ready

Autocorrection (v2) — Submit + Poll

Important: Do NOT send id in the request body — the API generates its own UUID.

# Submit (no id field!)
JSON_BODY=$(jq -n --arg text "$TEXT" '{text: $text, lang: "ru"}')
RESPONSE=$(curl -s -X POST https://textovod.com/api/v2/text/grammar \
  -H "Authorization: Bearer ${TEXTOVOD_API2_TOKEN}" \
  -H "Content-Type: application/json" -d "$JSON_BODY")
TASK_ID=$(echo "$RESPONSE" | jq -r '.id')

# Poll (separate Bash calls, 3 sec apart)
POLL_BODY=$(jq -n --arg id "$TASK_ID" '{id: $id}')
RESULT=$(curl -s -X POST https://textovod.com/api/v2/text/grammar/result \
  -H "Authorization: Bearer ${TEXTOVOD_API2_TOKEN}" \
  -H "Content-Type: application/json" -d "$POLL_BODY")
# Corrected text: jq -r '.messages[] | select(.role == "assistant") | .content'

Polling: Make each poll as a separate Bash tool call with sleep 3 at the start. Max 15 attempts.

Output Modes

See [references/result-formatting.md](references/result-formatting.md) for full formatting details.

Detailed Mode (default)

Show list of errors + corrected text:

### Найденные ошибки (N)

1. «неправильнoe» -> «правильное» (орфография)
2. «предложение без запятой» -> «предложение, с запятой» (пунктуация)

### Исправленный текст

[corrected text]

Quick Mode

Triggered by: «просто исправь», «без деталей», «только текст»

Исправлено ошибок: N

[corrected text]

Error Handling

| Error | Action | |-------|--------| | Missing API keys | Show setup instructions (see Prerequisites) | | Status 30 (insufficient balance) | Tell user: «Недостаточно средств на балансе Textovod. Пополните на https://textovod.com» | | Timeout (15 polls without result) | Tell user: «Сервис не ответил за 45 секунд. Попробуйте позже или с текстом покороче.» | | Rate limit (429) | Wait 5 seconds, retry once | | Text too long | Show limit and suggest splitting | | Empty text | Tell user: «Нет текста для проверки.» | | Network error | Show error and suggest retrying |

Integration with Other Skills

  • After checking — if text has stylistic issues (AI markers, bureaucratese, weak verbs), suggest: «Текст грамматически верен. Хотите стилистическую редактуру? Используйте ru-editor
  • After ru-editor — suggest: «Хотите проверить орфографию и пунктуацию? Используйте ru-textovod
  • After en-ru-translator-adv — suggest proofreading the translation with ru-textovod.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.