teams-messages
$
npx mdskill add openai/plugins/teams-messagesCompose, route, draft, or send Microsoft Teams messages with exact destination resolution and user mentions.
- Helps with posting to chats, replying in threads, creating new chats, or starting channel threads in Teams.
- Integrates with Microsoft Teams APIs for message handling, user resolution, and channel management.
- Decides actions by identifying destinations, resolving IDs, and routing to appropriate write or create functions.
- Presents results as sent messages, drafts, or structured Teams-native outputs for agent use.
SKILL.md
.github/skills/teams-messagesView on GitHub ↗
--- name: teams-messages description: Compose, route, draft, or send Microsoft Teams messages with exact destination resolution, real user mentions, and Teams-native DM or channel routing. --- # Teams Messages ## Overview Use this skill to compose, rewrite, route, or send Teams messages. Apply it when the next step involves posting to a chat, replying in a thread, creating a new chat, starting a channel thread, or writing message text that could be sent later. ## Workflow 1. Identify the intended destination first: existing chat, new DM, new group chat, channel post, or thread reply. 2. Determine from the request whether the user wants draft text or an actual send, and use the matching path. 3. Resolve exact IDs before writing: - teams or channels: `resolve_team`, `resolve_channel` - existing chats: `resolve_chat` - people for new chats or mentions: `resolve_user` 4. Use `validate_write_target` when the destination is described in natural language and it is unclear whether the user means an existing target or a create-style action. 5. Route to the correct write action: - existing chat: `send_chat_message` - new DM or group chat: `create_chat`, then `send_chat_message` - new channel thread: `send_channel_message` - reply in an existing chat or channel thread: `reply_to_message` or `reply_to_channel_message` - new channel: `create_channel` ## Mention Rules - Resolve people before writing when the message should tag someone. - Use structured Teams mention inputs with exact Entra user IDs plus display names. - Do not rely on plain `@name` text to create a real Teams mention. - If the target user cannot be resolved confidently, say so and return draft text without implying the mention will work. ## Routing Rules - For an existing direct conversation, prefer the existing two-person chat even if Teams labels it as `group` instead of `oneOnOne`. - For a new direct chat, call `create_chat(chat_type='oneOnOne')` with exactly one resolved recipient user ID. - If one-on-one creation fails with a caller-membership mismatch, fetch the caller profile and fall back to a two-person `group` chat containing the caller and the intended recipient. - For note-to-self requests, prefer an obvious existing self-chat target. If none is exposed, create a one-member `group` chat containing only the caller and send the note there. - For channel replies, prefer replying by canonical message path instead of inferring the target from quoted text alone. ## Support Boundaries - Teams drafts here are returned text only. There is no native persisted draft object. - Do not claim support for Teams tags, reactions, file uploads, message edits, message deletes, or Slack-style canvases. - Do not imply broad channel-notification behavior beyond what a normal Teams post or structured mention can do. ## Output Conventions - For drafts, return only the message text unless the user asked for explanation. - For multiple routing candidates, present the smallest useful disambiguation rather than guessing. - When a send is blocked, say whether the blocker is destination ambiguity, missing user resolution, or a Teams product rule.
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|