Skip to content
cccskills
FreePublished on GitHub

contrib-watch

Watch incoming feedback from outside engineers on your open-source repos: comments, reviews, issues, mentions. Use when you need to find who replied to your pull requests or issues, triage human versus bot responses, and answer within a day with evidence.

The English summary is being prepared. Showing the original description.

Works withTelegramGitHub
See how to install

Files included (1)

  • SKILL.md32.5 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

/contrib-watch — кто пришёл к нам сам, и почему мы обязаны ответить сегодня

Закон

Молчание в живом треде = провал, а не осторожность (CLAUDE.md §4.7). Ответ на GitHub я даю САМ, без «+» Антона и без гейта Наташи. Мерж кода — по [[github-publish-autonomous]] + leak-scan.

Порог: 24 часа. Дольше — красное. Обоснование не теоретическое: 05.08 замерено, что четырёхдневное молчание случилось не из-за занятости, а из-за отсутствия прибора.

Шаг 1 — снять картину (0 токенов)

⚠️ ПЕРЕД ЛЮБЫМ СКАНОМ СВЕРЬ АККАУНТ ВЫЗОВОМ, А НЕ ЯРЛЫКОМ (замер 02.10.2026): gh auth status на этом узле печатает Logged in to github.com account Palo-Alto-AI-Research-Lab — ПРОТУХШЕЕ имя, закэшированное gh до переименования аккаунта. Токен при этом принадлежит tonydzi, что видно только живым вызовом gh api user --jq .login. Разница смертельна именно для сканов: репозитории берутся из /user/repos (активный аккаунт), а запрашиваются по пути /repos/tonydzi/<repo> — разойдись эти два, и каждый запрос вернул бы 404, то есть «долгов 0» на пустом месте. Ярлык — тоже claim ([[instrument-is-a-claim-too]]): судим по gh api user, не по строке status.

python ~/.claude/scripts/contrib_watch.py --html "$OBSIDIAN_VAULT/_Dashboards/Contrib-Inbox.html"

Обходит все наши non-fork репозитории — и публичные, И ПРИВАТНЫЕ, — находит треды, где ПОСЛЕДНИМ говорил внешний человек, считает часы ожидания, отмечает 🆕 тех, кого не видели ни разу. Exit 3 = есть просрочка.

⚠️ ПРИВАТНЫЕ СМОТРИМ ТОЖЕ (замер 24.09.2026, снят фильтр not r["private"]). Приватность — свойство ВИДИМОСТИ, а не признак «там нет чужих людей»: внешнего инженера туда приглашают руками, и обслуживать его надо ровно так же ≤24ч (§4.7). В тот день сторож и оба скана рутины показывали 53 репо из 60, а уведомление GitHub вынесло tonydzi/bridge-vdai-paloalto#1 — приватный мост с чужим пиром vasilevdasfo, невидимый ВООБЩЕ ни одним сканом. Второй приватный репо (PaloAlto-AI-Research-Lab-Knowledge) оказался куда крупнее: 13 тредов, 21 комментарий, 10 коллабораторов. Долгов там в тот день не нашлось, но прибор не имел права говорить «долгов 0» про поверхность, которую не смотрел ([[instrument-is-a-claim-too]]). ⛔ Отсюда же следствие для отчёта: «по N ПУБЛИЧНЫМ репо» больше не формулировка охвата — пиши «по N репо (публичных P + приватных Q)». Тест охвата: _test_contrib_watch_private.py (красный доказан на самом фильтре: охват был ['pub']).

⚠️ И ЕЩЁ ОДНА СЛЕПАЯ ЗОНА ТОГО ЖЕ КЛАССА: человек, живущий ТОЛЬКО в приватном контуре, невидим обоим поисковым селекторам Шага 2-ноль. У Kubalskiy (форк приватного репо) commenter: и involves: дают по 0 — по правилу «ноль по одному селектору = этим селектором не видно» хоронить контакт нельзя и при нуле по ОБОИМ: они оба ходят по публичной поверхности. Третий вопрос — список коллабораторов приватных репо (gh api /repos/tonydzi/<repo>/collaborators).

Шаг 1-кватер — ТРЕТЬЯ поверхность комментариев: inline-ревью живут в ДРУГОЙ ручке

⚠️ ЗАМЕР 29.09.2026 (Mac16, contrib-watch-daily): оба скана Шага 1 и Шаг 1-тер ходят по /issues/comments — это ленты треда. Построчные замечания ревьюера лежат в /pulls/comments и в НИХ НЕ ВХОДЯТ ВООБЩЕ. Инженер, оставивший пять [important] строк прямо в диффе и ни одной в ленте, для всех трёх сканов невидим. Заметка 27.09 упоминает «три скана», но снипета на третий нигде не было — прогон 29.09 писал его руками, и это ровно та боль, которую скилл обязан снимать.

python3 - <<'INNER'
import json,subprocess
def gh(p):
    r=subprocess.run(["gh","api","--paginate","--slurp",p],capture_output=True,text=True)
    if r.returncode!=0 or not r.stdout.strip(): return []
    d=json.loads(r.stdout)
    return d[0] if len(d)==1 and isinstance(d[0],dict) else [x for pg in d for x in (pg if isinstance(pg,list) else [pg])]
repos=[r["name"] for r in gh("/user/repos?per_page=100&affiliation=owner") if not r["fork"]]
hits=0
for name in repos:
    cs=gh(f"/repos/tonydzi/{name}/pulls/comments?per_page=100&sort=created&direction=desc")
    if not isinstance(cs,list) or not cs: continue
    th={}
    for c in cs: th.setdefault(c["pull_request_url"].rsplit("/",1)[-1],[]).append(c)
    for n,ch in th.items():
        ch.sort(key=lambda c:c["created_at"]); last=ch[-1]; lg=last["user"]["login"]; ts=last["created_at"]
        if lg.lower()!="tonydzi" and not lg.endswith("[bot]"):
            print(f"  C-inline {name}#{n} last={lg} @ {ts}"); hits+=1
print("inline-хитов:",hits)
INNER

⚠️ Приватные репо НЕ исключаем (та же грабля 24.09, что в Шаге 1). Замер 29.09: репо с inline- комментариями оказалось 1 из 60, хитов 0 — скан дешёвый, но «дёшево» это не «не нужен»: цена пропуска здесь = молчание в треде, где человек разобрал наш дифф построчно. ⛔ Ноль по этому скану закрывает ТОЛЬКО inline-поверхность; в отчёт Шага 4 охват пишется как «N репо × 4 скана», а не «всё проверено».

<!-- Шаг 1-кватер добавлен 29.09.2026 · прогон contrib-watch-daily, Mac16 · сторож снипета: `python3 ~/.claude/scripts/_test_contrib_watch_snippets.py` (охват расширен с файла рутины на ОБА дома и с литерала <<'PY' на любой heredoc-маркер; красный доказан мутациями в --selftest). Снипет прогнан ВЕРБАТИМ из этого файла: 60 репо, 1 репо с inline-комментариями, 0 хитов. Assisted-by: Claude Code Operator: robot:contrib-watch-daily -->

Шаг 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.login) @ \(.created_at)"'
gh api "/repos/tonydzi/<repo>/pulls/<PR>/reviews"   --paginate --jq '.[]|"\(.state) \(.user.login) @ \(.submitted_at)"'

Наш ответ в связанном PR ПОЗЖЕ его последней строки в issue = касание обслужено, хит закрыт. ⚠️ ЗАМЕР 21.09.2026: скан дал 4 хита (sqlite-graph-memory #13 #9 #5 #4), и ВСЕ ЧЕТЫРЕ оказались миграцией: #13→PR #14, #9→PR #10, #5→PR #8, #4→PR #6, каждый смержен с письменным ревью Майкрофта ПОСЛЕ их последней реплики. Долгов было 0. Без этого шага рутина пошла бы писать четырём инженерам «извините за молчание» в треды, где мы им уже развёрнуто ответили, — то есть сама сломала бы репутацию, которую сторожит. ⛔ Обратное упрощение запрещено: «есть связанный PR» само по себе хит НЕ закрывает — закрывает именно НАШ ответ в нём с датой позже. Смерженный молча PR без единого нашего слова — это долг (§4.7: молчание в живом треде = провал), и он идёт в Шаг 4 как обычное касание.

Шаг 1-тер — ЗЕРКАЛЬНОЕ слепое пятно: долг бывает и там, где последними говорили МЫ

Оба скана Шага 1 спрашивают «кто сказал последним» и потому ловят ровно один вид долга — «нам написали, мы молчим». Второго вида они не видят ВООБЩЕ: мы пообещали и не сделали. В таком треде последняя строка наша, хит не возникает, прибор честно рапортует ноль — а человек ждёт.

⚠️ ЗАМЕР 27.09.2026, чем это стоило: три скана (комменты вкл. закрытые, чужие открытые, inline-ревью) по 60 репо дали 0 долгов, и это была правда. Параллельно в sqlite-graph-memory PR#8 висело наше обещание 15.09 — «the triage invite waits for Anton's click, you'll see it arrive from GitHub» — данное человеку, который согласился («I would gladly accept») через час после предложения ещё 13.09. Приглашение не пришло бы НИКОГДА: triage/maintain существуют только на репо ОРГАНИЗАЦИИ, а tonydzi — owner.type: User (проверено API, не предположено: 422 Cannot assign permission of triage). Человек ждал 12 дней и за это время прислал ещё два смерженных PR. Ни один скан его не видел.

Поэтому на каждом прогоне — третий вопрос, дешёвый, по НАШИМ строкам за 30 дней:

gh api "/repos/tonydzi/<repo>/issues/comments?per_page=100" --paginate --jq \
  '.[]|select(.user.login=="tonydzi")|select(.created_at > "'"$(date -v-30d +%F)"'")|
   select(.body|test("(?i)\\binvite\\b|will send|\\bi.?ll\\b (send|open|give|add|file|ship)|waits for|arriving|coming shortly"))|
   "\(.issue_url|split("/")|last) @ \(.created_at): \(.body[0:120])"'

⚠️ Границы слов обязательны: без \\b шаблон i.ll open ловит «still open» — замер 27.09, одно ложное попадание из трёх на первом же прогоне. Ложное срабатывание здесь дороже пропуска: оно гонит рутину извиняться за долг, которого нет.

Каждое попадание = обещание с датой. Обещанного факта нет на сервере (нет инвайта, нет PR, нет релиза) → это долг, и он СТАРШЕ входящих: молчание после «мы сделаем» дороже молчания после «спасибо». ⛔ Закрывать такой долг повторным обещанием запрещено. Закрывает либо сделанный факт, либо честный разбор «обещание было невыполнимым, вот почему, вот реальные варианты» — второе законно и работает, но только один раз на тред. ⚠️ И проверяй саму выполнимость ДО обещания: «прав нет / кнопка есть / доступ будет» — такой же CLAIM, как причина (§5.4). Один вызов API вместо уверенности сэкономил бы здесь 12 дней чужого ожидания.

Шаг 2-ноль — «наш он или нет» решается ДВУМЯ селекторами, а не одним

⛔ Прежде чем сказать «этот новый логин не наш, карточку не завожу» (так закрыли GALINA-KUKLEVA и dudididjdje-tech 13.09) — спроси GitHub ОБОИМИ вопросами:

gh api "search/issues?q=commenter:<login>+user:tonydzi" --jq '.total_count'   # он у нас ГОВОРИЛ
gh api "search/issues?q=involves:<login>+user:tonydzi"  --jq '.total_count'   # он у нас АВТОР/упомянут

⚠️ ЗАМЕР 21.09.2026: по commenter: оба новых логина дали 0 — вывод «не наши» был готов и был бы ЛОЖНЫМ. involves: дал по 1: FLiPPpro и b7n0de оказались АВТОРАМИ самоподач PR #4 и #5 в tonydzi/awesome-verified-agents. Автор PR, который не написал ни одного комментария, для commenter: невидим. Правило: ноль по одному селектору = «этим селектором не видно», а не «человека нет» (§5.4, [[check-all-places-not-one]]). Хоронить контакт можно только когда молчат ОБА.

⚠️ ЗАМЕР 08.10.2026 (hippoley): у обоих селекторов есть ТРЕТИЙ ответ, которого правило выше не покрывало, — 422, а не ноль. commenter:, involves: и author: все три вернули «The listed users cannot be searched either because the users do not exist or you do not have permission to view the users», при этом /users/hippoley отдавал живой профиль (type=User, не suspended), а user:tonydzi сам по себе отвечал 84. То есть сломан не наш запрос и не аккаунт, а видимость логина в search-индексе (обычный случай — недавнее переименование; тот же класс, что «старый логин 422-ит в search API» в шапке рутины). Разводи два исхода, они требуют разного:

  • 0 у обоих → «молчат оба», контакт можно хоронить;
  • 422 у обоих → прибор СЛЕП, вердикт о контакте запрещён вообще. Личность и касания проверяй обходом: /users/<login> + /repos/tonydzi/<repo>/issues/<n>/comments (issues API читает его нормально, поиск — нет). ⛔ 422 нельзя считать нулём: «не могу судить» и «его нет» — разные факты ([[instrument-must-not-be-blind]], §5.4). Диагноз делается ОДНИМ лишним вызовом — прогони селектор БЕЗ user:tonydzi: ответил 422 и там → виноват логин, а не наша половина запроса.

Шаг 2 — ПРОВЕРИТЬ МОТИВ, прежде чем радоваться

⛔ Самая дорогая ошибка этого скилла — принять массового контрибьютора за фаната. По каждому новому человеку обязательно:

curl -s -H "Authorization: Bearer $GITHUB_FLEET_FULL_PAT" \
  "https://api.github.com/users/<login>/events/public?per_page=100"

и посчитать: сколько PR за 90 дней, в сколько РАЗНЫХ репозиториев, повторяется ли один и тот же патч у всех адресатов. Три класса, и вести себя с ними надо по-разному:

КлассКак выглядитЧто это значитНаш ход
🟢 глубокиймало репо, много касаний в одномчеловек реально пользуетсятриаж-права, соавторство, звонок
🟡 массовый качественный40+ PR в 20 репо, но патчи настоящиеконвейер репутации, идёт вглубь ТУДА, ГДЕ ОТВЕЧАЮТответить в тот же день — скорость и есть весь рычаг
🔴 массовый агентский40+ PR, текст сгенерирован, факты не сходятсяпрогон чужого агента по случайным целямчестное «нет» с разбором + приглашение вернуться по существу

Мотив пишем в карточку СЛОВАМИ и с уликой. «Пришёл сам» ≠ «мы ему нравимся» ([[prichina-kak-claim]]: причина — такой же claim, как вывод).

⭐ Первый вопрос про КАЖДОГО — «мы туда стучались?» (правило external-signal-vs-reply-to-our-knock, замер 06.08). Три кучи, и они НЕ равны: (1) непрошеное — назвал нас в ЧУЖОМ треде, куда мы не приходили → настоящий сигнал; (2) подали-приняли — мы отправили PR/заявку, редактор согласился → считаем, но называем отдельно; (3) ⛔ ответ под НАШИМ собственным PR/issue → это отклик на наш стук, за входящий интерес НЕ засчитывать. Наша исходящая работа физически рождает ответы, и они попадают под тот же поиск, что органика — метрика внешней тяги ломается всегда вверх, в приятную сторону.

Шаг 3 — проверить ЗАЯВЛЕННОЕ, а не поверить

Патч утверждает цифры (звёзды, лицензия, бенчмарк, «чинит X») — проверяю каждую своим прибором до мержа. Мы лаборатория про проверяемость; смержить непроверенное утверждение о себе = сжечь собственный тезис. Тесты гоняю ЛОКАЛЬНО на объединённой ветке, не доверяя зелёному CI:

git fetch origin 'refs/pull/*/head:refs/remotes/pr/*'
git checkout -B try<N> master && git merge pr/<N> && pytest -q

⭐ Проверяю ТРИ вещи, а не одну (боль 13.09 + 15.09, оба раза на sqlite-graph-memory):

  1. патч — делает ли он то, что заявлено;
  2. тесты патча — мутацией: откатываю починку и смотрю, КРАСНЕЮТ ли его тесты. 13.09 все 12 остались зелёными на возвращённом баге: фикс был верный, тесты его НЕ держали. Мержу всё равно (двигать ворота после выполнения = обман), но свой красный тест дописываю сам;
  3. ⭐ не протух ли САМ ПАТЧ, пока лежал — репозиторий едет под ним. 15.09: PR#7 чинил строку «no tests», а за пять дней ожидания PR#6 добавил 42 теста в соседний модуль, и написанная автором строка стала ложной ровно в момент мержа. Третье поколение одного дефекта в одном абзаце. Правило: патч, пролежавший дольше суток, перечитывается против ТЕКУЩЕГО состояния репозитория, а не против того, каким оно было при его отправке.

Если протух — это не повод не мержить и не повод винить автора. Мержим его работу под его авторством, а дрейф чиним follow-up'ом сверху и НАЗЫВАЕМ его в треде: человек узнаёт то, чего не мог знать, и это самая ценная часть ответа.

Шаг 4 — ответить (голос Майкрофта, §3.3)

Первой строкой называюсь: «hi, this is Mycroft, Anton's synthetic co-founder». Один раз на тред. Строчными, без ваты. Структура ответа, которая работает:

  1. Извиниться за задержку конкретно и назвать причину — не «sorry for the delay», а что именно у нас не работало. Люди прощают поломку и не прощают отписку.
  2. Назвать, ЧТО ИМЕННО он поймал, своими словами и по существу — доказательство, что читали код.
  3. Вердикт: смержено / нужен ребейз с точной резолюцией конфликта / не берём и почему.
  4. Следующий шаг с датой и один открытый вопрос.
  5. ⭐ Подпись-CTA последней строкой (anton 10.09, голосовая hub:6539; supersedes прежнее «без подписи» в этом шаге). Одна строка со ссылкой github.com/tonydzi, формулировку варьировать. Источник текста — $OBSIDIAN_VAULT/08-Templates/github-touch-signature.md, карта поверхностей — $OBSIDIAN_VAULT/08-Templates/outbound-signature.md. Здесь это особенно дёшево и особенно окупается: человек УЖЕ пришёл к нам сам и уже читал наш код — это самый тёплый входящий, какой у нас бывает, а он уходил, не увидев, что рядом лежит ещё 60 репо. Carve-out против спама: одна подпись на тред — подписался, в следующих репликах того же треда можно без неё. Раскрытие Майкрофта = СВЕРХУ (первая строка), подпись = СНИЗУ; это разные блоки, один другого не заменяет.

Отказ пишу так же подробно, как согласие. Честное «нет» с разбором удерживает человека; молчание не удерживает никого.

Шаг 5 — завести в CRM в тот же заход

Каждый внешний человек:

  • строка в $OBSIDIAN_VAULT/_outreach/tracker.json → audience_A_engineers (поля: handle github:<login>, channel github, warmth с УЛИКОЙ мотива, what_they_did, our_answer_at, ladder, next_step);
  • карточка $OBSIDIAN_VAULT/07-People/person-<slug>.md с frontmatter context: github-contributor, origin: github, тегами [person, github-contributor, engineer-funnel] и обратными ссылками на артефакт (правило no-orphan).

Шаг 5-бис — если в треде был СОВЕТ, а не только патч → в реестр кредита

Человек написал, ЧТО нам стоит сделать (даже одной строкой, даже без кода) — это вклад идеей, и он обязан дожить до имени в CREDITS. Кладу строку сразу, не «потом»:

python ~/.claude/scripts/alpha_credit.py add --source gh \
  --author "<Имя или login>" --handle @<login> --url <ссылка на коммент> \
  --advice "<что посоветовал одной фразой>" --kind method|repo|tool|critique \
  --ref "gh:<owner/repo>#<номер>:<id коммента>"

--ref обязателен: этот скилл ходит по одному треду каждый день, без ключа один совет размножится копиями. Дальше цепочка живёт в /alpha-credit (судить → испытать → спасибо → имя).

Шаг 6 — контент

Входящий PR от постороннего = контентный момент по определению. Рефлекс [[content-miner-reflex]]:

python "$VAULT_IMPORTS/content-factory/content_miner.py" capture --title "<хук>" --note "<суть>" --tier medium

Сильная форма истории — не «нам прислали PR», а «что он поймал такого, чего не видели мы».

Шаг 7 — вердикт

⚠️ Красное у сторожа — это claim, а не приговор ([[instrument-is-a-claim-too]]). Перед ответом человеку сверь ДВЕ вещи, которых сторож не знает:

  • чей мяч по последнему касанию — с 14.09.2026 он читает и РЕВЬЮ (/pulls/N/reviews), а не только комментарии треда; до этого канонический ответ по §4.7 был для него молчанием, и он печатал ВОЗРАСТ самого PR как долг (PR#7: 90.1 ч при PR, созданном 10.09 10:46Z);
  • срок, который мы САМИ дали автору — этого сторож не знает вообще. Пообещали ждать правку до N-го числа — до N-го числа долга нет, и бампать нельзя, даже если строка красная.

✅ только когда: ноль просроченных долгов · мотив каждого нового человека проверен уликой · CRM пополнен · заявленные цифры перепроверены до мержа. ⚠️ если ответили, но не проверили мотив или не завели в CRM.

Рутина

Ночной прогон (окно 23:00-06:00 local time, §4.6) + дневной тик: сторож живёт ВНЕ сессии, молчит когда чисто, кричит только на просрочку с именем человека и ссылкой (§5.5).

Счётчик

Каждый прогон пишет строку в ~/.claude/logs/part_usage.jsonl (part: contrib_watch.py, event: scan, outcome: clean|overdue). Судьба детали решается на /retro по этому счётчику (§5.8).

⭐ Обратная половина: мы тоже просим (anton 21.09.2026)

Этот скилл ловит ВХОДЯЩЕЕ касание инженера. Входящего не будет, если у репо нет видимой просьбы: люди приходят по label:"help wanted", а не по README. Закрыл входящее и увидел, что у репо ноль своих просьб → завести их по /consumer-hunt Шаг 5-бис (дыры берутся из наших же секций What's intentionally missing / Honest limits / Roadmap, выдумывать ⛔). Реестр просьб: $OBSIDIAN_VAULT/_outreach/we_ask_registry.jsonl.

Связи

Док-паспорт: ~/.claude/scripts/docs/contrib-watch.md · канон: reglament-vhodyashchiy-fidbek-inzhenerov-otvechaem-v-sutki · память: [[github-inbound-watch]], [[github-communication-autonomous]], [[engineer-acquisition-enrichment-not-scraping]] · соседи: /consumer-hunt, /issue-match, /github-growth, /local-engineer-outreach

⭐ ПОПРАВКА 08.10.2026 — у детектора появился ИСПОЛНИТЕЛЬ: contrib_reply.py

Приказ Антона 23:33 («на маке ставь рутину на ответы всем контрибьюторам»). Детектор по-прежнему только смотрит; ответ в тред даёт python ~/.claude/scripts/contrib_reply.py (ack ≤1 ч первой строкой «Mycroft, synthetic AI co-founder», что проверено машиной, срок человека 48 ч, подпись-CTA; однострочные PR в awesome-* с живыми ссылками мержит сам, код НИКОГДА). Расписание: Windows-задача «Claude Contrib Reply» (HP17, 3 ч), Mac — посылка contrib-reply-20261008 (launchd ai.paloalto.contrib-reply). Журнал ~/.claude/contrib_reply_lane.jsonl. Живая сессия по этому скиллу теперь отвечает ПО СУЩЕСТВУ там, где робот уже подтвердил приём; дубль-ack не писать. Память: [[contrib-reply-routine-born]], [[review-field-is-submittedat-not-createdat]] (счёт «без ответа» сверять с contrib_watch.py --json, у ревью поле submittedAt).

<!--kit-footer-->

Like this skill? It is part of 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 (a second opinion from a panel of external models), claude-memory-tidy (stop your agent's memory from rotting), telegram-mcp-kit (your own Telegram over MCP in about 15 minutes).

Author: Anton Dziatkovskii, Palo Alto AI Research Lab. Telegram @tonydzi - WhatsApp +1 341 222 9178 - X @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.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

03

Free

Run an autonomous consensus round between agent peers on several machines: they negotiate a decision over a shared channel and execute it without a human relaying messages. Use when multiple machines must agree on a change. Triggers: "/03", "work it out among yourselves", "find consensus". Wakes the human only for irreversible actions or a deadlock.

The English summary is being prepared. Showing the original description.

tonydzi/second-brain-starter-kit12Updated Oct 20, 2026

1

Free

Recover a session after a hard crash (app died, machine rebooted, context lost mid-work): replay the turn-state ledger for the last requests, files and decisions, run a green/red health ping over the system map, file sync and MCP connectors, then rebuild the previous session history for pickup. Triggers: "/1", "resume after crash", "wake".

The English summary is being prepared. Showing the original description.

tonydzi/second-brain-starter-kit12Updated Oct 20, 2026

agenda

Free

Show the operator's day: today's calendar plus what needs them personally (leads due, people awaiting a reply, deadlines), pulled from Calendar and Telegram and ranked. Read-only: sends and commits nothing. Triggers: "/agenda", "what's on today", "my agenda".

The English summary is being prepared. Showing the original description.

tonydzi/second-brain-starter-kit12Updated Oct 20, 2026

Rewrite machine-written text so it reads like a busy human wrote it: cut 50-70%, break the even rhythm, drop AI-tell words and filler, keep facts and protected terms. Use before publishing any post, reply or email drafted by a model. Triggers: /ai-slop, /slop, humanize, anti-slop, make it shorter and alive.

The English summary is being prepared. Showing the original description.

tonydzi/second-brain-starter-kit12Updated Oct 20, 2026

Decision protocol for strategic work: recall the knowledge vault, run a gap analysis, emit a deep-research prompt for external tools, then synthesize the returned reports into a decision memo. Use before any new product, feature, market, pricing, GTM or architecture call, where local recall alone is not enough. Triggers: "/alfa-search-recall-deepresearch", "alpha protocol", "R+DR".

The English summary is being prepared. Showing the original description.

tonydzi/second-brain-starter-kit12Updated Oct 20, 2026

- КРЕДИТ АВТОРУ ИДЕИ: совет из комментария (TG @ClawRus / @ClawInga, комменты под постами Антона в FB, треды и issue на… Триггеры: “/alpha-credit“, “/credit“, “кто нам это посоветовал“, “запиши совет“, “поблагодари советчиков“, “кому мы должны спасибо“, “кредит автору“, “чей это был совет“, “credit the author“

The English summary is being prepared. Showing the original description.

tonydzi/second-brain-starter-kit12Updated Oct 20, 2026

See all skills by tonydzi

Report a problem with this skill