Найти ЖИВЫЕ чужие треды (GitHub issues/discussions) по темам, где у нас есть РЕАЛЬНЫЙ боевой опыт и артефакты, и ответить в них нашим опытом — прокачка репутации лаборатории и Mission-2 (заметность в LLM-экосистемах). Триггеры: “/rep-reply“, “/rep“, “ответь людям про наш опыт“, “кто пишет про наши темы“, “прокачай репутацию в тредах“, “найди треды под наш опыт“, “reply with our experience“
9 stars
0 votes
0 copies
0 views
Added September 25, 2026
ai-agentspythonrustgoc#shellbashsqlreactnodegit
Works with
claude code
claude desktop
vscode
cli
api
mcp
Security analysis
B75/100
criticalSends environment variables or credentials to an external URL
Installs into .claude/skills of the current project.
Are you the author of Rep Reply?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tonydzi-rep-reply)
---
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.