with one click
swarm-inbox
Read and send inter-agent messages within a swarm team
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Read and send inter-agent messages within a swarm team
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Argus — all-in-one information gathering & reconnaissance toolkit. 135 modules covering network infrastructure, web app analysis, and security/threat intelligence. Use for domain recon, subdomain enum, SSL analysis, tech stack detection, vulnerability scanning, and OSINT.
Manage secrets via Bitwarden CLI (bw). Use when pulling secrets into a shell session, creating/updating Secure Notes from .env files, listing vault items, or setting up Bitwarden on a new machine. Secrets live in Bitwarden, get loaded into memory on demand, and die with the shell session — no files on disk.
Develop a thorough, step-by-step specification for a given idea
Set up a recurring build tracker cron job for any GitHub repo. Runs a zero-LLM shell script to detect stale PRs, stale assigned issues, and phase progress, then posts to a Discord channel only when there's something actionable. Use when asked to "track this build every N hours", "prod agents on a project", "set up a build monitor", "watch this repo for stale work", or similar. The tracker is cheap to run — script does all the work, the agent only speaks when findings exist.
Run long-running coding tasks in cloud environments (Claude Code or Codex), with session teleporting and automatic PR creation.
Delegate coding tasks to subagents or run Claude Code/Codex in tmux sessions. Use the Task tool for focused multi-step coding work. Use tmux for long-running interactive sessions, parallel worktree-based fixes, and PR reviews. NOT for simple single-file edits — do those directly.
| name | swarm-inbox |
| description | Read and send inter-agent messages within a swarm team |
| user-invocable | true |
Read your inbox or send messages to other team members.
# Read your messages
/swarm-inbox
# Read with options
/swarm-inbox --last 10
# Send a message
/swarm-inbox --to <agent> --msg "message"
# Broadcast to all
/swarm-inbox --broadcast --msg "message"
| Argument | Description |
|---|---|
| (none) | Read all messages in your inbox |
--last N | Read only the last N messages |
--to <agent> | Send message to specific agent (leader, agent-1, etc.) |
--msg "text" | Message content |
--type <type> | Message type (default: status) |
--broadcast | Send to all team members |
| Type | Usage |
|---|---|
task | Assign work to an agent |
status | Progress update |
handoff | Pass work to another agent |
help | Request assistance |
complete | Task completion notification |
broadcast | Message to all members |
shutdown | Graceful termination request |
When you receive /swarm-inbox (no send args):
Detect Current Context
# Find which team and agent you are
# This should be set in your session context
TEAM_ID="$CURRENT_SWARM_TEAM"
AGENT_NAME="$CURRENT_SWARM_AGENT"
# Or detect from environment/session name
SESSION_NAME=$(tmux display-message -p '#S' 2>/dev/null || echo "")
if [[ "$SESSION_NAME" =~ ^swarm-([0-9]+)-(.+)$ ]]; then
TEAM_ID="swarm-${BASH_REMATCH[1]}"
AGENT_NAME="${BASH_REMATCH[2]}"
fi
Read Messages
source ~/.claude/utils/swarm-lib.sh
MESSAGES=$(swarm_read_inbox "$TEAM_ID" "$AGENT_NAME" --last 20)
if [ "$(echo "$MESSAGES" | jq 'length')" -eq 0 ]; then
echo "No messages in inbox"
else
echo "=== Inbox: $AGENT_NAME ==="
echo "$MESSAGES" | jq -r '.[] | "[\(.ts | split("T")[1] | split("+")[0])] \(.from) -> \(.type): \(.payload | tostring)"'
fi
When you receive /swarm-inbox --to <agent> --msg "text":
Parse Arguments
TO_AGENT="agent-1" # from --to
MESSAGE="Task complete, ready for review" # from --msg
MSG_TYPE="${TYPE:-status}" # from --type or default
Construct Payload
# For simple text messages
PAYLOAD=$(jq -n --arg msg "$MESSAGE" '{message: $msg}')
# For task assignments (if type is task)
# PAYLOAD='{"task_id": "bd-123", "action": "start", "context": "..."}'
Send Message
swarm_send_message "$TEAM_ID" "$AGENT_NAME" "$TO_AGENT" "$MSG_TYPE" "$PAYLOAD"
echo "Message sent to $TO_AGENT"
When you receive /swarm-inbox --broadcast --msg "text":
PAYLOAD=$(jq -n --arg msg "$MESSAGE" '{message: $msg}')
swarm_broadcast "$TEAM_ID" "$AGENT_NAME" "broadcast" "$PAYLOAD"
echo "Broadcast sent to all team members"
=== Inbox: agent-1 ===
[11:30:15] leader -> task: {"task_id":"bd-007","action":"start"}
[11:45:22] agent-2 -> handoff: {"task_id":"bd-007","context":"Backend complete"}
[11:50:00] leader -> status: {"message":"Keep up the good work!"}
# Simple progress update
/swarm-inbox --to leader --msg "Task bd-007 at 50% progress"
# Request help
/swarm-inbox --to leader --type help --msg "Blocked on API auth issue"
# Task handoff
/swarm-inbox --to agent-2 --type handoff --msg '{"task_id":"bd-007","context":"Frontend ready for integration"}'
# Broadcast announcement
/swarm-inbox --broadcast --msg "Taking 5 min break, will resume shortly"
Messages are stored as JSONL (one JSON object per line):
{
"ts": "2026-02-03T11:30:15+00:00",
"from": "leader",
"to": "agent-1",
"type": "task",
"payload": {
"task_id": "bd-007",
"action": "start",
"context": "Implement user authentication endpoint"
}
}
Agents should poll their inbox regularly:
# Poll loop (conceptual - implement in agent behavior)
while true; do
NEW_MESSAGES=$(swarm_read_inbox "$TEAM_ID" "$AGENT_NAME" --last 5)
for msg in $(echo "$NEW_MESSAGES" | jq -c '.[]'); do
TYPE=$(echo "$msg" | jq -r '.type')
case $TYPE in
task)
# Handle task assignment
;;
shutdown)
# Graceful shutdown
;;
*)
# Log other messages
;;
esac
done
sleep 5
done
| File | Description |
|---|---|
~/.claude/swarm/{team-id}/inbox/leader.jsonl | Leader's inbox |
~/.claude/swarm/{team-id}/inbox/agent-1.jsonl | Agent 1's inbox |
~/.claude/swarm/{team-id}/inbox/agent-N.jsonl | Agent N's inbox |