用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/joshka0/foxctl --skill foxctl-mailbox命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Protocol for participant agents in transport-first rooms: join, check membership, handle inbox/tasks, reply durably, and escalate.
Operate inside an existing foxctl room: orient from status or inbox, manage tasks correctly, escalate, and close with durable updates.
Run durable multi-agent rooms with transport-first delivery, participant state, room tasks, and optional tmux or zellij viewers.
基于 SOC 职业分类
正在显示 SKILL.md
| name | foxctl Mailbox |
| description | Inter-agent messaging via blackboard. Send messages, check inbox, coordinate between agents with priorities. |
SQLite-backed blackboard for inter-agent messaging with priority queues.
Send messages to a running Claude Code session from another terminal:
# Basic message to overseer (surfaces in Claude's context)
foxctl-mail "Priority change" "Focus on auth bug first"
# High priority message (priority 1 = urgent)
foxctl-mail -p 1 "STOP" "Pause and review this issue before continuing"
# Require acknowledgment from agent
foxctl-mail --ack "Review needed" "Check the API changes I made"
# Send to specific agent
foxctl-mail -to "actor:coder:luna" "Question" "What's your status?"
# Quiet mode - only output message ID
foxctl-mail -q "Status check" "Are you still running?"
| Flag | Default | Description |
|---|---|---|
-p | 3 | Priority (1=urgent, 5=lowest) |
-to | overseer | Recipient actor ID |
-from | human | Sender name |
-kind | instruction | Message kind: instruction, info, alert, review_request |
-ack | false | Require acknowledgment |
-workspace | auto | Workspace path (auto-detected) |
-q | false | Quiet mode |
Terminal A (Claude Code running) Terminal B (foxctl-mail)
───────────────────────────────── ─────────────────────────────
Claude working on task... $ foxctl-mail "Stop" "Review PR first"
│ │
│ ┌─────────────────────┐ │
│ │ Mailbox Store │◄──────────┘
│ │ (SQLite) │
│ └─────────────────────┘
│ │
▼ ▼
┌─────────────────────────────────┐
│ overseer-inbox hook (PreToolUse)│
│ Surfaces message to Claude │
└─────────────────────────────────┘
│
▼
Claude sees: "📬 Inbox (1 message):
[P1] human: Stop - Review PR first"
foxctl run mailbox --input '{
"operation": "send",
"send": {
"workspace_id": "/path/to/workspace",
"sender": "actor:coder:agent1",
"recipient": "actor:coder:agent2",
"subject": "Review needed",
"body": "Please review changes to auth.go",
"priority": 1,
"task_id": "01ABC..."
}
}'
Priority levels:
1 - Urgent (admin directives)2 - High (overseer instructions)3 - Normal (peer coordination)foxctl run mailbox --input '{
"operation": "inbox",
"inbox": {
"workspace_id": "/path/to/workspace",
"actor_id": "actor:coder:agent1",
"only_unread": true,
"limit": 10
}
}'
Filter options:
only_unread - Only unread messagestask_id - Filter by specific taskstream - Filter by message streamfoxctl run mailbox --input '{
"operation": "ack",
"ack": {
"workspace_id": "/path/to/workspace",
"actor_id": "actor:coder:agent1",
"message_ids": ["msg-id-1", "msg-id-2"]
}
}'
Send to all agents with recipient: "*":
foxctl run mailbox --input '{
"operation": "send",
"send": {
"workspace_id": "/path/to/workspace",
"sender": "actor:system:admin",
"recipient": "*",
"subject": "Priority change",
"body": "Focus on Task C immediately",
"priority": 1
}
}'
info - Informational messagesinstruction - Directives from admin/overseerstatus - Status updatesquestion - Questions requiring responseThe hooks/mail_router hook automatically surfaces unread messages to Claude's
context on PreToolUse events, prioritizing admin and overseer messages.
Agent daemons poll their mailbox for messages via the L1 loop:
┌─────────────────────────────────────────────────────┐
│ Agent Daemon │
├─────────────────────────────────────────────────────┤
│ │
│ L1 Loop (Poll Mailbox) │
│ ┌─────────────────────────────────────────────┐ │
│ │ 1. Poll mailbox for agent-id │ │
│ │ 2. Lease message (visibility timeout) │ │
│ │ 3. Route by message type: │ │
│ │ - ask → handleAsk() │ │
│ │ - cmd → handleCmd() │ │
│ │ - console_ask → handleConsoleAsk() │ │
│ │ 4. Execute via engine (LLMChat) │ │
│ │ 5. Reply via mailbox │ │
│ │ 6. Ack original message │ │
│ └─────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────┘
# Send ask message to running agent
foxctl agent ask <agent-id> \
--question "What's the status?" \
--conversation-id "user-session" \
--wait
# Send command to agent
foxctl agent cmd <agent-id> \
--command "summarize" \
--args '{"depth": 2}'
| Type | Handler | Purpose |
|---|---|---|
ask | handleAsk | Question requiring response |
cmd | handleCmd | Command/action to execute |
console_ask | handleConsoleAsk | Interactive console message |
| Table | Location |
|---|---|
mailbox_messages | ~/.foxctl/storage/mailbox.db |
message_receipts | ~/.foxctl/storage/mailbox.db |