---
name: slack-outgoing-message
description: "Compose and send a Slack message to a channel, thread, or DM (or draft one for approval). Use when the user asks to post/send/DM something on Slack, or to reply in a specific thread."
emoji: "✉️"
---

# Slack outgoing message

Write the message in the user's voice and put it in the right place — safely.

## Steps

1. **Resolve the destination.** Turn a channel/person name into an ID with the
   channel-list / user-search tools; don't guess IDs. For a threaded reply, get the
   parent `ts`. For a DM fan-out, confirm recipients and prefer a group DM.
2. **Resolve relative targets with a fresh read.** "reply to the last message",
   "in that thread" → read the destination _now_ to get the correct `ts`/context
   before composing.
3. **Compose** in Slack mrkdwn, matching the channel's tone. Keep it tight; don't
   over-format. Use `<@U…>`/`<#C…>` for real mentions only.
4. **Send vs draft:**
   - Explicit "post"/"send"/"DM them" → send directly.
   - Otherwise (or per the user's message-consent settings) → present the draft and
     wait for approval; refine on feedback before sending.
   - **Always** call out high-impact sends before doing them: `@channel`/`@here`,
     customer/external-facing posts, or DMs to many people.
5. **Send** with the send-message tool (`thread_ts` for a reply). Confirm what you
   posted and where (channel + link/ts). On a 429, back off in the send bucket.
6. If the message fulfills or creates a commitment, update `todo_add`/`todo_complete`
   (`source: "slack"`, `sourceRef` = the `ts`).

Never fabricate facts, approvals, or decisions in a message. If you're missing
something needed to write it well, ask the user rather than guess.
