# Uskorenie Zapisi Ekrana

> «Ускорь запись экрана», «сожми скринкаст», «слишком длинная», «разгони по ступеням», «вырежи куски», «уложи в лимит веса»: ускорение и сжатие на macOS, голос не плывёт.

- Skill: `kir-kopylov/uskorenie-zapisi-ekrana` (Agent Skill, multi-file: 12 files)
- Install (CLI): `npx skillmds@latest add kir-kopylov/uskorenie-zapisi-ekrana`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kir-kopylov/uskorenie-zapisi-ekrana/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: kir-kopylov (https://skillmd.com/u/kir-kopylov)
- Updated: 2026-09-21
- Page: https://skillmd.com/skills/kir-kopylov/uskorenie-zapisi-ekrana

---


# Ускорение записи экрана

## Запуск Навыка

При явном вызове или однозначном смысловом совпадении применяйте навык сразу. Перед первым шагом покажите ровно одну короткую контекстную строку (не более 30 слов) и продолжайте работу в том же ответе, не ожидая реакции:

Применяю экспериментальный навык **«Ускорение записи экрана»** (обратная связь — @kir-kopylov): <кратко назовите конкретную пользу для текущего запроса>; продолжаю без ожидания.

Не включайте в строку `author_github`, внутреннее имя папки или пересказ всего запроса. Не спрашивайте, применять ли навык.

Не завершайте первый ответ строкой уведомления или обещанием будущей разведки. Сразу после неё самостоятельно выполните доступный read-only поиск исходника и, если кандидат однозначен, read-only определите его имя, путь, вес, длительность, геометрию, наличие звука и фактическую частоту кадров. Не создавайте на этом шаге рабочую папку, `plan.txt` или медиафайлы. Если исходник нельзя выбрать однозначно, задайте один ближайший вопрос о выборе файла. Если исходник однозначен, но точный весовой лимит не следует из запроса, задайте один ближайший вопрос о лимите. Не задавайте оба вопроса сразу.

Если одновременно подходят совместимые навыки, выберите минимальный набор и покажите одну общую строку. Если подходы ведут к несовместимым результатам и запрос не позволяет выбрать, спросите только о желаемом результате, не о разрешении применить навык.

Запуск навыка не расширяет полномочия. Выполните всю безопасную и уже разрешённую часть; запросите подтверждение только непосредственно перед ещё не разрешённым внешним или изменяющим действием. Не запрашивайте повторно уже данное разрешение и не дублируйте системное окно подтверждения.

## Обзор

Длинная запись экрана превращается в короткий смотрибельный файл: ступенчатое ускорение, вырезы, сжатие. Высота голоса не меняется, звук с картинкой не разъезжается.

Задача выглядит простой ровно до первой сборки. Запись экрана снимается с переменной частотой кадров — кадр пишется только когда картинка меняется, — и наивная нарезка даёт куски неверной длины. Разбег копится на каждом стыке склейки: на живом примере он достиг трёх секунд за шесть с половиной минут. Поэтому всю арифметику и обязательную сверку длин ведёт скрипт `scripts/build.py`, а не модель на глаз.

Вся работа идёт в рабочей папке проекта. Исходник только читается, его неизменность проверяется в конце.

## Естественные Входы

- «ускорь запись экрана», «сожми скринкаст», «видео слишком длинное»
- «разгони по ступеням», «вырежи куски из записи», «убери лишнее из демо»
- «уложи запись в двадцать пять мегабайт»
- пользователь показывает файл записи экрана с рабочего стола

## Процесс

### Контрфактический Гейт Рабочего Вопроса

Проверку проводи внутренне; пользователю не показывай вероятные ответы и карту изменений.

Перед любым вопросом проведи контрфактическую проверку:
Представь наиболее вероятные ответы пользователя.
Назови, какое решение, действие или часть результата изменит каждый ответ.
Если следующий шаг при всех ответах одинаков — вопрос запрещён.
Если пользователь уже зафиксировал выбор — запиши его, не открывай заново.
Если неизвестное техническое и его можно проверить самостоятельно — проверь, не спрашивай.
Задавай только ближайший вопрос, ответ на который реально меняет результат.

### Шаг 1. Разведка исходника

Найди доступные видеофайлы поиском по маске, имя не набирай руками: в именах macOS встречаются неразрывные пробелы и длинное тире, а формат имени меняется между версиями системы. Сначала проверь файл, прямо указанный или переданный пользователем, рабочую папку и доступные локальные каталоги. Если один кандидат однозначно связан с запросом, выбери его без повторного подтверждения. Если кандидатов несколько или ни одного, после самостоятельного поиска задай один вопрос, который определит исходник; лимит веса одновременно не спрашивай.

До создания рабочей папки прочитай параметры исходника через read-only `stat` и `ffprobe` либо равноценный доступный инструмент. На этом шаге не запускай `scripts/build.py`: он создаёт рабочую папку. Перескажи наблюдаемые длину, вес, геометрию, наличие звуковой дорожки и фактическую частоту кадров простыми словами. Отдельно скажи вслух, если звуковой дорожки нет: тогда весь звуковой конвейер отключается сам, а финал будет один вместо двух.

### Шаг 2. Лимит веса и план, затем остановка

Когда исходник определён, извлеки точный лимит веса из запроса и не переспрашивай уже названное значение. Если точного значения нет, задай один ближайший вопрос: **без лимита / до пятидесяти мегабайт / другой размер**. Если сначала пришлось уточнить исходник, вернись к лимиту только после ответа, не объединяй два вопроса. Значение передаётся флагом `--target-mb`. Про конкретные пределы почты и мессенджеров ничего не утверждай: они меняются, а пользователь свой предел знает.

Спрашивай лимит до раскладки по скорости: он на раскладку влияет. У записи экрана вес держит длительность, поэтому «не влезаем» лечится более агрессивным планом, а не качеством.

Затем собери таблицу ступеней. Если пользователь её дал — перенеси как есть. Если не дал — возьми образец из `references/plan.example.txt` и пересчитай под длину исходника. Ступени обязаны покрыть исходник целиком: дыра означает молча потерянный материал, и скрипт такой план отвергнет. Вырезы не придумывай, паузы автоматически не ищи.

Запиши таблицу в `plan.txt` рабочей папки и посчитай смету без сборки. Пути ниже — от корня папки навыка:

```bash
python3 scripts/build.py --src "$SRC" --out <рабочая папка> --dry-run [--target-mb N]
```

**Остановись.** Покажи факты об исходнике, таблицу ступеней с длиной каждого куска, итоговую длину, смету веса и времени, попадание в лимит и путь рабочей папки. Второй вопрос: **принять / поправить ступени / другое**. Жди ответа.

### Шаг 3. Пилот, затем остановка

Собери пилот на самой быстрой ступени — это секунды.

```bash
python3 scripts/build.py --src "$SRC" --out <рабочая папка> --pilot 30 [--target-mb N]
```

**Остановись** и покажи сам пилот, вырезку кадра в натуральную величину, образцы звука до и после растяжения и вес в пересчёте на весь фильм. Вырезку кадра посмотри сам и скажи, читается ли мелкий текст.

Вопрос: **собирать / качество получше / скорость поменьше**. Жди ответа.

Смысл шага: читаемость мелкого текста и разборчивость ускоренной речи — суждение, которое нельзя измерить. Всё остальное скрипт проверит сам.

### Шаг 4. Сборка и приёмка

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

```bash
python3 scripts/build.py --src "$SRC" --out <рабочая папка> [--target-mb N] [--crf N] [--height N]
```

Коды возврата: ноль — все проверки сошлись; один — ошибка входа, ничего не собрано; два — упал внешний инструмент; три — сверка не сошлась, файлы собраны, но бракованные.

Скрипт печатает покусочную таблицу и нумерованный список проверок. **Процитируй их пользователю**, а не пересказывай «всё хорошо». Расхождения до полукадра — неделимость кадра, а не ошибка. Вердикт «готово» выдавай только при нуле проваленных проверок; при провале назови номер, факт и допуск.

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

## Границы

Не применяйте навык к видео с камерой, лицом, музыкой или монтажным ритмом: ускорение и подмораживание кадра там читаются как брак. Не применяйте, когда нужен настоящий монтаж — титры, переходы, кадрирование по сюжету. Не применяйте, когда нужно только сжать без изменения скорости: это одна команда, разворачивать четырёхшаговый конвейер незачем. На клипах короче двух минут выигрыш не окупает пилот и сверку. Навык рассчитан на macOS.

Что нельзя терять при доработке навыка:

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

Подробности и измерения — в `references/ffmpeg-notes.md`. Читайте его при любой нештатной ситуации: почти все «естественные» решения там уже проверены и отвергнуты с числами.

## Опрос После Использования

Опрос задаётся один раз — после того как показан итог и озвучен вердикт по проверкам либо работа явно остановлена, не посреди сборки. Если пользователь уже ответил «пропустить» в этой сессии, не переспрашивайте.

```text
Опрос по навыку:
1. Что в работе этого навыка было полезно?
2. Что стоит доработать в процедуре или формате ответа?
Можно ответить коротко или написать "пропустить".
```

Если пользователь ответил, сохраните санированную карточку в `~/.codex/skill-runs/uskorenie-zapisi-ekrana/usage-feedback.jsonl` — лучше через bundled script:

```bash
python3 scripts/log_usage_feedback.py --liked "..." --improve "..." --outcome "..."
```

Script перед записью редактирует приватные пути, контакты и token-like строки и сохраняет в JSONL `redaction_applied` и `redaction_types`. Если запись невозможна из-за sandbox, прав или отсутствия tools, не делайте вид, что лог сохранён: скажите об этом и покажите короткую JSONL-карточку для ручного сохранения. Raw-ответы, контакты, пути и секреты не коммитить.

## Логирование Сбоев

Перед выполнением прочитайте локальный `known-exceptions.yaml` как список уже известных случаев и применяйте подходящее `do_next_time` без нового поиска.

Если пользователь поправил skill, tool/API/browser упал, нарушен режим работы, пришлось искать workaround или skill сделал ложное предположение, запишите приватную карточку в `~/.codex/skill-runs/<skill-name>/exception-log.jsonl`.

Пишите факты: что skill хотел сделать, что сделал, где сломался, какая предпосылка была ложной и что сделать в следующий раз. Если поле неизвестно, пишите `unknown`. Raw logs не коммитить.

