bot2bot-post

$npx mdskill add sonichi/sutando/bot2bot-post

Posts coordination messages between bots in a shared Discord channel

  • Enables bots to communicate task status, requests, or opinions to each other
  • Uses Discord API with bot token and channel configuration from local files
  • Routes messages to the correct bot via @-mentions and predefined message kinds
  • Sends messages to the #bot2bot channel for real-time bot-to-bot coordination
SKILL.md
.github/skills/bot2bot-postView on GitHub ↗
---
name: bot2bot-post
description: Post a coordination message from this bot to the shared bot2bot channel, @-mentioning the other Sutando node.
---

# Bot-to-Bot Post

Post a coordination message from this Sutando node to the other in the shared `#bot2bot` Discord channel. The receiving bot's bridge processes `@-mention` messages from other bots as tasks (see `src/discord-bridge.py:244`), so prefixing with `<@other-bot>` routes the post to the other bot's loop.

## Usage

```bash
python3 skills/bot2bot-post/post.py <kind> <text>
```

Kinds:
- `claim` — "I'm taking this work, ETA X"
- `blocked` — "I'm stuck on X, need eyes"
- `done` — "shipped X, FYI"
- `ping` — "you there?"
- `opinion` — "what do you think about X?"

Examples:
```bash
python3 skills/bot2bot-post/post.py claim "refactor task-bridge task-file schema ETA 20m"
python3 skills/bot2bot-post/post.py done "shipped PR #472 — kickstart web-client after merge"
python3 skills/bot2bot-post/post.py opinion "is Discord-as-state better than files for coord?"
```

## Configuration

- **Channel**: resolved from `~/.claude/channels/discord/access.json` — pick the `groups` entry tagged `{"role": "bot2bot", ...}`, fallback to any entry with value `true`.
- **Token**: `DISCORD_BOT_TOKEN` read from `~/.claude/channels/discord/.env`.
- **Other bot ID**: picked from the `allowFrom` list, excluding this bot's own ID (fetched via Discord `/users/@me`).

## Why

Before this skill: bot A could reply in a task-triggered channel (existing `pending_replies` path) and DM the owner (`poll_proactive`), but had no way to initiate a channel post. That made cross-bot coord invisible to Chi and impossible without going through him. Now bots can claim/block/done in the open.

## See also

- `src/discord-bridge.py:244` — the exception that routes bot-to-bot @-mentions as tasks
- `feedback_cross_bot_mention.md` — memory note on @-mention conventions
- `notes/team-proposal-coord-loop-2026-04-20.md` — the joint proposal that motivated this skill
More from sonichi/sutando