Agent Message
SkillCommunicationagent-message is a skill that lets an agent send direct text messages to members of its own agent family: its parent, its siblings, and its direct children. It works through a local daemon that derives the sender identity from the current session, so the sender cannot be spoofed. Use it to hand a follow-up task to a subagent, report back to a parent, or broadcast to the whole family roster.
Then ask your AI: use the Agent Message skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Have a running local daemon that the skill talks to.
What your AI can do with it
- Send one direct text message to a parent, sibling, or direct child
- Discover reachable agents with agent_observe.list_agents
- Broadcast to the family roster with send("all", message)
- Wake an inactive subagent and start a follow-up turn in its session
- Return a receipt with deliveryStatus of delivered or queued
- Deliver messages with steering so a busy target sees them during its run
Getting started
- Have a running local daemon that the skill talks to.
- Make the agent-message skill available to the agent session.
- Call agent_observe.list_agents to see the parent, siblings, and children you can reach, with their relationship and sessionName.
- Call agent_message.send with the message text, a receiver_role of parent, sibling, or child, and a receiver_name for siblings and children.
- Read the returned receipt to check whether the message was delivered or queued.
What this skill tells your AI
The instructions your AI receives, as published by primeintellect-ai/prime-agent in skills/agent-message/SKILL.md and read by Ahel’s review.
Send direct messages within the current agent's nuclear family through the
local daemon: parent, siblings, and direct children only. Roots are siblings.
The daemon derives your sender identity from the current session; do not try
to include a from field.
Call directly from the kernel:
children = await rlm.list_subagents()
child = next((item for item in children if item.active_session_id), None)
if child is not None:
receipt = await agent_message.send(
"Please inspect the latest result.",
receiver_role="child",
receiver_name=child.session_name,
)
# Keep the child until this follow-up finishes so its result remains observable.
API
await agent_observe.list_agents()(agent-observe skill) is the roster: it lists the parent, siblings, and children this skill can reach, active or not, with therelationshipandsessionNamethatsendtakes asreceiver_roleandreceiver_name.await agent_message.send(message, receiver_role="parent" | "sibling" | "child", receiver_name=None)— sends one direct text message to one family member. Sending to an inactive or idle completed subagent wakes it and starts an ordinary follow-up turn in that same session and context. The child remains available only until its parent session closes. The daemon resolvesreceiver_rolewithin the current agent family;receiver_nameis required for siblings and children and omitted for the unique parent.send("all", message)broadcasts only to the family roster and returns{receipts: [...]}in roster order; successful entries are ordinary receipts and failed entries contain the target id and a shorterror. One failed delivery does not reject successful deliveries. Messages always use steering delivery so a busy target sees them during its active run. Returns a receipt with adeliveryStatusfield:"delivered"means the message reached an idle target's context;"queued"means a steering message was accepted and will deliver when the target's current work allows (senddoes not block waiting for that). Delivered receipts carrydeliveredAt, queued receipts carryqueuedAt.
Safety
- Do not delete a child immediately after
send: delivered follow-ups may still be running and queued receipts have not run yet. Wait until observation shows the child is idle and its context is no longer needed before callingawait rlm.delete_subagent(child). - Reach is limited to parent, siblings, and direct children; relay through an intermediate child instead of messaging grandchildren or cousins directly.
- Sender identity is daemon-derived and cannot be spoofed from Python.
- The daemon enforces message size, rate, and pending-queue limits before accepting delivery.
Signals
- GitHub stars
- 22k
- Forks
- 2k
- Last commit
- Oct 2026
Questions
- How do I discover reachable agents?
- Call agent_observe.list_agents. It lists the parent, siblings, and children this skill can reach, active or not, with the relationship and sessionName that send takes as receiver_role and receiver_name.
- Can the sender identity be spoofed?
- No. The daemon derives your sender identity from the current session, and it cannot be spoofed from Python. Do not try to include a from field.
Advanced
- Item type
- skill
- Key
agent-message- Source
- github.com/primeintellect-ai/prime-agent
github.com/primeintellect-ai/prime-agent
Related picks
Skill · sickn33
The pick for Pythonpython-design-patterns
Skill · wshobson
The pick for Pythonsms-alert-automation
Skill · composio-community
The pick for SMSsms
Skill · coreyhaines31
The pick for SMSslack-gif-creator
Skill · anthropics
More in Communicationerror-handling
Skill · affaan-m
More in Communication