name: slack-reply-drafting description: Draft Slack replies from available context. Use when the user wants help finding messages that likely need a response and preparing reply drafts.
Slack Reply Drafting
Use this skill to identify messages that likely need a reply and produce Slack-ready draft responses from the available context.
Related Skills
| Workflow | Skill |
|---|---|
| Refine, draft, or send the final Slack text | ../slack-outgoing-message/SKILL.md |
Start Here
- If the user provided channels, threads, DMs, people, or topics, use that scope instead of the default search.
- If no source scope was provided, default to searching:
- unanswered direct conversations
- direct mentions
- threads with prior user participation and newer replies
- threads with prior user mention and newer replies
- For time-specific requests, resolve the user's timezone with
slack_read_user_profile.
Support Boundaries
- This skill is for draft-first reply workflows.
- If the user explicitly asks to send a reply now rather than prepare a draft, gather the needed Slack context here if useful, then switch to
../slack-outgoing-message/SKILL.mdand send directly. - Do not invent facts, commitments, approvals, or decisions. If the context is not enough to answer confidently, draft a clarifying reply instead of guessing.
Workflow
- Resolve the current user with
slack_read_user_profileso you have the user'suser_idand can resolve the time window if necessary. - Resolve the time window if the user supplied one.
- If the user provided an explicit scope, use the cheapest matching path:
- specific thread:
slack_read_thread - named channel:
slack_search_channels, thenslack_read_channel - named person or DM:
slack_search_users, thenslack_search_public_and_private - bounded keyword search:
slack_search_public_and_private
- specific thread:
- If no scope was provided, search these default categories:
- unanswered direct conversations:
slack_search_public_and_privateacrossim,mpimto generate candidate conversations, thenslack_read_channelfor each plausible candidate before deciding whether it needs a reply; do not decide from the search snippet alone - direct mentions:
slack_search_public_and_privatewithqueryset to<@USER_ID> - threads with prior user participation:
slack_search_public_and_privatewithqueryset tofrom:<@USER_ID> is:thread, thenslack_read_threadfor newer replies - threads with prior user mention:
slack_search_public_and_privatewithqueryset to<@USER_ID> is:thread, thenslack_read_threadfor newer replies after the mention
- unanswered direct conversations:
- Keep only candidates where the latest unresolved ask is from someone else, or where newer replies appeared after the user's last substantive reply or mention. Do not count emoji-only, acknowledgement-only, or other non-answer chatter from the user as a reply.
- Expand only the threads or surrounding messages needed to answer accurately. Answer the question first, then add clarification or next steps when the context supports it.
- If the context is incomplete, write the smallest useful clarifying reply instead of pretending the answer is known.
- Finish according to the user's explicit intent:
- draft/review-first flow: create the draft with
slack_send_message_draftin the source channel or DM - explicit send-now flow: switch to
../slack-outgoing-message/SKILL.mdand send directly Includethread_tsonly for thread replies; otherwise omit the parameter entirely. If Slack returnsdraft_already_exists, stop and tell the user you cannot overwrite the existing attached draft via API.
- draft/review-first flow: create the draft with
Drafting Rules
- Use the ../slack-outgoing-message/SKILL.md skill to draft outgoing Slack text.
Formatting
- For a concise Slack or chat summary, you MUST use exactly this structure unless the user explicitly requests a different format.
- If you use
../slack-outgoing-message/SKILL.mdto draft or send the final message, this output contract remains binding. The downstream skill does not relax or rename these sections.
Format multiple drafts as:
**Reply Drafts — <scope>**
**<channel / DM / thread info>**
Draft: <link to draft>
**<channel / DM / thread info>**
Draft: <link to draft>
- Keep each item minimal: a short header plus the draft link.
- The header should identify the channel, DM, or thread.
- If the user asked for a single reply, return just that item.
- If no unreplied messages are found, say so directly and explain the scope checked.