# Agency Messaging

> Discover all agents in the current agency and send/receive async messages between agents and the human owner via the inbox system.

- Skill: `chenhg5/agency-messaging` (Agent Skill)
- Install (CLI): `npx skillmds@latest add chenhg5/agency-messaging`
- Raw SKILL.md: https://api.skillmd.com/api/skills/chenhg5/agency-messaging/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: chenhg5 (https://skillmd.com/u/chenhg5)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/chenhg5/agency-messaging

---


# Skill: Agency Messaging

You can discover every agent in this agency and exchange async messages with them or with the human owner. Messages are non-blocking: the sender continues working immediately, and the recipient reads the message on their next wakeup.

The agency workspace is at: `$AGENCY_DIR`

---

## Discover Agents

```bash
agencycli --dir $AGENCY_DIR list agents
agencycli --dir $AGENCY_DIR show agent <project> <agent>
```

### Recipient address format
- **Human owner**: `human`
- **Any agent**: `<project>/<agent>` — e.g. `cc-connect/pm`, `cc-connect/qa-reviewer`

---

## Send a Message

```bash
# Single recipient
agencycli --dir $AGENCY_DIR inbox send \
  --from <your-address> \
  --to   <recipient-address> \
  --subject "<subject>" \
  --body "<body>"

# Group send — repeat --to for multiple recipients
agencycli --dir $AGENCY_DIR inbox send \
  --from cc-connect/pm \
  --to cc-connect/dev-claude --to cc-connect/qa-reviewer --to human \
  --subject "Sprint kick-off" \
  --body "New sprint starts Monday. See backlog for tasks."
```

**Examples:**

```bash
# PM → dev-claude: extra context
agencycli --dir $AGENCY_DIR inbox send \
  --from cc-connect/pm --to cc-connect/dev-claude \
  --subject "Issue #205 extra context" \
  --body "Only reproduces with UTF-8 filenames. Reproduce: echo '测试' > test.txt"

# PM → human: async progress update
agencycli --dir $AGENCY_DIR inbox send \
  --from cc-connect/pm --to human \
  --subject "Backlog updated" \
  --body "Added 3 new issues (P2). No action needed, just FYI."

# PM → QA: heads-up
agencycli --dir $AGENCY_DIR inbox send \
  --from cc-connect/pm --to cc-connect/qa-reviewer \
  --subject "PR incoming for #205" \
  --body "dev-claude is working on it. Expect a PR within the hour."
```

---

## Reply to a Message

```bash
agencycli --dir $AGENCY_DIR inbox reply <msg-id> \
  --from <your-address> \
  --body "<reply text>"
```

---

## Forward a Message

```bash
# Forward to a single recipient
agencycli --dir $AGENCY_DIR inbox fwd <msg-id> \
  --from <your-address> \
  --to   <recipient-address>

# Forward to multiple recipients with a note
agencycli --dir $AGENCY_DIR inbox fwd <msg-id> \
  --from cc-connect/pm \
  --to cc-connect/dev-claude --to cc-connect/qa-reviewer \
  --note "Please coordinate on this."
```

The forwarded message includes the original sender, subject, and body. Subject is auto-prefixed with `Fwd:`.

---

## Read Messages

```bash
# Your unread messages (also auto-injected into your wakeup prompt)
agencycli --dir $AGENCY_DIR inbox messages --recipient <your-address>

# Filter by sender
agencycli --dir $AGENCY_DIR inbox messages --recipient <your-address> --from human

# All messages including already-read
agencycli --dir $AGENCY_DIR inbox messages --recipient <your-address> --all

# Show archived messages
agencycli --dir $AGENCY_DIR inbox messages --recipient <your-address> --archived

# Mark all as read after listing
agencycli --dir $AGENCY_DIR inbox messages --recipient <your-address> --mark-read
```

---

## Per-Message Status Management

```bash
# Mark a single message as read
agencycli --dir $AGENCY_DIR inbox read <msg-id> --recipient <your-address>

# Archive (hides from normal listing, retrievable with --archived)
agencycli --dir $AGENCY_DIR inbox archive <msg-id> --recipient <your-address>

# Permanently delete
agencycli --dir $AGENCY_DIR inbox delete <msg-id> --recipient <your-address>
agencycli --dir $AGENCY_DIR inbox rm     <msg-id> --recipient <your-address>
```

---

## When to Use Messaging vs. Confirm-Request

| Situation | Use |
|-----------|-----|
| Need human to make a decision before you continue | `task confirm-request` (non-blocking, archived) |
| Sending info or a heads-up, no reply needed immediately | `inbox send` (non-blocking) |
| Coordinating context between agents asynchronously | `inbox send` (non-blocking) |
| Broadcast to multiple participants at once | `inbox send --to A --to B --to C` |
| Forwarding a message to someone else | `inbox fwd` |
| Replying to a message someone sent you | `inbox reply` |

---

## Common PM Messaging Patterns

```bash
# 1. Broadcast sprint kick-off to all agents
agencycli --dir $AGENCY_DIR inbox send \
  --from cc-connect/pm \
  --to cc-connect/dev-claude --to cc-connect/qa-reviewer --to cc-connect/biz-dev \
  --subject "Sprint W14 kick-off" \
  --body "Focus this week: <priorities>. See backlog for assigned tasks."

# 2. Notify dev of approved task
agencycli --dir $AGENCY_DIR inbox send \
  --from cc-connect/pm --to cc-connect/dev-claude \
  --subject "New task approved: <task-title>" \
  --body "Human confirmed. Priority: P<N>. Key context: <notes>"

# 3. Escalate stale task to human
agencycli --dir $AGENCY_DIR inbox send \
  --from cc-connect/pm --to human \
  --subject "Task stale: <task-title>" \
  --body "Task <id> has been in_progress for >2 days. May need intervention."

# 4. Forward a customer report from human to dev
agencycli --dir $AGENCY_DIR inbox fwd <msg-id> \
  --from cc-connect/pm --to cc-connect/dev-claude \
  --note "Customer reported this bug. Please investigate."
```

