본문으로 건너뛰기
cccskills
무료GitHub에 공개

routine-opt

Audit and cut the cost of a machine's scheduled routines: measure tokens per run, pick a lever (cheaper model, split, lower frequency, shorter prefix, retire) and prove the saving with a before-and-after measurement. Use when background routines burn more than interactive work. Triggers: /routine-opt, /ropt, routine audit, cheaper routines.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

연동 도구TelegramGmail
설치 방법 보기

포함된 파일(1)

  • SKILL.md21.9 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

/routine-opt — сделать парк рутин дешевле, не сломав его

Заказ Антона (голосом, 10.09.2026): «аудит всех рутин, часть на Sonnet, часть декомпозировать, запускать реже и дешевле».

Главный факт, с которого начинается любой прогон этого скилла (замер хаба 09.09.2026): цена прогона = ходы × носимый префикс, а не «дорогая модель». Одна рутина за один прогон уносила 155M токенов; носимый префикс сессии с полным набором коннекторов — 110–134k на каждый ход. Поэтому рычаг «модель» стоит в этом скилле последним, а не первым: он делит счёт, а первые три рычага его вычитают.

Шаг 0 — RECALL (не начинай с нуля)

python [путь владельца] "аудит рутин цена токенов модель декомпозиция"

Что уже решено и НЕ переоткрывается без новой улики:

  • оргмодель «рутины = сотрудники» (decision-2026-08-21-routine-org-model): менеджер = robot-audit-weekly;
  • вердикт панели 4 LLM (insight-panel-routines-model-consumption-2026-08-10): корень — отсутствие backpressure, перевод на дешёвую модель без него = «дешёвый мусор вместо дорогого»;
  • Sonnet-only для рутин сотрудников (Библия), узлы Антона живут по §6.2.

Шаг 1 — замер (0 токенов, обязателен)

python ~/.claude/scripts/routine_cost_audit.py --days 7 --out ~/.claude/state/routine_cost.json

Читаем колонку «за прогон», а не «за окно»: за окно дорога рутина, которая просто часто ходит, а чинить надо ту, у которой дорог ОДИН прогон. Прибор сам ставит вердикт-кандидат; он кандидат, а не приговор — решение за человеком.

⚠️ Грабля, пойманная 14.09 (LAPTOP-1): строка cron: once + enabled: false = ОДНОРАЗОВЫЙ СИД (переиспользованный слот /slot), а не рутина. Замер 06–13.09: все 13 «🔴 декомпозировать» были такими сидами (10.09 — 540M за день), а настоящие суточные рутины стоили 4–9M/прогон. Сиды не прореживаются и не декомпозируются — их цена = длина живой работы сида; рычаг там один: узкий носимый префикс (headless claude_run.py) и call_budget_gate. В таблице такие строки читай как «сид», иначе весь Шаг 2 уйдёт в правку того, что больше не запустится.

Прибор молчит про пользу. Пользу спрашивай у соседа, иначе удешевишь то, что надо было уволить:

python ~/.claude/scripts/routine_value_audit.py --help

Шаг 2 — рычаги, строго в этом порядке

⛔ Рычаг «частота» на СТОРОЖЕ требует двух цифр (замер 22.09.2026). Прежде чем растянуть интервал сторожа/страховки, назови фору, которую он даёт основному звену, и срок, за который потребитель заметит пропажу; новый интервал меньше обеих или рычаг не применяется. Сторож с нулевым расходом LLM — кандидат в исключения по умолчанию, а не первая жертва экономии: 15.09 так растянули Claude Voice Backstop 4ч→8ч при форе 10 мин, 22.09 голосовая Антона потерялась, а прибор писал status=OK. Канон: память deflate-must-not-stretch-safety-nets, зеркало — /deflate Шаг 2-бис.

① Декомпозиция (🔴, прогон ≥ 20M). Режем рутину на две части: детерминированную (сбор, фильтр, дедуп, счёт — чистый python, 0 токенов) и короткий LLM-финал (суждение/текст). Признак, что рычаг твой: в SKILL.md рутины стоят шаги вида «собери → отфильтруй → посчитай → реши». Первые три шага LLM выполнять не должен вообще. Образец в парке: inbox-robot — 0-LLM предгейт, LLM будится только когда работа есть.

② Частота (🟡). Два прогона в сутки вместо одного — минус половина счёта без единой правки логики. Порог рутин обслуживания задан каноном: §10.0 — паразитные активности 1×/сутки; §7.5 — инбокс пол 1, потолок 2. Проверь заодно шторм расписания: 2–3 прогона там, где cron один слот (token_audit.py печатает это флагом) — это не работа, это догон планировщика.

③ Префикс (🟡, самый недооценённый). Сессия рутины тащит весь набор коннекторов на каждый ход. Рутине, которая пишет в файл и шлёт строку в Telegram, не нужны Gmail, Trello, Calendly, Drive, Fireflies и оба WhatsApp. Замер 09.09: 366 сессий за сутки не сделали НИ ОДНОГО MCP-вызова и перечитали 304M токенов префикса. Рычаг: тяжёлую часть увести на headless-рельсу (claude -p через claude_run.py), где набор инструментов узкий, а не в приложение с полным набором.

④ Модель (🟠). Здесь и только здесь — Sonnet.

  • OS-рельса (Windows-задачи, лаунчеры ~/.claude/scripts/*.cmd): --model sonnet в строке вызова, чинится одной правкой. Прибор печатает список тех, кто ещё на opus.
  • Рельса приложения (~/.claude/scheduled-tasks/<id>/SKILL.md): строка model: sonnet во frontmatter РАБОТАЕТ. Доказано 10.09.2026 телеметрией харнесса (message.model в jsonl, не самоотчёт): канарейка с model: sonnet → факт claude-sonnet-5; 30 рутин без поля → opus; две с model: opus → opus. Замер 06.08 («игнорируется») ПРОТУХ — классика [[ban-is-a-claim-recheck-before-workaround]]: месяц строили headless-обходы вокруг мёртвого запрета. Перевод = одна строка frontmatter, headless-перенос ради модели больше НЕ нужен.
  • ⛔ Граница §6.2: авторский голос Антона (контент, аутрич, посты, ответы лидам) на Sonnet не переводим. Дешевле там делается грунт вокруг текста, а не сам текст. Технические рутины (деплой, синк, дайджесты, сторожа, разбор инбокса) — переводим.

④-бис Потолок вызовов = ГЕЙТ, не записка в промпте. Блок «токен-дисциплина» текстом в 38 промптах (потолок 60) игнорировался: факт 76–190 вызовов за прогон. Работает только физика: hooks/call_budget_gate.py (PreToolUse .* в settings.json) считает вызовы сессии scheduled-task и после потолка блокирует всё, кроме закрывающих (runlog / heartbeat / bus_send / deploy_apply). Живые сессии не считаются никогда. Потолки — ~/.claude/call_budget_overrides.json (_cap дефолт + пер-рутинные строки), правит человек, не смена.

Почему дефолт 80, а не 40 и не 180 (замер хаба 03–09.09): договорной потолок был 60; здоровые рутины укладывались в 40–70 вызовов, больные делали 76–190. 40 отрубил бы половину ЗДОРОВЫХ прогонов посреди работы (гейт стал бы источником недоделанных смен — хуже перерасхода); 180 пропустил бы почти весь хвост, ради которого гейт строился. 80 = чуть выше верхней границы здоровых, чтобы первые смены дорезали хвосты, а известные тяжёлые получили именные 90–100. После урожая — ratchet ВНИЗ к 60, не вверх.

⑤ Утиль (⚪). Рутина без потребителя (§4.2 Connect) и без выхода (§5.5) не удешевляется, а увольняется. Порядок увольнения — не удаление: выключить на 30 дней + дата ревью, как 21.08.

python ~/.claude/scripts/routine_value_audit.py --app-tasks <опись задач приложения.json> \
       --win-tasks <schtasks /query /v /fo CSV> --out ~/.claude/state/routine_value.json

⚠️ Грабля, пойманная 11.09: routine_value_audit.py на хабе покрывает ТОЛЬКО Windows-задачи (home: win), а весь дорогой хвост живёт на рельсе приложения. Замер 11.09: 23 из 23 дорогих рутин пришли БЕЗ пары в пользе, поле quadrant пустое у всех 510 строк. Значит вердикт «уволить» по этому прибору выносить НЕЛЬЗЯ -- честная формулировка «польза не измерена», а не «пользы нет». Удешевлять (модель/частота/декомпозиция) это не мешает: они не меняют, ЧТО рутина делает.

⚠️ Грабля, пойманная 10.09: два прибора называют одну рутину по-разному — у цены ключ task:<id>, у пользы id, а описи задач приложения этот прибор ждёт в форме MCP-ответа, тогда как файл реестра на диске имеет форму {"scheduledTasks":[{"id":...}]}. Сшивать цену с пользой по нормализованному id, иначе получишь красивую таблицу из «НЕТ СТРОКИ» и решишь, что польза не доказана ни у кого ([[instrument-is-a-claim-too]]).

Шаг 2-бис — РЕЦЕПТ ДЕКОМПОЗИЦИИ (рычаг ①, по двум пилотам 11.09.2026)

Рутина режется на 0-LLM предгейт (весь сбор и вся сортировка) и короткий LLM-финал (только суждение). Модель просыпается по коду возврата, а не читает вывод глазами.

Контракт предгейта — три кода, больше ничего:

кодсмыслчто делает рутина
0PREGATE: CLEANдоложить одной строкой и ЗАВЕРШИТЬ. LLM-работы ноль
10PREGATE: WAKE + списокразбирать ТОЛЬКО названное, детали в state/<имя>.json
прочеепредгейт сам сломалсядоложить в 03 с хвостом, задачу не выдумывать

Что переезжает в код (и почему именно это):

  • порядок шагов — в jobs-watch шаг «перерисовать реестр ПОСЛЕ агрегаторов» жил прозой, и весь день таблица показывала вчерашний срез, если модель не дочитала до «2-бис-3»;
  • ретраи на известных отказах — 429 Sheets («подожди 70с») и 403 Gmail. Потеряешь при переносе — предгейт будет будить модель на каждую квоту, и экономия исчезнет;
  • пороги терпения — «борд мигает третий день подряд = слаг протух». Счётчик между прогонами живёт в state-файле, а не в памяти модели;
  • отсев шума — в pipe-a-inbox из 40 писем 38 оказались шумом ATS, ради которого модель будили каждый день.

Что НЕ переезжает: ответ человеку, тон, выбор тира, спорные решения. Предгейт pipe-a-inbox НИЧЕГО не отправляет — он только читает и сортирует.

Четыре грабли, на которых оба пилота споткнулись вживую

  1. Прибор отдаёт КАРТИНКУ, а нужны ДАННЫЕ. gmail_check.py усекал поля под ширину консоли (frm[:32]), и buzzrobot@substack.com приезжал как buzzrobot@substack — предгейт судил о домене по обрубку. Лечится не парсером похитрее, а флагом --json у самого прибора. Проверяй --help источника ПЕРЕД тем, как парсить его вывод.
  2. Классификация по форме адреса врёт. Первая версия объявила «фаундером» ювелирный магазин и рассылку Substack: сортировала по «не no-reply@ → человек». Честный признак даёт сверка с ДАННЫМИ (список компаний из <jobs database>), а не форма строки.
  3. no-reply@ — это «отвечать физически некому». Держи для него отдельное ведро event: интервью/оффер будят модель, остальное — тихий шум. Иначе получишь 38 «живых ответов» и нулевую экономию.
  4. Предгейт не имеет права глотать провал. Упавший шаг = WAKE с названной причиной. Иначе повторяется класс «частичный успех записан как полный» (10.09: 99 видео похоронено, потому что провал подзадачи не мешал закрыть кусок готовым).

Приёмка (иначе это не декомпозиция, а переписанный промпт)

  • тест предгейта с кейсами CLEAN / WAKE / провал шага / известный отказ (429), показанный красным на сломанном коде — прогони мутанта: вынь из предгейта проверку rc != 0 и убедись, что тест краснеет;
  • боевой прогон предгейта до правки промпта — он обязан отработать на живых данных;
  • две даты в Shadow-First-Queue.md и откат, названный ДО правки (бэкап SKILL.md).

Образцы в парке: ~/.claude/scripts/jobs_watch_pregate.py (конвейер из 4 команд) и pipe_a_inbox_pregate.py (сбор + классификация), тесты рядом с ними.

Шаг 3 — правка идёт КАНАРЕЙКОЙ, а не веером

Правило §7.3-бис: сначала одна рутина, потом узел другого типа, потом остальные. Откат называем ДО правки. Переписал разом весь парк — получил отказ по общей причине и не знаешь, какая правка виновата.

Шаг 4 — доказать экономию (иначе это не оптимизация, а надежда)

Две даты в 00-System\Shadow-First-Queue.md (§5.7): дата правки и дата урожая (+7 дней). На урожай — тот же прибор с тем же окном:

python ~/.claude/scripts/routine_cost_audit.py --days 7

Сравниваем за прогон по конкретной рутине до и после. Упало — вердикт ✅ с числом. Не упало — правка откатывается, а не объясняется. Выгодный вывод («стало лучше») требует усиленной проверки, а не ослабленной (§5.4).

Шаг 5 — закрыть заход

  • строка в реестр рутин (§4.5) по каждой тронутой рутине: что изменено и чем доказано;
  • ⭐ вердикт о самом скилле (§9.3-бис): 🔧 обновляю / 📝 обновлю не сейчас / ✅ не надо — с причиной;
  • если починка переносима на другой узел — раскатка в том же заходе (§7.3-бис), не «потом».

Шаг 6 — флот (приказ Антона 10.09: «на всём флоте минимизировать рутины»)

Этот скилл — флотский, не хабовый. Каждый узел прогоняет его у себя, потому что парк рутин, цены и потребители у каждого узла свои (§4.5-тер: частоту диктует срок потребителя ЭТОГО узла). Порядок на узле:

  1. Прибор: python ~/.claude/scripts/routine_cost_audit.py --days 7 (приедет синком конфига; нет на узле — доложить в 03, не переписывать своими руками).
  2. Рычаги строго ①→⑤ по Шагу 2; модель = frontmatter model: sonnet только на ТЕХНИЧЕСКИХ рутинах.
  3. Гейт вызовов: скопировать регистрацию call_budget_gate.py в PreToolUse местного settings.json (бэкап settings.json ДО правки) + завести местный call_budget_overrides.json.
  4. Канарейка §7.3-бис: одна рутина → узел проверил урожай → остальные. Даты правки и урожая в Shadow-First-Queue.
  5. Доклад в 03: строка «узел · рутин N · переведено M · гейт вкл/нет · урожай <дата>».

Решения «уволить рутину» и «резать аварийного сторожа» остаются за оператором узла (§4.5-тер ⛔).

Чего этот скилл НЕ делает

  • не выключает рутины сам (увольнение = решение человека, §3.1);
  • не трогает модель там, где идёт авторский голос Антона;
  • не верит счётчику вызовов вместо счётчика пользы ([[counter-measures-the-call-not-the-use]]).
<!--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.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

03

무료

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 16일 업데이트

1

무료

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".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 16일 업데이트

agenda

무료

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".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 16일 업데이트

ai-slop

무료

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.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 16일 업데이트

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".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 16일 업데이트

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

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

tonydzi/second-brain-starter-kit92026년 10월 16일 업데이트

tonydzi의 스킬 모두 보기

이 스킬의 문제 신고