/teach-podcast — Антон учится в машине, я готовлю уроки
🧒 Доклад Антону кончается блоком «Простыми словами» ([[eli5-always]]). Пакеты и промпты — без ELI5, это сырьё для диктора.
Родился 17.09.2026 из подкаста про Lambda (блокнот e7b1d6e9, a2@): Антон похвалил, сам догрузил контент и
попросил скилл, «к которому ты будешь часто возвращаться». Его слова: «Люди нужно быстро загрузить информацию
в мозг… когда я за рулём, мне идеально послушать такой подкаст… Твоя задача меня обучать, так же, как я обучаю
тебя… чтобы у меня в мозге утром бывало очень много нового контента».
Что это: обратная петля обучения. Антон учит меня голосовыми и ДР; я учу Антона подкастами. У него
30–40 минут в день в машине. Один эпизод = одна тема, которую он должен знать к ближайшему собеседованию.
Граница с соседями: /notebooklm = общий слой артефактов над волтом (любая тема, любой формат).
Этот скилл = учебная программа + генерация урока + доставка + учёт. Он зовёт ту же рельсу CLI.
/interview-prep = шпаргалка к конкретному звонку; отсюда берём дыры сверки (❌/⚠️) как темы уроков.
⛔ Законы
-
Ученик — не инженер. Бывший директор по продажам и фаундер. Каждый термин объясняется бытовой аналогией
в самом промпте ведущим. Жаргон без объяснения = брак урока.
-
По умолчанию русский, формат deep-dive, длина long. Короткий эпизод не заполняет дорогу.
⭐ Поправка 20.09.2026 (Антон голосом, урок про Kubernetes): «на английском на русском языке» —
английский эпизод законен и делается ПО ЗАПРОСУ, вторым прогоном на ТОМ ЖЕ блокноте. Русский не
отменён и остаётся дефолтом: язык без просьбы = ru. Механика: отдельный файл промпта <слаг>.en.prompt.txt
(перевод, а не копия: ведущим по-английски), затем generate audio --language en с явным -n <id>
блокнота, второй прогон запускать ТОЛЬКО после того, как первый скачан (две генерации разом на одном
блокноте не проверялись). Файлы получают суффикс языка: -ru.m4a / -en.m4a. В учебный план и в
YouTube-очередь идут ДВЕ строки, по одной на язык. ⚠️ Суточная квота аудио одна на оба эпизода.
⭐⭐ ПОПРАВКА 21.09.2026 (Антон голосом, урок про PyTorch, tg:-[id]) — ТРИ ДЕФОЛТА ПЕРЕВЁРНУТЫ.
Дословно: «сделать в NotebookLM подкаст на английском и русском языке; максимальная длительность;
всегда выбирать максимальную длину результата; при генерации аудио/видео добавлять уточняющие
вопросы/комментарии, чтобы NotebookLM дал более точный ответ».
(а) ДВА ЯЗЫКА — ДЕФОЛТ, А НЕ ПРОСЬБА. Эпизод считается сделанным только когда есть RU и EN.
Поправка 20.09 «EN по запросу» этим ОТМЕНЕНА (superseded_by = эта строка). Один язык законен
только с названной причиной (квота кончилась · Антон сказал «только русский»), и причина пишется
в доклад; молчаливый один язык = урок сделан наполовину.
(б) ДЛИНА ВСЕГДА МАКСИМАЛЬНАЯ. --length long не обсуждается ни для аудио, ни для видео, ни
для любого будущего формата с выбором длины. Короче — только по прямому слову Антона.
(в) УТОЧНЯЮЩИЕ ВОПРОСЫ В ПРОМПТЕ ОБЯЗАТЕЛЬНЫ. В каждом промпте ведущим — блок «задавайте друг
другу вопросы умного новичка и тут же отвечайте» + блок «опирайтесь на источники, называйте, откуда
факт, расхождение источников произносите вслух». Промпт без этих двух блоков = брак урока.
Образец обоих блоков: _packets/teach-2026-09-21-pytorch-tensorflow-v2.prompt.txt (хвост файла).
-
Публичность по умолчанию. Всё это потом уходит на YouTube Антона («всё является контентом»). Поэтому в
пакет и в источники НЕ идут: имена рекрутёров и интервьюеров, письма, вилки денег из приватных писем, наши
ответы на анкеты, CRM, секреты. Идут: публичные сайты, доки, вакансии, white papers, наш обобщённый разбор.
Сомнение → в пакет не кладу, урок остаётся полезным и без этого.
-
Тема = дыра, не тема = «интересно». Урок закрывает то, чего Антон НЕ знает и что спросят. Источник дыр:
таблица сверки в шпаргалке /interview-prep (❌/⚠️), вопросы интервью, семьи ролей из <база вакансий>.
-
Цифры в пакете только доказанные. Пакет — наш текст, он попадёт в уши Антона и потом в мир.
-
Квота аудио суточная. Тестовые прогоны не жгут её; проверка рельсы = notebooklm auth check + list.
-
⭐ ГЕЙТ «спрашивать или нет» (anton 20.09.2026, голосом). Развилка ровно одна, и она по ТЕМЕ:
трудоустройство (интервью · вакансия · компания · роль · оффер · переговоры о деньгах · техническая
планка работодателя) → урок делается САМ, БЕЗ ВОПРОСА Антону, дословно «это делаем однозначно и без
вопросов Антону»; любое другое обучение (инструмент, рынок, наука, быт, стройка) → одна строка
вопроса, сказал «да» → делаю, дословно «можно спрашивать, если он согласился, делаем подкаст».
Сомнение «это про найм или нет» → считать найм и делать молча. ⭐ Объём под целое собеседование =
3–5 эпизодов, не один: его заказ 20.09 «сделай мне там 3-5 подкастов, которые меня на все вещи
натренируют». Один эпизод на незнакомую компанию = правило исполнено на четверть.
Канон: reglament-uchim-antona-podkastom-na-notebooklm + [[teach-anton-by-podcast-default]], CLAUDE.md §9.13.
Рельса (проверено 17.09.2026 на [машина флота]; на хабе с 04.07)
- [машина флота]:
~/.local/bin/notebooklm (uv tool, notebooklm-py[browser,cookies] 0.8.2, Python 3.12 внутри).
Хаб: [путь владельца]. Аккаунт a2@ (NotebookLM PRO).
- Auth протухает раз в несколько недель.
notebooklm auth check красный →
notebooklm login --browser-cookies firefox --account you.assistants@example.com
(Firefox должен быть залогинен в a2@; на [машина флота] профиль default-release). CLI подхватил не тот профиль →
python3 ~/.claude/scripts/_shared/firefox_cookies.py --profile <папка профиля> --domain google.com --export ~/.notebooklm/profiles/default/storage_state.json.
- Фолбэк: Chrome-MCP на
notebook.google.com под a2@: Add sources → Websites (URL построчно) → Insert →
Studio → Audio «>» → язык русский, промпт → Generate. Так был сделан Lambda-эпизод 16.09.
- ⚠️⚠️ ЛИМИТ = СМЕНИ БАК, А НЕ ЖДИ СУТОК (приказ Антона 21.09.2026, голосом, tg:-[id]). Дословно: «когда у нас кончаются лимиты youraccount.a2 в Gmail'е… Иди на другой аккаунт, на youraccount.a и генери там подкасты». С 02.09 у Google лимит «вычислительный» НА АККАУНТ, обновляется каждые 5 часов; CLI отвечает
RateLimitError … Audio generation rate limited by Google. Прослушивание готового не лимитируется. Аккаунт = бак; баков три, и они независимы:
| профиль CLI | почта | состояние 21.09 |
|---|
default (= youraccount-a2) | you.assistants@example.com, AI Pro | рабочий, в лимите с ~08:34 |
[рабочий аккаунт] | [рабочий аккаунт]@gmail.com | рабочий, проверен боем 21.09 12:15 |
youraccount-a | you@example.com, AI Pro | ЖИВОЙ с 21.09 15:33 — проверен боем, вытащил урок 16 RU, когда оба соседа были в лимите |
| Порядок работы: блокнот принадлежит a2@, поэтому чужой бак надо сперва впустить — | | |
notebooklm share add <почта> --permission editor -n <id> (шаринг лимитом не режется). Дальше | | |
notebooklm -p <профиль> generate audio … -n <id>: артефакт ложится в ТОТ ЖЕ блокнот, счёт идёт на бак того, | | |
кто нажал. Ссылка для телефона — с ?authuser=<почта>. | | |
- ⭐ a@ СТАЛ БАКОМ 21.09 15:33 — прежняя строка «сессии у CLI нет» ОТМЕНЕНА. Она описывала ТОЛЬКО путь через Chrome (App-Bound Encryption,
rookie-rs: CryptUnprotectData returned a null pointer). Firefox-путь работает: notebooklm --profile a login --browser-cookies firefox --all-accounts → «Found 1 accounts → youraccount-a → you@example.com». Дальше notebooklm -p youraccount-a generate audio ... -n <id>.
- ⚠️⚠️ ИМЯ ПРОФИЛЯ =
youraccount-a, НЕ a. В ~/.notebooklm/profiles/ лежат пять папок, и две из них — мёртвые двойники: a/ и youraccount-a2/ держат протухшие куки и падают «Authentication expired or invalid. Redirected to accounts.google.com». Живых три: default (=a2@) · [рабочий аккаунт] · youraccount-a. Перепутал имя → получишь ложное «бак мёртв» и уйдёшь ждать сутки на ровном месте.
- ⭐ Правило вместо вывода «все баки пусты»: сперва прогнать
login --browser-cookies firefox --all-accounts ЗАНОВО. Список аккаунтов в браузере меняется без нашего участия (21.09 a@ появился между 15:02 и 15:33). «Баков нет» — claim, и он протухает за полчаса ([[ban-is-a-claim-recheck-before-workaround]]).
- Апгрейд тарифа = деньги = Tier-2, жмёт Антон.
- ⛔⭐ СРОЧНЫЙ ЭПИЗОД ИДЁТ МИМО ОЧЕРЕДИ (замер 21.09 15:22–15:30).
teach_backlog.py run --loop работает строго FIFO, приоритета у него НЕТ. 21.09 он молотил баки заданиями Hugging Face и выжег bb@, пока готовился урок под звонок, до которого оставалось два часа; встань эпизод в очередь — он был бы девятым. Правило: эпизод под звонок/дедлайн сегодня гонится напрямую generate audio -p <живой бак>, очередь остаётся для фонового потока. Кто держит бак: tail -3 ~/.claude/state/teach_backlog.log.
- ⛔ ФОНОВАЯ ЦЕПОЧКА НЕ УМИРАЕТ ОТ TaskStop (грабля 21.09 15:31). Остановил фоновую задачу харнесом — обёртка снялась, а сам
bash hm_chain.sh остался жив и через 13 минут запустил ВТОРУЮ генерацию в тот же блокнот — ровно тот веер, от которого предостерегает грабля 20.09. Убивать надо процесс через Get-CimInstance Win32_Process + Stop-Process -Force по совпадению в CommandLine, и удалить сам .sh, иначе он переживёт сессию. Проверка, что дубля не случилось: artifact list -n <id> — аудио должно быть ровно столько, сколько эпизодов заказывал.
- Хаб = резидентный IP, без VPN (анти-абьюз). [машина флота] в поездке — работает, проверено из США 17.09.
Шаг 1. Чему учить — учебный план (0 LLM сначала, потом суждение)
- Труба:
sqlite3 ~/.claude/state/jobs-hub-snapshot.db "select company,title,status,answer from ats_jobs where status in ('interview','scheduled','next-stage','pending')"
(хаб: [путь владельца]). Ближайший звонок = урок №1.
- Семьи ролей по поданным:
…where status='applied' → FDE / Solutions / DevRel / GTM / PM. Что спрашивают
в каждой семье — отдельный урок, раз и навсегда.
- Дыры: открыть шпаргалки
$OBSIDIAN_VAULT/04-Projects/Pipe-A-Batches/interview-prep-*.md, взять строки ❌/⚠️
из таблиц сверки и «опасные вопросы» — это и есть темы.
- Учебный план живёт в
$OBSIDIAN_VAULT/05-Resources/NotebookLM/_teach-curriculum.md: строка = тема · зачем
(какой звонок/семья) · статус (план / сгенерирован / прослушан / на YouTube) · блокнот · файл.
Уже сгенерированное не повторяем; смотреть план ПЕРЕД выбором темы.
- Порядок: ближайший звонок → самая большая семья ролей без урока → фундамент (LLM-стек для не-инженера,
GPU-рынок, американское behavioral-интервью). Один эпизод в день, не больше, чем он успеет прослушать.
Шаг 2. Пакет — сырьё для диктора (половина качества)
Файл $OBSIDIAN_VAULT/05-Resources/NotebookLM/_packets/teach-<дата>-<слаг>.md, 1–3 страницы, по-русски:
- Кому и зачем (2 строки): ученик, к какому звонку/роли.
- Что должен уметь после урока — 5–7 пунктов проверяемых («объяснить, чем FDE отличается от SE»).
- Тело: наш разбор своими словами, факты с источником, аналогии, типичные вопросы интервью с
правильной логикой ответа (без личных историй Антона — их он расскажет сам).
- Словарь: 10–15 терминов → бытовая аналогия.
- ⛔ Без имён людей из переписки, без денег из писем, без Майкрофта. Проверка глазами перед
source add.
Шаг 3. Источники — ПОЛ 10-15, ПОТОЛКА НЕТ (приказ Антона 21.09.2026, голосом)
Дословно: «минимум 10-15 источников про PyTorch; по возможности добавлять как можно больше источников».
Правило шире PyTorch: у любого урока пол = 10-15 источников, считая наш пакет за один. Меньше —
только с названной причиной в докладе (тема узкая, живых ссылок физически нет). Один источник на урок,
как было у PyTorch-блокнота a743aafb до 21.09, = урок на песке: NotebookLM пересказывает нас самих.
- Пакет (
--type file) + 10-25 публичных URL: официальная документация, официальные туториалы по
каждому механизму урока, научные статьи (arXiv), инженерные блоги, репозитории, сайты соседних
инструментов. Каждый URL сперва проверить живым кодом 200:
while read u; do echo "$(curl -s -o /dev/null -w '%{http_code}' -L --max-time 20 "$u") $u"; done < urls.txt
Мёртвый не добавляем. Готовый пул по PyTorch/TensorFlow (25 живых ссылок, проверены 21.09):
_packets/teach-2026-09-21-pytorch-tensorflow-v2.sources.txt.
- Доп. поиск самим NotebookLM:
notebooklm source add-research "<запрос по-английски>" --import-all --cited-only
(fast). Даёт свежие статьи, которых нет у нас. Проверить source list: мусорные (форумы, SEO) удалить.
- Дождаться
Status=ready у всех: notebooklm source list (⚠️ source wait без SOURCE_ID падает, 17.09; проверять списком, URL-источники обычно ready за минуту).
Шаг 4. Промпт ведущим — шаблон (эталон Lambda 16.09)
Объясни простыми словами для человека без инженерного бэкграунда (бывший директор по продажам и
фаундер), который идёт на собеседование в <компания> на роль <роль>:
1) <вопрос-дыра №1>; 2) <№2>; 3) <№3>; 4) <№4>; 5) <№5>.
Много бытовых аналогий, каждый термин объясняй сразу. Разбирай типичные вопросы интервью и логику
хорошего ответа. Не пересказывай вакансию, учи думать как <роль>.
Пять нумерованных пунктов = то, что он должен знать в первую очередь. Больше семи — второй эпизод.
Шаг 5. Генерация (CLI)
export PATH="$HOME/.local/bin:$PATH"
notebooklm auth check || notebooklm login --browser-cookies firefox --account you.assistants@example.com
notebooklm create "Учёба: <тема>" --use
notebooklm source add "<packet.md>" --type file --title "Разбор: <тема>"
notebooklm source add "<url>" # по одному, только живые
notebooklm source add-research "<query>" --import-all --cited-only
sleep 60; notebooklm source list # все ready? иначе подождать ещё
notebooklm generate audio --prompt-file <prompt.txt> --language ru --format deep-dive --length long --wait --timeout 1800 --retry 2 # --length long ВСЕГДА (Закон 2в)
notebooklm download audio "$OBSIDIAN_VAULT/05-Resources/NotebookLM/artifacts/audio/teach-<дата>-<слаг>-ru.m4a"
# EN-эпизод (ОБЯЗАТЕЛЕН с 21.09, не «по запросу»; только ПОСЛЕ скачивания RU; -n обязателен, контекст мог смениться):
notebooklm generate audio --prompt-file <prompt>.en.prompt.txt --language en --format deep-dive --length long --wait --timeout 1800 --retry 2 -n <id блокнота>
notebooklm download audio "$OBSIDIAN_VAULT/05-Resources/NotebookLM/artifacts/audio/teach-<дата>-<слаг>-en.m4a"
notebooklm list --json | python3 -c "import sys,json;print(json.load(sys.stdin)['notebooks'][0]['id'])" # id блокнота (ключ notebooks, 0.8.2)
Генерация 5–15 минут → запускать в фоне (run_in_background), не держать сессию. Готовая обёртка на один
эпизод (ждёт источники → генерит → скачивает, с уликами в логе): bash ~/.claude/scripts/_shared/teach_gen_one.sh <id блокнота> <prompt.txt> <out.m4a> [сек ожидания].
⭐ БОЛЬШЕ ОДНОГО ЭПИЗОДА → ОЧЕРЕДЬ С РОТАЦИЕЙ БАКОВ (teach_backlog.py, рождён 21.09.2026 под приказ
«кончились лимиты — иди на другой аккаунт»). Она делает ровно то, что руками делать нельзя: упёрлась в
rate limited — ставит ЭТОТ бак остывать и отдаёт задание следующему, эпизоды идут строго по одному:
python ~/.claude/scripts/_shared/teach_backlog.py add --slug <слаг>-<ru|en> --notebook <id> \
--prompt <prompt.txt> --out "$OBSIDIAN_VAULT/05-Resources/NotebookLM/artifacts/audio/teach-<дата>-<слаг>-<ru|en>.m4a" --lang ru
python ~/.claude/scripts/_shared/teach_backlog.py run --cooldown 45 --loop # в фоне; порядок баков уже вшит
python ~/.claude/scripts/_shared/teach_backlog.py status # что готово, что ждёт, какой бак остывает
Состояние — ~/.claude/state/teach_backlog.json, журнал — ~/.claude/state/teach_backlog.log (не в синкаемой
папке, §4.5-бис). Регресс: python ~/.claude/scripts/_shared/_test_teach_backlog.py (5 тестов; красным показан
на сломанной ветке RATE_PATTERNS).
⭐⭐ ПРИОРИТЕТ БАКОВ НАЗВАН АНТОНОМ ГОЛОСОМ 23.09.2026 И ВШИТ В ДЕФОЛТ. Дословно: «если на одном
аккаунте закончились время, ты идёшь генерировать другой аккаунт… сначала youraccount.a2, потом
youraccount.a, потом [рабочий аккаунт]». Порядок = DEFAULT_ACCOUNTS в teach_backlog.py, флаг --accounts
теперь можно НЕ писать:
| приоритет | профиль CLI | почта | состояние 23.09 |
|---|
| 1 | default | you.assistants@example.com (AI Pro) | ✅ живой |
| 2 | youraccount-a | you@example.com | ✅ живой |
| 3 | [рабочий аккаунт] | [рабочий аккаунт]@gmail.com | ✅ живой |
| ⛔ | a, youraccount-a2 | — | мёртвые двойники, куки протухли |
Проверено прогоном notebooklm -p <профиль> list 23.09; два двойника отвечают «Authentication expired
or invalid». Класть их в --accounts = получить ложное «бак мёртв» и уйти ждать сутки на ровном месте.
⛔⛔ АУДИО ГЕНЕРИТСЯ ТОЛЬКО ЧЕРЕЗ ОЧЕРЕДЬ. Прямой notebooklm generate audio в обход teach_backlog
запрещён для любой партии больше одного эпизода: он сидит на ОДНОМ баке, при rate limited просто
падает, и ротация из приказа Антона не срабатывает вообще. ⚠️ Замер 23.09: восемь эпизодов по конспектам
[человек] Liu ушли прямым вызовом веером — и мимо ротации, и мимо запрета параллелить ниже. Прошло только
потому, что квота a2@ в то утро не кончилась; это везение, а не работающая рельса.
⛔ ГЕНЕРАЦИИ НЕ ПАРАЛЛЕЛИТЬ — ДАЖЕ В РАЗНЫХ БЛОКНОТАХ (замер 20.09.2026, хаб, диагноз уточнён вторым заходом).
Запустил пять эпизодов веером на аккаунте a2@ — три дошли, два упали с Artifact <id> disappeared from list (consecutive=5 not-found polls) — treating as removed и сообщением CLI «quota/rate limit or transient».
⚠️ Провал был ложным, и это главное в этой грабле. Перезапустив оба эпизода поодиночке и потом сверив
artifact list, нашёл в обоих блокнотах ПО ДВА completed-аудио: первый (объявленный «снятым») сервер
спокойно доделал, просто поллер CLI потерял его из списка, пока рядом шли другие генерации. То есть при
веере ты платишь дважды — генерацией и перегенерацией — и получаешь в блокноте дубли, которые потом путают
Антона. Сообщение про квоту читается как «квота кончилась», хотя квота ни при чём.
Правило: один эпизод за раз, следующий стартует после скачивания предыдущего (цепочка в фоне:
until grep -qE "DONE bytes|FAIL" <лог первого>; do sleep 20; done; teach_gen_one.sh <второй>).
И перед тем как объявить эпизод провалившимся — сверь artifact list -n <id>: артефакт может быть
готов, а провалилось только слежение за ним. Пять эпизодов последовательно = примерно час, это нормальная цена. Ссылка для телефона:
https://notebook.google.com/notebook/<id>?authuser=you.assistants@example.com — Антон слушает в приложении
NotebookLM под a2@, файл нужен для волта и YouTube. Расширение честное: .m4a (внутри AAC).
Шаг 6. Доставка и учёт (тем же заходом)
-
Антону в чат сессии: тема · зачем · ссылка на блокнот · длительность · «что проверить после прослушивания»
(3 вопроса — он сам поймёт, усвоил ли). Нет его в сессии → строка в 03 через bus_send.py.
-
Строка в _teach-curriculum.md (статус «сгенерирован», блокнот, файл, дата) и в
artifacts/_NotebookLM-Audio.md (как все аудио). Индекс _NotebookLM-Index.md — строка блокнота.
-
YouTube-очередь $OBSIDIAN_VAULT/05-Resources/NotebookLM/_youtube-queue.md: строка = файл · заголовок RU/EN ·
описание (3–5 строк, «Как я готовлюсь к собеседованиям в AI-компании: урок про …») · теги · статус
ждёт. Публичность обеспечена Законом 3.
⭐ ВЫГРУЗКУ ДЕЛАЕТ /youtube-publish (скилл родился 21.09.2026 из голосовой Антона
«выкладывать на личный YouTube-канал... как только появляется новый материал»). Контракт
односторонний: мы КЛАДЁМ строку, он ВЫЧЕРПЫВАЕТ. Канал [аккаунт], движок
~/.claude/scripts/youtube_publish.py, леджер ~/.claude/state/youtube_ledger.jsonl.
Заголовок с номером урока («(урок 3)») ставить обязательно: по нему серия выходит
в правильном порядке, а не по дате файла.
Строку забыли — эпизод всё равно найдётся свободным сканом папки артефактов, но уйдёт
с машинным заголовком из имени файла вместо человеческого. Поэтому строку пишем.
-
Шпаргалка звонка (interview-prep-*.md): строка «Подкаст: <ссылка>» рядом с разбором.
-
Вердикт о скилле одной строкой: 🔧 / 📝 / ✅ с причиной (§9.3-бис).
Шаг 7. Проверка (§4.3-бис, второй заход другим методом)
- Файл на диске >1 МБ, длительность из контейнера (
python3 -c по mvhd или afinfo <файл>), язык русский
(первые 30 с транскрипта или artifact list), источники = только наши (source list без чужих).
- Не прослушал сам = так и пишу: «сгенерирован, не прослушан».
Потребители
- Антон:
/teach-podcast или «сделай подкаст про …» — перед любым собеседованием и по плану.
/interview-prep Шаг 6: после шпаргалки — один урок по дырам сверки (строка-указатель туда).
- Кандидат в рутину
teach-podcast-daily (ночное окно, следующая тема плана без статуса «сгенерирован») —
ставится после того, как Антон прослушает первые 3 эпизода и скажет, что формат работает (§5.7 shadow-first).
<!--kit-footer-->
Like this skill? It is one of 100 in 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.