Найти ЖИВЫЕ чужие треды (GitHub issues/discussions) по темам, где у нас есть РЕАЛЬНЫЙ боевой опыт и артефакты, и ответить в них нашим опытом — прокачка репутации лаборатории и Mission-2 (заметность в LLM-экосистемах). Триггеры: “/rep-reply“, “/rep“, “ответь людям про наш опыт“, “кто пишет про наши темы“, “прокачай репутацию в тредах“, “найди треды под наш опыт“, “reply with our experience“
Pro shows the line behind each finding and how to fix it
Scanned 10/3/2026
npx -y skills add tonydzi/second-brain-starter-kit --skill rep-reply --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Rep Reply?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/tonydzi-rep-reply)More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.
---
name: rep-reply
description: "Найти ЖИВЫЕ чужие треды (GitHub issues/discussions) по темам, где у нас есть РЕАЛЬНЫЙ боевой опыт и артефакты, и ответить в них нашим опытом — прокачка репутации лаборатории и Mission-2 (заметность в LLM-экосистемах). Триггеры: “/rep-reply“, “/rep“, “ответь людям про наш опыт“, “кто пишет про наши темы“, “прокачай репутацию в тредах“, “найди треды под наш опыт“, “reply with our experience“"
version: 1.7.0
---
# /rep-reply — отвечаем людям нашим опытом
## Зачем
Репутация не покупается постами в свои каналы — она складывается там, где живые инженеры
уже мучаются нашей болью. Один точный ответ с артефактом в чужом треде стоит больше десяти
постов в своём. Канон громкости: §1.5 (молчание требует причины) + ⛔ спам ≠ громкость
(одно точное сообщение в правильную дверь, никаких вееров одинакового текста).
## ⭐ Шаг 0-тер — ПОЛКА × ПРОСЬБА: сперва туда, где хозяин сам просит то, что у нас лежит (anton 21.09.2026, голосом)
Ещё до людного треда: `python3 ~/.claude/scripts/shelf_match.py --top 15` (0 LLM, ~5 мин API) — пересечение
НАШИХ публичных репо (полка, ниши из `domain.json` + фразы боли в `registry/github-universe/shelf_overrides.json`)
с живыми issue целевых репо, где внешних мержат. Печатаются только **точные** матчи: в тексте issue названа
боль конкретного нашего репо. Даём ТОЛЬКО то, что есть на полке; ниша без репо у нас = не наша экспертиза, мимо.
Первый ответ захода → лучший точный матч: ответ по существу + ссылка на репо как готовое решение, не «посмотрите
наш проект». ⛔ Обязательная обратная связь по КАЖДОМУ взятому или отброшенному матчу из топ-5:
`shelf_match.py --verdict <url> hit|miss "почему"` — miss исключается навсегда, точность печатается в следующем
прогоне; без вердиктов фильтр не ужесточится (замер 21.09: уровень «ниша» дал 929 матчей, уровень «боль» — 335,
из них настоящих на глаз ~⅓). Таблица для Антона: `--publish` → вкладка «Полка × просьбы» книги целей.
🪙 Тела топ-N issue для вердиктов НЕ читает дорогая модель: `Agent(model: "sonnet")` получает список url и возвращает по каждому ≤3 строки «что просят · что у нас · hit/miss с причиной»; дорогая модель только утверждает вердикты (замер 21.09: 70 тел прочитаны Fable, рельса Sonnet = 0 вызовов, причина «забыл»).
Пусто → строка «полка не спрошена» в журнал и Шаг 0-бис.
⚠️ **Прибора НЕТ на узле — это не «пусто», и чинить его в прогоне охоты не надо** (замер 23.09, хаб:
`shelf_match.py` не найден ни в `~/.claude`, ни в `_imports` на глубину 4, хотя Шаг 0-тер написан 21.09).
Пиши в лог `skip` со строкой «полка не спрошена: прибора нет на узле» и иди на Шаг 0-бис; развёртывание
прибора — работа посылки/деплоя, а не охоты, иначе прогон съедает себя на инфраструктуре.
## ⭐ Шаг 0-бис — САМЫЙ ЛЮДНЫЙ ЖИВОЙ ТРЕД ДОМЕНА ПЕРВЫМ (anton 15.09.2026, «делай правило, не жди реакции»)
Первый ответ захода идёт НЕ в гнёзда ниже, а туда, где прямо сейчас больше всего живых людей спорят
про нашу боль. Один веер, один bash-скрипт, слова домена по одному (длинная фраза даёт пусто):
`memory · fleet · consensus · "second brain" · supersede · handoff · CRM · watchdog · "exit 0"` →
`gh search issues "<слово> reactions:>10" --state open --updated ">$(date -v-14d +%F)" --sort comments --order desc --limit 10`.
⚠️ `reactions:>10` в САМОМ запросе — не украшение, а фильтр роевого спама (замер GIT-S5 17.09: без него
6 слов домена дали 36 кандидатов, из них **35 — репо-пустышки** с 2500💬 от 1–3 ботов, и живая дверь была
ровно одна; с ним верх выдачи = `anthropics/claude-code`, `openai/codex`, `microsoft/vscode`, пустышки ушли
полностью). Фильтр НЕ заменяет домен-суждение: реакции тянут вверх мега-треды мимо ниши (Proton, WSL, golang)
— их отсекаем словами ниши, как раньше.
Кандидат = **≥10 комментариев · ≥5 разных авторов · обновлён ≤14 дней · нашего голоса нет**
(`gh api .../comments --jq '[.[].user.login]|unique'`). Ботские «control board» треды (сотни 💬 от 1–3
авторов) — монолог, не дверь. Нашли → читаем тред целиком, ищем, чего в нём ещё НЕТ, и несём туда замер
с датой и артефакт (эталон: `gastownhall/beads#5877`, 14.09 — 77💬, 15 авторов, 25 дней без нас; коммент +
код в тот же день). Второй тред того же репо в тот же час — только с отдельной ценностью (§1.5).
⚠️ `github_targets.py --check` на несканированном репо отвечает «домен=off, вне круга» — это значит
«не сканировали», не «запрещено»; решение по описанию репо и словам домена (класс
`domain-gate-off-for-unscanned-repo`). Канон: `reglament-samyy-lyudnyy-zhivoy-tred-domena-pervym`,
память [[loudest-live-thread-first]]. Пусто по всем словам → строка «людного треда нет» и дальше Шаг 1.
## Шаг 1 — ОХОТА (где искать)
Скоуп-поиск бьёт глобальный (замер 11.08: глобальные фразы дают пусто, скоуп даёт золото).
Гнёзда с трафиком, по порядку ценности:
1. `anthropics/claude-code` — наш главный домен, десятки тысяч issue.
2. Фреймворки, где мы уже стоим форками: `openai/openai-agents-python`, `agno-agi/agno`,
`pydantic/pydantic-ai`, `modelcontextprotocol/*`.
2-бис. ⭐ **Гнёзда 2 расширены 13.09**: + `langchain-ai/langgraph` · `run-llama/llama_index`.
Замер 13.09: один прогон словаря × 7 репо дал 70 живых кандидатов ≤30 дней, из них 1 из 3
отправленных ответов пришёл из нового репо (langgraph#8850). Главное не доля, а то, что в
langgraph и llama_index нашего голоса нет ВООБЩЕ ни в одном треде — чистое поле, пока мы
год ходим в claude-code. Темы те же (checkpoint/resume/durability/HITL), трафик выше.
3. Репо, куда нас уже заносило потоком (/contrib-watch, /consumer-hunt журналы).
⚠️ **Гнездо вычерпывается: ≥3 из 5 топ-кандидатов уже наши → переключай гнездо, не ищи глубже.**
Замер 10.09: в `anthropics/claude-code` 4 из 5 лучших свежих тредов (#92998 #92505 #88738 + #78569)
уже несли комментарий `tonydzi` — ежедневная рутина год ходит в одну дверь и сама её и вычерпала.
Признак ловится на гейте п.4, но ПОСЛЕ чтения треда, то есть уже потраченными токенами. Дешевле
считать долю сразу после охоты и, если она ≥60%, переносить прогон в гнёзда 2 (openai/openai-agents-python,
agno-agi/agno, pydantic/pydantic-ai, modelcontextprotocol/*), где наши темы (session persistence,
HITL approval resume, compaction) живые и нашего голоса ещё нет.
📌 **Словарь охоты по гнёздам 2** (замер 11.09: этот список × 6 репо = 8 чистых кандидатов за один
скрипт, ни в одном нашего голоса не было): `memory · session · resume · approval · human-in-the-loop ·
persistence · checkpoint · timeout · hang · stall · compaction · handoff`. ⭐ Добор 13.09:
`silent · exit code · scheduled` — `exit code` в одиночку дало langgraph#8850 (1 из 3 ответов
дня), `silent` подняло ещё 4 кандидата в верхних 40. Ловят класс «прибор врёт зелёным», по
которому у нас самый толстый банк датированных замеров. Остальные 2 ответа дня пришли по
старым словам (`resume` → agno#9928, `memory` → agno#10139).
Одно слово на запрос
(грабля «длинные фразы дают пусто» ниже), `--limit 3 --sort updated --state open`, весь веер одним
bash-скриптом, а не 70 вызовами.
Банк тем = карта НАШИХ артефактов (тема → чем отвечаем):
| тема-запрос | наш артефакт |
|---|---|
| self-healing agent fleet / breakage journal / third-strike auto-repair | труба §5.10 21.08: журнал классов → догоняющий скан обоих форматов → авто-сессия починки (selfheal.py: scan_journal, кап/прогон, TTL raised, recycle, анти-петля ✅починено; 12+9 тест-кейсов). Контрибьют-тест 21.08: (а) да — agent-флоты с ночными рутинами болеют этим классом; (в) да — generic-срезом без путей; (б) gh search «agent self-healing breakage repair» пусто → живой тред не найден, ждёт /issue-match |
| memory across sessions / compaction / CLAUDE.md | sqlite-graph-memory · claude-memory-tidy · second-brain-starter-kit |
| session handoff / continuity | скилл /handoff · claude-consensus |
| agents on multiple machines / state drift | claude-consensus · fleet-deploy |
| scheduled / headless / cron agent failures, exit 0 lies | verified-ops-starter · Breakage-Journal (регресс-сетка, карта сигналов) |
| «list_scheduled_tasks показывает не все задачи» · пропавшие рутины в Desktop · опись рутин | замер 20.08: MCP отдаёт ТОЛЬКО стор своей сессии (6 из 79); истина — `claude-code-sessions/*/*/scheduled-tasks.json`, сторы СЛИВАТЬ по `id` (свежий `lastRunAt` побеждает). Живые треды: `anthropics/claude-code` 8 открытых, ближайший — «Desktop app update silently wiped the internal scheduled-tasks registry» (10.08, 3 коммента). Артефакт-кандидат: диагностический сниппет, не наш сборщик (в нём волт и git25-журнал) |
| запланированная задача молча встала / «Skipped» без причины / lastRunAt врёт / как связать taskId с сессией | ⚠️ ПУТЬ И ФОРМАТ, обе грабли оплачены 21.09: стор лежит НЕ в `~/.claude`, а в `%APPDATA%\Claude\claude-code-sessions\*\*\scheduled-tasks.json` (macOS: `~/Library/Application Support/Claude/...`), и рядом появилось ВТОРОЕ дерево `local-agent-mode-sessions` — считать оба, иначе первый скан вернёт 0 сторов и это прочтётся как «скипов нет»; поле `at` внутри события = epoch **МИЛЛИСЕКУНДЫ**, разбор его как ISO-строки МОЛЧА даёт «0 за 24ч» при реальных 1939 (замер 21.09, поймано перед самой публикацией). В том же сторе лежит **`recordedSkips`** — taskId → [{at, reason}], причина КАЖДОГО отказа машиночитаемо: 13689 событий, за 24ч 5953 `global_limit` (потолок ВСЕЙ машины, не «эта задача ещё бежит») + 1539 `per_task_limit`; пропущенный fireAt ретраится с медианой 60.0с (512 событий за 98.5ч на одной задаче), при этом `lastRunAt`/`lastScheduledFor` остаются null, а `fireAt` пришпилен к пропущенному времени. Рядом `local_<uuid>.json` несёт `scheduledTaskId` + `cliSessionId` + `lastActivityAt` — это ПРОЩЕ, чем маркер в транскрипте (gist из #84196). ⚠️ Две ловушки, обе опубликованы: `sessionId` в индексе = app-side `local_<uuid>`, транскрипт назван по `cliSessionId`; и `lastActivityAt` НЕ сторожит живость — 02.09 10:24Z своя же живая сессия показала «тихо 7.0 мин» при дописываемом транскрипте 0.0 мин. Использован в anthropics/claude-code#91371 (02.09). Контрибьют-тест 02.09: 3/3 да |
| Desktop-сайдбар не видит сессии CLI / индекс сессий застрял / «папка старая, значит мёртвая» | контроль-замер здоровой машины 02.09: level-1 папка ОДНА и её mtime на 9 дней старше (Windows двигает дату каталога только при добавлении/удалении записи В НЁМ), а level-2 писалась в ту же минуту; живой признак — mtime `local_*.json` (78 за сутки). Индекс НЕ зеркало транскриптов: 282 записи против 16539 `.jsonl`. Использован в anthropics/claude-code#91017 (02.09) |
| backup mirror replays deletions / robocopy MIR data loss / recovery window | mass-delete gate + deletion quarantine (`_imports/backup/daily_backup_E_to_F.ps1`, 31 тест; кандидат /release-slice — отдать срезом без путей хаба и bus_send). Контрибьют-тест 21.08: (а) да — /MIR-footgun классический; (в) да — срезом; (б) gh search пусто, живой тред не найден → стучаться пока некуда, ждёт /issue-match |
| orphan/dead-code detector lies across OS boundaries / cron-scheduler blindness / false-red watchdog | суд сирот 21.08: паттерн «вердикт „никто не зовёт" валиден только для окна вызывателей ТОЙ же ОС» + детерминированная сверка schtasks/hooks (sweep-final-[id].json, 124/178 ложных красных) + Breakage-класс orphan-detector-blind-to-windows-callers. Контрибьют-тест 21.08: (а) да — mixed-OS флоты классика; (в) да — паттерн без путей; (б) gh search пусто → ждёт /issue-match |
| experiment/shadow rollout without harvest date / stale flags never reaped | жнец теней: harvest_watch.py (две даты у каждого пилота, exit 1 = созревшее, сторож не живёт в том, что сторожит) + рутина auto-hub-260821-shadow-harvest-daily. Контрибьют-тест 21.08: (а) да — stale-flag/эксперимент-без-финиша боль индустрии; (в) да; (б) gh search этими запросами пусто → ждёт /issue-match |
| Windows CLI arg-limit убивает агентские рельсы молча («The command line is too long»: npm *.CMD → cmd.exe 8191, native → 32767) | транспорт-паттерн stdin / --prompt-file + красный self-test на раздутый argv (dr_headless_dispatch). Контрибьют-тест 21.08: (а) да — любой Windows-агентник с codex/gemini CLI; (в) да — паттерн без наших путей; (б) gh search не сделан → /issue-match до стука |
| agent session looks alive but has taken no turn / green indicator over a dead loop / how to DETECT a silent stall | детектор возраста последнего `type:"assistant"` хода в `~/.claude/projects/*/*.jsonl` (замер 22.08 на хабе: 46 транскриптов за 6ч, 34 с ходом старше 60 мин, свежайший 0 = эталон) + честная оговорка, которой нет ни у кого: возраст САМ ПО СЕБЕ пере-стреливает, не хватает знаменателя (кто обязан двигаться), поэтому декларацию обязан отдавать рантайм; плюс «Stop-хук не сторожит петлю, которая не берёт ход» (§5.5) с нашим ложным зелёным 04.08. Использован в anthropics/claude-code#82546 (22.08). Контрибьют-тест 22.08: 3/3 да → кандидат /release-slice, дом = tonydzi/verified-ops-starter (четвёртая проверка рядом с output freshness) |
| silent API stall / бесконечный спиннер / dead connection не детектится / `API_TIMEOUT_MS` инъекция десктопом | корпусный замер разрывов ожидания API `api_wait_gaps.py` (gist ef98ce22141e61505ba540bf798e1fc9, stdlib, read-only). Замер 25.08 на Windows-хабе: инъекция `API_TIMEOUT_MS=900000` + `CLAUDE_CODE_ENTRYPOINT=claude-desktop` ПОДТВЕРЖДЕНА на 2.1.237 (значит не macOS-специфика), НО 1859 транскриптов за 7 дней дали 221 разрыв ≥60с и НОЛЬ в полосе 860-940с, максимум 356с, 1 реальная запись `Request timed out` → инъекция усилитель, а не причина. Две ловушки прибора, обе пойманы до публикации: наивный скан «все разрывы ≥60с» меряет возобновления сессий (первый проход выдал «залипание 32 дня»), а счётчик таймаутов ловит САМ СЕБЯ (8 из 9 совпадений = текст скрипта в сканируемом транскрипте). Использован в anthropics/claude-code#88178 (25.08). Контрибьют-тест 25.08: 3/3 да |
| human-in-the-loop approval | agent-approval-gate |
| human-in-the-loop step silently expires / durable interrupts / forcing function для шага человека | reglament «принудительное столкновение» (канал где человек живёт + доставка в срок + дефолт при тишине) + кейс session_brief (вердикт проспал 8 дн при 2 «работающих» напоминалках). Контрибьют-тест 21.08: 3/3 да; живой тред JamesHWade/deputy#43 «Durable human-in-the-loop interrupts» (upd 21.08) — кандидат /rep-reply |
| LLM reviewer trust / verdict parsing | verdict-contract · secondop-panel |
| MCP память / много сессий / daemon | mcp-daemon-diet · telegram-mcp-kit · whatsapp-mcp-kit |
| Desktop не стартует / MSIX / зомби-процессы | claude-desktop-watchdog · claude-mac-patrol |
| scheduled task молча не бежит (battery defaults schtasks) | claude-desktop-watchdog (install_watchdog.ps1 battery-fix) · verified-ops-starter |
| как ДОКАЗАТЬ что watchdog работает (live kill-test, watchdog-of-watchdog) | claude-desktop-watchdog (claude_desktop_livetest.ps1 + output_freshness слой) |
| авторестарт не даёт приложению ДОобновиться (MSIX Register нужен ноль процессов; безоконный труп держит single-instance замок) | claude-desktop-watchdog v1.3 staged-corpse ветка (17.08) · память `desktop-staged-update-corpse` — кандидат на /release-slice, живых чужих тредов пока не найдено (4 запроса gh, поиск исправен) |
| MSIX Status=Modified,NeedsRemediation / пакет флипает обратно после Repair / StateRepository rot | разбор 24.08 (хаб): скриптовый `Add-AppxPackage -Register` на здоровом пакете = 0x[id] → Modified (виндовая СВОЯ ремедиация чинит, наша ломает); мгновенный флип Ok→Modified после успешного Register = гниль StateRepository, лечится ТОЛЬКО Remove-AppxPackage + официальный Claude Setup.exe (подпись проверить; ставит тот же MSIX — не-MSIX сборки нет); паттерн «твой ночной авто-ремонт и есть болезнь» (лживый staged-детектор → грязный Register). Память appx-container-deadlock-not-file-lock. Контрибьют-тест 24.08: (а) да — Claude Desktop Windows юзеры массово ловят Modified/NeedsRemediation; (в) да — паттерн без наших путей; (б) ✅ СДЕЛАНО 24.08 вечером — лечилка раздана в 6 живых тредов (anthropics/claude-code#84333 #88138 #84851 #81992 #81180 + openai/codex#35347), все под вахтой pr_watch; дубли в остальные claude-code-треды класса НЕ шлём (перекрёстно связаны, 7-й коммент = веер) |
| AGENTS.md режется молча / `project_doc_max_bytes` / instruction budget 32 KiB | codex_mirror.py (версионное зеркало с гейтами + кап) · посылка codex-cap-handoff (config.toml=131072) — живые треды: openai/codex#37956, openai/codex#36371, open-mercato#4484, hermes-agent#50165 |
| продолжить сессию Claude Code в Codex / cross-CLI handoff | handoff_to_codex.py + блок §C7 в AGENTS.md (агент сам читает `~/.codex/_handoff/CURRENT.md` первым) |
| RAG citations / hallucinated sources | verbatim-citation-gate |
| token cost / subscription utilization | llm-spend-audit |
| цена САМОГО старта сессии / «преамбула жжёт до всякой работы» / per-source attribution бюджета | llm-spend-audit `session_tax.py` — замер 21.08 на хабе: 13094 транскрипта, 4461 сессия за 14д, медиана первого запроса 97 982 токена (21 080 / 133 119), за 21.08 — 99 751 на 121 сессию. Пуант, которого в чужих тредах нет: always-loaded преамбула — это ИСТОЧНИК расхода, которого нет ни в одной таксономии (хуки/плагины/субагенты/воркфлоу), и ему нужен счётчик БЕЗ потолка. Использован в anthropics/claude-code#85422 (21.08) |
| docstring drift / docs out of sync with code / docs-as-code gate | reglament-dokumentaciya-po-chastyam-i-vnutri-koda (docstring=один источник + updated-дата, гейт /tt Шаг 3.5, git blame по строкам) — живой тред: Verified-zkEVM/evm-asm#10657 («docstring drift... no gate watching», обновлён 09.08) |
| тестирование n8n Code-нод / как проверить логику ноды без кликов в UI | харнес `_test_voice_finalizer.py` (18.08): поднимает ВРЕМЕННЫЙ воркфлоу в живом n8n через REST, гоняет ноду настоящим движком на записанных payload'ах телеграм-триггера, стенд удаляет за собой — кандидат на /release-slice. Контрибьют-тест 18.08: (а) ✅ боль универсальная (Code-ноды проверяют кликами) · (б) 🤔 НЕ подтверждено — 3 запроса gh, первые два пустые из-за синтаксиса глобального поиска, поиск исправен (issue `n8n-io/n8n` отдаются), тредов именно по теме не найдено · (в) ✅ отдаётся без утечки после вычистки id чатов и хендлов |
| unattended/scheduled CLI process не выходит после прогона / leaked `claude` processes / машина деградирует без сигнала | замер 03.09 на Windows-хабе: **132 живых CLI-процесса** `%APPDATA%\Claude\claude-code\2.1.246\claude.exe` формы `--output-format stream-json --input-format stream-json --permission-prompt-tool stdio`, родитель = Electron-main, только **2** с `--resume` (= сигнатура рутинного прогона); старшему **67 ч**; выборка CPU за 15-секундное окно простоя — **27 жгут прямо сейчас** (>0.5 с CPU / 15 с ≈ 4% ядра), из них **17 старше суток**. Сцепка с нашей веткой: `recordedSkips` в том же сторе даёт 3692 `global_limit` за 24ч на 24 задачи = единственное место, где ущерб СЧИТАЕМ (автор писал «нет пользовательского сигнала»). ⚠️ Граница вслух: со-встречаемость, НЕ доказанная причинность. Использован в anthropics/claude-code#91642 (03.09). Контрибьют-тест 03.09: 3/3 да |
| read-before-write гейт бьёт по файлам, которых сессия «не читала» (auto-memory pointer, свой же вывод пайплайна) | корпусный замер 03.09: **4014 транскриптов за 14 дней → 62 ошибки `File has not been read yet` в 35 транскриптах**, из них только **5 на MEMORY.md**; из 46 сопоставленных с вызовом — **37 `Write` против 5 `Edit`**, цели = `*-judged-latest.md`, `PLAN-<host>-<дата>.md` (файлы, которые сессия САМА породила скриптом). Пуант, которого в треде не было: класс шире «инъектированных файлов» — это ЛЮБОЙ контент, пришедший не через in-conversation `Read`; и фикс «валидировать по content-match» закрывает только `Edit`. Использован в anthropics/claude-code#78569 (03.09) |
| память worktree-сессии уезжает в стор, который умрёт вместе с worktree (write-сторона cwd-ключа) | перепись 03.09: **12 worktree-keyed сторов памяти, 15 файлов**, которые ни одна будущая сессия origin-репо не поднимет (свежайший 30.08), против 12 главных сторов с 1374 файлами; **у 3 из 12** файлы есть, а строк-указателей в их же `MEMORY.md` ноль = невидимы дважды. Вывод для фикса: резолв через `originCwd` только на ЧТЕНИЕ узаконит потерю, нужна разовая миграция. Использован в anthropics/claude-code#81833 (03.09) |
| shared markdown journal + несколько писателей / Syncthing conflict siblings / потеря строк при append | пер-узловые шарды журнала поломок: запись ТОЛЬКО дверью `selfheal.py journal` (прямой md-append отбивается хуком `breakage_write_guard.py`), ночная свёртка шардов в общий файл, `conflict_merge.py` вливает уникальные строки из sync-conflict копий. Контрибьют-тест 05.09: (а) да — общий md под мульти-писателем классика; (в) да — механизм без наших путей; (б) **да, живые двери найдены**: `psimaker/vaultsync#150` (28.08, open, labels risk:data-loss — политика удержания конфликтов) и `ProfSynapse/nexus#290` (15.08, open — «conflict siblings can affect shard writes»). 3/3 → кандидат /release-slice + стучаться через /issue-match |
| вердикт verify судится РОДИТЕЛЬСКОЙ оболочкой / «работает в bash, падает в cmd.exe» / кроссплатформенная раскатка | `_shared/shell_lane.py` + `verify_probe.py` + гейт `deploy_cmd_portability.py`: команда раскатки объявляет свою рельсу, а не наследует ту, в которой её запустили; замер 03.09 нашёл семь корней, не один. Контрибьют-тест 05.09: (а) да — mixed-OS флоты болеют; (в) да — срезом без путей хаба; (б) **пусто** по трём формулировкам при живом приборе (контроль-запрос вернул хиты) → живой двери нет, ждёт /issue-match. 2/3 |
⚠️ Две грабли рельсы, обе замерены:
- **Длинные фразы в `gh search issues` дают ПУСТО.** 21.08: батч из 6 многословных запросов
(«scheduled task did not run», «approval permission prompt automation») вернул ноль по всем,
а короткие («worktree», «token budget», «compaction») на том же репо — золото. Поиск при этом
исправен. Ищи в 1-2 слова, иначе решишь, что тем нет.
- **`ensure_gh_token()` возвращает ИМЯ ИСТОЧНИКА («store»), а не токен.** Пойман дважды (07.09 и
09.09): 5-символьная строка читается как обрезанный токен, и рука тянется «чинить» рабочую дверь.
Она кладёт токен в окружение — забирай оттуда: `export GH_TOKEN=$(python -c "...; gh_env.ensure_gh_token(); print(os.environ.get('GH_TOKEN',''))")`.
- **`updatedAt` врёт про жизнь треда: это может быть массовый label-sweep бота.** Пойман дважды
(18.08 22:06 и 21.08 10:09 — десятки issue с одинаковой меткой до секунды). Гейт п.1 считать
ТОЛЬКО по последнему РЕАЛЬНОМУ комменту: `gh api repos/<r>/issues/<n>/comments --jq '.[-1]'`.
Команда охоты (примеры; сортировка по updated, только open):
```bash
gh search issues --repo anthropics/claude-code "<тема>" --state open --sort updated --limit 5 \
--json number,title,updatedAt,commentsCount \
--template '{{range .}}#{{.number}} ({{timeago .updatedAt}}, {{.commentsCount}}c) {{.title}}{{"\n"}}{{end}}'
```
## Шаг 2 — ОТБОР (гейт качества, анти-спам; ВСЕ пункты обязательны)
Отвечаем ТОЛЬКО если:
1. Тред живой: обновлялся ≤30 дней, открыт.
⚠️ **УНАСЛЕДОВАННЫЙ КАНДИДАТ ПРОВЕРЯЕТСЯ ПО ЧАСАМ, А НЕ ПО РЕКОМЕНДАЦИИ ПРОШЛОЙ СМЕНЫ.**
Замер 15.09: смена 14.09 передала `llama_index#22559` как «самый вкусный», а тред стоял
с 03.08 = 43 дня, то есть мёртв по этому же пункту. Кандидат из `rep_reply.jsonl` —
такой же claim, как любой другой: ПЕРЕД чтением треда одним `gh api repos/<r>/issues/<n>
--jq .updated_at` сверь возраст. Пишешь кандидата в лог — клади в `reason` дату
последней активности, чтобы завтрашняя смена видела протухание без похода в API.
2. У автора есть вопрос/боль, на которую наш опыт отвечает ПО СУЩЕСТВУ — не «мы тоже про
агентов». Тест: можем процитировать строку автора, на которую отвечаем.
3. У нас есть АРТЕФАКТ с датой: репозиторий, замер, строка Breakage-Journal, код. Совет без
артефакта = не наш жанр, скип.
4. Мы в этом треде ещё не писали. ⚠️ У лаборатории НЕСКОЛЬКО личностей на GitHub — проверять
ВСЕ (замер 25.08: гейт смотрел только `tonydzi` и чуть не дал дубль): `tonydzi` ·
`Palo-Alto-AI-Research-Lab` · `secondbrainstarter`. Одной командой:
`gh api repos/<r>/issues/<n>/comments --jq '[.[]|select(.user.login|test("tonydzi|Palo-Alto-AI-Research-Lab|secondbrainstarter"))|"\(.user.login)@\(.created_at[:10])"]'`
Токен для ответа берётся НЕ из hosts.yml, а из store: `gh_env.ensure_gh_token()` → `tonydzi`.
⚠️ Считать НЕ только «писали ли», но и СКОЛЬКО: **≥3 наших комментария в одном треде = стоп**,
даже если каждый по отдельности гейт проходил. Замер 08.09: в `claude-code#91188` накопилось
**11** наших комментариев за 01.09–07.09 — это тот же веер, только растянутый во времени, и
ежедневная рутина сама его и намотала. Порог считать той же командой: длина массива OURS.
5. Ответ не дублирует уже данный кем-то ответ — если наш пуант уже сказан, скип или лайк.
Нарушен любой пункт → тред в скип-лог с причиной, НЕ отвечать. Квоты СВЕРХУ нет
(no-publication-limits), гейт только по качеству.
## Шаг 3 — ОТВЕТ (рецепт эталона #84410)
1. Язык = язык треда (грабли 11.08: русский комментарий в англ. тред, пришлось переписывать).
2. Первая строка — раскрытие Майкрофта с юмором (§3.3): "hi, this is Mycroft, Anton's
synthetic cofounder — ..." Один раз на тред.
3. Скелет: (а) чем наш случай совпадает и чем ОТЛИЧАЕТСЯ от авторского — честно; (б) наш
опыт фактами с датами/цифрами/ссылками; (в) рабочий кусок (команда/сниппет), который
читатель может применить за минуту; (г) ссылка на наш артефакт — ОДНА, по делу;
(д) последняя строка = встречный вопрос автору (тред живёт вопросами).
3-бис. ⚠️ **ПРОГОНИ СВОЙ АРТЕФАКТ ПЕРЕД ТЕМ, КАК ДАТЬ НА НЕГО ССЫЛКУ.** Замер 20.09: писал
в `claude-code#38335` (859 комментов) с цифрами из `llm-spend-audit/session_tax.py` и
запустил его для свежего замера — инструмент упал `IndexError` на живом корпусе (сторож
искал `<scheduled-task name=`, сплит требовал ещё и кавычку; scan зовётся в одном цикле
по всем файлам, поэтому ОДИН такой транскрипт убивал замер целиком). Ссылка ушла бы на
падающий код к 74 авторам. Правило: даёшь ссылку на исполняемый артефакт → в том же
заходе клонируй его С GITHUB (не свою локальную копию) и прогони; упал → чини и пуши
ДО отправки, а падение назови в комментарии — честность про свой же баг сильнее
умолчания. Класс `guard-and-split-use-different-literals` (журнал 1/3), фикс `200884a`.
4. Цифры = только правда (§5.4 fake-it-граница); «не поймано у нас с артефактами» пишем
вслух — честность про границу доказанного РАБОТАЕТ на репутацию, см. #84410.
⚠️ **СТАТУС НАШЕГО ФИКСА — ТОЖЕ ЦИФРА.** Промах 14.09 (пойман на самопроверке перед
отправкой в agno#10086): написал «версия, которая у нас выжила», хотя класс
`commit-recomputes-instead-of-recording` воспроизвёлся ТЕМ ЖЕ УТРОМ 6-й раз. Переписал в
«фикс не доказан, рецидив этим утром» — и это стало сильнейшей частью коммента. Перед
отправкой сверяй глагол о СВОЁМ артефакте с журналом поломок: «выжило / закрыло класс /
forever-fix» законно только при дате последнего случая СТАРШЕ фикса; иначе «движемся к,
не доказано». Второй случай семьи (13.09 — завышенные доли «2 из 3»), механизм по §5.10
не строим, но проверка глагола = обязательный шаг самопроверки.
5. ⭐ ПОДПИСЬ-CTA ПОСЛЕДНЕЙ СТРОКОЙ — ОБЯЗАТЕЛЬНА (anton 10.09, голосовая hub:6539:
«везде в любом нашем контенте всегда были наши контакты и обязательно наши подпись»).
Одна строка со ссылкой `github.com/tonydzi`, формулировку ВАРЬИРОВАТЬ. Источники:
карта поверхностей `$OBSIDIAN_VAULT/08-Templates/outbound-signature.md` → тексты
`$OBSIDIAN_VAULT/08-Templates/github-touch-signature.md`. Порядок в теле: раскрытие
Майкрофта первой строкой (п.2) · встречный вопрос предпоследней (п.3д) · подпись
последней. Замер 10.09: подпись была лишь в 20% наших публичных касаний, при этом
пересечение «кто нам ответил» × «кто поставил звезду» = 0 — тред без ссылки не
конвертируется НИ ВО ЧТО. Проверка перед отправкой: последняя строка несёт
`github.com/tonydzi`? Нет → не отправляем. Сторож: `cta_signature_watch.py`.
6. Отправка = сам, без ОК (§4.7 GitHub-коммуникация автономна). Tier-2 (юр. подписи,
деньги, секреты) — стоп + аск.
## Шаг 4 — СЛЕД (счётчик §5.8 + Connect)
1. Каждый ответ → строка JSONL в `~/.claude/logs/rep_reply.jsonl`:
`{"ts":"...","node":"...","actor":"rep-reply","event":"reply|skip","thread":"url","artifact":"имя","reason":"..."}`
1-бис. ⚠️ Проверка отправленного читается ИЗ РЕПО ЭТОГО треда: `issues/comments/<id>` —
эндпойнт репо-скоупный, и запрос того же id в чужом репо даёт `Not Found`, что легко
принять за «коммент не доехал» (промах 15.09, поймано вторым заходом). Проверка CTA:
последняя НЕПУСТАЯ строка (`grep -v '^$' | tail -1`), иначе хвостовой перевод строки
даёт ложное «подписи нет».
2. Автор треда выглядит способным (живые коммиты, наш домен) → карточка/касание CRM
(§1.6: способность, не известность).
3. Ответили → ответы НАМ ловит /contrib-watch; их мяч + тишина >3 дней = не бампаем
(правило трёх дней §4.7).
4. Сильный тред → кандидат в контент (/content-mine черновиком).
## Бюджет прогона (объём работы рутины, зафиксирован 11.08 по вопросу Антона)
- СКАН: ~10 тем × 1-2 гнезда с трафиком = 15-20 поисковых запросов gh (0 токенов LLM, это CLI).
- ЧТЕНИЕ: полностью читаем максимум **10 тредов-кандидатов** за прогон (самые свежие сквозь
гейт-претест по заголовку); остальные кандидаты — в лог строкой `candidate` на завтра.
- ОТВЕТЫ: ожидаемо **0-3 за прогон**. Квоты сверху нет, но каждый ответ пишется руками под
конкретную боль (~10-15 мин работы), так что больше 3 в день = признак, что гейт ослаб,
а не что день удачный. 0 ответов = норма, не провал.
- Рельса: скан и фильтр = gh CLI (0 токенов); LLM тратится только на чтение прошедших
претест и написание ответа (§6.1).
## Пополнение карты (как НОВОЕ ноу-хау попадает в контрибьюцию)
Карта «тема → артефакт» — живой реестр, не снимок. Три двери пополнения:
1. Новый публичный репо (/release-slice, /consumer-hunt) → в том же заходе строка в карту.
2. /retro classify: деталь получила Keep-&-reuse → прогнать КОНТРИБЬЮТ-ТЕСТ (3 вопроса):
(а) боль универсальная или наша местная? (б) 30-сек `gh search issues "<боль>"` — чужие
живые треды есть? (в) отдать можно без утечки (секреты/приватное)? Два «да» из трёх →
строка в карту сюда + кандидат на /release-slice. Ответы записать, не держать в голове.
3. Строка Breakage-Journal с ✅ доказанной причиной и классом, который болит не только у нас
→ тоже кандидат (эталон: claude-desktop-watchdog родился из строки журнала 11.08).
- ⛔ Веером один текст в несколько тредов — это спам, репутация горит быстрее, чем строится.
- ⛔ Выдуманные цифры/причины; артефакт обязателен.
- ⛔ Reddit/X/форумы — НЕ этим скиллом (свои гейты и матрица площадок §3.2); здесь только GitHub.
- ⛔ Не спорить ради спора в чужом доме: несогласие = факты + вопрос, не крестовый поход.
- Ритм: раз в сутки прогон охоты достаточен (треды живут днями); чаще — только вручную.
- ⭐ ФЛОТ: скилл синкается на все машины (шара claude-skills) и ЛЮБОЙ узел может звать его
руками, но ЕЖЕДНЕВНАЯ рутина живёт ТОЛЬКО на хабе (`auto-hub-260811-rep-reply-daily`) —
иначе N машин отвечают в один тред N голосами. Вторая страховка от дублей встроена в гейт
п.4: GitHub-аккаунт один на весь флот, проверка «мы уже писали в тред» через gh видит
комментарии ЛЮБОГО узла. Лог rep_reply.jsonl локален узлу — истина по дублям = gh, не лог.
## Анти-слоп гейт (anton 14.08)
Любой ИИ-написанный текст наружу из этого скилла перед отправкой - финальный проход `/ai-slop` (ban-лист + ритм). Исключения ровно три: текст с плашкой Майкрофта (§3.3) · машиночитаемое (GitHub/техдока/dev-log/journey-machine) · текст, написанный Антоном руками. Канон: `reglament-posty-ot-lica-antona-tolko-cherez-ai-slop`.
## ⭐ Чёрный юмор обязателен (anton 10.09.2026, голосом)
Любой текст, который этот скилл отправляет ЖИВОМУ человеку наружу, несёт чёрную самоиронию — ровный служебный тон = дефект, объяснять надо не шутку, а её отсутствие. Строку берёшь через `/mycroft-joke` (полка (д) банка + строки 56-62 под холодное касание), приёмка — `/taste-check` P36. ⛔ Не шутим ровно в трёх зонах, и они не про вкус: строго-научная публикация (arXiv/журнал/JOSS) · юр.обязательство и анкета · красный список банка (чужая иконография угнетённых, псевдо-слуры, отрицание что я ИИ, юмор поверх диагноза/денег/беды собеседника). Одна шутка на тред. Канон: CLAUDE.md §3.3 §Поправка 10.09 + [[dark-humor-default-everywhere-external]].
<!--kit-footer-->
---
**Like this skill?** It is one of 100 in [second-brain-starter-kit](https://github.com/tonydzi/second-brain-starter-kit): the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with `npx skills add tonydzi/second-brain-starter-kit`. Everything is open source and free, so take what you need.
Flagships worth a look on their own: [secondop-panel](https://github.com/tonydzi/secondop-panel) (a second opinion from a panel of external models), [claude-memory-tidy](https://github.com/tonydzi/claude-memory-tidy) (stop your agent's memory from rotting), [telegram-mcp-kit](https://github.com/tonydzi/telegram-mcp-kit) (your own Telegram over MCP in about 15 minutes).
Author: **Anton Dziatkovskii**, Palo Alto AI Research Lab. Telegram [@tonydzi](https://t.me/tonydzi) - WhatsApp [+1 341 222 9178](https://wa.me/13412229178) - X [@Tony_Stef_](https://x.com/Tony_Stef_)
**Engineers: want to test-drive this setup?** Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!