inbox · v1.0.0 · 2026-09-24 · sha256 9a84a33c9b2307f3
inbox v1.0.0A
Immutable. This exact content never changes and is served at /api/v1/blob/9a84a33c9b2307f3.
--- name: inbox description: "Check this machine's cross-machine mailbox — messages Claude on Anton's OTHER computer left for Claude here (via the Syncthing-synced `[шина]` folder, no Telegram, no courier). Trigger on “/inbox“, “глянь инбокс“, “что мне пришло“, “проверь инбокс“, “сообщения от другого компа“, “что в инбоксе“, “check inbox“, “messages from the other machine“" version: 1.0.0 --- # /inbox — почта между моими машинами Канал «Claude на одной машине → Claude на другой» через синканную папку `[шина]` (Syncthing, ~10 сек). Убирает Антона-курьера. Курьер (копипаст) = ТОЛЬКО аварийный канал. ## Проверить, что мне пришло (основное) ```bash python "$USERPROFILE/.claude/scripts/machine_bus.py" read ``` Покажет только НОВОЕ для ЭТОЙ машины (по имени компа) и пометит прочитанным. Затем доложи Антону, что пришло, и при необходимости выполни/учти это. - На старте сессии это уже делает хук `SessionStart` автоматически — `/inbox` нужен, когда Антон говорит «глянь инбокс» в середине сессии (например, новое прилетело синком). - Пере-проверить, не помечая прочитанным: `... read --peek`. ## Послать сообщение Claude на ДРУГОЙ машине 1. Узнать имена доступных ящиков: ```bash python "$USERPROFILE/.claude/scripts/machine_bus.py" list ``` 2. Отправить: ```bash python "$USERPROFILE/.claude/scripts/machine_bus.py" send <ИМЯ-КОМПА-ПОЛУЧАТЕЛЯ> "текст сообщения" ``` Сообщение самодостаточно (у Claude на той машине нет контекста этой сессии — вложи цель, шаги, пути, значения). Долетит за ~10 сек, всплывёт у получателя на старте сессии или по `/inbox`. ## Когда какой канал - **Авто-ящик (этот скилл + хук)** — норма для всего межмашинного. - **Курьер (копипаст через Антона)** — ТОЛЬКО если синк лёг / нужно вне общей сети / очень срочно. ## Границы - Не слать секреты в ящик, если файл могут увидеть третьи лица (у Антона на его машинах — ок). - «Свежее бьёт старое»: конфликт правок решает Антон (Syncthing создаёт `*.sync-conflict-*`). - Доставка не мгновенная: Claude — не демон; письмо ждёт, пока на той машине не откроется сессия (или не сработает рутина). ## Контракт робота v2 — EXECUTE-SIGNED (правило `inbox-robot-execute-signed`, 10.09.2026) Ящик разбирает не только живая сессия: headless-робот узла с 10.09 работает по контракту `ROBOT-CONTRACT: EXECUTE-SIGNED v2` (маркер первой строкой в `~/.claude/scripts/robot_inbox_prompt.md`). - Подпись `SIGNATURE: ✓ VALID` + задача Tier-1 → робот **исполняет сам**, снимает доказательство, отвечает отправителю с `#id`, гасит долг `machine_bus.py pay <id> "<факт>"` и только тогда `robot-done`. - Unsigned / ✗ / Tier-2 / нужны руки → строка в `$MACHINE_BUS_DIR/_plans/backlog-<узел>.jsonl`, её печатает SessionStart-хук `inbox_debt.py hook`. Это и есть потребитель плана. - ⛔ `pay` со словом «planned/запланировано» отбивается и при записи, и при чтении леджера (правило `ledger-paid-by-plan-not-by-fact`). Долг без `#id` в шапке гасится `pay <id> "<факт>" --register "<заголовок>"`. Живой сессии это меняет ровно одно: перед разбором ящика загляни в backlog — там лежит то, что робот честно НЕ смог сделать сам, а не то, что он забыл. Канон: CLAUDE.md §7.5 · память `inbox-robot-execute-signed`, `ledger-paid-by-plan-not-by-fact`.