skills/agent-comms/SKILL.md
Sends and receives messages with peer agents on the local network. Use when messaging a peer, checking peer availability, coordinating shared work, or reviewing agent-comms logs.
npx skillsauth add rockarhymellc/kithkit-a2a-client agent-commsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Send and receive messages with peer agents on the local network.
Scope: This skill covers A2A peer-to-peer messaging (LAN direct + P2P SDK). For A2A network features (groups, discovery, relay), see the
a2a-networkskill. For channel-based messaging to humans (Telegram, email), see your channel skill.
Parse the arguments to determine action:
send <peer> "<message>" - Send a text message to a peersend <peer> "<message>" status - Send a status updatesend <peer> "<message>" coordination - Send a coordination messagesend <peer> "<message>" pr-review - Send a PR review requeststatus - Show agent-comms status (peers, queue, connectivity)log - Show recent agent-comms log entrieslog <n> - Show last n log entries/agent-comms send peer-agent "Hey, are you free to review a PR?"/agent-comms send peer-agent "Claiming the auth refactor" coordination/agent-comms send peer-agent "idle" status/agent-comms status/agent-comms log 10Send via the daemon's /agent/send endpoint (2-tier routing: LAN direct → P2P SDK fallback).
IMPORTANT: Always use python3 to generate JSON for curl to avoid shell quoting issues. Raw --data-raw with shell-interpolated strings causes "Bad escaped character" JSON parse errors.
python3 -c "
import json, subprocess, sys
data = json.dumps({'peer': '<name>', 'type': 'text', 'text': '<message>'})
r = subprocess.run(['curl', '-s', '-X', 'POST', 'http://localhost:3847/agent/send',
'-H', 'Content-Type: application/json', '-d', data], capture_output=True, text=True)
print(r.stdout)
"
Request fields:
| Field | Required | Description |
|-------|----------|-------------|
| peer | yes | Target peer name (e.g. peer-agent) |
| type | yes | text, status, coordination, or pr-review |
| text | no | Message body |
| status | no | For status messages (e.g. idle, busy) |
| action | no | For coordination (e.g. claim, release) |
| task | no | Task description |
| context | no | Additional context |
| callbackUrl | no | Callback endpoint for async replies |
| repo | no | For PR reviews |
| branch | no | For PR reviews |
| pr | no | PR number string |
Success response (HTTP 200):
{"ok": true, "queued": false, "error": null}
Failure response (HTTP 502):
{"ok": false, "queued": false, "error": "Failed to reach peer peer-agent (peer-host.local:3847): ..."}
If LAN delivery fails and the P2P SDK is active, the message is sent via P2P and queued is true.
Peers send to your POST /agent/message endpoint (handled by the daemon automatically). Inbound messages require Bearer auth and must include messageId and timestamp:
{
"from": "peer-agent",
"type": "text",
"text": "Hey, PR is ready for review",
"messageId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"timestamp": "2026-02-27T15:30:00.000Z"
}
Response: {"ok": true, "queued": false}
The daemon validates the Bearer token, formats the message, and injects it into the comms tmux session.
# Local daemon status
curl -s http://localhost:3847/status
# Peer status (direct)
curl -s http://<peer-host>:<peer-port>/agent/status
tail -20 logs/agent-comms.log
Peers are configured in kithkit.config.yaml under agent-comms.peers. Each peer needs a name, host, port, and optional fallback IP.
agent-comms:
enabled: true
secret: "credential-agent-comms-secret" # Keychain credential name
peers:
- name: "peer-agent"
host: "peer-host.local"
port: 3847
ip: "192.168.1.100" # Fallback IP for LAN retry
The secret value is the name of a macOS Keychain credential (or equivalent secret store) that holds the shared HMAC secret. Both your daemon and the peer's daemon must have the same secret configured.
POST /agent/message, validates auth (Bearer token from Keychain), injects directly into tmux session with [Network] Name: prefixcurl subprocess (not Node.js http.request, which has macOS LAN networking issues with some configurations)credential-agent-comms-secret)credential-kithkit-agent-key), public key in relay directorykithkit.config.yaml under network.relay_url) — store-and-forwardlogs/agent-comms.login (LAN inbound), out (LAN outbound), relay-in, relay-outFor A2A group messaging (broadcast to multiple peers), use the a2a-network skill — specifically POST /api/network/groups/:id/message. This skill (agent-comms) handles only 1:1 peer messaging.
This protocol governs how and when agents use agent-to-agent comms.
| Type | Use For |
|------|---------|
| text | General messages, questions, updates, FYIs |
| status | Availability changes: idle, busy, restarting |
| coordination | Claim/release tasks, propose approaches, agree on work split |
| pr-review | PR review requests (include repo, branch, PR number) |
curl -s http://<host>:<port>/agent/statuscurl -s http://localhost:3847/healthtail logs/agent-comms.logsecurity find-generic-password -s credential-agent-comms-secret -wdevelopment
KithKit A2A Network operations — connect with peers, send messages, manage groups, discover agents. Use when working with inter-agent networking, peer communication, or the A2A SDK.
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".
testing
Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".