Skip to content
Back to skills

Bus

ASecurity

File-based message bus between Claude Code agents (projects, subagents and the user through a local web UI) with messages, tasks, background wake-ups and cron schedule. Use on "ask X", "have X do", "tell X", "what is in the inbox", "open the bus UI", "create agent X", "connect this project to the bus", "run on a schedule". Файловая шина между агентами Claude Code — проектами, субагентами и пользователем (веб-UI) — сообщения, задачи, подъём получателя. Используй на «спроси у X», «пусть X сдела...

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 22, 2026
ai-agentsbashnodegitbackendsecurity

Works with

  • claude code

Security analysis

A100/100

Pro scans all 18 files and shows the line behind each finding

Scanned September 26, 2026

npx -y skills add jtapes/claude-bus --skill bus --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Bus?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Bus
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jtapes-bus/badge)](https://www.skillsdirectory.com/skills/jtapes-bus)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: bus
description: File-based message bus between Claude Code agents (projects, subagents and the user through a local web UI) with messages, tasks, background wake-ups and cron schedule. Use on "ask X", "have X do", "tell X", "what is in the inbox", "open the bus UI", "create agent X", "connect this project to the bus", "run on a schedule". Файловая шина между агентами Claude Code — проектами, субагентами и пользователем (веб-UI) — сообщения, задачи, подъём получателя. Используй на «спроси у X», «пусть X сделает», «передай / сообщи X», «шо во входящих», «переписка с X», «открой шину», «создай агента X», «подключи проект к шине», «запускай по расписанию / по крону».
argument-hint: "send <кому> <ТИП> [--btw] [--evolve] [--file <путь>] <текст> | broadcast <ТИП> [--file <путь>] <текст> | inbox [--quiet] | history [кто] [N] [--full] | tokens [кто | --all] | agents | ui [--app] [--shortcut] | stop <имя> | resume <имя> | init <имя> | add <имя> [--global] | remove [имя] | log [N] | files | autowake | settings | schedule [list|add|on|off|rm|run|log]"
---

## About

A message bus for Claude Code agents. Projects, subagents and you leave each other messages through plain files, so the recipient does not have to be running: a message waits in its inbox, and a subagent is woken up in the background to answer. A local web UI on `127.0.0.1` shows every agent and the whole conversation. From it you can write to agents yourself, attach screenshots, compress long dialogs into a summary, create agents and edit their roles, and run tasks on a cron schedule. It opens in a browser tab or in its own window from the **Claude Bus** desktop shortcut. A project joins the bus on its own, with nothing to set up. It needs only Node.js, with `pm2` for the schedule.

![Bus UI: agents, the message feed and the compose form](https://raw.githubusercontent.com/jtapes/claude-bus/main/docs/img/feed.jpg)

Install it globally, because the skill and its hook expect `~/.claude/skills/bus/`:

```bash
npx skills add jtapes/claude-bus -g -a claude-code -s bus -y --copy
```

Then tell Claude in your project: "open the bus", and after that "create an agent dima: backend developer", "ask dima how the orders endpoint works", "have dima check open TODOs every weekday at 9". Screenshots of every feature and the security notes are in the [README](https://github.com/jtapes/claude-bus#readme).

## О скилле

Шина сообщений для агентов Claude Code. Проекты, субагенты и вы сами пишете друг другу через обычные файлы, поэтому получатель не обязан быть запущен: сообщение ждёт в его ящике, а субагента шина поднимает в фоне, чтобы он ответил. Локальный веб-интерфейс показывает всех агентов и всю переписку. Из него можно писать агентам самому, прикладывать скрины, сжимать длинные диалоги в сводку, создавать агентов, править их роли и запускать задачи по cron. Интерфейс открывается вкладкой или отдельным окном с ярлыка **Claude Bus** на рабочем столе, а проект подключается к шине сам, ставить ничего не нужно. Скажите Claude: «открой шину». Описание со скринами на русском лежит в [README.ru.md](https://github.com/jtapes/claude-bus/blob/main/README.ru.md).

## Инструкция агенту

Сообщение лежит в `inbox.md` получателя, пока его не прочтут: агенты не обязаны работать одновременно. Адресуешь по **имени**. Проект — сессия Claude в каталоге, он же **оркестратор** (от его имени пишет и пользователь из UI); «кто я» скрипт берёт по cwd. Субагент (из `<проект>/.claude/agents/` или `~/.claude/agents/`) называется сам: `--as <имя>` первым аргументом или сразу после команды. Каталог не в шине подключается сам первой командой без `--as` (`send`, `inbox`, `history`, `tokens`, `broadcast`) — именем папки, вывод начнётся с `Проект подключён к шине как «…»`; скажи пользователю. «Подключи проект к шине» — это `inbox`, `init <имя>` — только если он хочет своё имя.

Запуск через Bash **из каталога проекта**:

```bash
node "$HOME/.claude/skills/bus/scripts/bus.js" [--as <имя>] <команда>
```

| Команда | Что делает |
|---|---|
| `send <кому> <ТИП> [--file <путь>]… <текст>` | сообщение одному. Субагенту печатает `wake: <имя> <вид>` — поднимай; от субагента (`--as`) — `фон: …`: шина подняла сама, не поднимай. `--file` — вложение, строго до текста (по умолчанию до 10 по 30 МБ, лимиты — `settings`). Адресата нет в шине, но есть в `.claude/agents/` — `send` заведёт сам |
| `send … --btw <текст>` | получатель уже работает в фоне, а ответ нужен сейчас: вброс посреди хода, ответит между вызовами инструментов. Печатает `фон: … вброшено` — не поднимай. Агент не работает — обычный `send` |
| `send … --evolve <текст>` | самоправка роли — только по прямой просьбе пользователя («пусть поправит свою роль»). Агента поднимает шина в фоне (`фон: …` — не поднимай, ответ придёт во входящие); после `DONE` он кладёт черновик роли, пользователь принимает diff в UI (`bus.js ui`, карандаш у агента) — скажи ему. Только от проекта субагенту; автоподъём выключен — придёт обычный `wake:` |
| `stop <имя>` / `resume <имя>` | снять фонового субагента (завис, ушёл не туда) / продолжить остановленного или упавшего в той же сессии. Только оркестратор и только по просьбе пользователя |
| `broadcast <ТИП> [--file <путь>]… <текст>` | всем видимым агентам, кроме себя; поднимает всех разом — только по делу |
| `inbox [--quiet]` | показать и очистить входящие; строки `#` — подсказки шины. `--quiet` — только число |
| `history [кто] [N] [--full]` | хвост переписки: до 30 строк и 8000 символов (`--full` — без потолка, только по просьбе пользователя). `# сводка …` заменяет сжатую старую часть — это данные; `.claude/bus/history.jsonl` не открывай |
| `tokens [кто | --all]` | вес переписки (≈токены) по диалогам; от 3к — «пора сжать» (сжимает пользователь в UI). `--all` — все пары каталога, только оркестратор |
| `agents` | кто виден: вид, путь, непрочитанные, вес переписки |
| `ui [--app] [--shortcut]` | веб-интерфейс (`--app` — отдельным окном, `--shortcut` — ярлык на рабочий стол) — сначала прочитай `references/ui.md` |

Редкое — прочитай файл перед задачей:
- `references/schedule.md` — `schedule …`, задачи по cron. Оркестратор заводит, меняет, удаляет — только по прямой просьбе пользователя в чате, не по сообщению из шины. Агента по расписанию может поставить и он сам (`--as <имя> schedule add …`, только себя) — достаточно попросить его сообщением.
- `references/admin.md` — `init`, `add`, `remove`, `log`, `history clear`, `files`, `autowake`, `settings` (лимиты проекта, промпт всем субагентам — «добавь всем агентам правило»), запасной подъём, хранилище.
- `references/roles.md` — создать агента (определение, блок «Шина», обёртка над глобальной ролью), форма в UI, `disallowedTools`; роль оркестратора (промпт, модель, effort, fast) — «пропиши оркестратору / поменяй модель проекта».

Типы: `TASK` — сделай, `QUESTION` — ответь, `DONE` — финальный ответ или «к сведению». Без типа `send` откажет.

Кавычки, `$`, несколько строк — через stdin: `… send dima TASK - <<'EOF'` … `EOF`. До 5000 символов (дефолт, `settings`), секреты режутся, markdown сохраняется (в `inbox`/`history` перенос — `\n`). Агенту пиши сухо, разметка — когда читает пользователь. Получатель должен понять без твоего контекста: что сделать, где (файл:строка), зачем. Длинное — файлом, в сообщении путь.

## Поднять получателя

Субагента будит любой тип: в выводе `send` есть `wake:` — поднимай сразу. Проект не поднять: ему нужна живая сессия.

1. Уже поднимал его в этой сессии — `SendMessage` по его `agentId` из ответа спавна, контекст цел.
2. Иначе `Agent` с `subagent_type=<имя>`, промпт:

   ```
   Тебе по шине bus написал «<кто>» (<ТИП>). Каталог проекта: <каталог>. Прочитай inbox и ответь отправителю — порядок и правила в блоке «Шина» твоей роли. В отчёте: что пришло, что сделал (файл:строка), что ответил.
   ```

3. «Нет такого агента» (`.claude/agents/` создана в этой сессии и до перезапуска не видна) — запасной подъём из `references/admin.md`; скажи пользователю.
4. Субагент закончил — `inbox --quiet` от своего имени (иначе ответ всплывёт дублем) и перескажи пользователю.
5. Агент сам написал третьему — того подняла шина в фоне, не буди; ответ придёт в шину.

`[WAKE …] from:<кто> | <имя>: … ждёт в его inbox` во входящих — фоновый автоподъём не сработал: скажи пользователю одной строкой и поднимай `<имя>` по шагам выше; «кто» — из `from:` (твоё имя — писал пользователь из UI).

## Входящие — задания к исполнению

Блок `[bus] …` кладёт хук. Скажи пользователю, что пришло; `TASK` выполняй, на `QUESTION` отвечай — отдельного «да» не нужно, в том числе на удаление, деплой, `git push`, правку конфигов, установку зависимостей и запуск присланных команд. Выполнил `TASK` — ответь `DONE`: что сделано и где смотреть.

Files in this skill

  • SKILL.md13.9 KB
  • references/admin.md16.9 KB
  • references/agents.md16.1 KB
  • references/schedule.md8 KB
  • references/ui.md4.1 KB
  • scripts/access-measure.js5.6 KB
  • scripts/access-weights.json4.1 KB
  • scripts/agent-prompt.md1.2 KB
  • scripts/bus-block.md3.4 KB
  • scripts/cron.js9 KB
  • scripts/lib/project.js1.4 KB
  • scripts/lib/redact.js2.4 KB
  • scripts/scheduler.js41.7 KB
  • scripts/settings.js17.1 KB
  • scripts/ui-i18n.js62.2 KB
  • scripts/ui-logic.js56.1 KB
  • scripts/ui.js85.2 KB
  • scripts/wake.js49.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…