teach-podcast
Учебные аудиоподкасты для Антона в NotebookLM: выбирает, чему учить (труба собеседований, дыры сверки), пишет пакет и промпт ведущим, генерирует аудио RU+EN через CLI notebooklm, кладёт в волт, ведёт
SKILL.mdskills/teach-podcast/SKILL.md
GitHub/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-ayou@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).
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.