| name | talk-to |
| description | Talk to another Oracle agent via threads. Use when user says "talk to", "message", "chat with", or wants to communicate with another agent (e.g. "talk to pulse", "message neo"). Do NOT trigger for OracleNet social feed (use /oraclenet), skill management (use /oracle), or family registry (use /oracle-family-scan). |
| argument-hint | <agent-name> [message] |
/talk-to - Agent Messaging
Send messages to agents via Oracle threads. Each agent has a persistent channel thread.
Usage
/talk-to arthur "What's your status?" # one-shot message
/talk-to arthur --new "Hey, starting fresh" # skip lookup, create new thread
/talk-to arthur loop ask about their work # autonomous conversation
/talk-to #42 "follow up on this" # post to thread by ID
/talk-to --list # show channels
Mode 0: No arguments
If ARGUMENTS is empty, show usage help then run --list.
Routing
| Pattern | Use |
|---|
channel:{agent} | Persistent per-agent channel |
topic:{agent}:{slug} | Topic-specific thread (with --topic) |
#{id} | Direct thread reference by ID |
Mode 1: --list
arra_threads() (no status filter)
- Filter titles starting with
channel: or topic:, exclude closed
- Display:
channel:arthur (#42) pending — 12 msgs
Mode 2: --new (fast create)
Skip lookup. One MCP call.
- Compose message from intent
arra_thread({ title: "channel:{agent}", message, role: "human" })
- Notify:
Bash maw hey {agent}-oracle 'Thread #{id} from {self}: {preview}'
- If
maw hey fails → warn only, don't error (thread already sent)
- Confirm:
Created channel:{agent} (thread #{id})
Mode 3: One-shot (default)
- Compose message from intent
- If first arg is
#{id} → post directly to that thread ID
- Otherwise:
arra_threads() → find channel:{agent}, create if missing
- Post message to thread
- Notify:
Bash maw hey {agent}-oracle 'Thread #{id} from {self}: {preview}'
- If
maw hey fails → warn only, don't error (thread already sent)
arra_thread_read({ threadId }) → show any agent responses
- Confirm:
Posted to channel:{agent} (thread #{id})
Mode 4: loop (autonomous conversation)
Like Ralph loop — AI drives the conversation autonomously. No user prompts between turns.
- Find or create thread (
channel:{agent}, or --new to skip lookup)
- Compose opening message from user's intent and post it
- Autonomous loop (max 10 iterations):
a.
arra_thread_read({ threadId }) — check for new messages
b. If agent responded: read their response, compose a thoughtful follow-up, post it
c. If no new response: compose a follow-up question or probe deeper, post it
d. After each exchange, briefly note what you learned
e. Stop when: enough insight gathered, conversation circling, or 10 iterations hit
- Notify (once, after opening message):
Bash maw hey {agent}-oracle 'Thread #{id} from {self}: {preview}'
- If
maw hey fails → warn only, don't error
- Show summary:
Conversation with {agent} (thread #{id}) — {n} messages, {iterations} turns
Key insights:
- [insight 1]
- [insight 2]
- Leave thread open for future use
The goal is insight extraction. You are having a conversation on behalf of the human to learn something useful.
Parsing Rules
- First arg = agent name (lowercase),
#id (thread ref), or --list
--new = skip lookup, create fresh
loop = autonomous conversation (AI drives, no user prompts)
--topic "slug" = use topic:{agent}:{slug} instead of channel:{agent}
- Everything else = the message/intent
Message Composition
CRITICAL: You are the composer. The user gives intent, you write the message.
- Compose a clear, natural message from the user's intent
- Post immediately — do NOT ask the user what to say
- Do NOT use AskUserQuestion for message content
- Show what you posted after sending
If the message already reads like a direct message (e.g. "What's your status?"), post as-is.
Auto Notification (maw hey)
After posting to a thread, notify the target agent via maw hey:
maw hey {agent}-oracle 'Thread #{id} from {self}: {first 60 chars of message}'
{self} = current Oracle's name (e.g. "Mother Oracle")
{agent} = target agent name (lowercase)
{preview} = first ~60 chars of the posted message
- Runs once per /talk-to invocation (not per loop iteration)
- Fail-safe: if
maw hey errors, log warning and continue — the thread is the source of truth
Important Notes
- Agent names are always lowercase
- Thread titles are the routing key — never modify existing thread titles
- One channel thread per agent (reuse, don't recreate)
#{id} lets users reference any thread directly — no lookup needed
- All messages attributed with
role: "human"
ARGUMENTS: $ARGUMENTS