Создаёт персональный voice-скилл для любого пользователя — интервьюирует его, анализирует его реальные образцы текста и генерирует готовый устанавливаемый SKILL.md с индивидуальным Voice DNA (профиль, каналы, тональности, забаненные фразы, калибровочные примеры). Используй когда пользователь хочет «настроить свой стиль», «склонировать свой голос», «сделать скилл под мой стиль письма», «voice dna», «свой style-writer», «обучить агента писать как я».
Installs into .claude/skills of the current project.
Are you the author of voice-dna-builder?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ponomr-voice-dna-builder)
---
name: voice-dna-builder
description: Создаёт персональный voice-скилл для любого пользователя — интервьюирует его, анализирует его реальные образцы текста и генерирует готовый устанавливаемый SKILL.md с индивидуальным Voice DNA (профиль, каналы, тональности, забаненные фразы, калибровочные примеры). Используй когда пользователь хочет «настроить свой стиль», «склонировать свой голос», «сделать скилл под мой стиль письма», «voice dna», «свой style-writer», «обучить агента писать как я».
---
# Voice DNA Builder
Мастер, который превращает образцы текста человека в персональный writing-скилл,
устанавливаемый в `~/.claude/skills/`. Результат — такой же по структуре, как
`style-writer-ponomar`, но с голосом конкретного пользователя: его вводными
словами, ритмом, маркерами иронии, каналами и тональностями.
## Когда использовать
- Пользователь хочет, чтобы агент писал **его** голосом (посты, письма, реплики).
- Просит «настроить мой стиль», «склонировать голос», «свой voice dna».
- Хочет раздать коллегам инструмент для их собственных голосов.
## Что внутри (bundled resources)
| Ресурс | Назначение |
|---|---|
| `scripts/analyze_corpus.py` | Детерминированно считает длину, ритм, вводные, n-граммы-обороты, начала/концовки, маркеры иронии, пунктуацию, формы под запретом анти-слоя |
| `scripts/extract_telegram.py` | Достаёт корпус автора из JSON-экспорта Telegram Desktop (фильтрует форварды, медиа, ссылки) |
| `references/extraction-guide.md` | Вопросы интервью + правила маппинга «отчёт → шаблон» + схема voice-profile.json |
| `references/skill-template.md` | Шаблон выходного SKILL.md (структура как у style-writer-ponomar) |
| `references/universal-anti-slop.md` | Общий анти-AI-слой (баны фраз, RU+EN), встраивается в каждый скилл |
## Рабочий процесс
Выполнять по шагам. Интерфейс мастера — на русском; **сгенерированный скилл — на
языке образцов пользователя** (RU/EN/смешанный).
> **Обновление существующего голоса?** Если у пользователя уже есть скилл с
> `references/voice-profile.json` — не проводить интервью заново, перейти к разделу
> «Обновление голоса» ниже.
### Шаг 1 — Интервью
Прочитать `references/extraction-guide.md` (Часть 1) и провести интервью **порциями**:
сначала блок А (личность, темы, каналы), потом блок Б (тон, тональности, анти-правила).
Не задавать всё одним списком. Для выбора каналов/тональностей удобно использовать
структурированные вопросы.
### Шаг 2 — Сбор образцов
Запросить 5–20+ реальных образцов в нужном голосе. Способы (любой):
- вставка в чат через разделитель `---`;
- путь к файлу (.txt / .md);
- **JSON-экспорт Telegram Desktop** — лучший источник живого голоса:
```bash
python3 ~/.claude/skills/voice-dna-builder/scripts/extract_telegram.py result.json # покажет авторов
python3 ~/.claude/skills/voice-dna-builder/scripts/extract_telegram.py result.json --from "Имя" -o /tmp/corpus.txt
```
Если образцов мало (<5) — честно предупредить, что голос выйдет приблизительным.
### Шаг 3 — Анализ корпуса
Сохранить образцы во временный файл и прогнать:
```bash
python3 ~/.claude/skills/voice-dna-builder/scripts/analyze_corpus.py /tmp/corpus.txt
```
Отчёт даёт реальные числа. **Не выдумывать статистику** — брать только из отчёта.
### Шаг 4 — Сборка скилла
По `references/extraction-guide.md` (Части 3–4) заполнить `references/skill-template.md`:
- подставить данные интервью и числа из отчёта;
- вместо `{{ANTI_SLOP}}` вставить RU- или EN-секцию из `references/universal-anti-slop.md`;
- в Usage-примеры вставить 3–4 **дословных** образца автора (они калибруют тон сильнее правил);
- учесть исключение по корпусу (тире, общая антитеза, стрелки, пассив): если автор сам часто
использует форму — не банить её жёстко. Пороги — в `references/extraction-guide.md`, Часть 3.
Связочную антитезу не смягчать.
### Шаг 5 — Установка
Записать результат в `~/.claude/skills/{{slug}}/SKILL.md`, где `slug` — kebab-case
латиницей (напр. `style-writer-ivanov`). Проверить frontmatter (валидный `name` +
`description` с триггер-фразами).
Рядом сохранить **профиль голоса** `~/.claude/skills/{{slug}}/references/voice-profile.json`
(ответы интервью + корпус + дата; схема — в `extraction-guide.md`, Часть 4). Без него
обновление голоса потребует повторного интервью и повторной вставки всех образцов.
### Шаг 6 — Проверка и калибровка
Сообщить пользователю команду вызова (`/{{slug}}`) и предложить пробную генерацию.
Если голос звучит не так — вернуться к Шагу 4, поправить профиль/правила/примеры.
Опционально упаковать скилл для раздачи:
```bash
python3 ~/.claude/skills/skill-creator/scripts/package_skill.py ~/.claude/skills/{{slug}}
```
## Обновление голоса (без повторного интервью)
Когда пользователь просит «обнови мой голос» / «добавь новые образцы»:
1. Прочитать `~/.claude/skills/{{slug}}/references/voice-profile.json` — интервью уже там,
заново не спрашивать (только уточнить, если что-то изменилось: новые каналы, тон).
2. Принять новые образцы (чат / файл / `extract_telegram.py`), добавить к корпусу из профиля.
3. Прогнать `analyze_corpus.py` по **объединённому** корпусу.
4. Показать пользователю diff подписи голоса: какие вводные/обороты добавились, какие выпали.
5. Пересобрать SKILL.md (Шаг 4), обновить `voice-profile.json` (корпус + `updated`).
## Принципы качества
- **Только настоящее.** В «подпись голоса» идут лишь реально частотные слова из отчёта, не выдуманные.
- **Примеры > правила.** Реальные образцы автора в Usage — половина качества клона.
- **Анти-слой общий, голос личный.** Баны AI-фраз одинаковы для всех; всё остальное индивидуально.
- **Язык вывода = язык образцов**, даже если интервью шло на русском.