agentsclimarketplace

Voice dna builder

Skill ponomr/voice-dna-builder

Создаёт персональный voice-скилл для любого пользователя — интервьюирует его, анализирует его реальные образцы текста и генерирует готовый устанавливаемый SKILL.md с индивидуальным Voice DNA (профиль, каналы, тональности, забаненные фразы, калибровочные примеры). Используй когда пользователь хочет «настроить свой стиль», «склонировать свой голос», «сделать скилл под мой стиль письма», «voice dna», «свой style-writer», «обучить агента писать как я».From its SKILL.md

Install
npx -y skills add ponomr/voice-dna-builder

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
  • runs commandsInstructs the agent to run 4 commands, including `python3 ~/.claude/skills/voice-dna-builder/scripts/extract_telegram.py result.json` and 3 more.

SKILL.md

8.4 KB, ~2.0k tokens by cl100k_base, as published. Nobody here has run it

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 — лучший источник живого голоса:
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 — Анализ корпуса

Сохранить образцы во временный файл и прогнать:

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 дословных образца автора (они калибруют тон сильнее правил);
  • учесть тире-исключение: если автор сам активно использует тире — не банить их жёстко.

Шаг 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, поправить профиль/правила/примеры. Опционально упаковать скилл для раздачи:

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-фраз одинаковы для всех; всё остальное индивидуально.
  • Язык вывода = язык образцов, даже если интервью шло на русском.

What ships with it: 8 files

53.5 KB alongside SKILL.md, 2 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.