contrib-watchlisted
Install: claude install-skill tonydzi/second-brain-starter-kit
# /contrib-watch — кто пришёл к нам сам, и почему мы обязаны ответить сегодня
## Закон
**Молчание в живом треде = провал, а не осторожность** (CLAUDE.md §4.7). Ответ на GitHub я даю
САМ, без «+» Антона и без гейта [коллега]. Мерж кода — по [[github-publish-autonomous]] + leak-scan.
**Порог: 24 часа.** Дольше — красное. Обоснование не теоретическое: 05.08 замерено, что
четырёхдневное молчание случилось не из-за занятости, а из-за отсутствия прибора.
## Шаг 1 — снять картину (0 токенов)
```
python ~/.claude/scripts/contrib_watch.py --html "$OBSIDIAN_VAULT/_Dashboards/Contrib-Inbox.html"
```
Обходит все наши публичные репозитории, находит треды, где ПОСЛЕДНИМ говорил внешний человек,
считает часы ожидания, отмечает 🆕 тех, кого не видели ни разу. Exit 3 = есть просрочка.
## Шаг 1-бис — «последним сказал чужой» ≠ долг: разговор мог уехать в PR
Эвристика «последний говоривший в треде» ловит ДОЛГ и МИГРАЦИЮ одинаково, а это разные вещи.
Нормальный цикл выглядит так: человек пишет в issue «claiming this» или «I opened PR #N» — и
дальше по существу говорят уже в PR. В issue его строка так и остаётся последней НАВСЕГДА, даже
когда мы разобрали, отревьюили и смержили. Долга там нет, мяч не наш.
Поэтому на КАЖДЫЙ хит спрашиваю ещё один вопрос, прежде чем идти отвечать:
```
gh api "/repos/tonydzi/<repo>/issues/<N>/timeline" --paginate --jq '.[]|select(.event=="cross-referenced")|.source.issue.number'
gh api "/repos/tonydzi/<repo>/issues/<PR>/comments" --paginate --jq '.[]|"\(.user.l