📱 ПУЛЬТ — ежедневная ПУСТАЯ сессия с Remote Control на каждом узле Антона, чтобы он мог управлять машиной с ТЕЛЕФОНА без AnyDesk. Триггеры “/pult“, “/пульт“, “/cockpit“, “поставь пульт“, “сессия-пульт“, “нужен доступ с телефона“, “пульт не поднялся“, “проверь пульты на флоте“
Installs into .claude/skills of the current project.
Are you the author of Pult?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/tonydzi-pult)
---
name: pult
description: "📱 ПУЛЬТ — ежедневная ПУСТАЯ сессия с Remote Control на каждом узле Антона, чтобы он мог управлять машиной с ТЕЛЕФОНА без AnyDesk. Триггеры “/pult“, “/пульт“, “/cockpit“, “поставь пульт“, “сессия-пульт“, “нужен доступ с телефона“, “пульт не поднялся“, “проверь пульты на флоте“"
version: 1.0.0
---
> 🔴🔴 **ОПРОВЕРГНУТО 10.09.2026 13:45 — ЧИТАЙ ПЕРЕД ИСПОЛНЕНИЕМ.**
> Замер по логу приложения (`%LOCALAPPDATA%\Claude\Logs\main.log`, 07-10.09):
> планировщик поднял **51 сессию**, Remote Control получили из них **0**.
> Приложение включает RC только на трёх UI-событиях — `first_turn`, `warm_send`,
> `cold_resume` (строка `[rcAutoEnable] verdict: ... trigger=<X>`), и сессия,
> рождённая scheduled-task, ни одного из них не вызывает.
> ⇒ Ежедневная пустая сессия по крону телефоном НЕ управляется. Ставить её как
> «пульт» больше нельзя — это ложная зелень второго рода.
> ✅ Что теперь верно: `cold_resume` РАБОТАЕТ, значит **любая** сессия, открытая
> Антоном на десктопе одним кликом, становится управляемой с телефона.
> Отдельный пульт не нужен, нужен один клик. Подробности: память
> `remote-control-always-on` §Опровержение 10.09.
# 📱 Пульт — свежая сессия под телефон, каждый день, на каждом узле
**Приказ Антона 09.09.2026** (голосом 00:15 + 07:49) и подтверждение 10.09.2026 («и хаб, и оба моих ноутбука — по одной такой сессии в сутки»).
**Корень, ради которого это существует** ([[remote-control-always-on]], доказано main.log 18.08): RC-мост по-сессионный и рождается ТОЛЬКО в момент старта нового процесса сессии. Резюм старой сессии моста НЕ поднимает — на телефоне «Disconnected», тап её не будит.
Значит управляемая сессия = ВСЕГДА свежерождённая. С телефона создать новую нельзя ⇒ её обязана рождать рутина.
**Дешевизна — часть контракта.** Пульт стоит ~0 токенов: ставит имя, роняет одну строку, молчит. Любая инициатива в пультовой сессии = дефект.
## Шаг 1 — статус текущего узла (детерминированно, 0 токенов)
```bash
python ~/.claude/scripts/pult_status.py
```
exit 0 = пульт ЖИВ (есть в расписании) → Шаг 3. exit 1/2 → Шаг 2. exit 3 = реестр приложения не найден, прибор себя не доказал — молчи о данных, разбирайся с прибором.
⛔ **`ls ~/.claude/scheduled-tasks/` доказательством НЕ является.** Эта папка синкается между узлами через claude-config, а РЕГИСТРАЦИЯ расписания — локальная, в реестре аккаунта приложения (`scheduled-tasks.json`, поле записи `id`, **не** `taskId`). Замер 10.09.2026: на хабе папка лежала, записи в реестре не было — пульт по утрам не вставал, а глазами выглядел стоящим. Это ложная зелень, ровно [[instrument-is-a-claim-too]].
## Шаг 2 — поставить пульт на ЭТОМ узле
`create_scheduled_task` со строго такими полями:
- `taskId`: `rc-cockpit-anton-daily` (имя ОДНО на весь флот — так `fleet`-проверка ищет его одной строкой)
- `schedule`: cron ежедневно `08:44` локального времени узла (диспетчер сдвигает на ~+4 мин, это норма)
- `notifyOnCompletion`: `false` — пульт не должен пищать Антону каждое утро
- `description`: `📱 Пустая сессия-пульт: Remote Control с телефона`
- `prompt` — САМОДОСТАТОЧНЫЙ (сессия стартует без контекста родителя), тело ниже.
Тело промпта (подставь имя узла вместо `<УЗЕЛ>` — короткое, как Антон его называет: ZBook / Хаб / MacBook):
```
ПЕРВЫМ ДЕЛОМ переименуй эту сессию: вызови mcp__ccd_session_mgmt__set_session_title
с title "[Антон] 📱 Пульт <УЗЕЛ> <ДД.ММ сегодняшняя дата>".
Ты — ПУСТАЯ сессия-пульт для Антона. Твоя работа — стоить ноль токенов и ждать.
После переименования сделай РОВНО одно: ответь одной строкой по-русски
"📱 Пульт готов, жду команду с телефона. Антон, ответь любым словом." и остановись.
Больше НИЧЕГО: не читай инбокс, не запускай скрипты, не шли в шину и Telegram,
не строй дашборды, не делай ретро, не делай RECALL, без ELI5-блока.
Никаких инициатив до первого сообщения Антона.
Когда Антон напишет — работай как обычная сессия по CLAUDE.md.
```
⛔ **Модель задать нельзя** — планировщик её не принимает, Антон переключает сам (его дефолт «opus medium»). Не выдумывай поле.
⛔ **Из РУТИННОЙ сессии `create_scheduled_task` не звать** (CLAUDE.md §9.2): в безлюдном прогоне апрув-окно некому нажать, сессия виснет. Пульт ставится из ЖИВОЙ сессии либо через сид `spawn_queue.py`.
Сразу после создания — объяви выход (§5.5), иначе рутина считается немой:
```bash
python -c "import json; p=r'[путь владельца]'; d=json.load(open(p,encoding='utf-8')); d['exempt']['rc-cockpit-anton-daily']='пульт по построению молчит: выход = сама живая сессия-пульт, потребитель = Антон с телефона (RC-мост); проверка = sessions_now.py утром'; json.dump(d,open(p,'w',encoding='utf-8'),ensure_ascii=False,indent=1); print('exempt записан')"
```
⚠️ Грабля 10.09 (хаб): `green_gap.py exempt <id> --reason` НЕ существует — движок лежит в `scripts/_shared/green_gap.py` и субкоманды exempt не имеет (печатает подсказку и выходит). Причина пишется строкой прямо в `green_gap_exempt.json` (ключ в объекте `exempt`), команда выше делает ровно это.
```bash
: # (историческая строка удалена — не звать green_gap.py exempt)
```
## Шаг 3 — статус по ФЛОТУ (узлы Антона с приложением Claude)
Пульт нужен на трёх узлах: **ZBook** · **Хаб [машина флота]** · **[машина флота]**.
[машина флота] (Якорь, Linux VPS) — приложения нет, пульт неприменим, это законный skip.
Узлы [коллега] и [коллега] — не пульт Антона, не трогаем.
```bash
# хаб — прибором, не наличием папки
python ~/.claude/scripts/hubrun.py --cmd 'python "$env:USERPROFILE\.claude\scripts\pult_status.py"'
```
[машина флота] по ssh недоступен (Remote Login выключен — замер 10.09, таймаут порта 22). Единственная дверь к нему = шина, ставит сессия НА САМОМ Mac (§7.2: пир своё делает у себя). Строку ниже про bus_send — использовать сразу, не искать ssh.
Узел молчит/недоступен → НЕ молчать: TASK в шину dual-send, чтобы поставила сессия НА ТОМ узле (§7.2 — пир своё ставит у себя):
```bash
python ~/.claude/scripts/bus_send.py <MACHINE_KEY> "TASK: поставь у себя ежедневный пульт — скилл /pult Шаг 2. Проверка ФАКТОМ: python ~/.claude/scripts/pult_status.py. Причина: Антон управляет узлом с телефона, RC живёт только у свежей сессии."
```
## Шаг 4 — хвост «вторые аккаунты»
Задача живёт в реестре ТОГО аккаунта приложения, из-под которого создана. У Антона на узлах бывает второй аккаунт (BB / a@) — там пульта НЕТ, пока не создашь из сессии этого аккаунта. Не закрывай вопрос словом «стоит на узле», если аккаунтов два: назови, в каком именно стоит.
## Шаг 5 — вердикт о скилле (§9.3-бис, обязателен)
Одной строкой: 🔧 обновляю (что споткнулось + чиню тем же заходом) · 📝 обновлю не сейчас (причина + куда легла строка) · ✅ не надо (почему именно). Пустое «не надо» вердиктом не является.
## Проверка живости (что считать доказательством)
«Задача создана» ≠ «пульт работает». Доказательство = Антон открыл сессию с телефона и она ответила (канарейка 17.08 13:19–14:03 — так и доказали). Прибор постфактум:
```bash
python ~/.claude/scripts/sessions_now.py # свежая "[Антон] 📱 Пульт ..." в списке = утро прошло штатно
```
Канон: память [[remote-control-always-on]] · CLAUDE.md §4.1 (человек = бутылочное горлышко), §9.2 (рождение сессий), §5.5 (рутина называет свой выход).
## Грабли, проверенные на живых данных (не повторяй)
- `bus_send.py` — аргументы ПОЗИЦИОННЫЕ (`bus_send.py <MACHINE_KEY> "текст"`), флагов `--to/--text` нет.
- Тело задачи для робота обязано начинаться с `TASK:` — **с двоеточием**. Гейт шины отбивает «TASK » без двоеточия: инбокс-робот такое не берёт, сообщение молча теряется как задача.
- Реестр задач: `%APPDATA%/Claude/claude-code-sessions/<org>/<acct>/scheduled-tasks.json` (Win), `~/Library/Application Support/Claude/...` (macOS). Ключ записи — `id`.
- Модели у задачи нет: планировщик поле не принимает, Антон переключает вручную.
<!--kit-footer-->
---
**Like this skill?** It is one of 100 in [second-brain-starter-kit](https://github.com/tonydzi/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](https://github.com/tonydzi/secondop-panel) (a second opinion from a panel of external models), [claude-memory-tidy](https://github.com/tonydzi/claude-memory-tidy) (stop your agent's memory from rotting), [telegram-mcp-kit](https://github.com/tonydzi/telegram-mcp-kit) (your own Telegram over MCP in about 15 minutes).
Author: **Anton Dziatkovskii**, Palo Alto AI Research Lab. Telegram [@tonydzi](https://t.me/tonydzi) - WhatsApp [+1 341 222 9178](https://wa.me/13412229178) - X [@Tony_Stef_](https://x.com/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.