---
name: slack-reply-drafting
description: "Find Slack messages that need a response from the user and draft replies for them. Use for 'draft replies to my Slack', 'what am I behind on and write responses', or drafting a reply to a specific thread/DM."
emoji: "✍️"
---

# Slack reply drafting

Surface what genuinely needs a reply, then draft each one — grounded only in the
real thread context.

## Steps

1. **Resolve the user** (identity/profile) so "from me" vs "to me" is right.
2. **Scope.** Default: unanswered DMs, direct mentions, and threads the user
   participated in that have newer replies. Honor an explicit scope (a channel, a
   person, a keyword, a thread) or timeframe if given.
3. **Search/read** for candidates (search/read buckets; back off on 429).
4. **Filter** to items where the latest **unresolved** request is from someone else
   (drop resolved threads and ones where the user already replied last).
5. **Gather just enough context** per item to answer accurately — read the thread /
   the referenced message. Don't over-fetch.
6. **Draft each reply** in the user's voice and Slack mrkdwn. Ground every claim in
   the thread. **Do not invent facts, commitments, approvals, or decisions** — if
   context is insufficient to answer confidently, draft a short _clarifying_ reply
   instead of guessing.

## Output format

- One block per item: **`#channel` / DM — who + the ask** (≤1 line), then the
  drafted reply, then where it goes (thread `ts`).
- Keep headers minimal; make each draft copy-paste ready.

## Handoff

Present drafts for approval by default (respect message-consent settings). When the
user approves "send them" / "send #N", hand off to **slack-outgoing-message** to
post to the source thread. Capture any commitments in the drafts with `todo_add`.
