plugins/ai-maestro/skills/agent-messaging/SKILL.md
Send and receive cryptographically signed messages between AI agents using the Agent Messaging Protocol (AMP). Supports local messaging, federation across providers, file attachments, and Ed25519 signatures. Works with any AI agent that can execute shell commands.
npx skillsauth add 23blocks-os/ai-maestro-plugins agent-messagingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
4 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 other AI agents using the Agent Messaging Protocol.
Use this skill when the user or task requires:
--id)Every command (except amp-init.sh) accepts --id <uuid> to specify which agent you're operating as. The UUID comes from the agent's config.json (agent.id field).
# Operate as a specific agent
amp-inbox.sh --id 6bbdaeb8-8a85-4d0b-8f8c-3c217486eae8
amp-send.sh --id <uuid> alice "Hello" "Hi there"
Resolution order (first match wins):
AMP_DIR env var (AI Maestro sets this)--id <uuid> argumentCLAUDE_AGENT_ID env varCLAUDE_AGENT_NAME env var / tmux sessionIf multiple agents exist and none of the above resolve, the CLI lists available agents with UUIDs.
Before using any messaging commands, ALWAYS verify your identity:
amp-identity.sh
# Or with explicit agent:
amp-identity.sh --id <uuid>
If you see "Not initialized", run:
amp-init.sh --auto
This identity check is essential because:
Identity file location: ${AMP_DIR}/IDENTITY.md (per-agent, auto-resolved)
# 1. Initialize (first time only)
amp-init.sh --auto
# 2. Send a message
amp-send.sh alice "Hello" "How are you?"
# 3. Check inbox
amp-inbox.sh
git clone https://github.com/agentmessaging/claude-plugin.git ~/.claude/plugins/agent-messaging
npx skills add agentmessaging/claude-plugin
Clone the repo and add scripts/ to your PATH, or invoke scripts directly:
git clone https://github.com/agentmessaging/claude-plugin.git ~/agent-messaging
export PATH="$HOME/agent-messaging/scripts:$PATH"
Local addresses (work within your AI Maestro mesh):
alice expands to alice@<your-org>.aimaestro.local[email protected] for explicit local deliveryExternal addresses (require registration):
[email protected] via Crabmail provider[email protected] via other providersAll commands are bash scripts in the scripts/ directory. If scripts/ is on your PATH, omit the path prefix.
amp-init.sh --auto # Auto-detect name from environment
amp-init.sh --name my-agent # Specify name
amp-init.sh --name my-agent --tenant myteam # Override tenant
amp-identity.sh # Human-readable output
amp-identity.sh --json # JSON output for parsing
amp-identity.sh --id <uuid> --json # Check specific agent's identity
amp-status.sh # Full status with registrations
amp-status.sh --id <uuid> # Status for specific agent
amp-inbox.sh # Show unread messages
amp-inbox.sh --all # Show all messages
amp-inbox.sh --id <uuid> --all # Specific agent's inbox
amp-read.sh <message-id> # Read and mark as read
amp-read.sh <message-id> --no-mark-read # Read without marking
amp-send.sh <recipient> "<subject>" "<message>"
amp-send.sh <recipient> "<subject>" "<message>" --priority urgent
amp-send.sh <recipient> "<subject>" "<message>" --type request
amp-send.sh <recipient> "<subject>" "<message>" --context '{"pr": 42}'
amp-send.sh <recipient> "<subject>" "<message>" --attach /path/to/file.pdf
amp-reply.sh <message-id> "<reply-message>"
amp-download.sh <message-id> --all # Download all attachments
amp-download.sh <message-id> <attachment-id> # Download specific attachment
amp-download.sh <message-id> --all --dest ~/tmp # Custom destination
amp-delete.sh <message-id> # With confirmation
amp-delete.sh <message-id> --force # Without confirmation
amp-register.sh --provider crabmail.ai --user-key uk_your_key_here
amp-register.sh -p crabmail.ai -k uk_xxx -n my-agent
amp-fetch.sh # Fetch from all registered providers
amp-fetch.sh --provider crabmail.ai # Fetch from specific provider
You MUST ask the user for their User Key before registering with external providers.
User Keys are sensitive credentials tied to the user's account and billing. They:
uk_ prefixFlow:
amp-register.sh and don't store it.Security rules:
uk_ format)| Type | Use Case |
|------|----------|
| notification | General information (default) |
| request | Asking for something |
| response | Reply to a request |
| task | Assigned work item |
| status | Status update |
| alert | Important notice |
| update | Progress or data update |
| handoff | Transferring context |
| ack | Acknowledgment |
| system | System-generated message |
| Priority | When to Use |
|----------|-------------|
| urgent | Requires immediate attention |
| high | Important, respond soon |
| normal | Standard (default) |
| low | When convenient |
Agents should map these user intents to the appropriate commands:
amp-inbox.sh to list, then amp-read.sh <id> for each message to get full content (this marks them as read)amp-inbox.sh --countamp-send.sh alice "Hello" "hello"amp-send.sh backend-api "Build ready" "..."amp-reply.sh <id> "..."amp-download.sh <id> --allamp-register.shamp-send.sh alice "Build log" "..." --attach build.logscan_status: "suspicious" require human approval before downloadingscan_status: "rejected" must never be downloadedUser: Ask frontend-dev to review PR #42
Agent executes:
amp-send.sh frontend-dev "Code review request" \
"Please review PR #42 - OAuth implementation" \
--type request \
--context '{"repo": "agents-web", "pr": 42}'
User: Hand off the database work to backend-db
Agent executes:
amp-send.sh backend-db "Task handoff: Database migration" \
"I've completed the schema design. Please implement the migrations." \
--type handoff \
--priority high
Each agent has its own isolated AMP directory:
~/.agent-messaging/agents/<agent-name>/
├── IDENTITY.md # Human-readable identity
├── config.json # Agent configuration
├── keys/
│ ├── private.pem # Private key (never shared)
│ └── public.pem # Public key
├── messages/
│ ├── inbox/<sender>/msg_*.json
│ └── sent/<recipient>/msg_*.json
├── attachments/<msg-id>/
└── registrations/
The AMP_DIR environment variable points to the agent's directory and is auto-resolved.
| Problem | Solution |
|---------|----------|
| "AMP not initialized" | Run amp-init.sh --auto |
| "Not registered with provider" | Run amp-register.sh --provider <p> --user-key <k> |
| "Authentication failed" | Get a new User Key from the provider dashboard |
| "Agent not found" | Verify address format: [email protected] |
| Messages not arriving | Run amp-fetch.sh to pull from external providers |
Full specification: https://agentmessaging.org GitHub: https://github.com/agentmessaging/protocol
tools
Create, manage, and interact with canvas HTML pages. Write visual UIs that users see in the AI Maestro dashboard, receive structured interactions when users click/submit/select, and update pages in response. Full lifecycle management for agent-rendered canvases.
tools
Creates, manages, and orchestrates AI agents using the AI Maestro CLI. Use when the user asks to "create agent", "list agents", "delete agent", "rename agent", "hibernate agent", "wake agent", "install plugin", "show agent", "export agent", "restart agent", "install marketplace", or any agent lifecycle management task.
tools
Creates, manages, and orchestrates AI agents using the AI Maestro CLI. Use when the user asks to "create agent", "list agents", "delete agent", "rename agent", "hibernate agent", "wake agent", "install plugin", "show agent", "export agent", "restart agent", "install marketplace", or any agent lifecycle management task.
documentation
Authenticate AI agents with auth servers using the Agent Identity (AID) protocol. Supports Ed25519 identity documents, proof of possession, OAuth 2.0 token exchange, and scoped JWT tokens. Self-contained — works independently without other protocols.