name: synapse-a2a description: This skill provides comprehensive guidance for inter-agent communication using the Synapse A2A framework. Use this skill when sending messages to other agents, routing @agent patterns, understanding priority levels, handling A2A protocol operations, managing task history, configuring settings, or using File Safety features for multi-agent coordination. Automatically triggered when agent communication, A2A protocol tasks, history operations, or file safety operations are detected.
Synapse A2A Communication
Inter-agent communication framework via Google A2A Protocol.
Quick Reference
| Task | Command |
|---|---|
| List agents (Rich TUI) | synapse list (event-driven refresh via file watcher with 10s fallback, ↑/↓ or 1-9 to select, Enter/j jump, k kill, / filter) |
| Send message | synapse send <target> "<message>" --from <sender> |
| Wait for reply | synapse send <target> "<message>" --response --from <sender> |
| Reply to request | synapse send <target> "<response>" --reply-to <task_id> --from <sender> |
| Emergency stop | synapse send <target> "STOP" --priority 5 --from <sender> |
| Stop agent | synapse stop <profile|id> |
| Check file locks | synapse file-safety locks |
| View history | synapse history list |
| Initialize settings | synapse init |
| Edit settings (TUI) | synapse config |
| View settings | synapse config show [--scope user|project] |
| Show instructions | synapse instructions show <agent> |
| Send instructions | synapse instructions send <agent> [--preview] |
| Version info | synapse --version |
Tip: Run synapse list before sending to verify the target agent is READY.
Sending Messages (Recommended)
Use synapse send command for inter-agent communication. This works reliably from any environment including sandboxed agents.
synapse send gemini "Please review this code" --from claude
synapse send claude "What is the status?" --from codex
synapse send codex-8120 "Fix this bug" --priority 3 --from gemini
Important: Always use --from to identify yourself so the recipient knows who sent the message and can reply.
Target Resolution (Matching Priority):
- Exact ID:
synapse-claude-8100(direct match) - Type-port:
claude-8100,codex-8120,opencode-8130,copilot-8140(shorthand) - Type only:
claude,gemini,codex,opencode,copilot(only if single instance)
Note: When multiple agents of the same type are running, type-only targets (e.g., claude) will fail with an ambiguity error. Use type-port shorthand (e.g., claude-8100) instead.
Choosing --response vs --no-response
Rule: If your message asks for a reply, use --response
| Message Type | Flag | Example |
|---|---|---|
| Question | --response |
"What is the status?" |
| Request for analysis | --response |
"Please review this code" |
| Status check | --response |
"Are you ready?" |
| Notification | --no-response |
"FYI: Build completed" |
| Delegated task | --no-response |
"Run tests and commit" |
# Question - needs reply
synapse send gemini "What is the best approach?" --response --from claude
# Delegation - no reply needed
synapse send codex "Run tests and fix failures" --from claude
Roundtrip Communication (--response / --reply-to)
For request-response patterns:
# Sender: Wait for response (blocks until reply received)
synapse send gemini "Analyze this data" --response --from claude
# Receiver: Reply to the request (use task_id from [A2A:task_id:sender])
synapse send claude "Analysis result: ..." --reply-to <task_id> --from gemini
The --response flag makes the sender wait. The receiver MUST use --reply-to with the task_id to link the response.
Short Task IDs & :R Flag: PTY displays 8-character short IDs. When the sender used --response, a :R suffix appears after the sender_id to indicate a reply is required:
- With
--response:[A2A:54241e7e:synapse-claude-8100:R]- reply required - Without
--response:[A2A:54241e7e:synapse-claude-8100]- no reply needed
Use the task_id (not including :R) with --reply-to:
- Short ID:
--reply-to 54241e7e - Full UUID:
--reply-to 54241e7e-1234-5678-abcd-ef1234567890
Receiving and Replying to Messages
When you receive an A2A message, it appears as:
[A2A:<task_id>:<sender_id>:R] <message> ← Response required (:R flag)
[A2A:<task_id>:<sender_id>] <message> ← No response required
When to use --reply-to:
| PTY Format | Action |
|---|---|
:R flag present |
MUST reply with --reply-to <task_id> |
No :R flag |
Do NOT use --reply-to (send new message if needed) |
# :R flag present → use --reply-to (task_id only, not including :R)
synapse send claude "Here is my analysis..." --reply-to abc12345 --from gemini
# If sender delegated a task → just do the task, no --reply-to needed
Example - Question:
Received: [A2A:abc12345:synapse-claude-8100] What is the project structure?
Reply: synapse send claude "The project has src/, tests/..." --reply-to abc12345 --from gemini
Example - Delegation:
Received: [A2A:xyz67890:synapse-claude-8100] Run the tests and fix failures
Action: Just do the task. No reply needed unless you have questions.
Priority Levels
| Priority | Description | Use Case |
|---|---|---|
| 1-2 | Low | Background tasks |
| 3 | Normal | Standard tasks |
| 4 | Urgent | Follow-ups, status checks |
| 5 | Interrupt | Emergency (sends SIGINT first) |
# Normal priority (default)
synapse send gemini "Analyze this"
# Higher priority
synapse send claude "Urgent review needed" --priority 4
# Emergency interrupt
synapse send codex "STOP" --priority 5
Agent Status
| Status | Meaning | Color |
|---|---|---|
| READY | Idle, waiting for input | Green |
| WAITING | Awaiting user input (selection, confirmation) | Cyan |
| PROCESSING | Busy handling a task | Yellow |
| DONE | Task completed (auto-clears after 10s) | Blue |
Verify before sending: Run synapse list and confirm the target agent's Status column shows READY:
synapse list
# Output:
# NAME TYPE STATUS PORT WORKING_DIR
# synapse-claude-8100 claude READY 8100 my-project
# synapse-gemini-8110 gemini WAITING 8110 my-project # <- needs user input
# synapse-codex-8120 codex PROCESSING 8120 my-project # <- busy
Status meanings:
-
READY: Safe to send messages -
WAITING: Agent needs user input - use terminal jump (see below) to respond -
PROCESSING: Busy, wait or use--priority 5for emergency interrupt -
DONE: Recently completed, will return to READY shortly
Interactive Controls
In synapse list, you can interact with agents:
| Key | Action |
|---|---|
1-9 |
Select agent row (direct) |
↑/↓ |
Navigate agent rows |
Enter or j |
Jump to selected agent's terminal |
k |
Kill selected agent (with confirmation) |
/ |
Filter by TYPE or WORKING_DIR |
ESC |
Clear filter first, then selection |
q |
Quit |
Supported Terminals:
- iTerm2 (macOS) - Switches to correct tab/pane
- Terminal.app (macOS) - Switches to correct tab
- Ghostty (macOS) - Activates application
- VS Code integrated terminal - Opens to working directory
- tmux - Switches to agent's session
- Zellij - Focuses agent's terminal pane
Use case: When an agent shows WAITING status, use terminal jump to quickly respond to its selection prompt.
Key Features
- Agent Communication: @agent pattern, priority control, response handling
-
Task History: Search, export, statistics (
synapse history) -
File Safety: Lock files to prevent conflicts (
synapse file-safety) -
Settings: Configure via
settings.json(synapse init)
References
For detailed documentation, read:
-
references/commands.md- Full CLI command reference -
references/file-safety.md- File Safety detailed guide -
references/api.md- A2A endpoints and message format -
references/examples.md- Multi-agent workflow examples
chat Comments (0)
Sign in to join the discussion and leave a comment.
Skill Details
Related Skills
Build your own?
Join 12,000+ developers contributing to the Claude ecosystem.
No comments yet. Be the first to share your thoughts!