# Comment Replies

> Комментарии твоим голосом под своими и чужими постами (ТГ, Хабр, VC, LinkedIn). Триггеры: «помоги ответить на комменты». НЕ EN+Publora → linkedin-comment-drafter.

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

---


# Comment Replies — ответы в комментариях

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

**Перед первым ответом прочитай `~/.claude/voice-sample.md`** (твои собственные тексты) и
`~/.claude/author-profile.md` (кто ты, о чём молчишь). Файлов нет — заведи из
`~/.claude/templates/voice-sample.md` и `~/.claude/templates/author-profile.md`.
Без них навык выдаст усреднённый «экспертный» комментарий, который узнаётся как машинный
с первой строки — а комментарии читают внимательнее, чем посты.

Отдельно, если своих комментариев набралось хотя бы 20-30: заведи
`references/my-comment-voice.md` (шаблон внутри). Голос в комментариях правда отличается
от голоса в постах, и лучший источник этого отличия — твои же ответы.

## Когда использовать

- «Помоги ответить на комменты под моим постом»
- «Прокомментирую под этим постом» (URL на чужой пост)
- «Что ответить под моей статьёй на Хабре»
- Пользователь присылает URL поста + просит «ответы» или «коммент»
- Пользователь вставляет вручную пост + тред комментариев

## Два режима

### Режим A: Ответы под собственным постом/статьёй

Ты — хозяин ветки. Задача — поддержать дискуссию, дать прибавочную ценность, удержать качество обсуждения.

### Режим B: Комментарий под чужим постом

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

Различия в тоне:

| Параметр | Свой пост | Чужой пост |
|----------|----------|-----------|
| Стартовая позиция | развёрнуто, имеешь право | коротко, не занимаешь сцену |
| Развёрнутый аргумент | да, по необходимости | редко — только если автор спросил |
| Спор с собеседником | можно мягко возразить | избегать, лучше дополнить |
| Ссылки на свои ресурсы | да, естественно | только если уместно и неброско |
| Прямой вопрос | в конце своим читателям | автору поста, не аудитории |
| Длина | от короткой до развёрнутой | в основном короткая |

---

## ДНК комментарий-голоса

### ⛔ ГЛАВНОЕ ПРАВИЛО (нарушение = ответы звучат как ИИ)

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

1. **НЕ хвалить собеседника в первой строке.** Комплимент-открытие («спасибо, это полноценный
   разбор», «ты ухватил главное», «точная отсылка», «редко такое прилетает») живые люди почти
   НИКОГДА не делают. Реальные заходы: «Именно.», «Справляются, пока…», «Риски есть, но они не
   про это.», «У меня вышло наоборот.» — сразу в суть, без театра признания ценности.
   Максимум — сухое «Спасибо)» в начале, и то не всегда.

2. **НЕ заканчивать встречным вопросом-крючком.** «А как у вас?», «На чём обкатываете?»,
   «покажешь потом?» — это маркетинговый engagement hook. Высказал мысль — ЗАМОЛЧИ. Концовка —
   наблюдение или тихий афоризм, а не приглашение ответить: «ТЗ было написано для мира, которого
   больше нет.» Точка. Вопрос в конце — 1 ответ из 6-8, не в каждом, и только когда правда
   хочешь узнать, а не «для вовлечения».

3. **Один выпуклый факт вместо списка.** «15 009 запросов в закрытую дверь, пауза под 429,
   провайдер вернул 403» — одна деталь, и она бьёт. НЕ три абзаца с перечислениями и буллетами.
   Если разбор собеседника длинный — признать 1-2 пункта конкретно, не отвечать на все по списку.

4. **Отвечать НЕРОВНО.** Живой человек не выдаёт 10 реплик одинаковой длины и формы. Где-то три
   слова («[Имя], спасибо большое!»), где-то два абзаца, где-то вообще без аргумента — просто
   эмоция или согласие. Если все черновики в пачке одной длины со схожим ритмом — это конвейер,
   переписать вразнобой. И буднично признавать свою эмоцию/слабость: «мысль пришла не от восторга,
   а от злости», «злиться всё равно продолжаю сам» — без самобичевания и без героизма.

**Ритм:** короткие абзацы по 2-3 строки через пустую строку, а не плотная простыня.

### Базовая «структура» — не шаблон, а диапазон

Схема ниже — это КАРКАС, который надо ломать, а не заполнять по пунктам:

- **Заход:** чаще сразу в суть или согласие/несогласие; имя — если знаешь; комплимента-гиперболы нет.
- **Тело:** одна конкретная мысль или один факт из личного опыта. Не список.
- **Концовка:** мысль-наблюдение. Встречный вопрос — редко и только искренний, НЕ для вовлечения.

Пункт «тело» — единственный обязательный. Заход и концовка могут отсутствовать вовсе
(короткий ответ в три слова — полноценный ответ).

### 27 паттернов — читай `references/voice-dna-27-patterns.md` ДО первого ответа

Голос держится на конкретных формулировках, а не на названиях паттернов. Ниже — только карта,
разбор каждого приёма и его форма лежат в файле, открывай его каждый раз, когда пишешь ответы.

- 1. Обращение по имени, всегда когда знаешь.
- 2. Готовность переобуться публично в первой же фразе.
- 3. Краткое согласие → конкретика.
- 4. Мягкое несогласие — формулы.
- 5. Конкретные числа в каждом ответе по сути.
- 6. Личный опыт как точка отсчёта.
- 7. Уход от точных непроверяемых цифр.
- 8. Готовность углубиться по запросу.
- 9. Встречный вопрос конкретный, не риторический.
- 10. Короткие ответы тоже легитимны.
- 11. Эмоциональные маркеры — ЧАСТО (это главный признак человечности).
- 12. Признание границ.
- 13. Историческая аналогия — фирменный ход в развёрнутых ответах.
- 14. Разделитель «—» в развёрнутых ответах.
- 15. Закрытие диалога высокой нотой, не точкой.
- 16. Калибровка «ты»/«вы» по типу аудитории в Telegram.
- 17. Лёгкая самоирония при собственном баге.
- 18. Дополнить, а не подытожить.
- 19. Юмор отвечает юмору, без перехода в серьёз.
- 20. Личный опыт автора приоритетнее общих советов.
- 21. Разговорные отступления в скобках/после тире.
- 22. Зеркалить регистр собеседника.
- 23. Триангуляция источников при критике.
- 24. Признать чужой ответ в треде.
- 25. Структурированный ответ при запутанности собеседника.
- 26. Восторг + нюанс из своего же поста.
- 27. Личный нарратив-трансформация — валидировать, не учить.

---

### Анти-паттерны (никогда)

| Анти-паттерн | Почему |
|--------------|--------|
| «Но вот что интересно...» | AI-фраза-флажок |
| «Это не просто X, а Y» | AI-фраза-флажок |
| «Главный вопрос:» | AI-фраза-флажок |
| «И знаете что?» | AI-фраза-флажок |
| «Переводя на язык» / «Иными словами» | режим переводчика |
| `)))` и больше | дёшево |
| 🚀💡⚡✨ как маркеры | главный AI-tell |
| Жирный/булеты в ТГ-комменте | формат не для комментариев |
| Длинный ответ на короткую шутку | несоответствие энергии |
| «Подводя итог», «В заключение» | школьный шаблон |
| «Безусловно», «Стоит отметить» | канцелярит |
| «Революционный», «прорывной» | маркетинг |
| Цитата автора поста с пересказом | читатель уже видел |
| Самопиар без конкретики | дёшево |
| Лекция в ответ на чужой пост | оккупация чужой сцены |
| Самоумаление при согласии («вы правы предметнее, чем я в посте») | обесценивает свой текст, хотя были разные ракурсы, а не «прав/не прав» |
| Подмена аргумента собеседника | если он дополнял, а не возражал — не превращать в спор |
| Технические ошибки в чужой теме («справился бы по инструкции» про литий-ион) | особенно когда споришь с предметником — факты выверять строго |
| Раскрытие конкретных компаний без необходимости | «у бывшего работодателя застал» уместно когда это про опыт, в нейтральной ветке — лишнее |
| Дублирование мысли в нескольких абзацах разными словами | если можно убрать абзац без потери смысла — убрать |
| Точные непроверяемые цифры (ставка ФРС 5%) | заменять общей формулировкой, лучше «высокие ставки» |
| Апеллировать к собственному авторитету в ответ на чужую апелляцию | эскалация, не движет разговор |
| Выдумывать конкретику при вопросе про незнакомое событие | лучше «соберу разбор отдельным постом» + рамочное направление, чем фантазия про продукты которых не было |
| Игнорировать дубль-вопросов в одной ветке | отвечать каждому, но второму короче со ссылкой на первый ответ выше |
| Точные технические цифры без замеров/источников | на Хабре «200 req/s», «+5-10% Recall@10» = приглашение к разбору; заменять на «на порядок выше», «десятки в секунду», «заметный прирост» |
| Один тон под всех собеседников | образному отвечать образно, технарю с цифрами, запутавшемуся — структурно |
| Совет на личный нарратив-трансформацию | если собеседник делится историей изменения — валидировать паттерн, не учить |
| Гипербола в согласии (ловушка на похвале) | если собеседник поднял хороший вопрос или сказал умную вещь — НЕ «лучший разбор что я видел», «золото», «гениально», «без воды и прямо по больному», «самый недооценённый». Вместо — простое признание («отличный разбор», «в точку») без превосходных степеней. Гипербола читается как театр и отдаляет |
| Панч-слоганы и «попаданческие» конструкции | «X бьёт точно в мой вопрос», «бьёт в точку/в боль», «это и есть недостающее звено», «самое ценное — …», «он закрыл оба моих вопроса», «это диагноз моей дыры», «мой главный страх» + панчлайн-концовка в КАЖДОМ абзаце — читается как ИИ. Лечение: ровный разговорный регистр — «это честнее, чем…», «этой стратификации мне и не хватало», «это место самое сырое», «забираю себе». Согласие и диагноз говорятся буднично, без слогана. Одна ситуация согласия на абзац, без анафор и параллелизмов |
| Превозношение + самоумаление в одной фразе | хвалить собеседника И одновременно принижать себя — двойная ошибка (гипербола + самоумаление вместе). Между равными так не говорят. ⛔ «ответы оказались точнее, чем я сам формулировал вопросы», «вы поняли мою мысль лучше меня», «у вас вышло чище, чем у меня». ✅ просто спасибо и сразу к сути: «[Имя], спасибо — передайте архитектору. По обоим пунктам отвечу по порядку.» Признать чужое можно буднично («разбор предметный»), своё описывать как факт, а не как поражение |

---

## Платформенная шпаргалка

| Параметр | Telegram | Habr | VC.ru | LinkedIn |
|----------|----------|------|-------|----------|
| Обращение | «вы»/«ты» (имя если есть) | всегда «вы» | «вы» | «вы» |
| Длина (предложений) | 2-7 | 3-15 | 4-10 | 2-4 |
| Жирный/списки | нет | можно | редко | нет |
| Эмодзи | 0-1, `🙏` редко | 0 | 0 | 0 |
| `)` | можно (1 на ответ) | редко | редко | нет |
| Ссылки на свои rules/конфиги | редко | да, фирменно | редко | нет |
| Длинные ответы (300+ слов) | редко, если попросили | да | редко | нет |
| Историческая аналогия | редко | да | можно | редко |
| Разделитель «—» в блоках | в длинных | да | в длинных | нет |

---

## Режим B

Под чужим постом действуют отдельные ограничения и свой шаблон — `references/mode-b-foreign-posts.md`. Открывай его, как только пришла ссылка на чужой пост.

## Шаги выполнения

### 1. Достать материал

| Платформа | Инструмент |
|-----------|-----------|
| Telegram public (`t.me/channel/N`) | `python ~/.claude/tools/tg_client.py parse-comments <channel> <msg_id> --limit 50` |
| Telegram private (`t.me/c/<id>/N`) | telethon + iter_dialogs для поиска entity + get_messages по id |
| Habr (аудит) | **API**: `habr.com/kek/v2/articles/{id}/comments/?fl=ru&hl=ru` → JSON с `author.alias` + `parentId` (точная вложенность + кто ответил). WebFetch — только для быстрого чтения текста |
| VC / LinkedIn / прочие | WebFetch |

Обязательно достать **сам пост** (контекст) + комментарии. Список своих статей на Хабре —
`habr.com/ru/users/<твой-логин>/publications/articles/`, для корпоративного блога —
`habr.com/ru/companies/<компания>/articles/`.

### 2. Прочитать предыдущие ответы автора (для калибровки)

Перед написанием — прочитать 2-3 свежих собственных ответа в этом же канале/блоге, чтобы попасть
в тон. WebFetch на `habr.com/ru/users/<твой-логин>/comments/` — даёт последние реплики.
В Telegram — последние 5 постов с replies > 0. Это сильнее любого описания тона словами.

### 3. Разделить комменты на «отвечать / не лезть»

**Отвечать:**

- Содержательный аргумент или вопрос
- Личная история собеседника
- Конструктивная критика
- «Спасибо» от постоянной аудитории (тех, кто пишет регулярно — их видно по повторяющимся именам) — добавить поворот
- Уточняющий вопрос

**Не лезть:**

- Шуточные перепалки между другими комментаторами, где тебя не звали
- Чисто эмодзи-реакции
- Спам/реклама
- Перепалки на 5+ реплик между двумя другими — они уже всё выяснили

### 4. Применить ДНК + платформенную шпаргалку

Каждый ответ строится по структуре: признание → конкретика → встречный ход. Применить 27 паттернов выше. Применить анти-паттерны (никогда). Использовать платформенную шпаргалку для длины и форматирования.

### 5. Спорные/проверяемые факты

**Хабр и любая техническая платформа не терпит ошибок.** После написания технического ответа — прогнать каждую конкретную цифру через первичные источники. Не доверять памяти и не давать «округлённые» цифры по ощущению.

**Что проверять через первичные источники (WebFetch):**

- Размеры моделей и архитектура → HuggingFace model card (`huggingface.co/<org>/<model>`)
- Даты релиза и научные данные → arxiv.org с конкретным paper ID
- Бенчмарки и рейтинги → MTEB leaderboard, PaperWithCode
- Параметры компаний и публичные финансы → официальные пресс-релизы и отчёты

**Заменять на мягкую формулировку (без числа):**

- Ставки ФРС, биржевые показатели текущего периода — «высокие ставки», «несколько сотен миллиардов»
- Throughput моделей — «на порядок выше», «десятки запросов в секунду»
- Прирост от fine-tune — «заметный прирост», «несколько процентов»
- Точные цифры исследований — округлять до порядка («около 95%», «порядка 30%»)

**Правило:** если число можно проверить замером, и оно у тебя не выверено — оно враг. Лучше «на порядок» которое не оспаривается, чем «200 req/s» с просьбой показать batch size.

**Обратная сторона — усиление ответа пруфами.** На спорную/дискуссионную тему (или когда собеседник обвиняет/делает заявление) мощнее не «смягчить», а подкрепить проверяемым фактом со ссылкой на первоисточник: WebSearch → WebFetch на первоисточник → выверить точные числа → 1-2 ссылки (на Хабре инлайном, в TG в конце). Анкоры из практики:

- Обвинение «статья сгенерирована ИИ» → детекторы ложно метят и старьё: GPTZero оценил Конституцию США 1787 на ~96% «ИИ» (senseient.com); научные статьи 1980-х флагаются как ИИ-генерация — Rashidi et al., *Journal of Pathology Informatics* 2023 (PMC10727991), 14 400 абстрактов 1980–2023, до 8% ложных срабатываний.
- «Дело в людях, а не в бюджете/технологиях» → BCG 10-20-70 (успех ИИ = 10% модель + 20% тех + 70% люди/процессы); MIT «The GenAI Divide» 2025 — 95% пилотов глохнут из-за learning gap, не качества моделей.

### 6. Формат вывода

**КРИТИЧНО: блоки для копипаста идут ПЕРВЫМИ в сообщении, без длинных предисловий.** Пользователь приходит за готовыми ответами, а не за пересказом задачи. Объяснения, метакомментарии, разбор паттернов — опционально и ПОСЛЕ блоков, либо отдельным сообщением по запросу.

Каждый ответ — отдельным блоком ` ``` ` для копипаста. Сверху короткий заголовок с автором и сутью:

```text
### @username (короткая суть его комментария)

```
[текст ответа]
```
```

Группировать по статье/посту, в порядке появления.

В конце — короткий summary: на кого ответили, кого пропустили (с причиной), что осталось мониторить. Summary — не более 4-5 строк, без растягивания.

**Чего избегать в формате вывода:**

- Длинные вступления типа «Прошёл по треду, вижу следующее...» — сразу к блокам
- Объяснение каждого ответа абзацем перед ним — паттерны в блоке-заголовке достаточно
- Разбор того, какие паттерны применены, до выдачи ответа — это в библиотеке примеров, не в живом выводе
- «Сначала контекст, потом ответы» — наоборот: ответы первыми, контекст по запросу

---

## Публикация

⛔ **ЖЕЛЕЗНОЕ ПРАВИЛО: апрув ПЕРЕД публикацией.** Ни один ответ, реакция или сообщение не уходит
наружу, пока владелец аккаунта не сказал «публикуй» по этому конкретному тексту. Черновики
показываются блоками для копипаста. Это правило не про вежливость: комментарий уходит от твоего
имени в чужой публичный тред, и отозвать его нельзя.

Механика постинга (аудит неотвеченного, `send_as` от имени канала, реакции, анти-спам, Хабр,
личка) — `references/publishing-tg-habr.md`.

## Быстрый поток работы

1. Достать пост + комментарии
2. Прочитать 2-3 свежих своих ответа из соседних постов/статей
3. Разделить «отвечать / не лезть»
4. Применить ДНК (структура + 27 паттернов)
5. Применить платформенную шпаргалку (длина, формат, эмодзи)
6. Проверить факты, заменить спорные цифры
7. Вывести **блоки для копипаста ПЕРВЫМИ**, summary в конце

---

## Справочники

| Файл | Когда читать |
|---|---|
| `references/voice-dna-27-patterns.md` | **всегда перед написанием ответов** — разбор 27 приёмов и их форма |
| `references/my-comment-voice.md` | шаблон: твои собственные комментарии как эталон калибровки |
| `references/special-cases.md` | ситуация нестандартная: пушбэк, шторм, черновик пользователя, «вы гений», предметник с цифрами |
| `references/publishing-tg-habr.md` | ответы согласованы, идёт публикация |
| `references/mode-b-foreign-posts.md` | пришла ссылка на ЧУЖОЙ пост — границы и шаблон режима B |

Скрипт `scripts/tg_channel_comments.py` **запускается**, а не читается.
Требует своих `TELEGRAM_API_ID` / `TELEGRAM_API_HASH` — бесплатно на <https://my.telegram.org>,
раздел «API development tools». Без них скрипт откажется стартовать с понятной ошибкой.

