slack-reply-drafting
$
npx mdskill add openai/plugins/slack-reply-draftingDrafts Slack replies by identifying messages needing responses from context like channels, threads, or mentions.
- Helps users prepare reply drafts for unanswered Slack conversations efficiently.
- Integrates with Slack APIs to read user profiles and message contexts.
- Prioritizes messages based on direct mentions, user participation, and time-specific requests.
- Presents draft responses for review before sending via related skills.
SKILL.md
.github/skills/slack-reply-draftingView on GitHub ↗
--- 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](../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.md` and 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 1. **Resolve the current user** with `slack_read_user_profile` so you have the user's `user_id` and can resolve the time window if necessary. 2. **Resolve the time window** if the user supplied one. 3. If the user provided an explicit scope, use the cheapest matching path: - specific thread: `slack_read_thread` - named channel: `slack_search_channels`, then `slack_read_channel` - named person or DM: `slack_search_users`, then `slack_search_public_and_private` - bounded keyword search: `slack_search_public_and_private` 4. If no scope was provided, search these default categories: - unanswered direct conversations: `slack_search_public_and_private` across `im,mpim` to generate candidate conversations, then `slack_read_channel` for each plausible candidate before deciding whether it needs a reply; do not decide from the search snippet alone - direct mentions: `slack_search_public_and_private` with `query` set to `<@USER_ID>` - threads with prior user participation: `slack_search_public_and_private` with `query` set to `from:<@USER_ID> is:thread`, then `slack_read_thread` for newer replies - threads with prior user mention: `slack_search_public_and_private` with `query` set to `<@USER_ID> is:thread`, then `slack_read_thread` for newer replies after the mention 5. 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. 6. 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. 7. If the context is incomplete, write the smallest useful clarifying reply instead of pretending the answer is known. 8. Finish according to the user's explicit intent: - draft/review-first flow: create the draft with `slack_send_message_draft` in the source channel or DM - explicit send-now flow: switch to `../slack-outgoing-message/SKILL.md` and send directly Include `thread_ts` only for thread replies; otherwise omit the parameter entirely. If Slack returns `draft_already_exists`, stop and tell the user you cannot overwrite the existing attached draft via API. ## Drafting Rules - Use the [../slack-outgoing-message/SKILL.md](../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.md` to 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: ```md **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.
More from openai/plugins
- accessibility-and-inclusive-visualizationMake data visualizations accessible and inclusive. Use when the user needs chart or diagram accessibility guidance, text alternatives for complex visuals, color and contrast review, keyboard support, reduced-motion behavior for animation or parallax, or an accessibility QA workflow for exported figures, UML-like diagrams, and dashboards.
- agent-browserBrowser automation CLI for AI agents. Use when the user needs to interact with websites, verify dev server output, test web apps, navigate pages, fill forms, click buttons, take screenshots, extract data, or automate any browser task. Also triggers when a dev server starts so you can verify it visually.
- agent-browser-verifyAutomated browser verification for dev servers. Triggers when a dev server starts to run a visual gut-check with agent-browser — verifies the page loads, checks for console errors, validates key UI elements, and reports pass/fail before continuing.
- agents-sdkBuild AI agents on Cloudflare Workers using the Agents SDK. Load when creating stateful agents, durable workflows, real-time WebSocket apps, scheduled tasks, MCP servers, or chat applications. Covers Agent class, state management, callable RPC, Workflows integration, and React hooks. Biases towards retrieval from Cloudflare docs over pre-trained knowledge.
- ai-elementsAI Elements component library guidance — pre-built React components for AI interfaces built on shadcn/ui. Use when building chat UIs, message displays, tool call rendering, streaming responses, reasoning panels, or any AI-native interface with the AI SDK.
- ai-gatewayVercel AI Gateway expert guidance. Use when configuring model routing, provider failover, cost tracking, or managing multiple AI providers through a unified API.
- ai-generation-persistenceAI generation persistence patterns — unique IDs, addressable URLs, database storage, and cost tracking for every LLM generation
- ai-sdkVercel AI SDK expert guidance. Use when building AI-powered features — chat interfaces, text generation, structured output, tool calling, agents, MCP integration, streaming, embeddings, reranking, image generation, or working with any LLM provider.
- aiq-deploy|
- aiq-research|