Microsoft Teams Automation — Claude Code skill: messages, meetings
A skill that drives Microsoft Teams from an AI agent: channel messages, meeting scheduling, webhooks and bot workflows.
npx skills add claude-office-skills/skills --skill microsoft-teams-automation -a claude-code
npx skills add claude-office-skills/skills --skill microsoft-teams -a claude-codeWhat Microsoft Teams Automation does
The skill handles the routine around Teams. Your agent posts to channels, schedules meetings with attendees and a join link, and fires notifications through incoming webhooks. Ready-made YAML templates cover plain messages, HTML content and Adaptive Cards with inputs and submit buttons.
Everything runs through the microsoft-mcp MCP server with the teams_message, teams_meeting, teams_channel and teams_webhook tools. Without that server the skill has nothing to call, so set it up first and grant Microsoft Graph access. Bot commands are described too: /status, /create-ticket and /approve {id}, each with its own response handling.
CI/CD blocks cover build start and completion posts to #deployments, with fields for branch, duration and passed tests. There is also an expense approval flow: a card with Approve and Reject buttons, a wait for the response, then a decision handler. Watch the Microsoft Graph rate limits, and remember webhooks only carry one-way notifications.
What it helps with
- post a message to a Teams channel from a script
- schedule an online meeting with a list of attendees
- build an Adaptive Card with an approve button
- notify the team when a CI/CD build finishes
- run an expense approval through a card response
Example prompts for the agent
- post a build completion card to #deployments
- create a Weekly Standup meeting with two attendees
- set up a bot with a /create-ticket command for support requests
How to install Microsoft Teams Automation
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill microsoft-teams-automation -a claude-codenpx skills add claude-office-skills/skills --skill microsoft-teams -a claude-code2Manually: put the files in place
~/.claude/skills/microsoft-teams/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/microsoft-teams/
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill microsoft-teams -a codex2Manually: put the files in place
.agents/skills/microsoft-teams/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill microsoft-teams -a cursor2Manually: put the files in place
.cursor/skills/microsoft-teams/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install claude-office-skills/skills microsoft-teams2Manually: put the files in place
.github/skills/microsoft-teams/SKILL.md1Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill microsoft-teams -a gemini-cli2Platform CLI
gemini skills install https://github.com/claude-office-skills/skills --path microsoft-teamsManually: put the files in place
.devin/skills/microsoft-teams/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add claude-office-skills/skills --skill microsoft-teams -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about Microsoft Teams Automation
How do I install Microsoft Teams Automation in Claude?
Run npx skills add claude-office-skills/skills --skill microsoft-teams-automation -a claude-code. The skill file then lands at ~/.claude/skills/microsoft-teams/SKILL.md.
What does Microsoft Teams Automation do?
It automates channel messaging, meeting scheduling, webhooks and bot flows in Microsoft Teams. The agent builds messages, cards and meeting links from the provided templates.
What do I need for the skill to work?
The microsoft-mcp MCP server with the teams_message, teams_meeting, teams_channel and teams_webhook tools. You also have to account for Microsoft Graph rate limits.
Source text
SKILL.md · MIT
---
name: Microsoft Teams Automation
description: Automate Microsoft Teams messaging, meetings, channels, and workflow integrations
version: 1.0.0
author: Claude Office Skills
category: communication
tags:
- teams
- microsoft
- collaboration
- meetings
- chat
department: operations
models:
- claude-3-opus
- claude-3-sonnet
- gpt-4
mcp:
server: microsoft-mcp
tools:
- teams_message
- teams_meeting
- teams_channel
- teams_webhook
capabilities:
- Channel messaging
- Meeting scheduling
- Workflow automation
- Adaptive cards
input:
- Message content
- Meeting details
- Channel configurations
- Webhook payloads
output:
- Sent messages
- Meeting links
- Channel updates
- Bot responses
languages:
- en
related_skills:
- slack-workflows
- outlook-automation
- calendar-automation
---
# Microsoft Teams Automation
Automate Microsoft Teams communication and collaboration workflows.
## Core Capabilities
### Channel Messaging
```yaml
message_types:
simple_message:
channel_id: "channel_xxx"
message: "Hello, Team!"
formatted_message:
channel_id: "channel_xxx"
content_type: "html"
message: |
<h1>Weekly Update</h1>
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
adaptive_card:
channel_id: "channel_xxx"
card:
type: "AdaptiveCard"
body:
- type: "TextBlock"
text: "Approval Required"
weight: "bolder"
- type: "Input.Text"
id: "comment"
placeholder: "Add comment"
actions:
- type: "Action.Submit"
title: "Approve"
data:
action: "approve"
```
### Meeting Automation
```yaml
meeting_creation:
subject: "Weekly Standup"
start: "2024-01-20T09:00:00"
end: "2024-01-20T09:30:00"
attendees:
- "[email protected]"
- "[email protected]"
is_online_meeting: true
settings:
allow_new_time_proposals: true
lobby_bypass: "organization"
record_automatically: false
```
### Incoming Webhooks
```yaml
webhook_message:
url: "https://outlook.webhook.office.com/..."
payload:
"@type": "MessageCard"
themeColor: "0076D7"
summary: "Deployment Complete"
sections:
- activityTitle: "Production Deployment"
activitySubtitle: "v2.1.0 deployed successfully"
facts:
- name: "Environment"
value: "Production"
- name: "Duration"
value: "5 minutes"
markdown: true
potentialAction:
- "@type": "OpenUri"
name: "View Dashboard"
targets:
- os: "default"
uri: "https://dashboard.example.com"
```
### Bot Workflows
```yaml
bot_commands:
/status:
description: "Check system status"
response:
type: adaptive_card
template: status_card
/create-ticket:
description: "Create support ticket"
parameters:
- title: required
- priority: optional
action: create_jira_issue
/approve {id}:
description: "Approve request"
action: process_approval
response: "Request {{id}} approved ✓"
```
## Integration Workflows
### CI/CD Notifications
```yaml
pipeline_notifications:
on_build_start:
channel: "#deployments"
card:
title: "🚀 Build Started"
fields:
- Branch: "{{branch}}"
- Triggered by: "{{user}}"
on_build_complete:
channel: "#deployments"
card:
title: "{{#if success}}✅{{else}}❌{{/if}} Build {{status}}"
fields:
- Duration: "{{duration}}"
- Tests: "{{tests_passed}}/{{tests_total}}"
actions:
- title: "View Logs"
url: "{{logs_url}}"
```
### Approval Workflows
```yaml
approval_flow:
trigger: expense_submitted
actions:
- send_adaptive_card:
channel: "#approvals"
card:
title: "Expense Approval"
body: "{{employee}} submitted ${{amount}}"
actions:
- Approve
- Reject
- wait_for_response:
timeout: 48_hours
- process_decision:
approved: update_expense_status
rejected: notify_submitter
```
## Best Practices
1. **Rate Limits**: Respect Microsoft Graph limits
2. **Adaptive Cards**: Use for rich interactions
3. **Permissions**: Request minimal scopes
4. **Threading**: Reply in threads for context
5. **Mentions**: Use @mentions sparingly
6. **Webhooks**: Use for one-way notifications
© Claude Office Skills · MIT · claude-office-skills/skills