Skip to content
Back to skills

Llm Ru

ASecurity

Прогнать документ через российское облако (YandexGPT, GigaChat) с маскировкой ПД, прайсом с датой сверки и журналом расхода. Брать, когда текст нельзя вывозить из РФ. Гейт ревью - codex-audit, не он.

  • 8 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 29, 2026
ai-agents

Works with

  • cli

Security analysis

A100/100

Scanned September 29, 2026

npx -y skills add dewil/claude-toolkit --skill llm-ru --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Llm Ru?

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

Security grade badge for Llm Ru
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dewil-llm-ru/badge)](https://www.skillsdirectory.com/skills/dewil-llm-ru)

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: llm-ru
description: Прогнать документ через российское облако (YandexGPT, GigaChat) с маскировкой ПД, прайсом с датой сверки и журналом расхода. Брать, когда текст нельзя вывозить из РФ. Гейт ревью - codex-audit, не он.
---

# Российская модель для документа, который нельзя вывозить

Скилл закрывает один сценарий: **персональные данные из материала не могут покидать РФ** (договор с клиентом, политика обработки ПД, требование локализации), а машинный разбор нужен. Тогда в облако - любое, включая российское - материал уходит **только замаскированным** по `pii-mask`, а российский провайдер (YandexGPT, GigaChat) нужен потому, что маска не идеальна: пропуски NER и квазиидентификаторы (`pii-mask`, "Квазиидентификаторы") остаются в тексте, и этот остаток может уходить только в юрисдикцию, где ему разрешено быть. Зарубежным моделям (свой проход агента, гейт `codex-audit`) достается тот же замаскированный текст, и разница между ними и российским провайдером - в том, кому допустим остаток, а не в том, кто видит оригинал. Провайдер здесь заменяет юрисдикцию, а не качество: у него свои границы, и они описаны, а не подразумеваются.

**Чего скилл не покрывает.** Запрет на вывоз **содержания целиком**, а не ПД (гостайна, договорная оговорка "документ не покидает контур заказчика"): маскировка такой запрет не снимает, а собственный проход агента - уже вывоз, потому что модель агента зарубежная. Там три уровня ниже сворачиваются в один российский, агент видит только его ответ, и это отдельное решение dwl в проектном правиле, а не режим этого скилла.

Механика не привязана к предметной области. К проекту привязаны только **пути и параметры**: журнал расхода, файл прайса, бюджет кейса, порядок получения согласия - они задаются проектным правилом, а не этим файлом.

## Когда применять

- документ или переписка с ПД, которые по договору или политике обработки не покидают РФ;
- первый быстрый проход по объемному материалу перед своим разбором (черновик, длинная выгрузка), когда сырой текст вывозить нельзя;
- параллельный замер: тот же замаскированный материал своей моделью и российской, чтобы увидеть, что ловит каждая.

## Когда НЕ применять

- **как гейт ревью.** Гейт - `codex-audit` с другой моделью по независимому критерию. Российская модель в этой роли не замерялась, и поднимать ее до гейта нельзя без замера в роли адвоката (ниже);
- обезличенный или публичный материал, который можно отдать обычной модели: скилл добавляет маскировку, журнал и прайс, и без юрисдикционного требования это лишняя работа;
- документ, который прочитает **человек** и который надо обезличить: это не машинный разбор, и маской он не решается ни здесь, ни в `pii-mask` (его раздел "Чего скилл не делает") - такой документ переписывается вручную.

## Три уровня проверки: кто гейт, а кто замер

1. **Свой проход агента** - основная работа.
2. **codex как гейт** - другая модель, независимый критерий (`codex-audit`).
3. **Российская модель как замер и первый проход** - параллельная оценка, чей результат сравнивают с первыми двумя, и быстрый черновой разбор, за которым идет свой.

"Не гейт" означает одно: **неподтвержденные** находки третьего уровня работу не останавливают и поштучного разбора не требуют. Подтверждение у находок любого уровня общее - независимая верификация по `codex-audit`, "Разбор находок": находка, которую агент подтвердил сам, останавливает выдачу независимо от того, кто ее нашел, а неподтвержденная находка codex привилегии по происхождению не получает.

Третий уровень не поднимается до второго, пока не замерен **в роли адвоката**, то есть проверяющего, который ищет дефект в готовом разборе. Оценка модели как первичного разборщика на роль проверяющего не переносится: разборщик и проверяющий ловят разное, и хороший результат в первой роли ничего не говорит о второй.

**Прецедент, из-за которого это записано** (20.09.2026). На черновике клиента российская модель дала пять находок; две относились не к документу, а к конвейеру: она пожаловалась на мусор извлечения из RTF и на плейсхолдеры маскировки. Проверяющий, который не отличает артефакт предобработки от материала, в роли гейта останавливает работу впустую. Это общий признак замера, а не свойство конкретного провайдера: любой прогон, куда подается извлеченный текст, получает такие находки, и их надо отделять от находок по существу, прежде чем считать.

**Отнести находку к артефакту конвейера можно только предъявив артефакт**: конкретный плейсхолдер или мусорную строку в поданном тексте, на которую модель среагировала. "В документе нет условия X" артефактом не является - это повод проверить покрытие извлечения (сканированная страница в смешанном документе молчит одинаково с пустой, `silent-failure.md`), а не основание выкинуть находку.

## Порядок

1. **Согласие.** Машинный анализ чужого документа требует согласия там, где этого требует процесс проекта (договор, оферта услуги, политика обработки ПД). Где и как оно берется - проектное правило; скилл только не дает пропустить шаг: согласия нет - прогона нет.
2. **Извлечение и его проверка.** Текст из офисного формата или PDF извлекается до маскировки, и покрытие проверяется как в `pii-mask` для PDF: объем и целость текста, страницы без текстового слоя названы. Модель, получившая половину документа, отчитается по половине и не скажет об этом. Извлечение неполное (страницы без слоя, обрыв текста) - разбор идет как **неполный**: пропущенные страницы названы в отчете, и вывод "в документе нет X" по непокрытым страницам не делается, пока их не покрыли OCR или человек.
3. **Маскировка** - `pii-mask`, с его порядком "не читай оригинал": сырой файл прогоняется через CLI не глядя, агент открывает только `*.masked.md`, mapping не открывается и не пересылается. Счетчик остаточных кандидатов ПД по проверке `pii-mask` **равен нулю**, иначе стоп и разбор локально, а не отправка.
4. **Спецкатегории вырезаются из замаскированного текста до отправки провайдеру.** Расовая и национальная принадлежность, политические взгляды, религиозные и философские убеждения, здоровье, интимная жизнь, судимость (перечень спецкатегорий ПД по закону РФ) провайдеру не подаются вовсе - ни в маске, ни без: он хранит и обрабатывает запросы на своих условиях, а маска не идеальна. `pii-mask` их не ловит: это не идентификаторы, а смысл. Вырезает агент, читая `*.masked.md` - оригинал для этого открывать не нужно, - и фрагмент удаляется, а не заменяется меткой. Остаток, который скилл не закрывает: до вырезания эти фрагменты видит модель самого агента, в маске и без mapping, то есть без связи с человеком, - это устройство `pii-mask`, а не решение этого скилла. Отправляется провайдеру **вырезанный файл**, а не тот, из которого вырезали: файл на отправку и файл после вырезания - один и тот же путь. Закон знает исключения из запрета обработки, у провайдеров условия свои; запрет скилла **безусловный** - это решение канона, а не пересказ закона, и снимать его исключением из закона нельзя.
5. **Логирование запросов у провайдера выключено, и это видно в самом запросе.** У YandexGPT это заголовок `x-data-logging-enabled: false` (HTTP или метаданные gRPC; по документации содержимое таких запросов не используется для улучшения сервиса, сверено 22.09.2026); у GigaChat такой механизм на эту дату не подтвержден - провайдер без подтвержденного механизма используется только по явному решению dwl в проектном правиле. Наличие имени параметра в конфиге ничего не отключает: прогон печатает на каждый вызов строку "логирование: выключено (<параметр>)", взятую из **фактически отправленных** заголовков или метаданных, а не из настройки. Параметр не снимается ни ради отладки, ни ради качества ответа. Дата сверки параметра стареет так же, как прайс: старше 60 дней - стоп до повторной сверки с документацией, потому что это самый чувствительный факт скилла, а меняется он молча.
6. **Пре-чек бюджета - по верхней оценке.** Стоимость сверху = (токены входа + предел генерации `max_tokens`) по прайсу; предел генерации задается всегда, иначе верхней оценки нет. Оценка выше остатка бюджета кейса, или цены для модели и режима вызова в прайсе нет, - ненулевой код возврата и прогона нет. "Нет цены - запуск без проверки" не вариант: это та же молча потраченная сумма. Прогоны по кейсу идут последовательно: проектный скрипт держит лок на кейс, а не полагается на то, что агент не запустит два вызова параллельно (`subagents-usage.md` fan-out поощряет).
7. **Запись в журнал - до отправки и после ответа.** До: попытка с верхней оценкой и хешем поданного текста. После: факт - провайдер, модель, режим вызова, токены на вход и выход, стоимость по прайсу или пометка "не пересчитано", причина завершения ответа. Попытка без факта (обрыв соединения, убитый процесс) считается по верхней оценке, а не как несостоявшаяся. Хеш уже есть в журнале кейса - предупреждение "документ уже гонялся", а не молчаливый второй расход. Провал записи **попытки** - отправки нет: вызов без следа в журнале и есть тот расход, которого никто не увидит. Провал записи **факта** - предупреждение, не глушится, и пометка неполноты в журнале кейса (`silent-failure.md`, форма 1).
8. **Пригодность ответа.** Ответ с причиной завершения "лимит генерации", отказ модели или ошибка - не разбор: он попадает в журнал как расход, но в результат не идет, и "находок нет" по нему не пишется.
9. **Разбор находок** - с отделением артефактов конвейера по правилу выше (артефакт предъявлен) и с независимой верификацией по `codex-audit`.
10. **Разворот** результата для клиента - `pii-mask unmask` по его порядку, ответ провайдера включительно: он тоже в метках.

## Цены не живут в коде

Прайс - отдельный файл проекта: цена за тысячу токенов на вход и выход по каждой модели **и режиму вызова** (синхронный и асинхронный у одного провайдера стоят по-разному), тариф аккаунта (по факту или пакет), **дата сверки** и ссылка на страницу провайдера, откуда взято. Правило пересчета жесткое:

- прайс старше 60 дней или модели с режимом в нем нет - печатаются токены и прямым текстом "в рубли не пересчитано". Не оценка по памяти, не соседняя модель, не старая цена. Для пре-чека бюджета это стоп (шаг 6), для отчета постфактум - честная пометка;
- подставленная по памяти цена выглядит точной и живет в отчетах дольше, чем помнится ее происхождение. Отчет клиенту с такой цифрой нечем защитить.

Пример границы - **пакетная тарификация**: аккаунт, оплаченный пакетом токенов (у GigaChat есть и пакеты, и оплата по факту; какой тариф у аккаунта проекта - поле прайса, а не знание агента), в рубли за прогон не переводится, пока цена пакета и его остаток не сверены вручную. В денежном отчете по такому аккаунту стоят токены.

## Расход по кейсу считает только свой журнал

Биллинг провайдера разбивки по кейсам сам не дает: остаток и детализация идут по облачному аккаунту, каталогу или метке. Дефолт поэтому - журнал, который пишет сам прогон; детализация биллинга годится как сверка суммы по всем кейсам. Проект, где на каждого клиента заведен свой каталог или метка, может назначить источником детализацию биллинга - это его правило, и тогда журнал ниже остается для попыток и пригодности ответа. Отсюда:

- журнал пишется на каждый вызов, включая неудачные и оборванные (шаг 7), - иначе счет расходится с биллингом и об этом никто не узнает;
- **ошибка записи в журнал не глушится**: предупреждение в вывод и пометка неполноты в журнале кейса. Журнал с такой пометкой для пре-чека непригоден - остаток по нему завышен, - и следующий прогон по кейсу стоит, пока dwl не сверил остаток с биллингом и не снял пометку. Молча разошедшийся счет хуже отсутствующего - отсутствующий хотя бы честно не отвечает на вопрос.

## Что задает проект

Скилл описывает порядок, исполняют его проектные скрипты. Обязательное, без чего **прогона нет**:

- где берется согласие на машинный анализ (шаг 1);
- путь файла прайса с датой сверки, режимами вызова и тарифом аккаунта (шаг 6);
- бюджет кейса, с которым сравнивает пре-чек (шаг 6);
- путь журнала расхода и его формат: попытка и факт, по строке на каждую (шаг 7);
- лок на кейс, сериализующий пре-чек и вызов (шаг 6);
- для провайдера без подтвержденного отключения логирования - явное решение dwl (шаг 5).

Необязательное, без чего скилл применим с пометкой в отчете: журнал замеров для третьего уровня (без него замер не накапливается, прогон возможен).

Нет обязательного - отчет "прогон не выполнен: не задан X", а не прогон с оговоркой: предупреждение после отправки уже сделанную отправку не отменяет.

## Границы

- Замер качества российской модели против своей и codex не сделан - есть один прецедент, не статистика. Поэтому третий уровень остается замером.
- Скрипты пре-чека, прогона и учета в канон не входят: они завязаны на пути проекта. Здесь только порядок и инварианты, которые эти скрипты обязаны соблюдать.
- Фактические утверждения о провайдерах (заголовок логирования, тарифы) сверены на дату в тексте и устаревают молча; расхождение с документацией провайдера правится здесь, а не обходится в проекте.

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.