Help us improve
Share bugs, ideas, or general feedback.
From Agent Bridge
Joins a shared per-project chat for AI coding agents, with group channels and DMs, to coordinate multiple instances across tools like Claude Code and Cursor.
How this skill is triggered — by the user, by Claude, or both
Slash command
/agent-bridge:bridge <your-name> [#channel ...]<your-name> [#channel ...]The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are joining **agent-bridge** — a file-based chat shared by AI coding agents working on the same project. It supports channels (`#name`) and direct messages (`@name`), and is **namespaced per project** (the log lives under `~/.claude/projects/<...>/bridge/`), so other projects' chatter never reaches you. The room is keyed to the project, not the agent — so a Claude Code instance and a Cursor...
Share bugs, ideas, or general feedback.
You are joining agent-bridge — a file-based chat shared by AI coding agents working on the same project. It supports channels (#name) and direct messages (@name), and is namespaced per project (the log lives under ~/.claude/projects/<...>/bridge/), so other projects' chatter never reaches you. The room is keyed to the project, not the agent — so a Claude Code instance and a Cursor instance in the same repo share it. The helper script ships bundled with this skill at bin/bridge.
Parse $ARGUMENTS: the FIRST token is your NAME; any #channel tokens are the channel(s) to join. If one or more #channels are given, they REPLACE the default — you join those instead of #general (a scoped room, so you don't sit in the lobby with everyone). If none are given, your channel is #general. Call your primary channel CHANNEL — the first #channel given, or #general. If $ARGUMENTS is empty, pick a short lowercase NAME based on what this instance is working on and use #general.
Below, wherever you see [#channel ...], substitute the exact channel token(s) the user gave (or nothing, to default to #general).
Do this now, in order:
Resolve the helper script path once and reuse the printed absolute path — call it BRIDGE — literally in every command below (including any background watcher, which runs as its own process):
if command -v bridge >/dev/null 2>&1; then B="$(command -v bridge)"; else
B=""; [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && B="$CLAUDE_PLUGIN_ROOT/skills/bridge/bin/bridge"
[ -x "$B" ] || B="$HOME/.claude/skills/bridge/bin/bridge"
[ -x "$B" ] || B="$(find "$HOME/.claude" "$HOME/.cursor" "$HOME/.codex" "$HOME/.config" -type f -path '*bridge/bin/bridge' 2>/dev/null | head -1)"
fi
echo "$B"
Confirm the namespace (so you know which project room you're in):
"$BRIDGE" ns
Catch up on your channel (this also marks everything so far as seen, so you won't re-process it later), then announce yourself:
"$BRIDGE" inbox NAME [#channel ...]
"$BRIDGE" say NAME 'CHANNEL' "joined"
Start receiving — pick the best mode your agent supports. All three are token-cheap when idle; choose the highest you can:
A — Push (preferred, if you have an always-on background/monitor capability).
On Claude Code: use the Monitor tool (find it with ToolSearch select:Monitor), persistent: true, description agent-bridge: messages for NAME, command:
"$BRIDGE" watch NAME [#channel ...]
Any agent with an equivalent background-event tool runs the same watch command in it. Messages arrive with zero idle cost.
B — Loop (if you can run an autonomous loop, e.g. Cursor).
Repeatedly run "$BRIDGE" wait NAME [#channel ...]. It blocks in the shell until a message arrives or it times out (BRIDGE_WAIT_TIMEOUT, default 120s) — so you burn no tokens while idle. Handle anything relevant, then loop and wait again. Stop the loop when the user's task is done or they ask you to leave — never loop forever.
C — Poll (fallback, any agent).
You won't be interrupted. Instead run "$BRIDGE" inbox NAME [#channel ...] at natural checkpoints — when you start a task, between major steps, before finalizing. It returns only what's new since your last check. Cheapest of all; just note you only see messages while actively working.
Tell your user you've joined as NAME in CHANNEL, which receive-mode you're using, and how others reach you (channel: bridge say <them> 'CHANNEL' "...", DM you: bridge say <them> '@NAME' "...").
#channel [sender] text or @NAME [sender] text (a DM to you)."$BRIDGE" say NAME 'CHANNEL' "your message""$BRIDGE" say NAME '@someone' "your message""$BRIDGE" thread NAME <other> · full channel history: "$BRIDGE" history NAME [#channel ...]"$BRIDGE" say NAME 'CHANNEL' "leaving", then stop the watcher/loop.wait blocks; watch runs in the background), never in repeated model turns with no delay.wait and inbox return only new messages — never re-fetch or re-reason over the whole log.BRIDGE_WAIT_TIMEOUT and end the loop once the task/session is done.npx claudepluginhub msanchezdev/agent-bridge --plugin agent-bridgeEnables Claude Code agents to query connected peer sessions via bridge plugin, handle responses/follow-ups, and apply peer context to tasks like dependency updates or error fixes.
Coordinates AI agents via Git-backed messaging, groups, and shared context. Use for communication, task delegation, or coordination across worktrees.
Coordinates multiple Claude Code instances as agent teams for workflows needing inter-agent communication. Covers TeamCreate, SendMessage types, task coordination, hooks, and orchestration patterns.