# Voice To Brief

> Шаг −1 протокола — превращение сырой голосовой расшифровки владельца в исполняемый промпт ДО брифа. Разворачивает рваную речь в полный перечень требований, восстанавливает недосказанное, называет места двойного прочтения вместо молчаливого выбора, отделяет требование от контекста и эмоции, собирает итог как промпт от начала до конца и получает подтверждение владельца. Обязателен, когда вход — расшифровка речи, надиктовка, поток мысли; печатный связный текст этого шага не требует.

- Skill: `zarubinvibe/voice-to-brief` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add zarubinvibe/voice-to-brief`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zarubinvibe/voice-to-brief/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: zarubinvibe (https://skillmd.com/u/zarubinvibe)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/zarubinvibe/voice-to-brief

---


# Шаг −1. Расшифровка речи → исполняемый промпт

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

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

**Когда обязателен.** Вход — расшифровка голоса, надиктовка, поток мысли, сообщение без знаков препинания, текст с самоперебиванием («нет, подожди», «в смысле», «а, еще»).
**Когда не нужен.** Владелец написал связный текст руками. Справочный вопрос. Односложная команда («обнови индекс»).

## Порядок

### 1. Принять расшифровку как есть

Записать исходник дословно в `.agent/context/_working/raspoznano.md` (нет дела — `cases/_logs/raspoznano_ДД-ММ-ГГГГ.md`). Исходник неприкосновенен: он точка сверки, когда через два дня выяснится, что требование поняли не так. Не чистить, не сокращать, не «причесывать».

### 2. Развернуть в перечень требований

Каждое требование — отдельной строкой. Правила:

- **Ничего не опущено.** Сказанное вскользь, в скобках, в конце фразы, после «ну и еще» — такое же требование, как названное первым. Именно вскользь сказанное теряется чаще всего.
- **Своими словами не подменять.** Формулировка владельца сохраняется; если она неточна — это фиксируется отдельной пометкой, а не исправляется молча.
- **Не объединять.** «Проверь и почини» — два требования, а не одно: починить можно, не проверив, и наоборот.
- **Отрицания и запреты — отдельной строкой и заглавными.** «Только не через WebSearch» в потоке речи теряется первым, а цена его потери максимальна.
- **Числа, имена, даты, реквизиты — дословно.** Расшифровка их искажает («шестнадцатое» / «шестьдесят»), поэтому каждое число помечается как требующее сверки, если названо на слух.
- **Название организации, названное голосом, прогоняется через `python3 scripts/verify_inn.py --find "…"` ДО передачи в работу.** Одна буква меняет адресата: «АТОЛ» — производитель касс, эмитент; «АТОН» — брокер и депозитарий. Запрос ушел бы не туда, а ошибка вскрылась бы уже в готовом документе (прецедент 13.08.2026). Результат сверки — отдельной строкой в блоке СВЕРИТЬ НА СЛУХ, с реквизитами из ЕГРЮЛ. Совпадений несколько или ни одного — это развилка, а не повод выбрать похожее молча.

### 3. Восстановить пропущенное

Речь опирается на общий контекст, которого в тексте нет. Разобрать три вида пропусков:

| Вид | Что искать | Что делать |
|---|---|---|
| **Указатели** | «это», «там», «тот файл», «как обсуждали», «то дело» | восстановить по контексту сессии и по диску; не восстановилось — в открытые вопросы |
| **Противоречия** | два требования, которые нельзя выполнить одновременно | выписать ОБА и назвать конфликт явно, не выбирать |
| **Недосказанное** | требование без критерия готовности, без адресата, без объема | назвать, чего не хватает, и предложить умолчание |

### 4. Отделить требование от контекста и эмоции

Три корзины, каждая нужна, но смешивать их нельзя:

- **ТРЕБОВАНИЕ** — то, что надо сделать. Идет в промпт.
- **КОНТЕКСТ** — зачем, история, предыстория дела. Идет в промпт справочно, исполнению не подлежит.
- **ОЦЕНКА** — «достало», «это важно», «хорошо получилось». В промпт НЕ идет, но ее сила читается как приоритет: то, о чем сказано резко, ставится выше в порядке шагов.

Типовая ошибка — превратить оценку в задачу: из «меня бесит, что скрипт врет» сделать «переписать скрипт», когда владелец просил всего лишь починить одну проверку.

### 5. Назвать двойные прочтения

Отдельный обязательный блок. Каждое место, где текст допускает больше одного понимания:

```
РАЗВИЛКА N. «{цитата из расшифровки}»
  Прочтение А: {…}  → тогда делаем {…}
  Прочтение Б: {…}  → тогда делаем {…}
  Предлагаю: {А или Б} — потому что {довод}. Подтвердите либо поправьте.
```

Развилок нет — так и написать: «двойных прочтений не нашел». Пустой блок — сигнал, что шаг пропущен, а не что текст однозначен.

### 6. Собрать исполняемый промпт

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

### 7. Показать владельцу и дождаться ответа

Промпт и блок развилок показываются владельцу ДО начала работы. Дальше:

- владелец подтвердил → исполнять;
- владелец поправил → внести правку в промпт, показать снова только измененное;
- владелец молчит, а работа не ждет → исполнять по предложенному прочтению, пометив в промпте строкой `ПРИНЯТО БЕЗ ПОДТВЕРЖДЕНИЯ: развилка N, прочтение А`. Это честная запись риска, а не разрешение решать за владельца.

### 8. Передать в task-brief

Утвержденный промпт — вход шага Б (`task-brief`). Дальше протокол идет обычным порядком: 0 → 1 → 2 → 3 → 4 → 5.

## Формат

Записать в `.agent/context/_working/prompt.md` (нет дела — `cases/_logs/prompt_ДД-ММ-ГГГГ.md`), показать в чате целиком.

```
## ПРОМПТ ИЗ РАСШИФРОВКИ            Дата: ДД.ММ.ГГГГ · Исходник: raspoznano.md

ТРЕБОВАНИЯ (полный перечень, ничего не опущено)
1. …
2. …

ЗАПРЕТЫ (заглавными, дословно от владельца)
- НЕ …

КОНТЕКСТ (справочно, исполнению не подлежит)
- …

ВОССТАНОВЛЕНО  «это» = {…} · «как обсуждали» = {…}
НЕ ВОССТАНОВЛЕНО  {что осталось непонятным}

РАЗВИЛКИ
РАЗВИЛКА 1. «…» → А: … / Б: … · предлагаю А, потому что …

СВЕРИТЬ НА СЛУХ  {числа, имена, даты, названные голосом}

ИСПОЛНЯЕМЫЙ ПРОМПТ
{текст от начала до конца: шаги по порядку, критерии приемки, запреты}
```

## Проверка себя перед сдачей

- [ ] Каждое требование расшифровки есть в перечне — сверено по исходнику, а не по памяти.
- [ ] Ни одно требование не объединено с другим.
- [ ] Все запреты вынесены отдельно и заглавными.
- [ ] Блок развилок непуст либо содержит явное «двойных прочтений не нашел».
- [ ] Ни одна оценка не превращена в задачу.
- [ ] Числа и имена, названные голосом, помечены к сверке.
- [ ] Промпт исполним без устных пояснений.

## Сбои

| Ситуация | Действие |
|---|---|
| Расшифровка обрывается на полуслове | исполнять полную часть, оборванное — в открытые вопросы; не додумывать концовку |
| Требований больше десяти | сгруппировать по результату, порядок сохранить, ни одно не выбрасывать |
| Владелец диктовал два разных дела подряд | разделить на два промпта, спросить, какое первым |
| Расшифровка искажает термин («статья 335» вместо «333») | обе версии в промпт, пометить к сверке, норму проверить `scripts/cite.py` |
| Развилок больше пяти | это не расшифровка, а разговор: собрать вопросы одним списком и спросить владельца до промпта |

