with one click
discord
Discord ops via the message tool (channel=discord).
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Discord ops via the message tool (channel=discord).
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Delegate coding tasks to Codex, Claude Code, or Pi agents via background process. Use when: (1) building/creating new features or apps, (2) reviewing PRs (spawn in temp dir), (3) refactoring large codebases, (4) iterative coding that needs file exploration. NOT for: simple one-liner fixes (just edit), reading code (use read tool), thread-bound ACP harness requests in chat (for example spawn/run Codex or Claude Code in a Discord thread; use sessions_spawn with runtime:"acp"), or any work in ~/clawd workspace (never spawn agents here). Requires a bash tool that supports pty:true.
Batch-generate images via OpenAI Images API. Random prompt sampler + `index.html` gallery.
Route plain-language requests for Pi, Claude Code, Codex, OpenCode, Gemini CLI, or ACP harness work into either IdleHands ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow).
OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app integration, signing in (single or multi-account), or reading/injecting/running secrets via op.
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and export notes). Use when a user asks IdleHands to add a note, list notes, search notes, or manage note folders.
| name | discord |
| description | Discord ops via the message tool (channel=discord). |
| metadata | {"idlehands":{"emoji":"🎮","requires":{"config":["channels.discord.token"]}}} |
| allowed-tools | ["message"] |
message)Use the message tool. No provider-specific discord tool exposed to the agent.
channel: "discord".channels.discord.actions.* (some default off: roles, moderation, presence, channels).guildId, channelId, messageId, userId.accountId.<@USER_ID>.components) for rich UI; use legacy embeds only when you must.to: "channel:<id>" or to: "user:<id>".channelId: "<id>" (or to) + messageId: "<id>".Send message:
{
"action": "send",
"channel": "discord",
"to": "channel:123",
"message": "hello",
"silent": true
}
Send with media:
{
"action": "send",
"channel": "discord",
"to": "channel:123",
"message": "see attachment",
"media": "file:///tmp/example.png"
}
silent: true to suppress Discord notifications.Send with components v2 (recommended for rich UI):
{
"action": "send",
"channel": "discord",
"to": "channel:123",
"message": "Status update",
"components": "[Carbon v2 components]"
}
components expects Carbon component instances (Container, TextDisplay, etc.) from JS/TS integrations.components with embeds (Discord rejects v2 + embeds).Legacy embeds (not recommended):
{
"action": "send",
"channel": "discord",
"to": "channel:123",
"message": "Status update",
"embeds": [{ "title": "Legacy", "description": "Embeds are legacy." }]
}
embeds are ignored when components v2 are present.React:
{
"action": "react",
"channel": "discord",
"channelId": "123",
"messageId": "456",
"emoji": "✅"
}
Read:
{
"action": "read",
"channel": "discord",
"to": "channel:123",
"limit": 20
}
Edit / delete:
{
"action": "edit",
"channel": "discord",
"channelId": "123",
"messageId": "456",
"message": "fixed typo"
}
{
"action": "delete",
"channel": "discord",
"channelId": "123",
"messageId": "456"
}
Poll:
{
"action": "poll",
"channel": "discord",
"to": "channel:123",
"pollQuestion": "Lunch?",
"pollOption": ["Pizza", "Sushi", "Salad"],
"pollMulti": false,
"pollDurationHours": 24
}
Pins:
{
"action": "pin",
"channel": "discord",
"channelId": "123",
"messageId": "456"
}
Threads:
{
"action": "thread-create",
"channel": "discord",
"channelId": "123",
"messageId": "456",
"threadName": "bug triage"
}
Search:
{
"action": "search",
"channel": "discord",
"guildId": "999",
"query": "release notes",
"channelIds": ["123", "456"],
"limit": 10
}
Presence (often gated):
{
"action": "set-presence",
"channel": "discord",
"activityType": "playing",
"activityName": "with fire",
"status": "online"
}
<@USER_ID>.